NEWFree ROI Calculators — quantify what prior auth and siloed data are costing your organization.Prior Auth ROI Siloed Data ROI
HL7 v2Message10 min read

HL7 ORL Messages: General Laboratory Order Response

HL7 ORL messages are the laboratory's formal reply to a laboratory order request — a confirmation that the lab system has accepted, rejected, or processed the orders submitted in an OML message. An ORL message carries an acknowledgement code in the MSA segment and, when orders are accepted, echoes those orders back with filler-assigned order numbers so the ordering system can reconcile what it sent against what the lab recorded. This page explains what an ORL message represents, the trigger event that carries it, every segment the message can contain and what each one holds, and how an ORL response relates to FHIR. Sample content is constructed for illustration with fictional identifiers.

What an ORL message represents

An ORL message — ORL stands for General Laboratory Order Response — is the lab's answer to an OML^O21 laboratory order message. Where an OML sends orders from the ordering system to the lab, the ORL travels in the opposite direction, confirming the outcome of that submission. The core of the message is the MSA acknowledgement segment, which carries a code stating whether the orders were accepted (AA), accepted with errors (AE), or rejected (AR), along with the message control id of the OML being acknowledged so the sender can match the reply to the original request.

The sender is the laboratory information system (LIS), and the receiver is the ordering system — most often an EHR or an order management application. Because the ORL echoes back the accepted orders in its RESPONSE group, including the filler order numbers the LIS assigned, the ordering system gains a confirmed, lab-side identifier for each order that it can use in subsequent messages such as order updates or results.

When an ORL message is sent

An ORL message is sent in response to every OML^O21 laboratory order message received by the lab. A single ORL covers the entire OML it is acknowledging — if the OML contained multiple orders, the ORL reports their collective outcome in MSA and, when accepted, echoes all of them in the repeating ORDER group. Error segments in [{ERR}] identify which orders or fields caused a problem when the acknowledgement is not a clean acceptance.

Trigger event

The ORL message type carries a single trigger event in this context:

  • ORL^O22 – General laboratory order response message.

The receiver's handling turns on the acknowledgement code in MSAAA for application accept, AE for application error, AR for application reject — rather than solely on the trigger code in MSH-9.

Integration topology

The diagram shows the laboratory information system returning an order response through the integration engine to the ordering system.

{{diagram: ordering system → OML^O21 → integration engine → LIS → ORL^O22 → integration engine → ordering system}}

Typical senders: laboratory information system (LIS), lab order management system.

Typical receivers: EHR order management module, clinical workstation, integration engine acting as an order broker.

Direction: unidirectional reply from the laboratory back to the originating ordering system, in response to an OML order request.

Segments in an ORL message

The ORL_O22 message opens with required header and acknowledgement segments, optional error and note segments, and then an optional RESPONSE group containing patient and order detail. Within the RESPONSE group, each ORDER group repeats once per accepted order and may include timing, specimen, and observation segments. Cardinality follows HL7 notation: [X] optional, {X} repeating, [{X}] optional and repeating; a bare code is required. Each segment code links to its canonical field-by-field reference.

SegmentDescription
MSHMessage Header. Opens every ORL message. It names the sending and receiving applications and facilities, stamps the creation time, declares the trigger event in MSH-9 (ORL^O22), carries the message control id in MSH-10, and pins the HL7 version. Receivers route on MSH-9 and deduplicate on MSH-10.
MSAMessage Acknowledgement. The acknowledgement core of every ORL. MSA-1 carries the acknowledgement code — AA (application accept), AE (application error), or AR (application reject) — and MSA-2 carries the message control id from the OML being acknowledged, allowing the ordering system to match the reply to the original request. Required and non-repeating.
[{ERR}]Error. Describes one or more errors that caused the acknowledgement code to be AE or AR. Carries the error location, error code, severity, and a human-readable diagnostic message. Optional and repeating, to accommodate multiple errors in a single OML submission.
[{NTE}]Notes and Comments. Message-level notes that apply to the response as a whole. Optional and repeating.
[PID]Patient Identification. Identifies the patient the orders belong to — the identifier list in PID-3, the name in PID-5. Present within the RESPONSE group when the lab echoes back patient-bearing orders; the RESPONSE group as a whole is optional, so a rejection with no echoed orders may omit it.
ORCCommon Order. Opens each ORDER group within the RESPONSE and echoes the order back to the sender. For an ORL the ORC carries the filler order number the LIS has assigned — the critical piece of information the ordering system needs to reconcile its placer order number against the lab's reference. Required within each ORDER group, and the ORDER group repeats once per accepted order.
[{TQ1}]Timing/Quantity. The collection or analysis timing echoed back with the order. Optional and repeating; introduced as the replacement for the deprecated quantity/timing field in v2.5.
OBRObservation Request. Echoes the observation or test requested in the original OML order — the universal service identifier in OBR-4, the placer order number in OBR-2, and the filler order number in OBR-3. Required within each ORDER group; it is the segment that identifies which test the lab is confirming.
[{SAC,[{OBX}]}]Specimen Container / Observation. The specimen container (SAC) assigned or confirmed by the lab, optionally followed by observations (OBX) about the container or specimen. Optional and repeating, allowing the lab to echo container assignments back to the sender for specimen tracking.
[{{SPM,[{OBX}]}}]Specimen / Observation. The specimen (SPM) echoed or assigned by the lab, optionally followed by specimen-level observations (OBX). Optional and multiply repeating — a single order may span multiple specimens, each with its own observations.

[ ] = optional, { } = repeating

The ORDER group from ORC through the specimen segments repeats once per accepted order, so a single ORL message can confirm several laboratory orders together. The canonical segment pages carry the full field-by-field detail.

Sample ORL message

Note. Constructed for illustration. Patient identifiers, order numbers, dates, and names are fictional.

MSH|^~&|LIS|MERCYLAB|EHR|MERCYGEN|20260604082301||ORL^O22^ORL_O22|MSG00099|P|2.5.1
MSA|AA|MSG00088
PID|1||MR98765^^^MERCYGEN^MR||SMITH^JANE^A||19750315|F
ORC|OK|PL10042^EHR|FL20099^LIS|||||||20260604082000
OBR|1|PL10042^EHR|FL20099^LIS|85025^CBC with Differential^LN|||20260604082000
SPM|1|SP33001^LIS||BLDV^Venous blood^HL70487|||||||P

What this sample shows

The ORL^O22 in MSH-9 marks a general laboratory order response. MSA carries the code AA — application accept — and echoes the control id MSG00088 from the original OML, confirming which message the lab is replying to. PID carries the medical record number MR98765, identifying the patient whose orders were processed. ORC carries the order control code OK, the placer order number PL10042 that the EHR assigned, and — critically — the filler order number FL20099 that the LIS has now assigned, giving the ordering system the lab's reference. OBR echoes the requested test, CBC with Differential (85025), with both order numbers repeated. SPM echoes the venous blood specimen the lab has registered against the order.

Working with ORL messages

Match on MSA-2, not MSH-10

The key to correlating an ORL with its originating OML is MSA-2, which carries the message control id of the OML being acknowledged — not the ORL's own control id in MSH-10. Use MSA-2 as the lookup key when updating the status of an outstanding order request.

Capture the filler order number from ORC

The filler order number in ORC-3 is the lab's identifier for the order and is the reference all subsequent messages — results in ORU, order updates, cancellations — will carry from the lab's side. Store it against the placer order number in ORC-2 on receipt of an AA or AE acknowledgement so every downstream message can be correlated without re-querying.

Handle partial acceptance

An ORL with acknowledgement code AE indicates the lab accepted the message but encountered errors on one or more orders. The [{ERR}] segments identify the specific locations and error codes. Do not treat AE as a full rejection — some orders in the RESPONSE group may still carry filler order numbers, meaning the lab accepted them despite the errors elsewhere.

Idempotency and deduplication

Use MSH-10, the message control id of the ORL, as the deduplication key for the response itself. Lab systems and integration engines sometimes replay acknowledgements after connectivity interruptions, and a replayed ORL with the same MSH-10 should not overwrite a filler order number that has already been stored.

Vendor variance. The RESPONSE group — including PID, the ORDER group, and all specimen segments — is optional in the standard, and some laboratory systems send a bare MSH/MSA acknowledgement on a clean accept without echoing any order detail. Confirm with the lab vendor whether the filler order number will be present in ORC-3 on every AA response or only on specific workflows.

FHIR equivalent

The accepted laboratory orders echoed in an ORL response correspond conceptually to the FHIR ServiceRequest resource, with the patient as a Patient resource and, for a messaging exchange, a MessageHeader at the head of a Bundle.

There is, however, no published mapping to lean on. The HL7 v2-to-FHIR Implementation Guide provides no message map for ORL_O22 — the ORL is a response/acknowledgement pattern without a direct FHIR messaging equivalent, since FHIR uses HTTP status codes and OperationOutcome for acknowledgement rather than a purpose-built message type. The echoed orders, where present, can be mapped manually to ServiceRequest resources by reading the universal service identifier from OBR-4, the patient from PID, and the assigned identifiers from ORC.

Common pitfalls

Pitfall. Treating MSH-10 as the correlation key instead of MSA-2. The ORL's own message control id identifies the response; MSA-2 is the control id of the OML being acknowledged. Using MSH-10 to look up the original order will always fail to find a match.

Pitfall. Discarding the ORL when MSA-1 is AA and skipping the RESPONSE group. The filler order number in ORC-3 is only delivered in the ORL — missing it means the ordering system cannot correlate lab-originated messages such as results and specimen updates back to its own orders.

Pitfall. Assuming the RESPONSE group is always present. Many lab systems send a minimal ORL with only MSH and MSA for a clean accept. Code the parser to handle a missing RESPONSE group gracefully rather than erroring on an absent PID or ORC.

How Vorro handles ORL messages

Vorro receives ORL messages over MLLP or another configured transport, deduplicates on MSH-10, and immediately correlates the response to the originating OML using MSA-2. On an AA or AE acknowledgement, Vorro extracts the filler order number from ORC-3 in each ORDER group and updates the order record in the ordering system, linking the placer number to the lab-assigned filler number so that every subsequent message from the lab — results in ORU, specimen events, order updates — can be matched without ambiguity. Errors in [{ERR}] are surfaced to the integration dashboard for review. Where a FHIR destination is configured, Vorro maps the echoed orders to ServiceRequest resources manually, since the v2-to-FHIR Implementation Guide publishes no map for this message.

  • OML — the laboratory order message that an ORL^O22 is always responding to.
  • ORM — the general order message used for non-laboratory orders in earlier HL7 implementations.
  • ORU — the observation result message the lab sends when results are available for the orders the ORL confirmed.

Sources

← Back to HL7 v2 Guide

Ready to Integrate This Into Your Workflow?

Talk to a Vorro expert about implementing HL7 v2 in your specific environment.

Browse HL7 v2 Guides
HL7 ORL Messages: General Laboratory Order Response | Vorro Academy | Vorro