Last week I received an e-mail asking how FHIR expresses Uncertainty and Negation. It was a general inquiry, but also asked how FHIR might express a specific clinical statement like “Intolerant to opiods, no known other medication ADEs, and no known environmental/food allergens”.
Here’s what I said…
“No known (meds | problems | allergies | …)” or “Not asked”:
The most general construct FHIR has for negation is a List that’s empty. An empty List can specify an “emptyReason” code that explains why it’s empty. So for example, a FHIR clinical visit summary composition might have a “Allergy List” as one of its sections. That would be represented as a FHIR List Resource whose entries are FHIR AllergyIntolerance Resources. A patient with no known allergies would have a List, but it would be empty, and the List.emptyReason would be set to “Nil Known,” or “Not Asked,” or another valid code for “list empty reason“.
Regarding the specific example (“Intolerant to opiods, no known other medication ADEs, and no known environmental/food allergens”): the cleanest way to do this in FHIR would be to model a visit summary with two separate allergy/intolerance lists: a Medication Allergy/Intolerance List (which would have one entry for the opioid intoerance), an Environmental+Food Allergy List (which would be empty with a “Nil Known” reason).
Specific negation of a (med | problem | allergy | …)
FHIR doesn’t have a generalized mechanism to say that a patient is *not* taking Cephalexin, or *not* allergic to Pencillin, or *not* asthmatic. But there is, for example, a specific way to say that a patient refused an Immunization (and why), or that a medication administeration was not performed (and why).
Uncertainty of a (med | problem | allergy | …)
FHIR doesn’t have a generalized mechanism to say that it’s uncertain whether a patient is taking Cephalexin, or allergic to Penicllin, or asthmatic. But there is, for example, a way to say that a diagnosis is merely suspected, or that the reliability of an Observation is questionable.
And if you can’t express what you want in “core” FHIR… you use extensions
So the built-in semantics are incomplete, but focused in a very practical way on the functionality that existing systems are mostly able to communicate. Importantly in FHIR, unlike in C-CDA, there’s always the escape hatch of extension (including “modifier extensions”) to express additional meaning. So for example if you needed to describe a MedicationAdministration with an uncertain status, you can add an extension to express that uncertainty. You’d model that extension as a “modifier extension,” indicating to any downstream clients that if they can’t understand the extension, then it’s not safe to use the data for clinical decisions. (Ordinary non-modifier extensions don’t fundamentally change the meaning of the data; they just augment it. So for example, a patient’s religion could be described in a non-modifier extension.)
EDIT: thanks to Keith Boone for pointing out that CDA, too, allows extensions. (But of course, CDA has built-in semantics designed to deal with negation.) And thanks to Grahame Grieve for pointing out that CDA extensions are semantically limited to what FHIR calls non-modifier extensions — that is, they can’t change the meaning of data, only augment it.