Some services used within the ITK are generically used across many ITK instantiations. These services are termed Core Services and are defined in the ITK Core Pack.
This scenario illustrates the use of a Core Service – “SendCDADocument-v2-0” – to send a CDA document to a CDA document repository. Core services supports effective multi-hop routing by providing an Acknowledgement Framework. This framework requires the end-point application to send an Infrastruture Acknowledgment to the Sender on successful receipt at the infrastructure level. Similarly the end-point and all intermediary hop in the routing chain should send a NACK to the Sender in the event of a failure to process at the infrastructure level.
This does not provide true reliability, but does provide delivery assurance in the majority of cases leaving only exceptions to be investigated (as deemed necessary by the sending organisation).
From the Sender perspective this is initially no different to sending a simple asynchronous message. The CDA message is formed and sent using the sendAsync API call. There the sending responsibilities end. However, as CDA is sent using one of the ITK Core services the sender is required to provide the capability to handle the Infrastructure and Business Acks which may be returned.
This scenario explores the Infrastructure Acks further in the step-by-step section below.
ITK Router view
The ITK Router is not within the scope of the Reference Implementation, but in short this has a simple role.
The Router sends a SimpleMessageResponse back to the preceding hop to acknowledge receipt and closes that synchronous channel. The Router will then identify the next end-point from the ITK Address on the incoming Distribution Envelope, and forward the message on to the next hop – which may or may not be the final destination.
The router has one further responsibility which is to route a NACK back to the originator in the event of failure to process (or forward) the message.
The Receiver consumes the CDA Message and sends a simple acknowledgement of receipt to the sender( as a SimpleMessageResponse).
As with the intermediary ITK Routers, the end receiver is also responsible for routing an ACK or NACK (as an InfrastructureAcknowledgement).
This validates the SOAP headers and then extracts the payload. The SOAP payload is then split further to the originator as defined in the Distribution Envelope.
The Infrastructure Acknowledgement is a routed message (defined in the core ITK specification) and this message may go through any number of intermediary ITK Routers before resolving to the originating end-point.
The Request message is a CDA document wrapped up as an ITK payload within the distribution envelope, within the SOAP wrappers.