AllergyIntolerance — Allergies and intolerances
The clinical red-flag resource: every EHR must surface AllergyIntolerance before each prescription, and the order must consider it.
Purpose of the resource
AllergyIntolerance is the FHIR resource that records, for a patient, the known propensity to react adversely to a substance — be it a true allergy (immunological Type-I IgE-mediated reaction), a non-immunological intolerance (lactose, gluten), a pseudo-allergic reaction (aspirin), or a recurring adverse drug reaction.
The resource is used by CDSS (Clinical Decision Support Systems) to detect contraindications before a MedicationRequest is issued. It is also central in hospital pharmacy dispensing and in pre-operative anaesthesia. Pre-coordination model using RxNorm / SNOMED CT codes to precisely identify the substance or class involved.
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
identifier | Identifier[] | 0..* | Local business identifier. |
clinicalStatus | CodeableConcept | 0..1 | active, inactive, resolved. |
verificationStatus | CodeableConcept | 0..1 | unconfirmed, presumed, confirmed, refuted, entered-in-error. |
type | CodeableConcept | 0..1 | allergy or intolerance. |
category | code[] | 0..* | food, medication, environment, biologic. |
criticality | code | 0..1 | low, high, unable-to-assess. Not the severity of the episode, but the risk of severe future reaction. |
code | CodeableConcept | 0..1 | Substance / class code. SNOMED CT, RxNorm, ATC class, coded allergen. |
patient | Reference(Patient) | 1..1 | Subject (mandatory). |
encounter | Reference(Encounter) | 0..1 | Discovery / documentation visit. |
onset[x] | dateTime | Age | Period | Range | string | 0..1 | Date / age of first manifestation. |
recordedDate | dateTime | 0..1 | Data entry date. |
recorder | Reference(Practitioner | PractitionerRole | Patient | RelatedPerson) | 0..1 | Who documented. |
asserter | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | 0..1 | Who asserted the allergy (often the patient). |
lastOccurrence | dateTime | 0..1 | Last known manifestation. |
reaction | BackboneElement[] | 0..* | Episode details: exact substance, manifestation, severity, exposure route. |
note | Annotation[] | 0..* | Free-text annotations. |
Clinical and verification statuses
Two status dimensions are at play:
clinicalStatus— clinical state of the allergy.active= ongoing, to monitor.inactive= not an immediate threat (remission).resolved= cured (proven desensitisation, for example).verificationStatus— data reliability.confirmed= certified by test or by authenticated episode.presumed= assumed on clinical grounds.unconfirmed= declared but not verified.refuted= explicitly refuted after investigation.entered-in-error= entered by mistake.
This duality is critical: a patient who reports a "penicillin allergy" often had
only a benign childhood rash. An allergy work-up flips the status from
unconfirmed to confirmed or refuted.
JSON example
Confirmed penicillin allergy (SNOMED CT), high criticality, with a documented episode of hives after oral aspirin:
{
"resourceType": "AllergyIntolerance",
"id": "penicillin",
"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": "confirmed",
"display": "Confirmed"
}]
},
"type": {
"coding": [{
"system": "http://hl7.org/fhir/allergy-intolerance-type",
"code": "allergy"
}]
},
"category": ["medication"],
"criticality": "high",
"code": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "373270004",
"display": "Substance with penicillin structure and antibacterial mechanism of action"
}]
},
"patient": { "reference": "Patient/example" },
"onsetDateTime": "2018-04-22",
"recordedDate": "2019-01-15T11:00:00+01:00",
"recorder": { "reference": "Practitioner/dr-jones" },
"reaction": [{
"substance": {
"coding": [{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "1191",
"display": "Aspirin"
}]
},
"manifestation": [{
"concept": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "247472004",
"display": "Hives"
}]
}
}],
"severity": "moderate",
"exposureRoute": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "26643006",
"display": "Oral route"
}]
}
}]
} clinicalStatus=active+verificationStatus=confirmed— active and certified red flag.criticality=high— risk of severe reaction on future exposure.category=["medication"]— class of the offending substance.codeSNOMED CT373270004= penicillin-structured substances. This is the class, not a specific drug.reaction[0]describes an episode with aspirin (RxNorm 1191) that triggered hives (SNOMED CT 247472004).
REST API
GET /AllergyIntolerance?patient=Patient/example— all allergies of a patient.GET /AllergyIntolerance?patient=Patient/example&clinical-status=active&verification-status=confirmed— active and confirmed only.GET /AllergyIntolerance?patient=Patient/example&category=medication&criticality=high— high-risk medications.POST /AllergyIntolerance— create after practitioner documentation.PUT /AllergyIntolerance/penicillin— update status.GET /Patient/example/$everything?_type=AllergyIntolerance,MedicationRequest— composite operation to fetch allergies + prescriptions for CDSS.
National profiles
| Profile | Regulator | Restrictions |
|---|---|---|
| US Core AllergyIntolerance | HL7 US Realm — ONC EHR | Must carry clinicalStatus, verificationStatus, code (RxNorm, SNOMED CT or UNII), patient. |
| IPS AllergyIntolerance | HL7 + CEN/TC 251 | For international Patient Summary. |
| FR Core AllergyIntolerance | ANS | Slicing on code, constrained to ICD-10 or SNOMED CT FR. |
| UK Core AllergyIntolerance | NHS Digital | Aligned with Care Connect. |
| AU Core AllergyIntolerance | HL7 Australia | For My Health Record and eMedicines. |
Common pitfalls
- Criticality vs reaction.severity —
criticalityis a future risk (high / low);reaction.severityis the historical severity of a past episode. Don't confuse them. - Specific drug vs class — for penicillin, prefer the SNOMED CT class code ("Penicillin-structured substances") over an RxNorm code of a brand, so the CDSS blocks the whole class.
- Missing
verificationStatus— an EHR displaying every AllergyIntolerance without distinguishingunconfirmedfromconfirmedover-alerts the prescriber and triggers alert fatigue. - No
onset[x]— first manifestation age is essential for evaluation (childhood vs recent adult-onset allergy). - "NKA" — absence of known allergy is not encoded by absence of AllergyIntolerance. Use an
AllergyIntolerancewithcode = "No known allergies"(SNOMED CT 716186003) to make it explicit, otherwise the receiver cannot distinguish "not documented" from "documented as absent". - Reaction without manifestation — a
reactionepisode without at least onemanifestationis clinically unusable.
Related resources
- MedicationRequest — every prescription must check AllergyIntolerance before issue.
- Condition — for diagnoses that are not allergies (asthma, eczema).
- Observation — for allergy test results (specific IgE, skin prick test).
- AdverseEvent — actual adverse event (observed side effect), distinct from presumed allergy.
- Patient — subject via
patient. - HL7 v2 AL1 / IAM — legacy equivalents.