Short answer: In HL7 FHIR, an Observation is one measurement or finding about a patient: a lab value, a blood pressure, a heart rate, a symptom score. It says what was measured (a code, usually LOINC), about whom, when, and the result with its unit, plus the lab's reference range and an interpretation flag if there is one.
The elements that matter
- status: final, preliminary, amended, cancelled, entered-in-error.
- category: laboratory, vital-signs, survey, imaging, and so on.
- code: what was measured, as a CodeableConcept, usually with a LOINC coding.
- subject: the Patient.
- effective[x]: when the measurement applies (for a lab, when the sample was taken).
- value[x]: the result, most often a Quantity with value, unit, UCUM system and code; sometimes a CodeableConcept or a string.
- referenceRange: low and high from the lab.
- interpretation: H, L, N and so on.
- component: for measurements with several parts, such as systolic and diastolic blood pressure.
Example: HbA1c in FHIR R4
{
"resourceType": "Observation",
"status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "laboratory"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "4548-4", "display": "Hemoglobin A1c/Hemoglobin.total in Blood"}], "text": "HbA1c"},
"subject": {"reference": "Patient/example"},
"effectiveDateTime": "2026-10-20T08:15:00+02:00",
"valueQuantity": {"value": 5.6, "unit": "%", "system": "http://unitsofmeasure.org", "code": "%"},
"referenceRange": [{"low": {"value": 4.0, "unit": "%", "system": "http://unitsofmeasure.org", "code": "%"}, "high": {"value": 5.6, "unit": "%", "system": "http://unitsofmeasure.org", "code": "%"}}]
}
Mistakes that break interoperability
- A local code without a LOINC coding: other systems cannot recognise the test.
- A unit as free text ("mg/dl ") instead of a UCUM code: values cannot be converted or compared. See UCUM units.
- The time of the report used as effective time instead of the sample time.
- Blood pressure stored as two separate Observations instead of one with two components (LOINC 85354-9 panel with 8480-6 and 8462-4).
In Anpheros
Every lab value and measurement in Anpheros is an Observation like the one above, with its LOINC code and UCUM unit, which is how results from different labs land on one chart. Developers can read and write them through the API: see the lab results API and importing lab results to FHIR.
Related pages
- UCUM units in lab results
- CodeableConcept and Coding in FHIR
- DocumentReference vs DiagnosticReport vs Binary in FHIR
- FHIR DiagnosticReport explained
- LOINC vs SNOMED CT
Sources
Frequently asked questions
What is a FHIR Observation?
The FHIR resource for one measurement or finding about a patient: a lab value, a vital sign, a score.
Should the code be LOINC?
For lab results and vital signs, yes in practice: profiles such as US Core and the IPS require LOINC.
How is blood pressure stored in FHIR?
As one Observation (LOINC 85354-9) with two components: systolic (8480-6) and diastolic (8462-4).
What is the difference between Observation and DiagnosticReport?
An Observation is one result; a DiagnosticReport groups the results of a test or panel and the conclusion. See DocumentReference vs DiagnosticReport.
Try it free in the sandbox
Your first FHIR call in 5 minutes. An HL7 FHIR R4 API with the patient's consent built in: try it in the sandbox, then connect your own app or clinic system.
Free · 30 synthetic patients · no card

The more you log, the clearer your record
Your health history in one place, under your control.
Free · Works in your browser · No card
