HL7 for immunization VXU

Immunization messaging is not a place to invent a local "mostly VXU" interface. In the United States, the CDC page for IIS HL7 guidance says the consolidated HL7 v2.5.1 Immunization Messaging Implementation Guide Release 1.5 is the current standard recognized by CDC and AIRA. Other countries and registries have their own profiles, but the same lesson applies: use the registry's guide.

VXU_V04 carries immunization updates. The vaccination event lives mainly in RXA, route/site in RXR, order context in ORC, patient identity in PID, and supporting observations in OBX. The base standard tells you the shape; the IIS profile tells you the required details.

MSH|^~\&|EHR|CITYCLINIC|IIS|STATE|20260715130000||VXU^V04^VXU_V04|IZ000501|P|2.5.1 PID|1||123456^^^CITYCLINIC^MR||Smith^Mia^Rose^^^L||20200314|F|||22 Hill Street^^Auckland^^1010^NZ^H ORC|RE||IZ4488^EHR|||||||20260715125500|||54321^Nurse^Nora^^^^^^NPI RXA|0|1|20260715124500|20260715124500|207^COVID-19 mRNA vaccine^CVX|0.5|mL||00^New immunization record^NIP001|54321^Nurse^Nora^^^^^^NPI|^^^CITYCLINIC||||ABC123|20270301|MOD^Moderna^MVX|||CP|A RXR|IM^Intramuscular^HL70162|LA^Left Arm^HL70163 OBX|1|CE|64994-7^Vaccine funding program eligibility category^LN||V02^Not VFC eligible^HL70064||||||F OBX|2|TS|29768-9^Date vaccine information statement published^LN||20260101||||||F

This is synthetic sample data for learning and testing. Open it in HL7 Soup Web before mapping it so the segment groups, repeated fields, and coded values are visible.

Use The Registry Profile First

The important VXU question is usually not "is this HL7 v2.5.1?" It is "does this satisfy the receiving IIS profile?" Registry profiles constrain required fields, value sets, patient matching, acknowledgement rules, and transport expectations. A message can parse as VXU and still fail because CVX, MVX, funding, eligibility, lot, refusal, or VIS observations are missing or coded incorrectly.

Use HL7 Soup Web for fast structural inspection, but validate conformance against the receiver's guide before go-live.

  • Map vaccine code carefully in RXA-5.
  • Keep dose amount and units in RXA-6 and RXA-7.
  • Do not drop observations just because they look administrative.

When testing VXU, vary the values that usually sit at the profile boundary: vaccine code, manufacturer, lot, dose amount, dose units, route, site, administered versus historical dose, refusal, and eligibility/funding observations. A message can look structurally fine in a viewer and still fail because one of those values is outside the registry's allowed code set.

ACKs Are Part Of The Feed

Immunization submissions are often operationally judged by whether the registry accepted, rejected, or warned on the message. Build the ACK path before go-live. Keep message control IDs, patient identifiers, rejection text, and field-level errors in logs so staff can correct the source data rather than resend blindly.

A Practical Integration Soup Workflow

In Integration Soup, create a workflow that receives VXU messages, checks the sending facility and message type, logs PID/RXA identifiers, and routes submissions to the correct IIS endpoint. Use transformers for registry-specific value mapping only where the profile allows it, and keep those mappings explicit.

The transformers tutorial is a good fit for local-to-registry value cleanup, while the file-processing tutorial applies when batches are dropped to folders.

The Test Pack I Would Ask For

Ask for a normal administration, historical dose, refused vaccine, partial/invalid dose if supported, missing lot rejection, patient update, duplicate submission, and ACK examples for accepted, errored, and rejected messages.