ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

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

ChampTypeCardinalitéRôle
identifierIdentifier[]0..*Identifiants externes (numéro d'accession laboratoire…).
statuscode1..1registered, preliminary, final, amended, corrected, cancelled, entered-in-error, unknown.
categoryCodeableConcept[]0..*Catégorie de l'observation (vital-signs, laboratory, imaging, survey, social-history…).
codeCodeableConcept1..1Quoi est observé. Typiquement un code LOINC.
subjectReference0..1Sujet (Patient, Group, Device, Location).
encounterReference(Encounter)0..1Contexte de soin.
effective[x]dateTime | Period | Timing | instant0..1Date/heure ou intervalle de la mesure.
issuedinstant0..1Date/heure de mise à disposition du résultat.
performerReference[]0..*Qui a fait la mesure (Practitioner, Organization, Patient, Device).
value[x]Quantity | CodeableConcept | string | boolean | integer | Range | Ratio | SampledData | time | dateTime | Period | Attachment | Reference0..1La valeur observée. Choice type très large.
dataAbsentReasonCodeableConcept0..1Pourquoi value[x] est absent (unknown, not-performed, error…).
interpretationCodeableConcept[]0..*Flag d'anormalité (équivalent OBX-8 en v2).
noteAnnotation[]0..*Commentaires libres.
bodySiteCodeableConcept0..1Site anatomique (SNOMED CT).
methodCodeableConcept0..1Méthode (auscultation, palpation, automate…).
specimenReference(Specimen)0..1Échantillon analysé.
deviceReference(Device)0..1Dispositif utilisé.
referenceRangeBackboneElement[]0..*Plage de référence avec low, high, appliesTo.
hasMemberReference[]0..*Sous-observations (panel).
derivedFromReference[]0..*Observations dont celle-ci dérive (calcul, agrégation).
componentBackboneElement[]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 :

json observation-bp-example.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" },
  "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 = LOINC 85354-9 (Blood pressure panel).
  • Deux component : systolique (LOINC 8480-6) et diastolique (LOINC 8462-4), chacun avec valueQuantity et unité UCUM mm[Hg].
  • bodySite = SNOMED CT 368209003 (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

ProfilRégulateurRestrictions
Vital Signs ProfileHL7 — Core specProfil de base obligatoire pour toutes les category=vital-signs. Cardinalité minimale sur code, valueQuantity, effectiveDateTime.
US Core Observation LabHL7 US RealmCatégorie laboratory, code LOINC obligatoire, status final/amended/corrected/cancelled/entered-in-error.
IPS Results (UV)HL7 + CEN/TC 251Profil cross-border européen / mondial. Inclut les résultats laboratoire, radiologie, pathologie.
FR Core ObservationANSProfils français — résultats biologiques (codes NABM/LOINC), signes vitaux.

Pièges courants

  • value[x] + dataAbsentReason : l'invariant obs-6 impose qu'on ne peut pas avoir les deux à la fois. Choisir l'un OU l'autre.
  • Unité texte vs UCUM : valueQuantity.unit est libre mais valueQuantity.code doit être un code UCUM strict. mmHg est l'unité affichée, mm[Hg] est le code UCUM officiel.
  • component vs hasMember : component pour les mesures intrinsèquement liées (TA syst/diast), hasMember pour un panel où chaque membre est lui-même une Observation autonome (NFS).
  • Mauvaise category : pour profil US Core Lab, oublier category=laboratory fait sortir la ressource du profil. Mauvais référencement côté query.
  • Statut final pour donnée non validée : la donnée brute d'automate doit être en preliminary jusqu'à validation biologiste, puis passer en final. Émettre tout en final contourne 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 v2ORU^R01 segment OBX.