#### Interoperability Toolkit
Core

### Handling Specifications & Acknowledgement Framework

The ITK Acknowledgement Framework is configurable on a message by message basis by setting handling specification to either "true" or "false" in the ITK Distribution Envelope, as described below.

There are 3 handling specification that can be used to generate acknowledgements from message recipients. A fourth handling specification is used to carry an interaction identifier. All handling specifications are key/value pairs.

#### Infrastructure Acknowledgement

Key urn:nhs-itk:ns:201005:infackrequested

The purpose of the Infrastructure Acknowledgement is to inform the sender that an ITK payload has been delivered to an ITK end point.

When the value attribute is set to "true", the recipient should reply to the message with an Infrastructure Acknowledgement. An Infrastructure Acknowledgement is generated when the message has been successfully received by the end point specified in the transport wrapper.

When the value attribute is set to "false", the recipient should not reply to the message with an Infrastructure Acknowledgement. The message sender is under no obligation to process any Infrastructure Acknowledgement related to the message.

#### Business Acknowledgement

Key urn:nhs-itk:ns:201005:ackrequested

The purpose of the Business Acknowledgement is Domain Message Specification/payload/context sensitive and can for example inform the sender that the payload has been processed and/or delivered to a clinician for review.

When the value attribute is set to "true", the recipient should reply to the message with a Business Acknowledgement. A Business Acknowledgement is sent when the message has been successfully processed by the recipient.

When the value attribute is set to "false", the recipient should not send a Business Acknowledgement. The message sender is under no obligation to process any Business Acknowledgement related to the message.

#### Business Response

Key urn:nhs-itk:ns:201005:busresponserequested

A Business Response is defined as part of an interaction, for example an accept or reject in response to a request.

When the value attribute is set to "true", the recipient should reply to the message with a Business Response. Business Responses, where appropriate, are specified in Domain Message Specifications. For example, the Health and Social Care Integration domain specifies that a Contact Assessment (when acting as a referral) has a Business Response of either accepting or rejecting the referral.

When the value attribute is set to "false", the recipient should not reply to the message with a Business Response. The message sender is not expecting any business response in relation to the message.

#### Interaction Identifier

Key urn:nhs-itk:ns:201005:urn:nhs-itk:ns:201005:interaction

The interaction identifier, when looked up in the relevant Domain Message Specification, describes behaviours for the sender and receiver of messages. For example requesting and receiving acknowledgements and appropriate responsibilities for copy and primary message recipients.

The value attribute of the interaction handling specification is set to the interaction identifier from the relevant Domain Message Specification.

#### Summary of all ITK Handling Specifications

Key | Value | Description
--- | --- | ---
urn:nhs-itk:ns:201005:infackrequested | true or false | When set to "true" requests an infrastructure acknowledgement upon receipt of this message
urn:nhs-itk:ns:201005:ackrequested | true or false | When set to "true" requests a business acknowledgement for this message
urn:nhs-itk:ns:201005:busresponserequested | true or false | When set to "true" requests a business response as a reply to this message
urn:nhs-itk:ns:201005:interaction | interaction identifier | Carries the interaction identifier found in the Domain Message Specification of the message being sent.

#### Acknowledgement Framework Configurations

Acknowledgements are configurable by setting handling specifications to "true" or "false" per message.

##### Request Only Messaging Configuration

This is equivalent to "fire-and-forget" where no response (other than the default transport level response) is required.

Key | Value
--- | ---
urn:nhs-itk:ns:201005:infackrequested | false
urn:nhs-itk:ns:201005:ackrequested | false
urn:nhs-itk:ns:201005:busresponserequested | false

##### Request Response Messaging Configuration

Depending on the level of response required, the handling specification key value pairs can be set to either true or false. Below are some examples of acknowledgement requests. Note that any combination of acknowledgements may be requested, depending upon business needs and requirements.

###### To request an Infrastructure Acknowledgement only

Key | Value
--- | ---
urn:nhs-itk:ns:201005:infackrequested | true
urn:nhs-itk:ns:201005:ackrequested | false
urn:nhs-itk:ns:201005:busresponserequested | false

###### To request an Infrastructure Acknowledgement and a Business Acknowledgement

Key | Value
--- | ---
urn:nhs-itk:ns:201005:infackrequested | true
urn:nhs-itk:ns:201005:ackrequested | true
urn:nhs-itk:ns:201005:busresponserequested | false

###### To request an Infrastructure Acknowledgement, a Business Acknowledgement and a Business Response

Key | Value
--- | ---
urn:nhs-itk:ns:201005:infackrequested | true
urn:nhs-itk:ns:201005:ackrequested | true
urn:nhs-itk:ns:201005:busresponserequested | true