HL7 ADT^A03 (Discharge / End Visit)
ADT^A03 notifies systems that a patient has been discharged or the visit has ended. It typically includes the discharge disposition and discharge date/time.
When is ADT^A03 sent?
Sent by the ADT system when the patient is discharged; downstream systems close the encounter.
Key segments
The segments below are the ones most relevant to ADT^A03. Real messages may carry additional optional segments depending on the sending system’s configuration.
| Segment | Usage | Role |
|---|---|---|
| MSH | Required | Message header: sending/receiving application & facility, message type, control id, version. |
| EVN | Required | Event type: the trigger event code and the date/time the event occurred. |
| PID | Required | Patient identification: identifiers (MRN), name, date of birth, sex, address, phone. |
| PV1 | Optional | Patient visit: patient class, assigned location, attending provider, admit/discharge details. |
Full message structure (v2.8.2)
Every segment and group the standard defines for ADT^A03, in order, straight from the machine-readable specification. Indented rows sit inside the repeating group above them. R is required, O optional, C conditional; ∞ means the group or segment may repeat without a defined limit.
| Segment / group | Usage | Repeats |
|---|---|---|
| MSH | R | 1 |
| SFT | O | ∞ |
| UAC | O | 1 |
| EVN | R | 1 |
| PID | R | 1 |
| PD1 | O | 1 |
| ARV | O | ∞ |
| ROL | O | ∞ |
| NK1 | O | ∞ |
| PV1 | R | 1 |
| PV2 | O | 1 |
| ARV | O | ∞ |
| ROL | O | ∞ |
| DB1 | O | ∞ |
| AL1 | O | ∞ |
| DG1 | O | ∞ |
| DRG | O | 1 |
| PROCEDURE (group) | O | ∞ |
| PR1 | R | 1 |
| ROL | O | ∞ |
| OBX | O | ∞ |
| GT1 | O | ∞ |
| INSURANCE (group) | O | ∞ |
| IN1 | R | 1 |
| IN2 | O | 1 |
| IN3 | O | ∞ |
| ROL | O | ∞ |
| ACC | O | 1 |
| PDA | O | 1 |
Which HL7v2 versions changed ADT^A03?
ADT^A03 has been defined since v2.1. Consecutive versions sharing an identical structure are grouped, so a single row spanning several versions means nothing changed across them.
| Versions | What changed |
|---|---|
| v2.1 | First defined, with 4 segments and groups. |
| v2.2 | Added OBX, PV2. |
| v2.3 - v2.3.1 | Added DB1, DG1, DRG, PD1, PR1, ROL. |
| v2.4 | Added PDA. |
| v2.5 - v2.5.1 | Added ACC, AL1, GT1, IN1, IN2, IN3, NK1, SFT. |
| v2.6 - v2.8.2 | Added ARV, UAC. |
Example ADT^A03 message
A realistic, well-formed example. Segments are separated by carriage returns; fields by the pipe (|) delimiter.
MSH|^~\&|EPIC|HOSP|REC|REC|20240115180000||ADT^A03|MSGCTRLA03|P|2.5.1
EVN|A03|20240115180000
PID|1||MRN12345^^^EPIC^MR||DOE^JOHN^A||19800101|M|||123 MAIN ST^^CITYTOWN^WA^98101||555-555-0100
PV1|1|I|ICU^101^AFrequently asked questions
What is an HL7 ADT^A03 message?
ADT^A03 is an ADT (Admit, Discharge, Transfer) message with trigger event for discharge / end visit. It carries patient demographics (PID) and usually visit details (PV1) so downstream systems stay in sync with the patient's state.
Which segments does ADT^A03 contain?
At minimum MSH (header), EVN (event), and PID (patient identification). Most ADT^A03 messages also include PV1 (patient visit). Additional segments such as NK1, AL1, DG1 or IN1 may follow depending on the sending system's configuration.
How do I convert ADT^A03 to FHIR?
Map the PID demographics to a FHIR Patient (and PV1 to an Encounter). Identifiers need a real system URI, dates need ISO-8601 reformatting, and coded values like sex need a value-set lookup. You can do this with the Interoperall mapping tools.
How do I validate a ADT^A03 message?
Paste the raw message into the HL7v2 validator to parse each segment, check the structure, and get a compliance score. It runs entirely in your browser, so PHI never leaves your device.