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

HL7 Table HL70128: Allergy Severity

HL70128 is a tiny but clinically important table — four codes that describe how severe an allergic reaction has been, or is expected to be. It sits behind AL1-4 Allergy Severity Code on every AL1 segment, and on the newer IAR-2 Allergy Severity Code (introduced in v2.6) on the IAR segment. The values are short two-character codes drawn from the IS data type — four total in v2.8.1, unchanged since v2.3.

Purpose

HL70128 carries the severity of the patient's documented allergic reaction. A receiver reads this code to decide how prominently to surface the allergy in the EHR (a SV peanut allergy gets a red banner; an MI cat allergy is a quiet note in the chart), to decide whether to fire decision-support alerts on prescribing, and to populate downstream FHIR AllergyIntolerance.reaction.severity elements.

The table answers one question — how bad — and is intentionally coarse. Subtler distinctions (life-threatening vs anaphylactic vs hospitalization-required) belong on adjacent fields like AL1-5 Allergy Reaction Code (HL70127) or in a structured observation, not on HL70128.

Where it's used

  • AL1-4 Allergy Severity Code — the canonical home of HL70128, populated on every ADT message that carries an allergy list.
  • IAR-2 Allergy Severity Code — same code set on the v2.6+ IAR (Patient Adverse Reaction) segment.
  • IAM-11 Allergy Severity Code — the v2.6+ replacement for AL1, used on patient master-file and admission profiles that have migrated to the richer IAM segment.

Code list

CodeDisplayComment/Description
MIMildReaction is bothersome but does not interfere with normal activity or require intervention.
MOModerateReaction interferes with normal activity or requires symptomatic treatment, but is not life-threatening.
SVSevereReaction is life-threatening, requires emergency intervention, or has historically caused hospitalization.
UUnknownSeverity is not recorded; receiver should treat the allergy as present but unprioritized.

Code system OID

  • OID: 2.16.840.1.113883.18.50
  • Canonical URI: http://terminology.hl7.org/CodeSystem/v2-0128

HL7-defined vs user-defined

HL70128 is HL7-defined. The four-code set is closed and normative — receivers must accept all four values without local extension, and senders must not invent additional codes inside this table. Sites that need a richer severity scale (life-threatening vs anaphylactic, for instance) must either carry the extra concept on AL1-5 (HL70127) or use the IAR segment's richer reaction model; they do not extend HL70128.

Version differences

  • v2.1 – v2.2 — Table did not yet exist; AL1-4 was free text.
  • v2.3 — Table introduced with the current four codes (MI, MO, SV, U). Set has not changed since.
  • v2.4 – v2.5 — Set stable; AL1 segment slightly restructured but AL1-4 still binds to HL70128.
  • v2.6 — IAR and IAM segments added with their own allergy severity fields, all bound to the same HL70128.
  • v2.7 – v2.8.1 — Set stable; no additions or deprecations.

Common mistakes

  • Treating "life-threatening" as a fifth code. HL70128 has exactly four values: MI, MO, SV, U. Life-threatening reactions map to SV (Severe). Some legacy interfaces emit LT or LIFETHREATENING as if it were a code — these are non-conformant and must be normalized to SV on ingest.
  • Using the display string instead of the code. Mild is not valid in AL1-4; MI is. The field is IS-typed and expects the symbolic code.
  • Defaulting unknown severity to MI. U exists for this case. Defaulting to MI silently downgrades severe allergies whose severity simply wasn't recorded at intake, which is clinically dangerous.
  • Confusing severity with criticality. HL70128 describes how bad a past reaction was. FHIR AllergyIntolerance.criticality describes how bad a future reaction is expected to be. The two are correlated but not identical, and a one-to-one mapping is wrong — Vorro maps HL70128 to reaction.severity, not to criticality.
  • Extending HL70128 locally. LT, AN, HOSP, vendor-specific values — all non-conformant. Use AL1-5 / IAR-3 reaction codes for richer reaction semantics.
  • Lowercase codes. mi, mo, sv, u are not valid; HL70128 is case-sensitive uppercase.

Examples

A minimal AL1 with a severe peanut allergy:

AL1|1|FA|^Peanut|SV|Anaphylaxis|20200315

Mild seasonal allergy:

AL1|1|EA|^Pollen|MI|Sneezing, watery eyes

Unknown severity — patient knows they react to penicillin but can't remember how badly:

AL1|1|DA|^Penicillin|U|Rash (per patient recall)

A v2.6 IAM segment carrying the same severe peanut allergy:

IAM|1|FA|^Peanut^|SV|Anaphylaxis|20200315||A|||||CONFIRMED

FHIR projection — HL70128 SVreaction-event-severity severe:

{
  "resourceType": "AllergyIntolerance",
  "patient": { "reference": "Patient/10456" },
  "code": {
    "coding": [{
      "system": "http://www.nlm.nih.gov/research/umls/rxnorm",
      "code": "1191",
      "display": "Peanut"
    }]
  },
  "reaction": [{
    "manifestation": [{ "text": "Anaphylaxis" }],
    "severity": "severe"
  }]
}

When HL70128 is U, FHIR omits reaction.severity and applies a data-absent-reason extension:

{
  "reaction": [{
    "manifestation": [{ "text": "Rash (per patient recall)" }],
    "_severity": {
      "extension": [{
        "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
        "valueCode": "unknown"
      }]
    }
  }]
}

FHIR mapping

The HL7 v2-to-FHIR Implementation Guide publishes ConceptMap-table-hl70128-to-reaction-event-severity, which maps three of the four HL70128 codes onto the FHIR reaction-event-severity ValueSet:

HL7 v2 (HL70128)FHIR (reaction-event-severity)
MImild
MOmoderate
SVsevere
U(no target — omit element + data-absent-reason)

AllergyIntolerance.reaction.severity is a code element bound to http://hl7.org/fhir/ValueSet/reaction-event-severity. The mapping is lossless for the three known severities; U cannot round-trip without preserving the original v2 code as an extension.

Engine considerations

  • Two-character validation. AL1-4 is one or two characters. Engines should reject longer payloads outright rather than truncate.
  • Case sensitivity. Codes are case-sensitive uppercase; mi is not valid. Normalize on ingest and log every normalization.
  • Don't default to MI. Missing severity is U, not MI. Defaulting to mild silently downgrades severe allergies whose severity wasn't recorded.
  • Preserve U through FHIR round-trip. Because FHIR has no target for U, store the original HL70128 code as an extension on AllergyIntolerance so the v2 outbound channel can restore it.
  • Reject local extensions. LT, AN, vendor-specific codes should be quarantined to the terminology curation queue, not silently passed through.

How Vorro handles HL70128

Vorro validates AL1-4, IAR-2, and IAM-11 against the four HL70128 codes on ingest. Conformant values are forwarded untouched. Non-conformant values — LT, LIFETHREATENING, lowercase variants, display strings — are routed to the terminology curation queue, where they either resolve to one of the four canonical codes (and a remap rule is created) or pass through with a soft warning so downstream consumers are not silently fed bad data.

On outbound, Vorro emits HL70128 as IS for v2.5 and earlier profiles and as CWE with CWE.14 populated for v2.7+ destinations that advertise OID-bound coded values. The original HL70128 code is always preserved when round-tripping through FHIR AllergyIntolerance.reaction.severity.

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 Table HL70128: Allergy Severity | Vorro Academy | Vorro