Table 0123 is the report-level status flag. Where OBX-11 (HL70085) tells a receiver about a single observation, OBR-25 tells it about the whole order — is this a finalized report, a preliminary release, a correction of a prior report, or an acknowledgment that the order itself was canceled? It is the field a DiagnosticReport.status binding reads first, and the field that drives a receiver's decision to render, hold, or reject the entire result message.
The table is small — eleven codes — and they encode three categories: the report's lifecycle (O, I, S, A, P, R, F, C), the report's existence (X canceled), and explicit error responses to a query (Y no such order, Z no such patient). The last two are unique to query responses (e.g., responses to QRY^Q01 or unsolicited result inquiries) and have no analog in OBX-11.
Purpose
Table 0123 carries the status of an order's result report as a whole — whether the report is preliminary, final, corrected, canceled, or a negative response to a query. It is the field a receiver reads first to decide whether to render, hold, or reject an entire result message.
Because the table is HL7-defined, conformant receivers are expected to recognise its codes without local negotiation; it is the report-level counterpart to the per-observation status in HL70085.
Where it's used
| Field | Segment | Cardinality | Notes |
|---|---|---|---|
| OBR-25 | OBR Observation Request | 1 | The canonical use. Carries the status of the report as a whole; required on every result message. |
OBR-25 is the only standard location. Query-response messages reuse the same field on the OBR they echo back, which is why Y and Z (no order / no patient on record) appear in this table even though they are not lifecycle states of a real report.
Code list
The complete list below reflects the v2.8.1 publication of table 0123 as hosted on terminology.hl7.org. Codes are case-sensitive single letters.
| Code | Display | Comment |
|---|---|---|
| A | Some results available | |
| C | Corrected, final | |
| F | Final results — stored and verified | |
| I | No results available; specimen received, procedure incomplete | |
| O | Order received; specimen not yet received | |
| P | Preliminary | |
| R | Results stored; not yet verified | |
| S | No results available; procedure scheduled, but not done | |
| X | No results available; Order canceled | |
| Y | No order on record for this test | |
| Z | No record of this patient |
Code groupings
The 0123 alphabet maps cleanly to three workflow categories:
- Forward lifecycle —
O(order received),S(scheduled),I(in progress, no results),A(some results available),R(stored, not verified),P(preliminary),F(final),C(corrected final). The standard forward progression of a clinical order. - Cancellation —
X(order canceled, no results will follow). - Query negative responses —
Y(no such order),Z(no such patient). Used only when the OBR is part of a response to a query.
Code system OID
- OID:
2.16.840.1.113883.18.41 - Canonical URI:
http://terminology.hl7.org/CodeSystem/v2-0123
Table 0123 was first introduced in HL7 v2.2 and remains active — the canonical report-level status vocabulary in HL7 v2, with FHIR DiagnosticReport.status the strategic target for cross-paradigm exchange. Vorro emits this OID in CWE.14 when a downstream profile demands OID-bound coded values.
HL7-defined vs user-defined
Table 0123 is HL7-defined. Its number falls inside the HL7-reserved range (HL70001–HL70999) and the code set is normative — receivers are expected to accept the published codes without local extension, and senders must not invent additional codes inside this table. Sites needing a concept not covered by 0123 should carry it on a CWE field bound to a different coding system rather than extending 0123 locally.
Examples
- Preliminary release —
OBR|1|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|P|... - Final report —
...|F|... - Corrected report —
...|C|...— replaces a priorFfor the same order. - Canceled order —
...|X|...— the order is closed; no results will be reported. - Partial results —
...|A|...— some OBXs in the message carry values; others are stillIorP. - Query negative —
OBR|1|||...|||...|||...|||||||||||||Y|— response to a query for an order that does not exist.
Version differences
- v2.2 — Original list:
F,P,C,R,I,S,A,O,X. - v2.3 — Added
Y(no order on record) andZ(no record of this patient) for query-response semantics. - v2.4–v2.8.1 — No new codes; descriptions refined and OID/system URI formally registered on terminology.hl7.org. The table has been stable for two decades.
Common mistakes
- Trusting OBR-25 over OBX-11 — the report header status and the per-observation status often disagree mid-workflow. OBR-25
Fdoes not guarantee every OBX-11 isF; an individual result inside a final report can still beX(cannot obtain) orC(corrected). Receivers should evaluate both. - Treating
Aas final —Ameans some results are available; the report is still in flight. Charting anAreport as final misses the values that arrive in the subsequent message. - Ignoring
X— a canceled order needs to be reflected on the patient's chart so clinicians know to stop waiting. Engines that dropXmessages leave open orders in worklists indefinitely. - Handling
YandZas data errors — these are valid query responses, not malformed messages. Engines that route them to an error queue mask legitimate negative-lookup results. - Confusing OBR-25
R(stored, not verified) with HL70078R(resistant) or HL70085R(entered, not verified) — three tables, same letter, different fields. Key off the segment and field position.
FHIR mapping
OBR-25 maps to DiagnosticReport.status in FHIR R4, bound to the diagnostic-report-status value set. The v2-to-FHIR IG publishes ConceptMap-table-hl70123-queries-to-diagnostic-report-status.
| HL7 v2 0123 | FHIR DiagnosticReport.status |
|---|---|
| O | registered |
| S | registered |
| I | registered |
| A | partial |
| R | preliminary |
| P | preliminary |
| F | final |
| C | corrected |
| X | cancelled |
| Y | unknown (with OperationOutcome) |
| Z | unknown (with OperationOutcome) |
The query-negative codes Y and Z do not have direct FHIR analogs; the v2-to-FHIR IG recommends returning a Bundle with OperationOutcome rather than a DiagnosticReport with a status code.
Engine considerations
- Report-vs-observation precedence — OBR-25 governs report rendering; OBX-11 governs individual result merge. Engines that collapse the two will mis-chart partial and corrected reports.
- Correction matching —
Creports replace a priorFkeyed by Placer Order Number (OBR-2) and Filler Order Number (OBR-3). Engines that do not implement this lookup will append rather than replace. - Cancellation propagation —
Xshould propagate downstream as a status change, not a delete. The order existed; it is now closed without results. - Query-response detection —
YandZshould only appear on OBR segments in response messages (e.g., ORF^R04, RSP^K11). Receiving them on an unsolicited ORU^R01 indicates a sender bug. - Case sensitivity — codes are single upper-case letters. Lower-case
fis notF; reject or correct with a warning.
How Vorro handles HL70123
Vorro parses OBR-25 as the canonical report-state field and evaluates it alongside OBX-11 to compute a unified per-result lifecycle. Corrections (C) and cancellations (X) are matched against prior OBR keys so downstream consumers see replacement semantics, not duplicates. Query-negative codes (Y, Z) are routed as structured negative-lookup events rather than parse errors. On outbound, Vorro emits 0123 codes verbatim and projects them to FHIR DiagnosticReport.status for cross-paradigm consumers.
Related pages
- OBR segment
- HL70078 Abnormal Flags / Interpretation Codes
- HL70085 Observation Result Status (OBX-11)
- CWE data type — Coded With Exceptions
