Atrius India Core FHIR Implementation Guide
0.1.0 - ci-build

Atrius India Core FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Messaging

FHIR Messaging

HIS exposes inbound FHIR Messaging for consequence workflows (LIS/PACS results, future ABDM/NHCX). This is complementary to Subscriptions (best-effort resource-change notifications).

Endpoint

POST {HIS}/api/v1/$process-message (alias /process-message)

Request body: Bundle with type = message, entry[0] = MessageHeader.

Event registry

CodeSystem: AtriusMessageEvents at https://atrius.in/fhir/message-events. The composed event URIs ({system}/{code}) are also registered on atrius-in-message-events-ns so MessageDefinition.eventUri has a definition.

Code Event URI MessageDefinition Focus
ack …/message-events/ack (response only)
ping …/message-events/ping smoke / connectivity
lab-result …/message-events/lab-result atrius-md-lab-result DiagnosticReport (+ Observation)
imaging-result …/message-events/imaging-result atrius-md-imaging-result DiagnosticReport (+ ImagingStudy)

Set MessageHeader.eventUri (preferred) or eventCoding with system = https://atrius.in/fhir/message-events and the code above.

Reliable messaging / dedup

HIS applies R4 reliable-messaging semantics:

  1. Dedup key = Bundle.id, else MessageHeader.id.
  2. Store is Postgres (message_dedup on HIS_DATABASE_URL) or in-memory when unset.
  3. A replay of the same id returns the prior ack without re-applying clinical side effects.

Ack shape

Successful processing returns a message Bundle whose MessageHeader.eventUri is https://atrius.in/fhir/message-events/ack, with response.identifier pointing at the request MessageHeader id and response.code = ok (or transient-error / fatal-error on failure).

Authoring rule (D5)

New inbound message events MUST be added to AtriusMessageEvents and, for consequence workflows, a MessageDefinition under input/fsh/messaging/. Heuristic string matching in the HIS dispatcher is a migration bridge — the CodeSystem/MessageDefinition pair is the contract.