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 section 4 are AllergyIntolerance, Condition and Observation.
AllergyIntolerance resource
Figure 4.1-1 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).
Figure 4.1-1: Structure of the AllergyIntolerance HL7 FHIR resource as in HL7® FHIR® v4.3.0: R4B - STU (From http://www.hl7.org/fhir/allergyintolerance.html, consulted on 2nd September 2022).
The scope of this resource is to "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."
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"). | AllergyIntoleranceSubstance/Product,ConditionAndNegationCodes | ||
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". The full discussion regarding this extension can be found on the 22/02/2022 SNOMED on FHIR group meeting page.
- 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
Figure 4.1-2 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).
Figure 4.1-2: Structure of the Observation HL7 FHIR resource as in HL7® FHIR® v4.3.0: R4B - STU (From http://www.hl7.org/fhir/observation.html, consulted on 2nd September 2022).
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).
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.method | Indicates the mechanism used to perform the observation. | |||
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). | |||
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
Figure 4.1-3 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).
Figure 4.1-3: Structure of the Condition HL7 FHIR resource as in HL7® FHIR® v4.3.0: R4B - STU (From http://www.hl7.org/fhir/condition.html, consulted on 2nd September 2022)
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).
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.category | A category assigned to the condition. | |||
Condition.severity | A subjective assessment of the severity of the condition as evaluated by the clinician. | |||
Condition.code | Identification of the condition or diagnosis. | |||
Condition.bodySite | Codes describing anatomical locations. May include laterality. | |||
Condition.stage.summary | Codes describing condition stages (e.g. Cancer stages). | |||
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. |
1.1.3.4 Example of a typical Medication allergy resource from a clinical system (id = "medication") (JSON format):
{ "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.
Feedback