FHIR model
FHIR® is an HL7® standard for exchanging healthcare information electronically. The fourth STU release (R4) was published in October 2019, including the first (partial) normative content. FHIR models the classes of information for interoperable use as Resources. The FHIR® Resources relevant to the use cases in the Information Model and Terminology Binding section are AllergyIntolerance, Condition and Observation.
AllergyIntolerance resource
The image below shows the structure of the FHIR AllergyIntolerance resource. The full resource model structure, coded elements and terminology bindings of the AllergyIntolerance resource can be found at http://www.hl7.org/fhir/allergyintolerance.html, with various display options, including UML, XML, JSON, Turtle and the differences it underwent compared to the prior release(s).

The scope of this resource is "A Record of a clinical assessment of an allergy or intolerance; a propensity, or a potential risk to an individual, to have an adverse reaction on future exposure to the specified substance, or class of substance.
Where a propensity is identified, to record information or evidence about a reaction event that is characterized by any harmful or undesirable physiological response that is specific to the individual and triggered by exposure of an individual to the identified substance or class of substance.
Substances include, but are not limited to: a therapeutic substance administered correctly at an appropriate dosage for the individual; food; material derived from plants or animals; or venom from insect stings."
Table: The definition of the main AllergyIntolerance resource elements along with details about their terminology bindings.
Path/Element
Definition
Values
Binding Strength
Binding
AllergyIntolerance.
clinicalStatus
The clinical status of the allergy or intolerance.
- active - inactive - resolved
AllergyIntolerance.
verificationStatus
Assertion about certainty associated with a propensity, or potential risk, of a reaction to the identified substance.
-unconfirmed - confirmed - refuted - entered-in-error
AllergyIntolerance.type
Identification of the underlying physiological mechanism for the reaction risk, if known.
- allergy - intolerance
AllergyIntolerance.category
Category of an identified substance associated with allergies or intolerances.
- food - medication - environment- biologic
AllergyIntolerance.criticality
Estimate of the potential clinical harm, or seriousness, of a reaction to an identified substance.
- low - high - unable-to-assess
AllergyIntolerance.code
Code for an allergy or intolerance statement (either a positive or a negated/excluded statement). This may be a code for a substance or pharmaceutical product that is considered to be responsible for the adverse reaction risk (e.g., "Latex"), an allergy or intolerance condition (e.g., "Latex allergy"), or a negated/excluded code for a specific substance or class (e.g., "No latex allergy") or a general or categorical negated statement (e.g., "No known allergy", "No known drug allergies").
AllergyIntolerance.reaction.substance
Identification of the specific substance (or pharmaceutical product) considered to be responsible for the Adverse Reaction manifestation. It can differ from the AllergyIntolerance.code in some circumstances (ex: reaction to a product containing the substance responsible).
AllergyIntolerance.reaction.manifestation
Clinical symptoms and/or signs that are observed or associated with an Adverse Reaction Event.
AllergyIntolerance.reaction.severity
Clinical assessment of the severity of a reaction event as a whole , potentially considering multiple different manifestations.
- mild - moderate - severe
AllergyIntolerance.reaction.exposureRoute
A coded concept describing the route or physiological path by which the subject was exposed to the substance.
It is important to note that
In the FHIR® AllergyIntolerance resource, some elements (type, category, criticality and severity) have currently a "Code" data type. They thus require the use of the FHIR values provided and no other classification or terminology code can be used as value in these elements, unless one is using a FHIR® extension, while other elements (clinicalStatus, verificationStatus) have a "CodeableConcept" data type and thus allow for simultaneous use of several code systems (ex: both the FHIR values and the SNOMED CT concepts representing the same meaning as those FHIR values).
Here you will find an example of extension for AllergyIntolerance.type, which allows capturing, in SNOMED CT, more type of reaction values then the two FHIR values of "allergy" and "intolerance".
When FHIR® R5 is released (expected in late 2022):
The reaction.manifestation element should be able to directly reference a FHIR Observation resource representing the manifestation (proposal to be balloted in R5). This will allow the manifestation of an adverse reaction to be recorded only once, not first in an Observation resource and then once again in the AllergyIntolerance resource.
The AllergyIntolerance.type element will have a "CodeableConcept" data type and a binding strength of "Preferred", thus allowing the use of SNOMED CT concepts as values without the use of an extension.
Observation resource
The image below shows the structure of the FHIR Observation resource. The full resource model structure, coded elements and terminology bindings of the Observation resource can be found on http://www.hl7.org/fhir/observation.html, with various display options, including UML, XML, JSON, Turtle and the differences it underwent compared to the prior release(s).

Observations in general are a central element in healthcare, used to support diagnosis, monitor progress, determine baselines and patterns and even capture demographic characteristics. Most observations are simple name/value pair assertions with some metadata, but some observations group other observations together logically, or even are multi-component observations. Note that the DiagnosticReport resource provides a clinical or workflow context for a set of observations and the Observation resource is referenced by DiagnosticReport to represent laboratory, imaging, and other clinical and diagnostic data to form a complete report. In the context of allergies, it can be used to present allergy test results.
Uses for the Observation resource include:
Vital signs such as body weight, blood pressure, and temperature
Laboratory Data like blood glucose, or an estimated GFR
Imaging results like bone density or fetal measurements
Clinical Findings such as abdominal tenderness
Device measurements such as EKG data or Pulse Oximetry data
Clinical assessment tools such as APGAR or a Glasgow Coma Score
Personal characteristics: such as eye-color
Social history like tobacco use, family support, or cognitive status
Core characteristics like pregnancy status, or a death assertion
In the context of allergies, the Observation resource can be used to record the manifestation(s) of the allergy (ex: rash on the neck). Note that the boundary between observing a (series of) clinical finding(s) and posing the diagnosis of a disorder isn't always clear cut in medical ontology, and explicit local business rules may be needed to help clinicians record the same clinical situations either as observations or as diagnosis in a consistent way. The Observation resource can also be used to record allergy test results (biological test, like dosage of specific IgE or clinical, like patch and prick tests).
Table: The definition of the main Observation resource elements along with details about their terminology bindings.
Path/Element
Definition
Values
Binding Strength
Binding
Observation.status
The status of the result value.
- registered - preliminary - final - amended - corrected - cancelled - entered in error - unknown
Observation.category
A code that classifies the general type of observation being made.
Observation.code
Type of observation (code / type). Describes what was observed. Sometimes this is called the observation "name".
Observation.dataAbsentReason
Provides a reason why the expected value in the element Observation.value[x] is missing.
Observation.interpretation
A categorical assessment of an observation value. For example, high, low, normal.
Observation.bodySite
Indicates the site on the subject's body where the observation was made (i.e. the target site). May include laterality.
Observation.referenceRange.type
Codes to indicate the what part of the targeted reference population it applies to. For example, the normal or therapeutic range.
Observation.referenceRange.appliesTo
Codes to indicate the target population this reference range applies to. For example, a reference range may be based on the normal population or a particular sex or race.
Observation.component.code
Type of component observation (code / type). Describes what was observed. Sometimes this is called the observation "code".
Observation.component.dataAbsentreason
Provides a reason why the expected value in the element Observation.component.value[x] is missing.
Observation.component.interpretation
A categorical assessment of an observation value. For example, high, low, normal.
Condition resource
The image below shows the structure of the FHIR Condition resource. The resource model structure, coded elements and terminology bindings of the Condition resource can be found on http://www.hl7.org/fhir/condition.html, with various display options, including UML, XML, JSON, Turtle and the differences it underwent compared to the prior release(s).

This resource is used to record detailed information about a condition, problem, diagnosis, or other event, situation, issue, or clinical concept that has risen to a level of concern. The condition could be a point in time diagnosis in the context of an encounter, it could be an item on the practitioner’s Problem List, or it could be an additional concern that does not exist on the practitioner’s Problem List. Often a condition is about a clinician's assessment and assertion of a particular aspect of a patient's state of health. It can be used to record information about a disease/illness identified from application of clinical reasoning over the pathologic and pathophysiologic findings (diagnosis), or identification of health issues/situations that a practitioner considers harmful or potentially harmful and may be investigated and managed (problem), or another health issue/situation that may require ongoing monitoring and/or management (health issue/concern).
While conditions are frequently a result of a clinician's assessment and assertion of a particular aspect of a patient's state of health, conditions can also be expressed by the patient, related person, or any care team member. A clinician may have a concern about a patient condition (e.g. anorexia) that the patient is not concerned about. Likewise, the patient may have a condition (e.g. hair loss) that does not rise to the level of importance such that it belongs on a practitioner’s Problem List.
In the context of allergies, the Condition resource can be used to record the manifestation(s) of the allergy (ex: allergic urticaria).
Table: The definition of the main Condition resource elements along with details about their terminology bindings.
Path/Element
Definition
Values
Binding Strength
Binding
Condition.clinicalStatus
The clinical status of the condition or diagnosis.
- active - recurrence - relapse - inactive - remission - resolved
Condition.verificationStatus
The verification status to support or decline the clinical status of the condition or diagnosis.
- unconfirmed - provisional - differential - confirmed - refuted - entered-in-error
Condition.severity
A subjective assessment of the severity of the condition as evaluated by the clinician.
Condition.bodySite
Codes describing anatomical locations. May include laterality.
Condition.stage.type
Codes describing the kind of condition staging (e.g. clinical or pathological).
Condition.evidence.code
Codes that describe the manifestation or symptoms of a condition.
Example of a typical Medication allergy resource from a clinical system (id = "medication") (JSON form
{
"resourceType": "AllergyIntolerance",
"id": "medication",
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p><b>Generated Narrative with Details</b></p><p><b>id</b>: medication</p><p><b>clinicalStatus</b>: Active <span>(Details : {http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical code 'active' = 'Active', given as 'Active'})</span></p><p><b>verificationStatus</b>: Unconfirmed <span>(Details : {http://terminology.hl7.org/CodeSystem/allergyintolerance-verification code 'unconfirmed' = 'Unconfirmed', given as 'Unconfirmed'})</span></p><p><b>category</b>: medication</p><p><b>criticality</b>: high</p><p><b>code</b>: Penicillin G <span>(Details : {RxNorm code '7980' = 'Penicillin G', given as 'Penicillin G'})</span></p><p><b>patient</b>: <a>Patient/example</a></p><p><b>recordedDate</b>: 01/03/2010</p><p><b>recorder</b>: <a>Practitioner/13</a></p><h3>Reactions</h3><table><tr><td>-</td><td><b>Manifestation</b></td></tr><tr><td>*</td><td>Hives <span>(Details : {SNOMED CT code '247472004' = 'Weal', given as 'Hives'})</span></td></tr></table></div>"
},
"clinicalStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical",
"code": "active",
"display": "Active"
}
]
},
"verificationStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification",
"code": "unconfirmed",
"display": "Unconfirmed"
}
]
},
"category": [
"medication"
],
"criticality": "high",
"code": {
"coding": [
{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "7980",
"display": "Penicillin G"
}
]
},
"patient": {
"reference": "Patient/example"
},
"recordedDate": "2010-03-01",
"recorder": {
"reference": "Practitioner/13"
},
"reaction": [
{
"manifestation": [
{
"coding": [
{
"system": "http://snomed.info/sct",
"code": "247472004",
"display": "Hives"
}
]
}
]
}
]
}
Using SNOMED CT concepts in FHIR® resources
The SNOMED on FHIR group can provide help and direction on how to deal with the specific issues that may arise when using SNOMED CT concepts in FHIR® resources. SNOMED CT implementation in FHIR guidance can be found here: http://build.fhir.org/ig/IHTSDO/snomed-ig/, while proposals of SNOMED CT adapted FHIR resources can be found here: http://build.fhir.org/ig/IHTSDO/snomed-ig/profiles.html.
You will note that there are two separate FHIR® profiles proposed on this page, based on the general HL7 FHIR AllergyIntolerance resource. One is substance-focused, meaning that the record centers for the AllergyIntolerance.code value on the substance the patient reacts to and captures separately the type of reaction in the AllergyIntolerance.type element. One can say this model captures the allergy/intolerance to X in a post-coordinated way. The second profile is finding-focused, meaning it captures the allergy/intolerance in the AllergyIntolerance.code element using pre-coordinated "allergy/intolerance to X" SNOMED CT concepts and makes no use of the AllergyIntolerance.type element.
Last updated