Condition — Clinical problem or diagnosis
The problem, diagnosis or clinical concern that motivates or contextualises care. A cornerstone of the FHIR patient record.
Purpose
Condition represents a clinical concern relating to health with a level of granularity such that it can be asserted by a clinician and recorded in the chart. It covers:
- formal diagnoses (ICD-10, SNOMED CT);
- symptoms (chest pain, fatigue);
- chronic health problems (hypertension, diabetes);
- risk factors (current smoker);
- provisional or differential diagnoses under investigation.
Granularity distinguishes encounter-bound diagnoses
(category=encounter-diagnosis) from the longitudinal patient
problem list (category=problem-list-item). The distinction
structures the record: an encounter can close its admission diagnosis (status
becomes resolved) without removing the underlying chronic problem from
the problem list.
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
identifier | Identifier[] | 0..* | External identifiers. |
clinicalStatus | CodeableConcept | 0..1 | Clinical state (active, recurrence, relapse, inactive, remission, resolved). Conditional on invariant. |
verificationStatus | CodeableConcept | 0..1 | Verification (unconfirmed, provisional, differential, confirmed, refuted, entered-in-error). |
category | CodeableConcept[] | 0..* | problem-list-item, encounter-diagnosis, health-concern. |
severity | CodeableConcept | 0..1 | SNOMED severity (24484000=Severe, 6736007=Moderate, 255604002=Mild). |
code | CodeableConcept | 0..1 | Problem code — SNOMED CT and/or ICD-10. |
bodySite | CodeableConcept[] | 0..* | Anatomical site (SNOMED). |
subject | Reference(Patient | Group) | 1..1 | Patient — mandatory. |
encounter | Reference(Encounter) | 0..1 | Encounter where the condition was noted or recorded. |
onset[x] | dateTime | Age | Period | Range | string | 0..1 | Onset date / age / period. |
abatement[x] | dateTime | Age | Period | Range | string | 0..1 | Resolution date / age. Required when clinicalStatus=resolved. |
recordedDate | dateTime | 0..1 | Chart entry date. |
recorder | Reference(Practitioner | PractitionerRole | Patient | RelatedPerson) | 0..1 | Who entered it. |
asserter | Reference(Practitioner | PractitionerRole | Patient | RelatedPerson) | 0..1 | Who asserted it. |
participant | BackboneElement[] | 0..* | Other actors (R5 — partially replaces asserter/recorder). |
stage | BackboneElement[] | 0..* | Clinical staging (T/N/M in oncology, NYHA in cardio…). |
evidence | CodeableReference[] | 0..* | Evidence (Observation, DiagnosticReport). |
note | Annotation[] | 0..* | Free-text comments. |
clinicalStatus vs verificationStatus
Classic confusion. clinicalStatus describes where the condition stands
in time:
active— currently present.recurrence— reappearance after resolution.relapse— relapse after remission.inactive— not currently active, no further qualification.remission— symptoms controlled without definitive cure (oncology).resolved— cured, no more symptoms.
verificationStatus describes diagnostic certainty:
unconfirmed— not confirmed.provisional— provisional, awaiting confirmation.differential— differential among others.confirmed— confirmed.refuted— refuted.entered-in-error— data entry error.
JSON example
Angina pectoris I20.9 (ICD-10) / 194828000 (SNOMED CT) — confirmed admission diagnosis, severe, 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" }
} codewith two codings — SNOMED CT and ICD-10 — to ease interoperability.category=encounter-diagnosis.severity= Severe (SNOMED24484000).bodySite= Heart structure (SNOMED80891009).
REST API
GET /Condition/example— direct fetch.GET /Condition?patient=example— all conditions for a patient.GET /Condition?patient=example&clinical-status=active&category=problem-list-item— active problem list.GET /Condition?patient=example&code=http://snomed.info/sct|73211009— diabetes (SNOMED).GET /Condition?encounter=example— conditions tied to an encounter.
Profiles
| Profile | Regulator | Restrictions |
|---|---|---|
| US Core Condition Problems Health Concerns | HL7 US Realm | Must carry category (problem-list-item or health-concern), code ICD-10-CM or SNOMED, subject. |
| US Core Condition Encounter Diagnosis | HL7 US Realm | category=encounter-diagnosis, encounter mandatory, code ICD-10-CM or SNOMED. |
| IPS Condition | HL7 + CEN/TC 251 | Cross-border profile. code must use SNOMED CT International or ICD. |
| FR Core Condition | ANS | French profile — favours ICD-10 BR + SNOMED CT. |
Common pitfalls
- Invariant
con-3: ifclinicalStatus=resolved,remissionorinactive,abatement[x]must be present. Otherwise validation fails. - Invariant
con-4:abatement[x]cannot coexist withclinicalStatus=active. verificationStatus=entered-in-errorwithoutclinicalStatus: in R5,clinicalStatusMUST NOT be present if the condition isentered-in-error. For other statuses, the opposite (invariantcon-5).- Inconsistent dual coding: SNOMED
73211009= Diabetes mellitus, but ICD-10E10= Type 1 specifically. Align concepts or flag the mismatch intext. - Problem list vs encounter diagnosis confused: missing
categorymakes it impossible to distinguish longitudinal record from point-in-time diagnosis. Always categorise. - Onset string vs dateTime: using a string ("child", "teenage years") instead of
onsetAgebreaksonset-date=ge2020-01-01queries.
Related resources
- Patient — subject.
- Encounter — context if encounter-diagnosis.
- Observation — referenced by
evidence. - DiagnosticReport — referenced by
evidence. - Procedure, MedicationRequest, CarePlan — can point to Condition via
reasonReference. - AllergyIntolerance — distinct from Condition: allergies have their own resource.
- HL7 v2 equivalent — segment DG1 and sometimes IAM (Patient Adverse Reaction) for allergies.