Skip to main content

Observation

The Observation resource is one of the most commonly used in FHIR. It records vital signs, laboratory results, imaging findings, and other clinical measurements.

API convention: the patient and encounter references are sent as flat string id fields (subjectId, encounterId). All resource ids are raw UUIDs (v4).

Types of Observations

  • Vital signs — blood pressure, heart rate, temperature, weight
  • Laboratory — blood tests, urinalysis, pathology
  • Imaging — radiological findings
  • Social history — smoking status, alcohol use
  • Clinical findings — any observable clinical event

Creating an Observation

curl -X POST https://api.esus.health/fhir/Observation \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/fhir+json" \
  -d '{
    "status": "final",
    "subjectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "encounterId": "c1a2e3d4-5b6f-7890-abcd-ef1234567890",
    "category": [{
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/observation-category",
        "code": "vital-signs",
        "display": "Vital Signs"
      }]
    }],
    "code": {
      "coding": [{
        "system": "http://loinc.org",
        "code": "8867-4",
        "display": "Heart rate"
      }]
    },
    "effectiveDateTime": "2026-04-21T10:30:00Z",
    "valueQuantity": {
      "value": 72,
      "unit": "beats/minute",
      "system": "http://unitsofmeasure.org",
      "code": "/min"
    }
  }'

Vital Signs Example

{
  "status": "final",
  "subjectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "category": [{ "coding": [{ "code": "vital-signs" }] }],
  "code": { "coding": [{ "code": "8480-6", "display": "Systolic blood pressure" }] },
  "valueQuantity": { "value": 120, "unit": "mmHg" }
}

Observation Statuses

StatusMeaning
registeredInitial entry, not validated
preliminaryNot yet confirmed
finalComplete and verified
amendedAdjusted after final
correctedCorrected after final (data error)
cancelledOrdered but not performed
entered-in-errorError, should be ignored
unknownStatus cannot be determined

Value Types Supported in the Request Body

FieldExample
valueQuantity72 beats/minute
valueCodeableConceptcoded value (e.g. “severe”)
valueStringfree text observation

Multi-part observations can be expressed via component[], where each component has its own code and valueQuantity.