HL7 ACK (Acknowledgment) messages confirm receipt and processing of HL7 v2 messages. Every production HL7 interface relies on acknowledgment handling for reliable message delivery — without proper ACK processing, messages can be silently lost or duplicated.
MSA-2 echoes the MSH-10 (Message Control ID) of the original message. This is how the sending system correlates an ACK to the message that triggered it:
Original: MSH|...|MSG00001|P|2.5.1
Response: MSA|AA|MSG00001
If MSA-2 does not match any pending MSH-10, the sender should log a correlation error and alert operators.
A single ACK for each message. MSH-15 = AL (Always) means the receiver sends one ACK. MSH-16 = NE (Never) means no separate application-level ACK. This is the configuration used by the vast majority of HL7 interfaces.
Two separate acknowledgments — one for transport, one for application. Enhanced mode adds complexity but provides confirmation that the message was both received (transport) and successfully processed (application). In practice, enhanced mode is rare.
Enhanced Acknowledgment Mode
SenderSource System
ReceiverDestination System
ADT^A01MSH-15=AL, MSH-16=AL
ACK (MSA-1=CA)Accept ACK (transport)
ACK (MSA-1=AA)Application ACK (processing)
Confirms message was both received AND processed
senderreceiver
ADT^A01MSH-15=AL, MSH-16=AL
receiversender
ACK (MSA-1=CA)Accept ACK (transport)
receiversender
ACK (MSA-1=AA)Application ACK (processing)Confirms message was both received AND processed
The receiving system should use MSH-10 deduplication to handle retransmitted messages — processing the first instance and returning AA for subsequent duplicates without reprocessing.