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
| Status | Meaning |
|---|---|
registered | Initial entry, not validated |
preliminary | Not yet confirmed |
final | Complete and verified |
amended | Adjusted after final |
corrected | Corrected after final (data error) |
cancelled | Ordered but not performed |
entered-in-error | Error, should be ignored |
unknown | Status cannot be determined |
Value Types Supported in the Request Body
| Field | Example |
|---|---|
valueQuantity | 72 beats/minute |
valueCodeableConcept | coded value (e.g. “severe”) |
valueString | free text observation |
Multi-part observations can be expressed via component[], where each component has its own code and valueQuantity.