The IAR segment was introduced in HL7 v2.7 to capture the specific reaction observed for an allergy or intolerance. Earlier versions packed reaction text into AL1-5, which was a single free-text field with no structure for severity, no place to record sensitivity to the causative agent, and no way to record multiple reactions per allergen. IAR fixes that by separating each reaction into its own coded row.
This page documents the segment as it appears in HL7 v2.8.1.
Purpose
IAR records, in coded form, what actually happened when a patient was exposed to an allergen: the reaction itself, how severe it was, the patient's sensitivity to the causative agent, and how the reaction was managed. A single allergy can produce several reactions (urticaria and angioedema, for example), and IAR is designed to repeat below the parent AL1 or IAM segment so each reaction is structured independently.
Used in
IAR appears in patient-administration messages immediately following an AL1 (patient allergy information) or IAM (patient adverse reaction information) segment within an ADT message. One AL1 or IAM may be followed by zero or more IAR rows, one per distinct reaction observed for that allergen.
Field-by-field reference
Source: HAPI HL7v2 v2.8.1 javadocs (IAR.html). Length is shown as — because v2.8.1 deprecated fixed maximum lengths in favour of conformance-profile constraints. Required and Table # are taken from the HL7 v2 standard where well-established.
| Seq | Name | Data Type | Length | Req | Repeat | Table # | Description |
|---|---|---|---|---|---|---|---|
| IAR-1 | Allergy Reaction Code | cwe | — | R | — | — | Coded reaction observed |
| IAR-2 | Allergy Severity Code | cwe | — | O | — | [HL70128] | Coded severity of the reaction |
| IAR-3 | Sensitivity to Causative Agent Code | cwe | — | O | — | — | Type of sensitivity (allergy, intolerance, etc.) |
| IAR-4 | Management | st | — | O | — | — | Free-text description of management |
Most-used fields
- IAR-1 Allergy Reaction Code is the segment's reason for existing. Coded reactions (urticaria, anaphylaxis, bronchospasm) are required for any decision support that wants to differentiate "rash" from "airway compromise".
- IAR-2 Allergy Severity Code drives display urgency in clinical UIs and is the typical filter for what gets surfaced at order entry. Values are drawn from HL7 table 0128 (Severity).
- IAR-3 Sensitivity to Causative Agent Code disambiguates true allergy from intolerance or pseudo-allergy. The distinction matters for prescribing: a true allergy contraindicates an entire drug class, while an intolerance may permit dose reduction.
- IAR-4 Management is short free text describing what was done (e.g. "epinephrine 0.3 mg IM, observed 2 h"). It is useful for narrative review but is not designed for structured querying.
Version differences (2.6 -> 2.7 -> 2.8.2)
- v2.6 and earlier: No IAR segment. Reaction information was confined to AL1-5 (Allergy Reaction Code), a single repeating field with no severity, sensitivity, or management.
- v2.7: IAR introduced with the four-field structure shown above. Multiple reactions per allergen finally became expressible as structured data.
- v2.7.1 / v2.8 / v2.8.1: No structural changes; vocabulary refinements only. v2.8.1 (this page) retains the v2.7 layout.
- v2.8.2: IAR structure unchanged; minor table updates for Reaction Code and Sensitivity vocabularies.
Common mistakes
- Putting the allergen in IAR-1. IAR-1 is the reaction, not the substance. The substance lives in AL1-3 (or IAM-3). Confusing the two is the single most common IAR error.
- Skipping IAR and stuffing everything into AL1-5. Senders upgrading from v2.5.1 sometimes keep the old habit and never populate IAR rows. The result is unstructured reaction data with no severity field.
- Free-text in IAR-1. IAR-1 is CWE and expects a coded value (SNOMED CT, ICD, or local). Sending the text "hives" without a code defeats the point of the structured segment.
- Treating IAR as standalone. IAR has no patient identifier of its own; it is meaningful only as a child of an AL1 or IAM in a message that already carries PID. Routing IAR without that context will fail validation.
- Misusing IAR-2 Severity. HL7 table 0128 has three values: mild, moderate, severe. Senders sometimes write "life-threatening" as a fourth value, which downstream systems will reject or coerce.
Examples
Minimal IAR
IAR|247472004^Hives^SCT
Fully-populated IAR
IAR|39579001^Anaphylaxis^SCT|SV^Severe^HL70128|AL^Allergy^HL70435|Epinephrine 0.3 mg IM x1; diphenhydramine 50 mg IV; observed 2 h; resolved
Annotated breakdown
IAR Segment ID
|39579001^Anaphylaxis^SCT IAR-1 Allergy Reaction Code (CWE)
|SV^Severe^HL70128 IAR-2 Allergy Severity Code (CWE)
|AL^Allergy^HL70435 IAR-3 Sensitivity to Causative Agent Code (CWE)
|Epinephrine 0.3 mg IM x1; ... IAR-4 Management (ST)
In-context excerpt: IAR following AL1 in an ADT^A08 update
MSH|^~&|EMR|RIVERBEND|PHARMACY|RIVERBEND|20260612141000||ADT^A08^ADT_A01|MSG-ADT-9112|P|2.8.1
EVN|A08|20260612141000
PID|1||MRN-554120^^^Riverbend^MR||Okafor^Adaeze||19780214|F
PV1|1|I|3W^301^A^RIVERBEND||||9988^Reyes^Marta^L^^^MD
AL1|1|DA|7980^Penicillin G^RXNORM|SV|Anaphylaxis|20210304
IAR|39579001^Anaphylaxis^SCT|SV^Severe^HL70128|AL^Allergy^HL70435|Epinephrine 0.3 mg IM; observed 2 h
IAR|247472004^Hives^SCT|MO^Moderate^HL70128|AL^Allergy^HL70435|Diphenhydramine 50 mg PO
In-context excerpt: IAR with a non-drug allergen on ADT^A60
MSH|^~&|EMR|RIVERBEND|REGISTRY|RIVERBEND|20260612143000||ADT^A60^ADT_A60|MSG-ADT-9113|P|2.8.1
EVN|A60|20260612143000
PID|1||MRN-554122^^^Riverbend^MR||Park^Sun-Hee||20100815|F
IAM|1|FA|111088007^Latex^SCT|MO|Contact dermatitis|20240712|||||A|CON^Confirmed^HL70438
IAR|402387002^Allergic contact dermatitis^SCT|MO^Moderate^HL70128|AL^Allergy^HL70435|Topical corticosteroid; avoid latex gloves
FHIR mapping
The v2-to-FHIR Implementation Guide does not publish a segment-level ConceptMap for IAR. IAR maps conceptually to AllergyIntolerance.reaction, a backbone element on the AllergyIntolerance resource that already accepts multiple reactions per intolerance:
- IAR-1 Allergy Reaction Code ->
AllergyIntolerance.reaction.manifestation. - IAR-2 Allergy Severity Code ->
AllergyIntolerance.reaction.severity. - IAR-3 Sensitivity to Causative Agent Code -> influences
AllergyIntolerance.type(allergyvsintolerance) on the parent. - IAR-4 Management ->
AllergyIntolerance.reaction.noteor.description.
The parent AL1 or IAM maps to the surrounding AllergyIntolerance resource; one resource carries an array of IAR-derived reaction entries.
Engine considerations
- Grouping: IAR is parent-bound to the AL1 or IAM immediately above it. Engines must preserve segment order; reordering an IAR away from its parent silently changes the meaning.
- Repetition: There is no Set ID on IAR. Multiple IAR rows for one allergen rely on positional ordering, which makes idempotent replays trickier than for segments with explicit set IDs.
- Validation: Strict profiles require IAR-1 to be a coded value with a populated identifier and code-system component. Free-text-only IAR-1 should be flagged.
- Vocabulary: IAR-1 commonly uses SNOMED CT; IAR-2 uses HL7 table 0128; IAR-3 uses HL7 table 0435. Mixing systems within a single message is permitted but discouraged.
How Vorro parses and produces IAR
Vorro's HL7 parser attaches each IAR row to its preceding AL1 or IAM and surfaces the pair as a typed AllergyReaction collection on the parent Allergy object. Reaction codes in IAR-1 are normalised against a configurable SNOMED CT subset, with non-SNOMED inputs preserved verbatim in a secondary code field so nothing is lost. Severity (IAR-2) is mapped to a primary mild/moderate/severe scale; non-standard values like "life-threatening" are coerced to "severe" with a warning logged for the source system.
When producing IAR, Vorro emits one row per distinct reaction. Where the source system carried only an unstructured reaction string, Vorro attempts coded enrichment and falls back to a coded "unspecified reaction" plus the original text in IAR-4 rather than emitting a free-text IAR-1, which keeps the produced segment strictly conformant.
