Observation — Mesure clinique unitaire
L'unité élémentaire du donné clinique en FHIR. Tout signe vital, résultat de laboratoire, anthropométrie, statut social, score clinique passe par Observation.
Objet de la ressource
Observation représente une mesure ou affirmation clinique unitaire réalisée sur un patient, un échantillon, un dispositif ou un groupe. Les usages typiques :
- signes vitaux (tension, fréquence cardiaque, température, SpO₂, poids…) ;
- résultats de laboratoire (hémogramme, biochimie, sérologie) ;
- imagerie quantitative (mesure de lésion) ;
- évaluations cliniques scorées (Glasgow, ECOG, NIHSS) ;
- déterminants sociaux de santé (statut tabagique, niveau d'éducation) ;
- résultats de questionnaires patient (PROMs).
Une Observation peut être atomique (une valeur) ou composite via component (cas des tensions artérielles, des cycles cardiaques, des
analyses différentielles).
Champs clés
| Champ | Type | Cardinalité | Rôle |
|---|---|---|---|
identifier | Identifier[] | 0..* | Identifiants externes (numéro d'accession laboratoire…). |
status | code | 1..1 | registered, preliminary, final, amended, corrected, cancelled, entered-in-error, unknown. |
category | CodeableConcept[] | 0..* | Catégorie de l'observation (vital-signs, laboratory, imaging, survey, social-history…). |
code | CodeableConcept | 1..1 | Quoi est observé. Typiquement un code LOINC. |
subject | Reference | 0..1 | Sujet (Patient, Group, Device, Location). |
encounter | Reference(Encounter) | 0..1 | Contexte de soin. |
effective[x] | dateTime | Period | Timing | instant | 0..1 | Date/heure ou intervalle de la mesure. |
issued | instant | 0..1 | Date/heure de mise à disposition du résultat. |
performer | Reference[] | 0..* | Qui a fait la mesure (Practitioner, Organization, Patient, Device). |
value[x] | Quantity | CodeableConcept | string | boolean | integer | Range | Ratio | SampledData | time | dateTime | Period | Attachment | Reference | 0..1 | La valeur observée. Choice type très large. |
dataAbsentReason | CodeableConcept | 0..1 | Pourquoi value[x] est absent (unknown, not-performed, error…). |
interpretation | CodeableConcept[] | 0..* | Flag d'anormalité (équivalent OBX-8 en v2). |
note | Annotation[] | 0..* | Commentaires libres. |
bodySite | CodeableConcept | 0..1 | Site anatomique (SNOMED CT). |
method | CodeableConcept | 0..1 | Méthode (auscultation, palpation, automate…). |
specimen | Reference(Specimen) | 0..1 | Échantillon analysé. |
device | Reference(Device) | 0..1 | Dispositif utilisé. |
referenceRange | BackboneElement[] | 0..* | Plage de référence avec low, high, appliesTo. |
hasMember | Reference[] | 0..* | Sous-observations (panel). |
derivedFrom | Reference[] | 0..* | Observations dont celle-ci dérive (calcul, agrégation). |
component | BackboneElement[] | 0..* | Sous-mesures d'un même acte (composantes systolique/diastolique d'une tension). |
Exemple JSON
Une mesure de tension artérielle 122/78 mmHg, mesurée au bras droit, statut final :
{
"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" },
"encounter": { "reference": "Encounter/example" },
"effectiveDateTime": "2026-05-14T10:30:00+01:00",
"performer": [{ "reference": "Practitioner/example" }],
"bodySite": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "368209003",
"display": "Right arm"
}]
},
"component": [{
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "8480-6",
"display": "Systolic blood pressure"
}]
},
"valueQuantity": {
"value": 122,
"unit": "mmHg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
},
"interpretation": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code": "N",
"display": "Normal"
}]
}]
}, {
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "8462-4",
"display": "Diastolic blood pressure"
}]
},
"valueQuantity": {
"value": 78,
"unit": "mmHg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
}]
} code= LOINC85354-9(Blood pressure panel).- Deux
component: systolique (LOINC8480-6) et diastolique (LOINC8462-4), chacun avecvalueQuantityet unité UCUMmm[Hg]. bodySite= SNOMED CT368209003(Right arm).
API REST
GET /Observation/blood-pressure— récupérer par id.GET /Observation?patient=example&code=loinc|85354-9— toutes les TA du patient.GET /Observation?patient=example&category=vital-signs&date=ge2026-05-01— signes vitaux récents.GET /Observation?patient=example&code=loinc|2339-0&value-quantity=gt7.0|http://unitsofmeasure.org|mmol/L— glycémies > 7 mmol/L.POST /Observation— création.$lastn— opération SMART qui retourne les N dernières observations groupées par code.
Profils
| Profil | Régulateur | Restrictions |
|---|---|---|
| Vital Signs Profile | HL7 — Core spec | Profil de base obligatoire pour toutes les category=vital-signs. Cardinalité minimale sur code, valueQuantity, effectiveDateTime. |
| US Core Observation Lab | HL7 US Realm | Catégorie laboratory, code LOINC obligatoire, status final/amended/corrected/cancelled/entered-in-error. |
| IPS Results (UV) | HL7 + CEN/TC 251 | Profil cross-border européen / mondial. Inclut les résultats laboratoire, radiologie, pathologie. |
| FR Core Observation | ANS | Profils français — résultats biologiques (codes NABM/LOINC), signes vitaux. |
Pièges courants
value[x]+dataAbsentReason: l'invariantobs-6impose qu'on ne peut pas avoir les deux à la fois. Choisir l'un OU l'autre.- Unité texte vs UCUM :
valueQuantity.unitest libre maisvalueQuantity.codedoit être un code UCUM strict.mmHgest l'unité affichée,mm[Hg]est le code UCUM officiel. - component vs hasMember :
componentpour les mesures intrinsèquement liées (TA syst/diast),hasMemberpour un panel où chaque membre est lui-même une Observation autonome (NFS). - Mauvaise
category: pour profil US Core Lab, oubliercategory=laboratoryfait sortir la ressource du profil. Mauvais référencement côté query. - Statut
finalpour donnée non validée : la donnée brute d'automate doit être enpreliminaryjusqu'à validation biologiste, puis passer enfinal. Émettre tout enfinalcontourne le workflow de validation. - Reference absolue vs relative :
"reference": "Patient/example"dans un Bundle relatif vs"reference": "https://example.com/fhir/Patient/example"en mode REST direct. Mélanger les deux casse les serveurs stricts.
Ressources liées
- DiagnosticReport — chapeau d'un rapport complet, référence un ou plusieurs Observation et les éventuelles images.
- Patient — sujet de l'observation.
- Encounter — contexte de soin.
- Practitioner — qui a réalisé la mesure.
- Specimen — échantillon analysé pour les observations biologiques.
- Device — dispositif de mesure (automate, monitor).
- Equivalent HL7 v2 — ORU^R01 segment OBX.