Chapter 106. MLLP

MLLP Component

Available as of Camel 2.17
The MLLP component is specifically designed to handle the nuances of the MLLP protocol and provide the functionality required by Healthcare providers to communicate with other systems using the MLLP protocol. The MLLP component provides a simple configuration URI, automated HL7 acknowledgment generation and automatic acknowledgement interrogation.
The MLLP protocol does not typically use a large number of concurrent TCP connections - a single active TCP connection is the normal case. Therefore, the MLLP component uses a simple thread-per-connection model based an standard Java Sockets. This keeps the implementation simple and eliminates the dependencies other than Camel itself.
The component supports the following:
  • A Camel consumer using a TCP Server
  • A Camel producer using a TCP Client
The MLLP component uses byte[] payloads, and relies on Camel Type Conversion to convert byte[] to other types.
Maven users will need to add the following dependency to their pom.xml for this component:
<dependency>
    <groupId>org.apache.camel<groupId>
    <artifactId>camel-mllp<artifactId>
    <version>x.x.x<version>
    < use the same version as your Camel core version -->
<dependency>

MLLP Consumer

The MLLP Consumer supports receiving MLLP-framed messages and sending HL7 Acknowledgements. The MLLP Consumer can automatically generate the HL7 Acknowledgement (HL7 Application Acknowledgements only - AA, AE and AR), or the acknowledgement can be specified using the CamelMllpAcknowledgement exchange property. Additionally, the type of acknowledgement that will be generated can be controlled by setting the CamelMllpAcknowledgementType exchange property.

Message Headers

The MLLP Consumer adds these headers on the Camel message:
Key
MSH field
Example
CamelMllpLocalAddress
CamelMllpRemoteAddress
CamelMllpSendingApplication
MSH-3
APPA
CamelMllpSendingFacility
MSH-4
FACA
CamelMllpReceivingApplication
MSH-5
CAMEL
CamelMllpReceivingFacility
MSH-6
FACB
CamelMllpTimestamp
MSH-7
20150106235900
CamelMllpSecurity
MSH-8
CamelMllpMessageType
MSH-9
ADT^A04
CamelMllpEventType
MSH-9-1
AD4
CamelMllpTriggerEvent
MSH-9-2
A04
CamelMllpMessageControlId
MSH-10
12345
CamelMllpProcessingId
MSH-11
P
CamelMllpVersionId
MSH-12
2.3.1
CamelMllpCharset
MSH-18
All headers are String types. If a header value is missing, its value is null.

Exchange Properties

The type of acknowledgment the MLLP Consumer generates can be controlled by these properties on the Camel exchange:
Key
Example
CamelMllpAcknowledgement
CamelMllpAcknowledgementType
AR
All headers are String types. If a header value is missing, its value is null.

Consumer Configuration - MLLP Producer

The MLLP Producer supports sending MLLP-framed messages and receiving HL7 Acknowledgements. The MLLP Producer interrogates the HL7 Acknowledgments and raises exceptions if a negative acknowledgement is received. The received acknowledgement is interrogated and an exception is raised in the event of a negative acknowledgement.

Message Headers

The MLLP Producer adds these headers on the Camel message:
Key
MSH field
Example
CamelMllpLocalAddress
CamelMllpRemoteAddress
CamelMllpAcknowledgement
CamelMllpAcknowledgementType
AA
All headers are String types. If a header value is missing, its value is null.