AnpherosAnpheros PlatformDevelopers

FHIR R4 Observation example: blood pressure

Blood pressure is one Observation with two components, not two separate Observations. The panel code is LOINC 85354-9; each component has its own LOINC code and a quantity in mm[Hg].

The Observation in JSON

{
  "resourceType": "Observation",
  "id": "blood-pressure",
  "status": "final",
  "category": [
    {
      "coding": [
        {
          "system": "http://terminology.hl7.org/CodeSystem/observation-category",
          "code": "vital-signs",
          "display": "Vital Signs"
        }
      ]
    }
  ],
  "code": {
    "coding": [
      {
        "system": "http://loinc.org",
        "code": "85354-9",
        "display": "Blood pressure panel with all children optional"
      }
    ],
    "text": "Blood pressure"
  },
  "subject": {
    "reference": "Patient/example",
    "display": "Jane Doe"
  },
  "effectiveDateTime": "2026-10-01T08:30:00-05:00",
  "component": [
    {
      "code": {
        "coding": [
          {
            "system": "http://loinc.org",
            "code": "8480-6",
            "display": "Systolic blood pressure"
          }
        ]
      },
      "valueQuantity": {
        "value": 128,
        "unit": "mmHg",
        "system": "http://unitsofmeasure.org",
        "code": "mm[Hg]"
      }
    },
    {
      "code": {
        "coding": [
          {
            "system": "http://loinc.org",
            "code": "8462-4",
            "display": "Diastolic blood pressure"
          }
        ]
      },
      "valueQuantity": {
        "value": 82,
        "unit": "mmHg",
        "system": "http://unitsofmeasure.org",
        "code": "mm[Hg]"
      }
    }
  ]
}

Validator result: raw JSON · open the validator

The elements that matter

ElementCardinalityNotes
status1..1Required; final for a confirmed measurement.
category0..*vital-signs from the observation-category code system.
code1..1What was measured: LOINC 85354-9 for the panel.
subject0..1The patient; optional in base R4, required by most profiles and by Anpheros.
effectiveDateTime0..1When it was measured; a time needs a time zone.
component0..*One entry per value, each with its own code and valueQuantity.

The FHIR vital signs profile asks for the panel code, both components and UCUM units; the structure check here does not enforce that profile.

The full definition is in the FHIR R4 Observation specification.

Common mistakes and the errors they cause

Missing status

Observation.status is 1..1.

Time without a time zone

A dateTime with hours needs Z or an offset; a space instead of T also fails.

Missing code

Observation.code is 1..1: every observation says what it measured.

Store it in a real FHIR R4 serverA free sandbox key gives you 30 synthetic patients and the full API, including POST /fhir/R4/Observation and $validate.
Get a free API key

More examples

Related guides