The same cholesterol result, expressed the way a modern API would return it.
{
"resourceType": "Observation",
"id": "obs-8841-1",
"status": "final",
"category": [{ "coding": [{ "code": "laboratory" }] }],
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "14647-2",
"display": "Cholesterol [Moles/volume] in Serum or Plasma"
}]
},
"subject": { "reference": "Patient/884120" },
"encounter": { "reference": "Encounter/ward3-2026-07" },
"effectiveDateTime": "2026-07-27T12:00:00Z",
"performer": [{ "reference": "Organization/lab7" }],
"valueQuantity": {
"value": 6.9, "unit": "mmol/L",
"system": "http://unitsofmeasure.org", "code": "mmol/L"
},
"interpretation": [{ "coding": [{ "code": "H", "display": "High" }] }],
"referenceRange": [{ "high": { "value": 5.0, "unit": "mmol/L" } }]
}
Every value now carries the code system it came from as a URI, so 14647-2 is
unambiguously LOINC rather than "whatever the sender meant". Units are bound to a
standard unit code system rather than being a free-text string. The patient and
the encounter are references to addressable resources you can fetch, which turns
a message into a graph you can traverse.
The tradeoff has three parts, and naming them is what separates someone who has
integrated FHIR from someone who has read about it. First, the message became
roughly six times larger for the same clinical content, and a busy hospital
sends millions of results a day. Second, the event is gone: ORU^R01 said "a
result has arrived", while the resource merely describes a state, so notification
becomes a separate concern handled by subscriptions or polling. Third, the
references only work if both ends agree on identity — Patient/884120 is
resolvable in your server and meaningless in mine.
The practical consequence is that the two standards are good at different jobs.
HL7 v2 is a compact, event-driven notification format; FHIR is a queryable
representation of state. Translating between them is not a syntax exercise,
because the intent carried by a v2 trigger event has no direct home in a
resource, and a Z-segment's locally agreed meaning has to become an extension
somebody documents.