Condition — Problème ou diagnostic clinique
Le problème, le diagnostic, la préoccupation clinique qui motive ou contextualise une prise en charge. Pierre angulaire du dossier patient en FHIR.
Objet de la ressource
Condition représente une préoccupation clinique relative à la santé qui a un niveau de granularité tel qu'elle peut être justifiée par un soignant et enregistrée dans le dossier. Couvre :
- les diagnostics formels (CIM-10, SNOMED CT) ;
- les symptômes (douleur thoracique, fatigue) ;
- les problèmes de santé chroniques (HTA, diabète) ;
- les facteurs de risque (tabagisme actif) ;
- les diagnostics provisoires ou différentiels en cours d'investigation.
La granularité distingue : les diagnostics liés à un séjour
(category=encounter-diagnosis) vs le problem list longitudinal
du patient (category=problem-list-item). Cette distinction structure le
dossier : un séjour peut clore son diagnostic d'admission (status devient
resolved) sans pour autant retirer le problème chronique sous-jacent du
problem list.
Champs clés
| Champ | Type | Cardinalité | Rôle |
|---|---|---|---|
identifier | Identifier[] | 0..* | Identifiants externes. |
clinicalStatus | CodeableConcept | 0..1 | État clinique (active, recurrence, relapse, inactive, remission, resolved). Conditionnel sur invariant. |
verificationStatus | CodeableConcept | 0..1 | Statut de vérification (unconfirmed, provisional, differential, confirmed, refuted, entered-in-error). |
category | CodeableConcept[] | 0..* | problem-list-item, encounter-diagnosis, health-concern. |
severity | CodeableConcept | 0..1 | Sévérité SNOMED (24484000=Severe, 6736007=Moderate, 255604002=Mild). |
code | CodeableConcept | 0..1 | Code du problème — SNOMED CT et/ou CIM-10. |
bodySite | CodeableConcept[] | 0..* | Site anatomique impacté (SNOMED). |
subject | Reference(Patient | Group) | 1..1 | Patient — obligatoire. |
encounter | Reference(Encounter) | 0..1 | Encounter où la condition a été constatée ou enregistrée. |
onset[x] | dateTime | Age | Period | Range | string | 0..1 | Date / âge / période d'apparition. |
abatement[x] | dateTime | Age | Period | Range | string | 0..1 | Date / âge de résolution. Obligatoire si clinicalStatus=resolved. |
recordedDate | dateTime | 0..1 | Date de saisie au dossier. |
recorder | Reference(Practitioner | PractitionerRole | Patient | RelatedPerson) | 0..1 | Qui a saisi. |
asserter | Reference(Practitioner | PractitionerRole | Patient | RelatedPerson) | 0..1 | Qui a affirmé la condition. |
participant | BackboneElement[] | 0..* | Autres acteurs (R5 — remplace partiellement asserter/recorder). |
stage | BackboneElement[] | 0..* | Staging clinique (T/N/M en oncologie, NYHA en cardio…). |
evidence | CodeableReference[] | 0..* | Preuves (Observation, DiagnosticReport). |
note | Annotation[] | 0..* | Commentaires libres. |
clinicalStatus vs verificationStatus
Confusion classique. clinicalStatus décrit où en est la condition dans
le temps :
active— actuellement présente.recurrence— réapparition après résolution.relapse— rechute après rémission.inactive— non active actuellement, sans qualification supplémentaire.remission— symptômes contrôlés sans guérison définitive (oncologie).resolved— guérison, plus de symptômes.
verificationStatus décrit la certitude du diagnostic :
unconfirmed— non confirmé.provisional— provisoire, en attente de confirmation.differential— diagnostic différentiel parmi d'autres.confirmed— confirmé.refuted— réfuté.entered-in-error— erreur de saisie.
Exemple JSON
Angine de poitrine I20.9 (CIM-10) / 194828000 (SNOMED CT) — diagnostic d'admission confirmé, sévère, active.
{
"resourceType": "Condition",
"id": "example",
"clinicalStatus": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
"code": "active",
"display": "Active"
}]
},
"verificationStatus": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status",
"code": "confirmed",
"display": "Confirmed"
}]
},
"category": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/condition-category",
"code": "encounter-diagnosis",
"display": "Encounter Diagnosis"
}]
}],
"severity": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "24484000",
"display": "Severe"
}]
},
"code": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "194828000",
"display": "Angina (disorder)"
}, {
"system": "http://hl7.org/fhir/sid/icd-10",
"code": "I20.9",
"display": "Angina pectoris, unspecified"
}],
"text": "Angina pectoris"
},
"bodySite": [{
"coding": [{
"system": "http://snomed.info/sct",
"code": "80891009",
"display": "Heart structure"
}]
}],
"subject": { "reference": "Patient/example" },
"encounter": { "reference": "Encounter/example" },
"onsetDateTime": "2026-05-14T08:00:00+01:00",
"recordedDate": "2026-05-14T10:30:00+01:00",
"recorder": { "reference": "Practitioner/example" },
"asserter": { "reference": "Practitioner/example" }
} codeavec deux codings — SNOMED CT et CIM-10 — pour faciliter l'interopérabilité.category=encounter-diagnosis.severity= Severe (SNOMED24484000).bodySite= Heart structure (SNOMED80891009).
API REST
GET /Condition/example— fetch direct.GET /Condition?patient=example— toutes les conditions du patient.GET /Condition?patient=example&clinical-status=active&category=problem-list-item— problem list actif.GET /Condition?patient=example&code=http://snomed.info/sct|73211009— diabète SNOMED.GET /Condition?encounter=example— conditions liées à un séjour.
Profils
| Profil | Régulateur | Restrictions |
|---|---|---|
| US Core Condition Problems Health Concerns | HL7 US Realm | Doit porter category (problem-list-item ou health-concern), code ICD-10-CM ou SNOMED, subject. |
| US Core Condition Encounter Diagnosis | HL7 US Realm | category=encounter-diagnosis, encounter obligatoire, code ICD-10-CM ou SNOMED. |
| IPS Condition | HL7 + CEN/TC 251 | Profil cross-border. code doit utiliser SNOMED CT International ou ICD. |
| FR Core Condition | ANS | Profil français — privilégie CIM-10 BR + SNOMED CT. |
Pièges courants
- Invariant
con-3: siclinicalStatus=resolvedouremissionouinactive,abatement[x]doit être présent. Sinon, validation échoue. - Invariant
con-4:abatement[x]ne peut pas coexister avecclinicalStatus=active. verificationStatus=entered-in-errorsansclinicalStatus: en R5,clinicalStatusne doit PAS être présent si la condition estentered-in-error. Pour les autres status, c'est l'inverse (invariantcon-5).- Double codification incohérente : SNOMED
73211009= Diabetes mellitus, mais CIM-10E10= Type 1 specifically. Bien aligner les concepts ou marquer le mismatch entext. - Problem list vs encounter diagnosis confondus : oublier la
categoryrend impossible la distinction entre dossier longitudinal et diagnostic ponctuel. Toujours catégoriser. - Onset string vs dateTime : utiliser une string (« child », « teenage years ») au lieu d'
onsetAgecasse les requêtesonset-date=ge2020-01-01.
Ressources liées
- Patient — sujet.
- Encounter — contexte si encounter-diagnosis.
- Observation — référencée par
evidence. - DiagnosticReport — référencée par
evidence. - Procedure, MedicationRequest, CarePlan — peuvent pointer vers Condition via
reasonReference. - AllergyIntolerance — distincte de Condition : les allergies ont leur propre ressource.
- Equivalent HL7 v2 — segment DG1 et parfois IAM (Patient Adverse Reaction) pour les allergies.