Skip to content
LambogeniusDocs

HL7 Edge Gateway

Delivery modes and ACKs

Pass-through and store-and-forward, and which ACK the sender gets in each case.

Runs onWindows · Linux · macOS · DockerFree developer license for test traffic. Production traffic needs a paid license.

Choose per route

passthroughstore_and_forward
When the sender gets its ACKAfter the destination answersAs soon as the message is durably stored
Which ACKThe destination's own HL7 ACK if it returns one, otherwise one mapped from its answerAA, then the gateway delivers in strict order
If the destination is downThe sender gets AE (or AR, or no ACK) and resendsMessages queue up and are retried with backoff
Good forInterfaces where the sender must see the destination's verdictKeeping MEDITECH's queue moving through outages

What happens in each situation

Situationpassthroughstore_and_forward
HTTP 2xx (no ACK body, or AA), or an MLLP AAAADelivered, next message
An HL7 ACK (in the HTTP or SOAP body, or over MLLP)Relayed as-isAR: rejected. AE: retried.
HTTP 4xx, or a SOAP Client faultARon_reject = "block" retries it and later messages wait; "dead_letter" parks it and moves on
HTTP 408, 429 or 5xx, or a SOAP Server faultAERetried with backoff; after max_attempts, dead-lettered
Unreachable, timeout, or no MLLP ACK within request_timeouton_error: AE, AR or no ACKRetried with backoff
Queue store unavailablen/aAE, so the sender resends
No valid license, or developer license and MSH-11 = PAR, with an explanationAR, with an explanation

Settings

SettingValues
[route.passthrough] ack_fromresponse_body (relay the destination's HL7 ACK, else map the status) or http_status (2xx → AA, 4xx → AR, 408/429/5xx → AE)
[route.passthrough] on_errorAE, AR, or no_ack (close the connection so the sender resends)
[route.store_and_forward] on_rejectblock for strict ordering (ADT) or dead_letter to carry on (ORU)
[route.store_and_forward] max_attemptsDead-letter after this many failed attempts. Unset: retry forever.
[route.store_and_forward] retry{ initial = "1s", max = "5m", multiplier = 2.0 }

To unblock a blocked route, fix the destination and select Retry now in the console, or move the head message to dead letters. A requeued dead letter goes to the end of the queue.