NEWFree ROI Calculators — quantify what prior auth and siloed data are costing your organization.Prior Auth ROI Siloed Data ROI
HL7 v2Segment9 min read

HL7 IAM Segment: Patient Adverse Reaction

The IAM segment records a single patient adverse reaction — an allergy or intolerance — together with an action code that says whether the entry is being added, updated, or deleted. It is the richer, repeating successor to AL1: where AL1 simply lists allergies, IAM adds severity, reaction detail, clinical status, onset and reported dates, who reported and recorded it, and the action that makes IAM safe to use for incremental reconciliation.

Purpose

IAM carries one adverse reaction per repetition: the allergen and its type, severity, the reaction text, and — critically — IAM-6 Allergy Action Code, which marks the record as add/update/delete so a receiver can reconcile its allergy list rather than replace it wholesale. Surrounding fields capture provenance (reported by, recorded by, statused by) and lifecycle (onset, reported, modified, inactivated dates), making IAM suitable for systems that track an allergy's full clinical status over time.

Used in

IAM appears in ADT and other patient-context messages that carry adverse reactions — most commonly in the allergy group following PID in admit and update events, and wherever an allergy list is exchanged or reconciled. See ADT.

Field-by-field reference

Source: the Vorro HL7 segment database (extracted from the official v2-to-FHIR IG). R = required (cardinality min ≥ 1). Repeat = field may repeat. Length is not carried by the FHIR source and is shown as .

SeqNameData TypeLengthReqRepeatTable #Description
IAM-1Set ID - IAMSIRSequence number for each IAM repetition; usually 1.
IAM-2Allergen Type CodeCWEOKind of allergen: drug, food, environmental, etc.
IAM-3Allergen Code/Mnemonic/DescriptionCWERThe allergen itself; the one clinical required field.
IAM-4Allergy Severity CodeCWEOSeverity of the reaction: severe, moderate, mild.
IAM-5Allergy Reaction CodeSTOFree-text manifestation of the reaction (e.g. hives).
IAM-6Allergy Action CodeCNERAdd, update, or delete; drives list reconciliation.
IAM-7Allergy Unique IdentifierEIOStable identifier for this allergy record.
IAM-8Action ReasonSTOFree-text reason for the action taken.
IAM-9Sensitivity to Causative Agent CodeCWEOHL70436Nature of the sensitivity to the agent.
IAM-10Allergen Group Code/Mnemonic/DescriptionCWEOGrouping allergen when a class is implicated.
IAM-11Onset DateDTODate the reaction first occurred.
IAM-12Onset Date TextSTOFree-text onset when an exact date is unknown.
IAM-13Reported Date/TimeDTMOWhen the allergy was reported.
IAM-14Reported ByXPNOName of the person who reported the allergy.
IAM-15Relationship to PatientCWEOReporter's relationship to the patient.
IAM-16Alert Device CodeCWEOHL70437Alert device worn by the patient (e.g. bracelet).
IAM-17Allergy Clinical StatusCWEOHL70438Clinical status: confirmed, suspected, etc.
IAM-18Statused by PersonXCNOPerson who set the current clinical status.
IAM-19Statused by OrganizationXONOOrganization that set the clinical status.
IAM-20Statused at Date/TimeDTMOWhen the clinical status was set.
IAM-21Inactivated by PersonXCNOPerson who inactivated the allergy record.
IAM-22Inactivated Date/TimeDTMOWhen the record was inactivated.
IAM-23Initially Recorded by PersonXCNOPerson who first recorded the allergy.
IAM-24Initially Recorded Date/TimeDTMOWhen the allergy was first recorded.
IAM-25Modified by PersonXCNOPerson who last modified the record.
IAM-26Modified Date/TimeDTMOWhen the record was last modified.
IAM-27Clinician Identified CodeCWEOClinician-assigned code for the allergen.
IAM-28Initially Recorded by OrganizationXONOOrganization that first recorded the allergy.
IAM-29Modified by OrganizationXONOOrganization that last modified the record.
IAM-30Inactivated by OrganizationXONOOrganization that inactivated the record.

Most-used fields

  • IAM-3 Allergen Code is the clinical core — the allergen the patient reacts to — and the one clinically required field most logic reads.
  • IAM-6 Allergy Action Code is what distinguishes IAM from AL1: add/update/delete lets a receiver reconcile the allergy list incrementally instead of replacing it.
  • IAM-4 Allergy Severity Code drives criticality and alerting, mapping to both reaction severity and AllergyIntolerance criticality in FHIR.
  • IAM-5 Allergy Reaction Code captures the manifestation (rash, anaphylaxis) clinicians scan for.
  • IAM-7 Allergy Unique Identifier ties a later update or delete back to the original record.

Version differences (2.3 to 2.8.2)

  • IAM is the repeating, action-coded adverse-reaction segment that augments AL1: it was introduced after AL1 to add severity, reaction detail, provenance, lifecycle dates, and the IAM-6 action code AL1 lacks.
  • 2.3/2.4: AL1 was the only allergy segment; IAM arrives to support add/update/delete reconciliation.
  • 2.5: coded fields settle on CWE; the clinical-status and alert-device tables (HL70436–HL70438) are referenced.
  • 2.7+: organization-level provenance fields IAM-28/29/30 added alongside the person fields.
  • Receivers built for AL1 only will ignore IAM; senders often emit both for compatibility.

Common mistakes

  • Treating IAM like AL1 and ignoring IAM-6 Allergy Action Code, so deletes and updates are applied as new additions.
  • Dropping IAM-7 Allergy Unique Identifier, leaving later updates/deletes unable to find the original record.
  • Reading only the first IAM when a patient has several allergies — each is a separate repetition of the segment.
  • Putting the reaction in IAM-3 instead of IAM-5, conflating the allergen with its manifestation.
  • Assuming IAM-4 severity and FHIR criticality are the same field — IAM-4 maps to both severity and criticality.

Examples

Minimal valid IAM (set ID, allergen, action code):

IAM|1|||||A

Fully-populated IAM (penicillin drug allergy, added):

IAM|1|DA^Drug allergy^HL70127|7980^Penicillin^RXNORM|SV^Severe^HL70128|Hives|A|ALG0001^^MERCYGEN|Patient reported|U^Unknown^HL70436|||20240101|20260609120000|DOE^JANE||MB^Medic alert bracelet^HL70437|C^Confirmed^HL70438

Annotated breakdown of the fully-populated example (selected fields):

IAM                              ← segment ID
1                                ← IAM-1  Set ID
DA^Drug allergy^HL70127          ← IAM-2  Allergen Type Code
7980^Penicillin^RXNORM           ← IAM-3  Allergen Code (the allergen)
SV^Severe^HL70128                ← IAM-4  Allergy Severity Code
Hives                            ← IAM-5  Allergy Reaction Code
A                                ← IAM-6  Allergy Action Code (Add)
ALG0001^^MERCYGEN                ← IAM-7  Allergy Unique Identifier
20240101                         ← IAM-11 Onset Date
20260609120000                  ← IAM-13 Reported Date/Time
C^Confirmed^HL70438              ← IAM-17 Allergy Clinical Status

In-context inside an ADT^A01 (IAM after PID, allergy added):

MSH|^~&|REG|MERCYGEN|EHR|MERCYGEN|20260609120000||ADT^A01^ADT_A01|MSG001|P|2.5.1
EVN|A01|20260609120000
PID|1||MR12345^^^MERCYGEN^MR||DOE^JOHN^Q||19800101|M
IAM|1|DA^Drug allergy^HL70127|7980^Penicillin^RXNORM|SV^Severe^HL70128|Hives|A|ALG0001^^MERCYGEN

In-context inside an ADT^A08 (update, allergy record deleted):

MSH|^~&|REG|MERCYGEN|EHR|MERCYGEN|20260612080000||ADT^A08^ADT_A01|MSG045|P|2.5.1
EVN|A08|20260612080000
PID|1||MR12345^^^MERCYGEN^MR||DOE^JOHN^Q||19800101|M
IAM|1|DA^Drug allergy^HL70127|7980^Penicillin^RXNORM||||ALG0001^^MERCYGEN|Entered in error|||||||||I^Inactive^HL70438

FHIR mapping

Primary target resource: AllergyIntolerance. Official ConceptMap: IAM to AllergyIntolerance.

Key AllergyIntolerance mappings:

IAM fieldFHIR target (AllergyIntolerance)
(constant)clinicalStatus.coding.code = active + clinicalStatus.coding.system
IAM-2 Allergen Type Codecategory (+ type, + alternate-codes extension)
IAM-3 Allergen Codecode[1] (CodeableConcept)
IAM-4 Allergy Severity Codereaction.severity + criticality (+ criticality-original extension)
IAM-5 Allergy Reaction Codereaction.manifestation.text
IAM-7 Allergy Unique Identifieridentifier
IAM-11 Onset DateonsetDateTime
IAM-12 Onset Date TextonsetString
IAM-13 Reported Date/TimerecordedDate
IAM-14 Reported Byrecorder.reference (Practitioner / Patient / RelatedPerson name)
IAM-15 Relationship to Patientrecorder.reference(RelatedPerson.relationship)
IAM-17 Allergy Clinical StatusclinicalStatus (CodeableConcept)
IAM-27 Clinician Identified Codecode[1] (CodeableConcept)

Unmapped fields: the published ConceptMap carries no AllergyIntolerance target for IAM-6 Allergy Action Code (consumed as workflow/reconciliation logic rather than a resource element), IAM-8 Action Reason, IAM-9, IAM-10, IAM-16, and the provenance/lifecycle fields IAM-18 through IAM-26 and IAM-28 through IAM-30. These status and provenance details are not represented on the core AllergyIntolerance resource in the DB mapping.

Engine considerations

  • Required in practice: IAM-1, IAM-3, and IAM-6 are required by the standard; real interfaces also depend on IAM-7 so updates and deletes resolve to the right record.
  • Honor IAM-6 Allergy Action Code: an A adds, an update modifies, and a delete inactivates — never apply a delete as a new allergy.
  • Index IAM-7 as the allergy key so repeated messages reconcile against the existing list.
  • Preserve each IAM repetition as its own allergy; do not collapse a multi-allergy list into one record.
  • IAM-4 feeds two FHIR elements (severity and criticality) — map both, do not pick one.

How Vorro parses and produces IAM

Vorro reads IAM-6 to drive list reconciliation — add, update, or inactivate — and uses IAM-7 as the stable key so later messages resolve to the correct allergy. IAM-3 (and IAM-27 when present) becomes the AllergyIntolerance code, IAM-4 is split across reaction.severity and criticality, and IAM-14/15 populate the recorder reference with the right person or related-person relationship. On output Vorro emits IAM alongside AL1 when downstream compatibility is required, preserving each reaction as its own repetition.

  • AL1 — the simpler allergy segment IAM augments.
  • PID — the patient the adverse reaction belongs to.
  • ADT messages — where IAM follows PID to carry adverse reactions.

Sources

← Back to HL7 v2 Guide

Ready to Integrate This Into Your Workflow?

Talk to a Vorro expert about implementing HL7 v2 in your specific environment.

Browse HL7 v2 Guides
HL7 IAM Segment: Patient Adverse Reaction | Vorro Academy | Vorro