ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

ORU^R01 — Unsolicited Observation Result

The message that carries an unsolicited clinical result — lab report, radiology, pathology, vitals — from the producer system to the EHR. The pivot of the result flow in every HL7 v2 install base.

Purpose

R01 fires when a producer system — laboratory analyser, radiology console, ICU monitor — finalises a result and pushes it unsolicited toward downstream consumers. It is the natural complement of ORM^O01: the order went out, the result comes back as R01.

The message carries:

  • the patient identity (PID);
  • the order context (ORC) — reference to the original placer order;
  • the clinical request (OBR) — exam code, specimen collection date, validation date;
  • one or more observations (OBX) — each measured value with its unit, reference range, abnormality flag;
  • optionally free-text notes (NTE).

Segment structure

Per chapter 7 of the HL7 v2.5.1 specification, the abstract structure ORU_R01 is composed of a repeatable PATIENT_RESULT group:

ORU_R01
  MSH                              Message Header (mandatory)
  [ SFT ]                          Software Segment (optional)
  { PATIENT_RESULT }               Patient + Order Observation (repeatable)
    [ PATIENT                      Patient (optional for anonymised reports)
        PID                        Patient Identification
        [ PD1 ]                    Patient Additional Demographics
        [ { NTE } ]                Notes and Comments
        [ { NK1 } ]                Next of Kin
        [ VISIT                    Visit
            PV1                    Patient Visit
            [ PV2 ]
        ]
    ]
    { ORDER_OBSERVATION            Order + Observations (repeatable)
        [ ORC ]                    Common Order
        OBR                        Observation Request (mandatory)
        [ { NTE } ]                Notes and Comments
        [ { TIMING_QTY } ]         Timing/Quantity
        [ CTD ]                    Contact Data
        { OBSERVATION              Observation (repeatable)
            OBX                    Observation / Result
            [ { NTE } ]            Notes and Comments
        }
        [ { FT1 } ]                Financial Transaction
        [ { CTI } ]                Clinical Trial Identification
        [ { SPECIMEN } ]           Specimen
    }
  }
  [ DSC ]                          Continuation Pointer

MSH — Message Header

Same as ADT^A01, with:

  • MSH-9: ORU^R01^ORU_R01.
  • MSH-10: unique message control identifier on the producer side.
  • MSH-12: 2.5.1.

PID — Patient Identification

Same critical fields as in ADT — see ADT^A01. PID-3 must carry the stable patient identifier (MRN typed MR, for example) to reconcile with the current admission.

OBR — Observation Request

  • OBR-1: order number within the message.
  • OBR-2: Placer Order Number — reference on the orderer side.
  • OBR-3: Filler Order Number — laboratory accession number.
  • OBR-4: Universal Service Identifier (CWE) — exam code (LOINC, local table).
  • OBR-7: Observation Date/Time — specimen collection date.
  • OBR-14: Specimen Received Date/Time — receipt at the laboratory.
  • OBR-16: Ordering Provider — clinician who placed the order.
  • OBR-22: Results Rpt/Status Chng Date/Time — result validation timestamp.
  • OBR-24: Diagnostic Service Section ID — table 0074 (LAB, RAD, CUS…).
  • OBR-25: Result Status — table 0123 (F=Final, P=Preliminary, C=Corrected, X=Cancelled).

OBX — Observation / Result

One OBX per observed value. A panel returning ten parameters (CBC, electrolytes…) yields ten OBX segments under the same OBR.

  • OBX-1: Set ID — sequence number within the block.
  • OBX-2: Value Type — table 0125. NM=numeric, ST=string, CWE=coded, TX=long text, RP=reference pointer (image URI), FT=formatted text.
  • OBX-3: Observation Identifier (CWE) — analyte code (LOINC).
  • OBX-4: Observation Sub-ID — disambiguates repeated values (T0, T+5min…).
  • OBX-5: Observation Value — the value itself, in the OBX-2 type.
  • OBX-6: Units (CWE) — UCUM unit.
  • OBX-7: References Range — reference range (13.0-17.0).
  • OBX-8: Abnormal Flags — table 0078. N=Normal, H=High, L=Low, HH=Critical High, LL=Critical Low, A=Abnormal.
  • OBX-11: Observation Result Status — table 0085. F=Final, P=Preliminary, C=Corrected, D=Delete.
  • OBX-14: Date/Time of the Observation — when this individual value was obtained.

Optional segments

  • NTE: free-text comment attached to PID, OBR or OBX. Used for biologist notes, clinical context, warnings.
  • SPM: Specimen — sample description (type, collection method, volume).
  • TQ1 / TQ2: collection / reporting schedule.
  • CTI: Clinical Trial Identification.

Real-world example

A finalised CBC (Complete Blood Count) report for patient John Doe. Four parameters (HGB, HCT, WBC, PLT), all within range, status Final.

plaintext oru-r01-example.hl7
MSH|^~\&|LIS|HOSP01|EHR|CLINIC02|20260514143000||ORU^R01^ORU_R01|ORU00000001|P|2.5.1|||AL|NE
PID|1||MRN567890^^^HOSP^MR||DOE^JOHN^A^^MR.||19720515|M|||100 MAIN ST^^ANYTOWN^CA^90210^USA||(555)555-1234|||S||ACCT123456
PV1|1|I|ICU^101^A^HOSP01||||DRSMITH^Smith^James^A^^DR.|||CAR
ORC|RE|ORD789012|LIS456789||CM||||20260514143000|||DRSMITH^Smith^James^A^^DR.
OBR|1|ORD789012|LIS456789|CBC^Complete Blood Count^L|||20260514110000|||||||20260514130000||DRSMITH^Smith^James^A^^DR.||||||20260514143000||LAB|F
OBX|1|NM|HGB^Hemoglobin^LN||13.5|g/dL|13.0-17.0|N|||F|||20260514142500
OBX|2|NM|HCT^Hematocrit^LN||40.2|%|38.0-50.0|N|||F|||20260514142500
OBX|3|NM|WBC^White Blood Cells^LN||7.8|10*3/uL|4.5-11.0|N|||F|||20260514142500
OBX|4|NM|PLT^Platelets^LN||245|10*3/uL|150-400|N|||F|||20260514142500
NTE|1||Sample drawn 11:00, analysed 14:25.
  • MSH — sent from LIS@HOSP01 to EHR@CLINIC02, version 2.5.1.
  • PID — patient identified by MRN567890.
  • ORC — references order ORD789012, status RE (Observations to Follow), accession LIS456789.
  • OBR — exam CBC, drawn at 11:00, validated at 14:30, status F (Final).
  • OBX 1-4 — four numeric parameters with LOINC codes (HGB, HCT, WBC, PLT), UCUM units, reference ranges and N (Normal) flag.

Acknowledgment (ACK)

plaintext ack-r01-example.hl7
MSH|^~\&|EHR|CLINIC02|LIS|HOSP01|20260514143005||ACK^R01^ACK|ACK00000001|P|2.5.1
MSA|AA|ORU00000001
  • MSA-1: AA on accept, AE on application error (e.g. unknown patient), AR on reject (e.g. incompatible version).
  • MSA-2: must echo MSH-10 of the originating ORU.

Common errors

  • OBX-2 inconsistent with OBX-5: declaring NM and providing a textual value ("not detected") breaks downstream typing. Prefer ST or CWE with a specific code.
  • Missing reference range: empty OBX-7 prevents the EHR from applying abnormal flag highlighting.
  • OBX-11 without correction trail: result corrections must re-emit the full OBR + OBX block with OBX-11=C. Emitting a corrected OBX alone, without context, breaks reconciliation.
  • Malformed UCUM unit: g/dL is UCUM-valid, gm/dl is not. Strict pipelines (HAPI, Mirth) raise warnings.
  • OBR-3 vs PV1-19 mismatch: the lab accession number (OBR-3) must be correlatable to the visit number (PV1-19) to reconcile the result with the encounter.
  • Unescaped reserved characters: as with ADT^A01 — ^, |, ~, \ in an OBX-5 text value break parsing.

Mapping to FHIR

An ORU^R01 maps naturally to two FHIR R5 resources:

  • Observation — one resource per OBX. code ← OBX-3, valueQuantity ← OBX-5 + OBX-6, referenceRange ← OBX-7, interpretation ← OBX-8, status ← OBX-11.
  • DiagnosticReport — wrapper that groups Observations of one OBR. code ← OBR-4, effectiveDateTime ← OBR-7, issued ← OBR-22, status ← OBR-25.
  • Both reference the Patient via subject and the Encounter via encounter.

See also: ORM^O01 — the order that precedes the result, MDM^T02 — for textual or PDF reports.