HL7 v2 ACK and NAK (acknowledgment modes)
An HL7 v2 ACK is the acknowledgment message a receiver returns for each message it processes; a NAK is the same ACK structure carrying an error or reject code. The verdict lives in MSA-1 (table 0008): original mode uses AA (accept), AE (error), AR (reject); enhanced mode adds a separate commit layer with CA, CE, CR, negotiated per message by MSH-15 (accept acknowledgment type) and MSH-16 (application acknowledgment type).
| Verdict field | MSA-1, an ID drawn from table 0008 |
|---|---|
| Original mode | AA application accept, AE application error, AR application reject |
| Enhanced mode (commit layer) | CA commit accept, CE commit error, CR commit reject |
| Mode negotiation | MSH-15 (accept ack type) and MSH-16 (application ack type); empty in both = original mode |
| Correlation | MSA-2 echoes the MSH-10 message control ID of the message being acknowledged |
Example
MSH|^~\&|PIDGEON^^L|PIDGEON_FACILITY|TARGET^^L|TARGET_FACILITY|20260722160739||ACK|289558|P|2.3|||SU|AL|||es^Spanish^ISO639^^^
MSA|CE|169768||1|D|ID223583^^^ID349682^^Engine-generated with `pidgeon generate ACK --seed 42` (HL7 v2.3; timestamps vary per run). MSA-1 carries CE, an enhanced-mode commit error; MSA-2 echoes the control ID of the message being acknowledged; MSH-15/MSH-16 carry the sender's own acknowledgment conditions.
Validation context
Strict and compatibility validation notes land here with the phase-1 data export.
This answer, in your terminal
pidgeon lookup MSA.1Wire it into your AI agent:
claude mcp add pidgeon -- npx -y @pidgeonhealth/mcpDownload Post free to browse this reference with generation attached.