This content is based on my study on the topic, by googling and this is just to share some thoughts and views about the topic.
Just start the topic with the question,
Why we need ACK Message ?
The main and important purpose is to get to know about whether a message is delivered or not to the receiving party. Regardless of the security issue, if we consider a basic scenario of successful transmission we will receive an ACK back once we send a message successfully to the receiver. That is the indication of a successful Message.
For HL7 also ACK is important to notify the sender, whether the message is reached successfully. In basic scenarios, the system that receives may not have the capability to create proper ACK, because it can accept the format, but can’t generate the ACK or in other case systems can’t accept the format. For these scenarios, there is a Custom ACK to notify the sender regards the issue by the receiver. Otherwise, it is hard to communicate with HL7 Messages.
Generally, ACK belongs to 3 types.
- Accept : the receiver accepts the type of message, this is based on the logic provided in different subsystems present in the medical organization as, laboratory, payment system, doctors system. eg: a laboratory will accept ORU message if it is in the proper format, while the cashier may reject ORU related to the lab. in this case AR/CR type acknowledgment will come.
- Reject : This is by names we can understand the particular message is not accepted by the receiver since it is out of logic or not in the format provided.
- Error : this was occurred by Application error generally due to some issues in decoding the message due to the wrong format. here though they can able to accept the message they can’t able to decode may because of version, type issue they will raise an Application error and return ACK with
These acks are either in normal mode or enhanced mode. Accordingly in normal mode ACKs can be
AE, and in enhanced mode ACKs can be
CE. In normal mode, the
field 15 and 16 with contains about message and application acknowledgment type is being nulled, whereas in enhance mode one of this can be null not too.