Skip to content

Free preview

Anatomy of an HL7 message

Section 2 · Module 2 · Healthcare Messaging Standards · 4 min

Read a real ADT message

Here is an admission (ADT^A01) sent from an EHR to a LIS:

MSH|^~\&|EHR|Hospital|LIS|Lab|202411181200||ADT^A01|12345|P|2.3
EVN|A01|202411181200
PID|1||123456^^^Hospital||Smith^John||19800101|M
PV1|1|I|ICU^01^01||||Dr.Jones^123^MD

Reading it segment by segment:

  • MSH — from EHR at Hospital to LIS at Lab; message type ADT^A01; control id 12345; HL7 version 2.3.
  • EVN — the trigger event (A01, admit) and time.
  • PID — patient 123456, John Smith, DOB 1980-01-01, male.
  • PV1 — an Inpatient visit in location ICU, attending Dr Jones.

The order and result pair

An order (ORM^O01) adds ORC (order control) and OBR (observation request) segments naming the test — e.g. CBC^Complete Blood Count. The result (ORU^R01) returns OBX segments, one per analyte:

OBX|1|NM|WBC^White Blood Cell Count||5.5|10^9/L|4.5-11.0|N|||F
OBX|2|NM|RBC^Red Blood Cell Count||4.8|10^12/L|4.1-5.7|N|||F

Each OBX carries the value, units, reference range and an abnormal flag (N = normal, H/L = high/low).

Why a missing segment breaks everything

If the PID is missing, the receiving system cannot identify the patient and will usually reject the message. Much of interface debugging is checking that required segments are present and correctly formed.

That is one lesson of 28

(ECHIA) – EduQan Certified Healthcare Integration Architect runs to 28 lessons across 6 sections, and ends in an assessed, dated certificate you can have verified by anyone.