This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.

HL7 Inbound Protocol

The ESB profile of WSO2 Enterprise Integrator (WSO2 EI) HL7 inbound protocol is a multi-tenant capable alternative to the HL7 transport. The HL7 inbound endpoint implementation is fully asynchronous and is based on the Minimal Lower Layer Protocol(MLLP) implemented on top of event driven I/O. 

Following is a sample HL7 inbound endpoint configuration:

Sample HL7 Inbound Endpoint
<inboundEndpoint xmlns="http://ws.apache.org/ns/synapse"
                name="InboundHL7"
                sequence="main"
                onError="fault"
                protocol="hl7"
                suspend="false">
  <parameters>
     <parameter name="inbound.hl7.Port">20000</parameter>
     <parameter name="inbound.hl7.AutoAck">true</parameter>
     <parameter name="inbound.hl7.ValidateMessage">true</parameter>
     <parameter name="inbound.hl7.TimeOut">10000</parameter>
     <parameter name="inbound.hl7.CharSet">UTF-8</parameter>
     <parameter name="inbound.hl7.BuildInvalidMessages">false</parameter>
     <parameter name="inbound.hl7.PassThroughInvalidMessages">false</parameter>  
  </parameters>
</inboundEndpoint>

In the above inbound endpoint configuration, you will see that the endpoint is defined using the HL7 protocol and that all requests coming into this endpoint are directed to the main sequence.

HL7 inbound endpoint parameters

The following table provides information on the HL7 inbound endpoint parameters you can set:

ParameterDescriptionDefault ValuePossible Values
inbound.hl7.PortThe port on which you need to run the MLLP listener.N/AYou need to specify this.
inbound.hl7.AutoAckWhether or not an auto acknowledgement should be sent on message receipt. If set to false, you can define the type of HL7 acknowledgement to be sent. For more information, see HL7 inbound endpoint mediation level properties.truetrue | false
inbound.hl7.ValidateMessageThis enables HL7 message validation.truetrue | false
inbound.hl7.TimeOutThe timeout interval in milliseconds to trigger a NACK message.10000[0..9]*
inbound.hl7.CharSetThe character set used for encoding and decoding messages. Some multi-byte character encodings (e.g. UTF-16, UTF-32) may result in byte values equal to the MLLP framing characters or byte values lower than 0x1F, resulting in errors.UTF-8ISO-8859-1
UTF-8
US-ASCII
inbound.hl7.BuildInvalidMessagesIf the inbound.hl7.ValidateMessage parameter is set to false and the incoming message is invalid, this parameter specifies whether the raw message received through the MLLP transport should be passed onto the mediation layer.falsetrue | false
inbound.hl7.PassthroughInvalidMessagesIf the inbound.hl7.BuildInvalidMessages parameter is set to true, this parameter notifies the Axis2 HL7 transport sender whether to use the raw message.falsetrue | false
inbound.hl7.MessagePreProcessorAn implementation of the org.wso2.carbon.inbound.endpoint.protocol.hl7.HL7MessagePreprocessor interface can be defined here. It provides an extension point to intercept incoming messages before any type of message parsing occurs.N/AFully qualified class name.

HL7 inbound endpoint mediation level properties

Following are the mediation level properties that you can set in the HL7 inbound endpoint:

Note

The scope of these properties is the default scope.

PropertyDescription
<property name="HL7_RESULT_MODE" value="ACK|NACK" scope="default"/> This is use to define the type of HL7 acknowledgement to be sent. If the inbound.hl7.AutoAck parameter is set to true this property has no effect.
<property name="HL7_NACK_MESSAGE" value="<ERROR MESSAGE>" scope="default" /> This is used to define a custom error message to be sent if you have set the property HL7_RESULT_MODE as NACK.
<property name="HL7_APPLICATION_ACK" value="true" scope="default"/> If the inbound.hl7.AutoAck parameter is set to false and no immediate auto generated ACK is sent back to the client, this property defines whether we should automatically generate the ACK for the request once the mediation flow is complete. If both the inbound.hl7.AutoAck parameter and this property are set to false, you need to generate an ACK message in the correct format as a response.

Tuning the HL7 inbound endpoint

The HL7 inbound endpoint can be configured using the <EI_HOME>/conf/hl7.properties file. 

The supported list of tuning parameters for this file are as follows:

PropertyDescriptionValue
hl7_id_generatorBy default the HAPI HL7 parsing library uses a file based ID generator to generate unique control IDs. To use a UUID based ID generator you can change this to ‘uuid’.file | uuid (default = file)
worker_threads_coreDefines the HL7 inbound worker thread pool size.[0..9]* (default = 100)
io_thread_countDefines the number of IO threads the IO Reactor uses. It is recommended to set this to the number of cores on the machine.[0..9]* (default = 2)
so_timeoutDefines TCP socket timeout.[0..9]* (default = 0)
connect_timeoutDefines the TCP connect timeout.[0..9]* (default = 0)
so_keep_aliveDefines TCP socket keep alive.true | false (default = true)
so_rcvbufDefines the TCP socket receive buffer size.[0..9]* (default = 0 uses OS default. Maximum value depends on OS settings).
so_sndbufDefines the TCP socket send buffer size.[0..9]* (default = 0 uses OS default. Maximum value depends on OS settings).

Samples

For a sample that demonstrates how the HL7 inbound protocol can be used to receive a simple HL7 message, see Sample 905: Inbound HL7 with Automatic Acknowledgement.