ObservationDefinition — détail : catalogue d'observations
Catalogue éditorial des analyses qu'un laboratoire propose : codes LOINC, unités UCUM, intervalles de référence. Toute Observation produite référence son ObservationDefinition.
Rôle dans un catalogue d'analyses
Un laboratoire publie son catalogue d'analyses via N ObservationDefinition. Chaque ServiceRequest (demande d'analyse) référence un ObservationDefinition. Chaque Observation produite hérite implicitement des règles : code LOINC, unité, intervalles de référence.
Champs clés
code— code LOINC de l'analyse.permittedDataType—Quantity | CodeableConcept | string | boolean | integer | Range | Ratio | SampledData | time | dateTime | Period.permittedUnit— unités UCUM autorisées.category— laboratory, vital-signs, imaging, social-history, ...preferredReportName— nom court d'affichage.qualifiedValue— intervalles de réf par contexte (âge, sexe, condition).specimen— SpecimenDefinition requise(s).device— DeviceDefinition utilisée.
qualifiedValue — intervalles par contexte
Là où une referenceRange simple ne distingue pas les contextes (homme vs
femme, adulte vs enfant), qualifiedValue introduit un context
qui qualifie chaque intervalle :
range— intervalle numérique.interpretation— code d'interprétation (N, H, L, A).condition— phase clinique (grossesse trim 1, post-AVC...).appliesTo— population qualifiée (CodeableConcept).gender,age,gestationalAge— discriminants standards.
Exemple : HbA1c sanguine
{
"resourceType": "ObservationDefinition",
"id": "od-hba1c",
"url": "http://example.org/fhir/ObservationDefinition/HbA1c",
"version": "1.0.0",
"status": "active",
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "4548-4",
"display": "Hemoglobin A1c/Hemoglobin.total in Blood"
}]
},
"permittedDataType": ["Quantity"],
"preferredReportName": "HbA1c",
"category": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "laboratory"
}]
}],
"permittedUnit": [{
"system": "http://unitsofmeasure.org",
"code": "%",
"display": "percent"
}, {
"system": "http://unitsofmeasure.org",
"code": "mmol/mol"
}],
"qualifiedValue": [{
"context": { "text": "Adulte non diabetique" },
"range": {
"low": { "value": 4.0, "unit": "%" },
"high": { "value": 5.6, "unit": "%" }
},
"interpretation": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code": "N",
"display": "Normal"
}]
}]
}, {
"context": { "text": "Adulte diabetique - cible" },
"range": {
"high": { "value": 7.0, "unit": "%" }
},
"interpretation": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code": "H",
"display": "High"
}]
}]
}]
} Pièges courants
- Unité non UCUM — éviter
mg/dLen string libre ; utilisermg/dLavecsystem=http://unitsofmeasure.org. - qualifiedValue sans
context— rend impossible la discrimination automatique des intervalles. - permittedDataType absent — l'Observation peut être validée avec n'importe quel
value[x], source d'erreurs silencieuses.