FHIR

FHIR Condition explained: clinical status, verification status, categories and codes, with an example

Condition records a diagnosis, a problem or a symptom with its course over time. What clinicalStatus and verificationStatus mean, the difference between a problem-list item and an encounter diagnosis, how SNOMED CT and ICD-10 codes sit together, onset and abatement, a valid R4 example, and what not to put in a Condition.

by Published 6 min read

Short answer: Condition is the FHIR resource for a diagnosis, a health problem or a symptom that has risen to the level of concern: this patient has type 2 diabetes, active, confirmed, since 2019. Its two status fields are what make it useful. clinicalStatus says where the condition is in its course (active, recurrence, relapse, inactive, remission, resolved); verificationStatus says how sure anyone is (unconfirmed, provisional, differential, confirmed, refuted, entered-in-error). category separates long-running problem-list items from encounter diagnoses recorded for one visit. The code is usually SNOMED CT, often with an ICD-10 code beside it for reporting.

A valid FHIR R4 example

A valid FHIR R4 Condition resource needs a subject reference and, unless it is entered-in-error, a clinicalStatus; in practice it also carries verificationStatus, a category (problem-list-item or encounter-diagnosis), a coded diagnosis and an onset. The example below records confirmed, active type 2 diabetes with a SNOMED CT code and an ICD-10 code side by side.

{
  "resourceType": "Condition",
  "id": "t2dm",
  "clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active"}]},
  "verificationStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed"}]},
  "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-category", "code": "problem-list-item"}]}],
  "severity": {"coding": [{"system": "http://snomed.info/sct", "code": "6736007", "display": "Moderate"}]},
  "code": {
    "coding": [
      {"system": "http://snomed.info/sct", "code": "44054006", "display": "Type 2 diabetes mellitus"},
      {"system": "http://hl7.org/fhir/sid/icd-10", "code": "E11", "display": "Type 2 diabetes mellitus"}
    ],
    "text": "Type 2 diabetes"
  },
  "subject": {"reference": "Patient/example"},
  "onsetDateTime": "2019-03",
  "recordedDate": "2019-03-18",
  "recorder": {"reference": "Practitioner/gp-42"},
  "asserter": {"reference": "Practitioner/gp-42"},
  "note": [{"text": "Diet-controlled at diagnosis; metformin started 2021."}]
}

The elements that matter

The Condition elements that matter most are clinicalStatus (where the condition is in its course), verificationStatus (how certain the diagnosis is), category (problem-list item or encounter diagnosis), code (usually SNOMED CT, often with ICD-10 beside it), onset and abatement, recordedDate, and recorder and asserter, which say who entered the condition and who claims it.

  • clinicalStatus is required whenever the condition is not entered-in-error, and its values follow the course of a disease. resolved is for conditions that ended (a fracture that healed); remission for ones that may return; inactive for a problem no longer being managed. Changing it is how a problem list stays truthful without deleting history.
  • verificationStatus records certainty. provisional and differential are working diagnoses during a work-up; confirmed once established; refuted when ruled out, which keeps the record of what was considered. A symptom-level entry is often unconfirmed.
  • category: problem-list-item for the standing list a GP maintains; encounter-diagnosis for what this visit was about. The same disease may appear as both, linked to different encounters.
  • code is a CodeableConcept, so it can carry a SNOMED CT concept for clinical meaning and an ICD-10 code for statistics side by side. See CodeableConcept and Coding and SNOMED CT vs ICD-10.
  • bodySite, severity and stage (with assessment references) qualify the condition; evidence points to the Observations or reports that support it.
  • onset[x] and abatement[x] can be a date-time, an age, a period, a range or a string ("childhood"), because patients rarely know exact dates. recordedDate is when it entered the record, which may be years later.
  • recorder entered it; asserter is who claims it, which can be the patient themselves.

Condition vs Observation

In FHIR, an Observation is a single measured or reported data point, such as a blood pressure reading or a logged headache, while a Condition is the persisting clinical interpretation that is managed over time, such as hypertension or migraine. Observations supply evidence; a Condition is a claim about the patient asserted by a clinician or the patient.

A blood pressure reading is an Observation. Hypertension is a Condition. A symptom the patient logs ("headache, 6/10, since Tuesday") is an Observation; a clinician's judgement that the headaches are migraine is a Condition. Rule of thumb: Observations are data points; Conditions are the clinical interpretation that persists and is managed. Anpheros records symptoms as Observations and only creates a Condition for a diagnosis a clinician made or the person reported as told to them; the app never derives a Condition from symptoms. See Symptoms as Observations and Conditions as records.

Encounter diagnoses and the problem list

In FHIR, an encounter diagnosis is a Condition linked from Encounter.diagnosis for one visit, with a use such as admission or discharge diagnosis and a rank, while the problem list is the standing set of Conditions with category problem-list-item and an active clinicalStatus. The same disease can appear in both roles, linked to different encounters.

An Encounter points to its diagnoses through Encounter.diagnosis, each with a use (admission diagnosis, discharge diagnosis, chief complaint, comorbidity, billing) and a rank. The problem list is the set of Conditions with category problem-list-item and a clinicalStatus of active or similar. Reconciling the two (did the discharge diagnosis become a new problem?) is clinical work that FHIR records but does not automate. See FHIR Encounter explained.

What not to put in a Condition

A FHIR Condition should hold only a diagnosis, problem or symptom someone asserts about the patient. Family history belongs in FamilyMemberHistory, allergies in AllergyIntolerance, risks and scores in Observation or RiskAssessment, and completed procedures in Procedure. Anything software inferred without a clinician or the patient asserting it does not belong in a Condition at all.

  • Family history (that belongs in FamilyMemberHistory).
  • Allergies (AllergyIntolerance has its own criticality and reaction model).
  • Risks and scores (Observation or RiskAssessment).
  • Procedures that were performed (Procedure).
  • Anything the software inferred without a clinician or the patient asserting it; a Condition is a claim about the patient, and asserter says whose.

In Anpheros

Anpheros creates FHIR Condition resources on Anpheros Platform only from a clinic writing through the API, from a coded document with provenance pointing back to it, or from a diagnosis the person reports they were given. Each Condition is shown with its status and source, and the app never diagnoses or marks a Condition confirmed on its own.

Clinicians see the same Condition with its codes, which is what makes the record readable by any FHIR system.

Sources

Frequently asked questions

Should I use SNOMED CT or ICD-10 in Condition.code?

Both, when you have both. SNOMED CT carries the clinical meaning for care; ICD-10 (or its national variant) carries the classification for reporting and billing. Put each as a Coding in the same CodeableConcept; profiles say which one is required.

How do I record that a diagnosis was wrong?

Set verificationStatus to refuted if the condition was ruled out after being considered, or entered-in-error if it was recorded by mistake. Do not delete the resource; the history is part of the record.

Where does a symptom go, Condition or Observation?

As an Observation while it is a reported data point (pain score, duration, trigger). As a Condition only when a clinician or the patient asserts it as a problem to be managed, with the appropriate verificationStatus.

Does Condition have a date it was diagnosed?

onset[x] is when the condition began, which may be approximate; recordedDate is when it was entered. There is no separate diagnosis date; many guides use recordedDate or an Encounter reference for that.

Anpheros Platform

Try it free in the sandbox

Your first FHIR call in 5 minutes. An HL7 FHIR R4 API with the patient's consent built in: try it in the sandbox, then connect your own app or clinic system.

Free · 30 synthetic patients · no card

This guide is for information and does not replace medical advice. For decisions about your health, talk to your doctor. In an emergency, call your local emergency number (112 in Europe).
Written by
The Anpheros team

Anpheros builds a medical record that the patient controls and can share with any clinic, on an HL7 FHIR R4 platform, based in the EU. These guides help you understand and organise your health; they do not replace your doctor.

About Anpheros →
Anpheros

The more you log, the clearer your record

Your health history in one place, under your control.

Symptom diaryPatterns show over time
Emergency cardQR in your phone's Wallet
All your resultsLabs and reports together
You decideWho sees what, and for how long
Create your free account

Free · Works in your browser · No card