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.

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

ChampTypeCardinalitéRôle
identifierIdentifier[]0..*Identifiants externes.
clinicalStatusCodeableConcept0..1État clinique (active, recurrence, relapse, inactive, remission, resolved). Conditionnel sur invariant.
verificationStatusCodeableConcept0..1Statut de vérification (unconfirmed, provisional, differential, confirmed, refuted, entered-in-error).
categoryCodeableConcept[]0..*problem-list-item, encounter-diagnosis, health-concern.
severityCodeableConcept0..1Sévérité SNOMED (24484000=Severe, 6736007=Moderate, 255604002=Mild).
codeCodeableConcept0..1Code du problème — SNOMED CT et/ou CIM-10.
bodySiteCodeableConcept[]0..*Site anatomique impacté (SNOMED).
subjectReference(Patient | Group)1..1Patient — obligatoire.
encounterReference(Encounter)0..1Encounter où la condition a été constatée ou enregistrée.
onset[x]dateTime | Age | Period | Range | string0..1Date / âge / période d'apparition.
abatement[x]dateTime | Age | Period | Range | string0..1Date / âge de résolution. Obligatoire si clinicalStatus=resolved.
recordedDatedateTime0..1Date de saisie au dossier.
recorderReference(Practitioner | PractitionerRole | Patient | RelatedPerson)0..1Qui a saisi.
asserterReference(Practitioner | PractitionerRole | Patient | RelatedPerson)0..1Qui a affirmé la condition.
participantBackboneElement[]0..*Autres acteurs (R5 — remplace partiellement asserter/recorder).
stageBackboneElement[]0..*Staging clinique (T/N/M en oncologie, NYHA en cardio…).
evidenceCodeableReference[]0..*Preuves (Observation, DiagnosticReport).
noteAnnotation[]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.

json condition-example.json
{
  "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" }
}
  • code avec deux codings — SNOMED CT et CIM-10 — pour faciliter l'interopérabilité.
  • category = encounter-diagnosis.
  • severity = Severe (SNOMED 24484000).
  • bodySite = Heart structure (SNOMED 80891009).

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

ProfilRégulateurRestrictions
US Core Condition Problems Health ConcernsHL7 US RealmDoit porter category (problem-list-item ou health-concern), code ICD-10-CM ou SNOMED, subject.
US Core Condition Encounter DiagnosisHL7 US Realmcategory=encounter-diagnosis, encounter obligatoire, code ICD-10-CM ou SNOMED.
IPS ConditionHL7 + CEN/TC 251Profil cross-border. code doit utiliser SNOMED CT International ou ICD.
FR Core ConditionANSProfil français — privilégie CIM-10 BR + SNOMED CT.

Pièges courants

  • Invariant con-3 : si clinicalStatus=resolved ou remission ou inactive, abatement[x] doit être présent. Sinon, validation échoue.
  • Invariant con-4 : abatement[x] ne peut pas coexister avec clinicalStatus=active.
  • verificationStatus=entered-in-error sans clinicalStatus : en R5, clinicalStatus ne doit PAS être présent si la condition est entered-in-error. Pour les autres status, c'est l'inverse (invariant con-5).
  • Double codification incohérente : SNOMED 73211009 = Diabetes mellitus, mais CIM-10 E10 = Type 1 specifically. Bien aligner les concepts ou marquer le mismatch en text.
  • Problem list vs encounter diagnosis confondus : oublier la category rend 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'onsetAge casse les requêtes onset-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.