HL7 ORU^R01 (Unsolicited Observation Result)
ORU^R01 transmits observation results, most commonly laboratory results, but also vital signs, imaging report text, and other clinical measurements. Each result value is carried in an OBX segment grouped under an OBR order.
When is ORU^R01 sent?
Sent by a lab, device, or ancillary system when results are available (final, preliminary, or corrected). One message can carry many OBX results for a single order.
Key segments
The segments below are the ones most relevant to ORU^R01. Real messages may carry additional optional segments depending on the sending system’s configuration.
| Segment | Usage | Role |
|---|---|---|
| MSH | Required | Message header: sending/receiving application & facility, message type, control id, version. |
| PID | Required | Patient identification: identifiers (MRN), name, date of birth, sex, address, phone. |
| OBR | Required | Observation request: the order/panel the results belong to (order id, service code, result date/time). |
| OBX | Required | Observation/result: one value per segment (code, value, units, reference range, abnormal flag). |
Example ORU^R01 message
A realistic, well-formed example. Segments are separated by carriage returns; fields by the pipe (|) delimiter.
MSH|^~\&|LAB|HOSP|REC|REC|20240115140000||ORU^R01|MSGCTRL9999|P|2.5.1
PID|1||MRN12345^^^EPIC^MR||DOE^JOHN^A||19800101|M
OBR|1|||GLU^Glucose^L|||20240115135000
OBX|1|NM|GLU^Glucose^L||110|mg/dL|70-110|N|||FMapping ORU^R01 to FHIR
See the full field-by-field mapping of ORU^R01 to a FHIR Observation — including the transforms and gotchas — on the ORU^R01 → US Core Observation reference page. You can fork that template and run it in the Mapping Builder.
Frequently asked questions
What is an HL7 ORU^R01 message?
ORU^R01 is an unsolicited observation result message. It carries OBX result segments (value, units, reference range, abnormal flag) grouped under one or more OBR order segments, for a patient identified in PID.
What is the difference between OBR and OBX in ORU^R01?
OBR is the observation request/order header (the panel or test ordered). OBX is an individual observation result value within that order. A single OBR can be followed by many OBX segments.
How do I map ORU^R01 to a FHIR Observation?
Each OBX becomes a FHIR Observation: OBX-3 maps to Observation.code (with a LOINC system), OBX-5 to value[x], OBX-6 to the unit, and OBX-7 to the reference range. The Interoperall template does exactly this.
How do I validate an ORU^R01 message?
Paste it into the HL7v2 validator to parse the OBR/OBX structure and confirm each segment is well-formed. It runs in your browser, so result data never leaves your device.