Sun Microsystems, Inc.
4150 Network Circle
Santa Clara, CA 95054
U.S.A.
Part No: 821–0377–10
October 2009
Copyright 2009 Sun Microsystems, Inc.4150 Network Circle, Santa Clara, CA 95054 U.S.A. All rights reserved.
Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in the product that is described in this document. In particular, and without
limitation, these intellectual property rights may include one or more U.S. patents or pending patent applications in the U.S. and in other countries.
U.S. Government Rights – Commercial software. Government users are subject to the Sun Microsystems, Inc. standard license agreement and applicable provisions
of the FAR and its supplements.
This distribution may include materials developed by third parties.
Parts of the product may be derived from Berkeley BSD systems, licensed from the University of California. UNIX is a registered trademark in the U.S. and other
countries, exclusively licensed through X/Open Company,Ltd.
Sun, Sun Microsystems, the Sun logo, the Solaris logo, the Java Coee Cup logo, docs.sun.com, Java, and Solaris are trademarks or registered trademarks of Sun
Microsystems, Inc. or its subsidiaries in the U.S. and other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks of
SPARCInternational,Inc.inthe U.S. and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc.
The OPEN LOOK and Sun
of Xerox in researching and developing the concept of visual or graphical user interfaces for the computer industry. Sun holds a non-exclusive license from Xerox to
the Xerox Graphical User Interface, which license also covers Sun's licensees who implement OPEN LOOK GUIs and otherwise comply with Sun's written license
agreements.
Products covered by and information contained in this publication are controlled by U.S. Export Control laws and may be subject to the export or import laws in
other countries. Nuclear, missile, chemical or biological weapons or nuclear maritime end uses or end users, whether direct or indirect, are strictly prohibited. Export
or reexport to countries subject to U.S. embargo or to entities identied on U.S. export exclusion lists, including, but not limited to, the denied persons and specially
designated nationals lists is strictly prohibited.
DOCUMENTATION IS PROVIDED “AS IS” AND ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONSAND WARRANTIES, INCLUDINGANY
IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO
THE EXTENT THATSUCH DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.
TM
Graphical User Interface was developed by Sun Microsystems, Inc. for its users and licensees. Sun acknowledges the pioneering eorts
091015@23031
Contents
Sun Adapter for TCP/IP HL7 User's Guide .......................................................................................... 7
Sun Adapter for TCP/IP HL7 Overview ..............................................................................................8
About Sun Adapter for TCP/IP HL7 ............................................................................................8
About HL7 .................................................................................................................................... 10
The TCP/IP HL7 Adapter Architecture .................................................................................... 10
Modes and Roles .......................................................................................................................... 12
“TCP/IP HL7 Inbound Adapter Environment Properties” on page 92
■
“TCP/IP HL7 Inbound Adapter Environment Properties” on page 94
Sun Adapter forTCP/IP HL7 Overview
The following topics provide information about HL7 and the TCP/IP HL7 Adapter:
■
“About Sun Adapter for TCP/IP HL7” on page 8
■
“About HL7” on page 10
■
“The TCP/IP HL7 Adapter Architecture” on page 10
■
“Modes and Roles” on page 12
■
“Inbound Functionality” on page 14
■
“Outbound Functionality” on page 17
■
“General Functionality” on page 20
■
“TCP/IP HL7 Adapter Operation” on page 22
■
“Monitoring the HL7 Adapter” on page 24
■
“Schematron Support in the HL7 Adapter” on page 25
About Sun Adapter forTCP/IP HL7
The Sun Adapter for TCP/IP HL7 is a component of the Sun Java Composite Application Suite
(Java CAPS) that enables the Java CAPS ESB system to exchange data with an external TCP/IP
application using the HL7 data protocol. The Sun Java CAPS ESB with the TCP/IP HL7 Adapter
provides:
■
Macro functionality, providing ease of use and productivity.
■
Prebuilt standards-compliant inbound and outbound template Collaborations that you can
use as is or that you can modify for your specic needs.
■
A complete set of congurable properties that allow you to customize the functionality of
the Adapter. The functions can further be customized by modifying the Collaborations.
■
Journaling and error messaging to JMS queues and topics. This is in addition to Sun Java
CAPS ESB’sstandard alert and debug logging.
■
Support for HL7 Standard versions 2.1, 2.2, 2.3, 2.3.1, 2.4, 2.5, 2.5.1, 2.6 and V3.
Sun Adapter forTCP/IPHL7User's Guide • October 20098
Sun Adapter forTCP/IPHL7Overview
Note – Throughout this document the term “JMS queue” is used in the generic sense and
actually denotes JMS queues or topics.
TCP/IP HL7 Features
The TCP/IP HL7 Adapter includes the following features:
■
Bidirectional processing, including client or server mode in either direction (to or from Sun
Java CAPS ESB).
■
Handles both HL7 HLLP and MLLP protocols and envelopes.
■
Provides a wide variety of recourse action congurations.
■
Non-blocking I/O.
■
Recovery and retry logic.
■
Debug levels and error logging.
■
Journaling of HL7 messages and associated acknowledgements.
■
HL7 acknowledgement levels.
■
Fully supports the HL7 sequence numbering protocol.
■
Full support for HL7 ACK and NAK generation and validation.
■
Supports delayed ACK in both directions.
TCP/IP HL7 Adapter Components
The TCP/IP HL7 Adapter incorporates three components:
■
The HL7 TCP/IP Resource Adapter that implements the lower layer HL7 protocol over
TCP/IP.
■
Default inbound and outbound Collaborations that implement the HL7 messaging
protocol, sequence numbering, and recourse actions.
■
Generic HL7 Message Libraries that provide the structures necessary to parse and create the
data messages and ACKs used by the protocol.
The TCP/IP HL7 Message Library, also known as an Object Type Denition (OTD) Library,
enables the creation of HL7 interfaces capable of running over TCP/IP, and also utilizes the
common Adapter services available in Java CAPS. The TCP/IP HL7 Adapter works hand in
hand with the Sun Java CAPS HL7 Message Libraries, versions 2.1 through 2.5.1.
The TCP/IP HL7 Adapter properties allow the user to easily congure the operation of the
TCP/IP HL7 Adapter. The Adapter includes a set of properties that are congured in the
Connectivity Map and only apply to that Adapter in the Project. It also includes a set of
properties that are congured in the Environment and apply to all TCP/IP HL7 Adapters in the
Project. These properties are adopted into the Message Library’s functions.
Sun Adapter forTCP/IPHL7User's Guide9
Sun Adapter forTCP/IPHL7Overview
The Message Library handles all of the lower-layer protocol. The Message Library’s behavior is
customized using the Adapter conguration properties. These Adapter properties are used by
the resource adapter, but are also accessed and used by the prebuilt Collaborations.
About HL7
HL7 is a standard for exchanging information between medical applications and is an
abbreviation of Health Level Seven. Level Seven refers to the seventh OSI layer protocol for the
health environment. HL7 denes the format and the content of the messages that applications
must use when exchanging data with each other under various circumstances.
Hospitals and other medical institutions typically use many dierent types of systems to
communicate with one another. Everything, from patient records to billing information, is
tracked and recorded in computer systems. In order for these dierent types of systems to
communicate with each other, they use a standard like HL7.
Note – In the computer world, a protocol is a formal, well-dened standard for exchanging
information between computer applications.
An important part of the HL7 standard is the ACKnowledgment protocol, also known as an
ACK. Every time an application accepts a message and consumes the data, it is expected to send
an ACKnowledgment message back to the sending application. The sending application is
expected to keep on sending a message until it has received an ACK message.
TheTCP/IP HL7 Adapter Architecture
The TCP/IP HL7 Adapter's functionality comes from a combination of the TCP/IP HL7
Resource Adapter (RA), the predened inbound and outbound HL7 Collaborations, and the
generic HL7 Message Libraries.
TCP/IP HL7 Resource Adapter
The TCP/IP HL7 Resource Adapter communicates with external HL7 systems, establishes and
maintains the TCP/IP socket, manages message enveloping, maintains the sequence numbering
le, and provides the HL7 protocol state to the Collaboration. The RA (Resource Adapter) is
congured from the Adapter Properties Editor.
HL7 Collaborations
The inbound and outbound HL7 Collaborations provide message validation, sequence
numbering, ACK and NAK generation, and recourse actions. The predened HL7
Collaborations are designed to implement the HL7 standard protocol and inter-operate with
similar standard compliant systems by simply changing the Adapter property conguration.
Sun Adapter forTCP/IPHL7User's Guide • October 200910
Sun Adapter forTCP/IPHL7Overview
If a system does not conform to the HL7 specication, the Collaborations can be modied for
that transaction by changing the Java code using the Collaboration Editor. The Collaborations
Java code is designed to be available and “transparent” so you can easily reference the
predened Java code to see how it currently handles HL7 transactions and make the
appropriate modications.
The Collaboration Editor allows you to create and edit Java code to modify a Collaboration for
your specic needs. In many cases this code can be created graphically (drag and drop), using
the Collaboration Editor’sBusiness Rules Designer. If you need to change the code of a prebuilt
Collaboration, you should duplicate the Collaboration rst and then modify it.
The Collaborations are designed to target one unit of work at a time, meaning the resolution of
one message at a time. Once the current message transaction is resolved, the Collaboration is
free to process the next HL7 message. The general form of the Collaborations is a state machine.
Based on the state of the connection, the Collaboration performs the appropriate action.
Additional Collaborations can be added to a Project to increase message ow.
Generic HL7 Message Libraries
The generic HL7 Message Libraries are version-agnostic structures used to send and receive
HL7 messages, acknowledgements, and negative acknowledgements (NAKs). They provide the
Collaboration with only the essential elds for implementing the HL7 protocol. If you need to
perform functions that are specic to a version or message type, you can add the appropriate
Message Library to the Collaboration.
Sun JavaComposite Application Suite Functionality
The TCP/IP HL7 Adapter takes advantage of the Java CAPS facilities to provide journaling and
error messaging, as well as monitoring, alerting, and logging. journaling and error messages are
sent to JMS queues, which allow exibility for postprocessing. For example, invalid messages
and their negative acknowledgements (NAKs) are sent to a JMS queue. This JMS queue can
then be set up to allow the invalid HL7 messages to be viewed, corrected, and resubmitted
automatically to the same Adapter.
■
Error Queues
Each Collaboration automatically sends invalid messages that have incorrect data, have
invalid formatting, or are deemed unacceptable to a JMS error queue. The error generated
by the message and, if appropriate, its associated NAK, are written as JMS properties of that
message for later processing. You can send errors to one common queue, to a specied
queue for each Adapter, or to a combination of both.
■
Journaling Queues
When journaling is enabled, the HL7 message and its related acknowledgement (ACK) are
written to a JMS journal queue. You determine the number of JMS error queues or journal
queues used by a Project. From the JMS queue, these messages can be accessed and written
to le, sent to a database, sent to a Web application for processing, and so forth.
Sun Adapter forTCP/IPHL7User's Guide11
Sun Adapter forTCP/IPHL7Overview
■
Monitoring
The Enterprise Manager provides a real-time picture of the Adapter's state and status. The
monitoring facilities display the following information:
■
■
■
■
■
■
Alerts
Alerts are sent from the RA and the Collaborations when conditions are identied that
endanger or stop the interface. You can add your own custom alert messages to the
Collaborations.
■
Logging
Log messages are written from both the RA and the Collaborations. You can also congure
your own log messages. The level is set in the Enterprise Manager. For more information on
monitoring, alerting and logging, see
Java CAPS
Adapter up or down
Connected to external
Current sequence number
Date and time of the last transaction
Adapter properties
Using Enterprise Manager Management Application in
and Alert Codes for Java CAPS Adapters.
Modes and Roles
The TCP/IP HL7 Adapter can operate in two modes: standard and delayed ACK. Standard
mode is the typical message exchange in HL7 where an HL7 message is sent and an HL7 ACK is
received, or the other way around. In delayed ACK mode, the exchange of a message requires
two acknowledgements: one to conrm the message was received and the other from the
external system that actually received the message to verify that it was received.
In these two modes, the Adapter and the ESB have a number of roles they play within certain
scenarios; that is, certain components can fulll dierent responsibilities within a protocol. For
example, the outbound Collaboration can fulll two roles in the delayed ACK mode: one as the
“sender of messages” that expects two delayed ACKS, and another as the “forwarder of ACKS”
from the external system.
Note – Delayed ACK mode is deprecated as of HL7 version 2.2 and was removed from the HL7
standard as of version 2.5.
Standard Mode
In standard mode, the HL7 Adapter can assume two roles, sender and receiver. These are
implemented in the outbound and inbound Collaborations respectively.
Sun Adapter forTCP/IPHL7User's Guide • October 200912
Sun Adapter forTCP/IPHL7Overview
HL7 Adapter Sender Role
The outbound Collaboration is the implementation of the Sender and the RA is congured for
an outbound data ow. A Java CAPS Service forwards the data to the Adapter, which in turn
forwards the data to the accepting HL7 external system. The External System responds with an
ACK or NAK response.
HL7 Adapter Receiver Role
The inbound Collaboration is the implementation of the Receiver role in conjunction with the
RA being congured for inbound direction. The Adapter accepts a message from the sending
HL7 external system, forwards the data to a Java CAPS Service, and responds to the sending
system with an ACK or a NAK response.
Delayed ACK Mode
Delayed ACK mode is an extension to the basic HL7 message exchange mode, where there is
some middleware component between the Sender and the Receiver. The sending system
expects to receive the ACK from the receiving system in addition to the middleware
component. In this mode, the ESB can assume two roles in the protocol: as the Sender and as the
Receiver.
ESB Sender Role
In this role, the ESB acts as the Sender in the exchange. The HL7 RA is congured for the
outbound direction, and the HL7 outbound Collaboration is congured so the Sends App Ack
property is set to True. This parameter is used even though the ESB technically does not send an
application ACK. Rather, it receives the application ACK and provides the compliment
behavior to the ACK sent by the inbound congured Adapter. The two are related in the
protocol.
The purpose of this role is for the ESB to act as if it is a system that requires the Delayed ACKs so
that it can communicate with a system that operates in the Delayed ACK Receiver role. An
example implementation of this role is available in the HL7Outbound sample Project.
ESB Receiver and Forwarder Role
To perform this role, the ESB is congured with two instances of the HL7 Adapter , each
performing its own role as Receiver or Forwarder.
Note – For Delayed ACK, the Receiver and Forwarder must be on the same integration server.
The following steps convey the steps taken in this scenario.
1. The Receiver accepts the HL7 message. It then returns the rst ACK, with an MSH - 5, value
“D” (for the Delayed ACK), to the Sender.
Sun Adapter forTCP/IPHL7User's Guide13
Sun Adapter forTCP/IPHL7Overview
2. The Receiver sends the message to the Forwarder.
3. The Forwarder sends the message to the receiving External System.
4. The receiving External System sends an ACK to the Forwarder.
5. The Forwarder receives the ACK from the External and forwards it on to the Receiver.
6. The Receiver then forwards the ACK, with an MSH - 5, value “F” indicating that it is the
receiving External System’s ACK, to the Sender.
In the Receiver role, the HL7 RA is congured for inbound, and the inbound Collaboration is
used with the parameter Sends App Ack set to true. In the Forwarder role, the RA is set to
outbound, the parameter Forward External Acks to eGate, is set to true, and the outbound
Collaboration is selected.
This conguration table presents the necessary parameters used to congure the Adapter to
assume the Delayed ACK roles
An example of the receiver role is provided in the prjHL7Inbound sample Project. The
prjHL7Outbound Project provides a sample implementation of the Forwarder role.
Inbound Functionality
The inbound TCP/IP HL7 Adapter Project, prjHL7Inbound, provides a sample
implementation of an inbound ow using the Adapter. It can be congured for standard
inbound mode or for forward message mode.
Inbound Adapter Data Flow
The inbound TCP/IP HL7 Adapter Project receives HL7 messages from an external system,
sends an acknowledgement of the message to the external, provides sequence numbering,
writes the HL7 message to a JMS data queue, and also writes the HL7 message and ACK to a
JMS journal queue. Any error messages and NAKs are sent to a JMS error queue.
The HL7 data is processed so all the elds in the MSH segment of the message are stored in an
internal structure to generate an HL7 response. Non-HL7 data, including HL7
acknowledgments, automatically generate warnings in the Adapter’s log le and send an HL7
NAK to the external system.
Sun Adapter forTCP/IPHL7User's Guide • October 200914
Sun Adapter forTCP/IPHL7Overview
Standard Inbound Message Mode Data Flow and Architecture
The following steps describe the ow of data for an inbound Adapter:
1. The external system sends the HL7 message to the Adapter.
2. The Collaboration receives the HL7 message.
3. The Collaboration validates the message (if validate is enabled). If it fails, the Collaboration
takes the congured recourse action. If the recourse action is stripped and the maximum
number of retries has been exceeded, the message and error are written to the error queue.
4. The Collaboration writes the message to the data queue.
5. The Collaboration then creates the appropriate ACK and sends it to the RA.
6. The RA envelopes the ACK and sends it to the External System.
7. If journaling is enabled, the message and its ACK are written to the journal queue.
Inbound ReceiverMessage Mode
The Inbound Receiver Message mode is used when the Delayed ACK is congured to fulll the
role of the Receiver in the Delayed ACK scenario. It accepts the message and acknowledges the
External and then forwards the message to the component fullling the Forwarder role. It then
accepts the ACK from the Forwarder and passes it on to the External that sent the message.
The following steps describe the Inbound Forward Message Role:
1. The Sender External, sends an HL7 message to the Inbound Adapter, which is congured as
a Receiver (Sends App Acks is enabled).
2. The Inbound Adapter receives the HL7 message and returns the rst Acknowledgement to
the External with an MSA - 5, value “D” for Delayed Acknowledgement. The External
receives the ACK, validates the ACK (verifying that it is a Delayed ACK), and waits for
another ACK.
3. The Inbound Adapter creates a JMS message with the HL7 message as the payload, creates a
“reply to” destination, and forwards the HL7 message to the Outbound Forwarder (to a JMS
destination).
4. The Outbound Forwarder gets the HL7 message and forwards the message to the External
System.
5. The External System receives the HL7 message and returns the HL7 ACK message to the
Outbound Forwarder.
6. The Outbound Forwarder gets the HL7 ACK message and sends it to the Inbound Receiver
Adapter using the “reply to” destination.
7. The Receiver External reads the HL7 ACK message and forwards the second HL7 ACK
message with an MSA - 5, value “F”to the Sender External. The Sender External then takes
the appropriate action: for example, journaling the HL7 message and the HL7 ACK.
Sun Adapter forTCP/IPHL7User's Guide15
Sun Adapter forTCP/IPHL7Overview
Message Verication
Message verication begins with reading the message from the external system. The message is
expected to match the MLLP envelope, since both HLLP and MLLP envelopes have the Start of
Block (SOB), End of Data (EOD), and a Carriage Return (CR) in common.
If a message fails the read verication, it is considered bad data. If read by an inbound Adapter,
this failure causes the Adapter to generate a Canned HL7 NAK. An outbound Adapter ignores
the message and logs a warning, reporting the nature of the problem to the log le.
An HLLP envelope needs further verication as to whether it is data or a NAK, as well as the
Block Checksum and Block Size. The Adapter behaves as described above if the HLLP envelope
verication fails.
After stripping the message envelope, the RA hands the de-enveloped message to the inbound
Collaboration where it is parsed into the generic event Message Library. This ensures that the
general form and MSH segment are valid. If the MSH property is set, the Collaboration veries
that the elds specied in the HL7 segment section are the same as those of the received MSH,
otherwise, a NAK is returned.
Acknowledgment Processing
■
Adapter Generates HL7 Acknowledgment
In this scenario, the Adapter generates an HL7 ACK after receiving and successfully storing
the message in a queue; otherwise, it generates an HL7 NAK. The HL7 ACK or NAK is
placed in the proper envelope and sent to the external system.
■
ESB Sends HL7 Acknowledgement
In this scenario, the Adapter acts as a receiver in a Delayed ACK scenario, as described in
“Inbound Receiver Message Mode” on page 15.
■
Canned HL7 NAK
A canned HL7 NAK is created when a read error occurs or when an message cannot be
identied as an HL7 message. The initial test ensures that the message conforms to the
lower-layer protocol. The Resource Adapter uses the MSH section parameters to create an
appropriate NAK.
Recourse Actions
Recourse actions can be congured for an inbound Adapter for the following conditions. For
more information, see
■
The empty read limit is reached.
■
The maximum number of NAKs are received by the Adapter.
■
The maximum number of NAKs are sent by the Adapter.
■
The maximum number of response timeouts is reached.
■
A NAK response is received.
Sun Adapter forTCP/IPHL7User's Guide • October 200916
“Recourse Actions” on page 21.
Sun Adapter forTCP/IPHL7Overview
■
No response is received after a message is sent the maximum number of times.
Outbound Functionality
The outbound TCP/IP HL7 Adapter Project, prjHL7Outbound, can be implemented in
standard outbound mode or in two forward message modes: outbound delayed ACK or
outbound forwarder.
Outbound Adapter Data Flow
In outbound mode, the Adapter receives HL7 messages from a JMS queue. Each message is
veried to ensure it contains HL7 data only. Legitimate HL7 data is enveloped into its
congured format and sent to the external system.
A message in the JMS queue triggers the outbound Collaboration. The outbound Collaboration
is provided with an HL7 message to send to the external system
The Adapter waits for a congurable number of milliseconds for an incoming HL7 ACK or
NAK from the external system. After receiving an HL7 response from the external system, the
Adapter strips the message from its envelope and veries its integrity.
Any non-HL7 acknowledgment received from the external system causes the Adapter to resend
the same message. If the incoming response is an HL7 ACK or NAK, the Adapter might do
either of the following, as dictated by its conguration:
■
Recourse action on NAK received.
■
Recourse action on Max NAKreceived.
If journaling is set, these messages and their ACKs are placed in the journal le.
Outbound Standard Messaging Mode
The following steps describe the process for the Outbound Standard Message Mode:
1. An HL7 message triggers the Collaboration. The outbound Collaboration is designed to
accept the HL7 messages.
2. The Collaboration maps the received message into the Generic Event Message Library and
validates the MSH segment. If validation is enabled, the Collaboration checks the MSH
segment of the outbound messages against MSH values congured in the Adapter
properties le. If the validation fails or the message cannot be parsed, the message and its
error are written to the error queue. Note that the HL7 message is always checked for
structural correctness.
3. The Collaboration sends the message to the RA.
4. The RA envelopes the message and sends it to the External System and waits for an ACK.
Sun Adapter forTCP/IPHL7User's Guide17
Sun Adapter forTCP/IPHL7Overview
5. The Collaboration receives and validates the ACK, and then journals the ACK and the HL7
message (if journaling is enabled). If the Collaboration receives a NAK, the NAK and the
HL7 message are sent to the error queue.
6. Finally, the Collaboration commits the JMS receive.
Outbound Adapter Roles for Delayed ACK Scenarios
The outbound Adapter can fulll two roles in a delayed ACK scenario. The outbound delayed
acknowledgement mode is used to communicate with an external system that is congured to
receive messages in a delayed ACK way; that is, it receives two ACKs. One conrms the message
was received, and the other is from the application that accepts the message. For delayed ACK
mode, the process is similar to that of the standard outbound mode, except that it receives two
ACKs. The initial ACK comes from the receiving system.
Outbound Delayed ACK Role
The following steps describe the outbound delayed acknowledgement role process displayed:
1. The outbound Adapter, which is congured as Delayed Acknowledgement role, receives a
message from JMS, and sends the message to the External System.
2. The External System receives the message and returns the rst Acknowledgement to the
outbound Adapter with an MSA - 5, value “D” for Delayed Acknowledgement. The
outbound Adapter receives the ACK, validates the ACK (verifying that it is a Delayed ACK),
and waits for another ACK.
3. The outbound Adapter receives another HL7 ACK message (the second) and validates that
the second HL7 ACK message is an MSA - 5, with a value of “F.” If the second ACK is valid,
the Adapter commits the message, otherwise it resends the message.
Outbound Forwarder Role
The Outbound Forward Message role is used in conjunction with the with the inbound
Adapter, which is also congured to handle delayed ACKs. No validation is preformed: the
Adapter acts as a “pass-through.”
The following steps describe the Outbound Forwarder Role processing:
1. Data is received by the Collaboration, from the JMS queue.
2. The Collaboration extracts the JMS property “reply to” destination from the message, but
does no validation, and sends the message to the External System.
3. The Adapter receives the ACK from the External System.
4. The Collaboration sends the ACK to the temporary topic that was contained in the “reply
to.”
Sun Adapter forTCP/IPHL7User's Guide • October 200918
Sun Adapter forTCP/IPHL7Overview
Note – For Delayed ACK, the Receiver and Forwarder must be on the same integration
server.
Message Verication
The only verication that the outbound Adapter does is to ensure that the message parses into
the generic Event Message Library, and that the MSH uses the correct elds. The acknowledge is
veried to ensure that the sent message is valid.
Acknowledgment Processing
■
Adapter Generates HL7 Acknowledgment
In this scenario, the Adapter generates an HL7 ACK after receiving and successfully storing
the message in a queue; otherwise, it generates an HL7 NAK. The HL7 ACK or NAK is
placed in the proper envelope and sent to the external system.
■
ESB Sends HL7 Acknowledgement
In this scenario, the Adapter acts as a sender in a Delayed ACK scenario, as described in
“Delayed ACK Mode” on page 13.
■
Canned HL7 NAK
A Canned HL7 NAK is created when a read error occurs, or when an message cannot be
identied as an HL7 message. The initial test ensures that the message conforms to the
lower-layer protocol. The Resource Adapter uses the MSH section parameters to create an
appropriate NAK.
Recourse Actions
Recourse actions can be congured for the outbound Adapter for the following conditions:
■
The Adapter sends the maximum number of canned negative acknowledgments.
■
The Adapter attempts to read data the maximum number of times from the external system
after a read or receive operation returns nothing.
■
The Adapter receives the maximum number of negative acknowledgments.
■
HL7 message validation fails prior to the sending of the HL7 message to the external system.
■
The Adapter reaches the maximum number of response timeouts while waiting for data
from the external system.
■
The Adapter receives an HL7 Application NAK from the external system.
■
The Adapter waits for a response from the external system for the congured amount of
time (in milliseconds).
For more information on the available recourse actions, see
Sun Adapter forTCP/IPHL7User's Guide19
“Recourse Actions” on page 21.
Sun Adapter forTCP/IPHL7Overview
Note – The TCP/IP HL7 Adapter includes internal counters that keep track of all error
conditions.
General Functionality
This section explains the Adapter’s general functions and features. It includes the following
topics:
■
“Non-blocking I/O” on page 20
■
“HL7 Sequence Numbering Protocol” on page 20
■
“Failed Message Handling” on page 21
■
“Recourse Actions” on page 21
Non-blocking I/O
The non-blocking I/O feature prevents the Adapter from locking up when attempting to read or
write data blocks, allowing the Adapter to continue its operation in case of any communication
errors. If the read attempt fails for a congurable number of times, the Adapter exits or resets its
connection to the external system, depending on its conguration. In the event of a failed write,
the Adapter can resume its write operation to pick up where it previously left o until the entire
message is successfully sent.
Without this feature, the Adapter might lock up when a read or write failure occurs and be
unresponsive to all external messages, including requests from the user or the Enterprise
Monitor (for status).
HL7 Sequence Numbering Protocol
The Adapter can be congured to use HL7 sequence numbering. The negotiation and
incrementation of this number is automatically performed by the Adapter. For more details on
HL7 sequence numbering, refer to Appendix C (Lower Layer Protocols) of the HL7 Standard
for the HL7 version you are using.
When the Adapter is congured for HL7 sequence numbering, the sequence number le opens
when the Adapter starts up. If the sequence number le does not exist, one is created and
populated with a zero sequence number. The sequence number le is updated on the inbound
Adapter when the Adapter generates the HL7 ACK (this process is transparent to the user), and
when the outbound Adapter receives the HL7 ACK from the external system.
If you want to change the sequence number at runtime, you need to suspend the Adapter, edit
and save the sequence number le, and reactivate the Adapter. To force the Adapter to
resynchronize its sequence number with the external system, you need to suspend the Adapter,
edit the le so it contains a “-1”, and then reactivate the Adapter.
Sun Adapter forTCP/IPHL7User's Guide • October 200920
Sun Adapter forTCP/IPHL7Overview
The minimum HL7 sequence number is 1. The maximum HL7 sequence number is 2 billion. A
sequence number of “0“ is used to start a session. If the sequence numbers between the Adapter
and the external cannot be reconciled during start or when exchanging messages, the Adapter
shuts down and wait for human intervention as dictated by the HL7 Standard.
Failed Message Handling
The Adapter can be congured to send failed or skipped messages (destined for the external
system) to a JMS-based error queue. Messages that fail validation are also written to the error
queue. Note that the inbound mode of the Adapter will not write messages that fail the MLLP
and HLLP validation. These are automatically NAKed and not passed to the Collaboration, but
are logged to the Adapter’s log le.
The failed or skipped message is written to the JMS queue and the error type and message are
written as the JMS properties:
■
Error: the actual error message or NAK
■
Error Type: the type of error, such as HL7_NAK_error or HL7_Validation_error.
Skipped messages are those which are continuously NAKed by the external system and thus are
skipped if the Adapter is congured accordingly. If the Adapter is congured for any other
recourse action other than skip, the message remains in the queue.
Recourse Actions
The TCP/IP HL7 Adapter recourse actions include Reset, Resend, Skip Message, and Exit.
■
On Reset, the Adapter drops its connection and then attempts to reconnect.
■
On Resend, the sequence number le and journal le are opened again (provided the newly
loaded conguration parameters are set for sequence numbering and journaling).
■
On Skip Message, the Adapter remains connected, but writes the message to an error queue.
■
On Exit, the Adapter closes its journal le and sequence number le (provided these were
congured for use). The Adapter terminates its connection with the external system and
shuts down. This allows you to modify these les and resolve any errors. Once the
corrections are made, the Adapter can be reactivated from the Enterprise Manager.
Stopping the Collaboration with a Fatal Alert
When the Exit recourse action is triggered it logs the error that caused the action. It also shuts
down the Collaboration, which in turn causes the HL7 message to roll back, and then sends an
alert to the Enterprise Manager.
The Exit Recourse Action calls the fatal alerter in the Collaboration:
alerter.fatal(’’error message’’,’’HL7’’);
Sun Adapter forTCP/IPHL7User's Guide21
Sun Adapter forTCP/IPHL7Overview
The argument error message is the user-congured alert message. The argument HL7 is the
source component (this must be “HL7”).
Note – The alerter.fatal("error msg", "HL7") method is only applicable to the packaged
TCP/IP HL7 Collaborations.
The Exit recourse action should be applied to any error condition that requires human
intervention to correct an error. Once the error condition is resolved, the Collaboration can be
restarted from the Enterprise Manager.
TCP/IP HL7 Adapter Operation
The following topics explain the basic elements of the TCP/IP HL7 Adapter’s general operation:
■
“Direction” on page 22
■
“Connection Type” on page 22
■
“Lower Layer Protocol” on page 23
■
“HL7 Acknowledgment Level” on page 23
■
“Journaling” on page 23
■
“Error Queues” on page 24
■
“Alerts and Monitoring” on page 24
■
“Support for HL7 Version 2.5 SFT Segments” on page 24
■
“Delayed Acknowledgements” on page 24
Direction
The TCP/IP HL7 Adapter can be congured as either HL7 inbound or HL7 outbound. This
option is determined automatically by the Adapter’s binding (link) in the Connectivity Map.
Connection Type
The connection type indicates how the Adapter establishes a TCP/IP connection. The role can
be as a Client, where the RA connects to the external, or as a Server, where the RA waits for a
connection.
■
Connected as a TCP/IP HL7 Client
As a TCP/IP HL7 client, the Adapter connects to external server (host/port) and establishes
a connection (in active mode).
■
Connected as a TCP/IP HL7 Server
The Adapter waits and listens to a specic port for incoming connection requests from an
external client. Once a request is received, the Adapter accepts the request and establishes a
connection (in passive mode).
Sun Adapter forTCP/IPHL7User's Guide • October 200922
Sun Adapter forTCP/IPHL7Overview
Lower Layer Protocol
This section describes the two supported envelope types used in the HL7 protocol:
■
HLLP (Hybrid Lower Layer Protocol)
■
MLLP (Minimal Lower Layer Protocol)
Both envelope types use the following conguration parameters. For more information on
these parameters, see
or “Lower Layer Protocol — TCP/IP HL7 V2 Outbound Adapter” on page 55.
■
Start Block Character
■
End Data Character
■
End Block Character
MLLP
The MLLP envelope consists of a Start of Block component, a Data component, an End of Data
component, and an End of Block component. The size of the HL7 Data eld is determined by
the length of the data (number of bytes between start and end), with a maximum size of 99999
Bytes.
The HLLP envelope consists of a Start of Block component, a ”D’ (Data) or ”N’ (NAK)
indicator, an HL7 Version component, a Carriage Return, a Data component, a Block Size
component, a Block Checksum component, an End of Data component, and an End of Block
component. The size of the HL7 Data eld is determined by the length of the data (number of
bytes between start and end), with a maximum size of 99999 Bytes.
HL7 Acknowledgment Level
The Adapter supports sending and receiving both HL7 acknowledgement types:
■
Application acknowledgment: This acknowledgement is sent when the message is
successfully received.
■
Commit (accept) acknowledgment: This acknowledgement is sent after the message is
successfully and functionally processed by one receiving system.
Journaling
The Adapter provides the option to journal successfully received or sent messages and their
corresponding ACKs. The messages are sent to a JMS queue or topic, depending on how you
congure the Adapter, and the ACKs are stored as a JMS property, HL7_ACK, of that message.
Sun Adapter forTCP/IPHL7User's Guide23
Sun Adapter forTCP/IPHL7Overview
It is expected that, when enabled, the journal queue has one or more subscribers that process the
contents of the queue so that it remains manageable. For example, the Batch Adapter or a
database Adapter could periodically consume the messages by writing them to a le or a
database.
Error Queues
The Adapter provides a mechanism to store failed or stripped messages in a JMS queue or topic.
The advantage of this is that the messages are then saved in a form readily usable by the other
data ows, that can automatically process these messages or make them available to some type
of human intervention or message repair, using tools like the JMS queue editor or an eVision
application.
Alerts and Monitoring
If the Adapter loses the connection to the external system in any direction or connection type,
due to a crash, shutdown, or suspension (including recourse actions), an alert is generated. The
monitor’s status of that Adapter is changed to “down” and the Adapter’s icon is encased in a red
warning box. The monitor also displays the number of messages it has processed along with the
date and time of the last message sent.
Support for HL7 Version 2.5 SFT Segments
HL7 version 2.5 adds a new SFT segment to every message. The Adapter not only sends and
receives messages with the new segment, it can automatically create and populate them, using
information from the Adapter properties, for the outbound message and the ACK sent from the
inbound mode. This feature is only available when the Version ID property is set to 2.5 or later.
Delayed Acknowledgements
The Adapter supports delayed acknowledgements in either direction and in a number of roles.
This functionality is described in detail in
Scenarios” on page 18
.
“Outbound Adapter Roles for Delayed ACK
Monitoring the HL7 Adapter
You can monitor the status of the HL7 Adapter in the deployed Projects that include the
adapter. This includes viewing alerts and log messages, checking connector details, and
monitoring external connections. This is done on the Enterprise Manager. For more
information about using the Enterprise Manager Monitor, see
Management Application in Java CAPS
For outbound HL7 Adapters, periodic monitoring for external connections is performed. The
time period is based on the value dened in the HL7 Adapter web application's deployment
descriptor le, web.xml. Below is an excerpt from the le dening the time period.
Sun Adapter forTCP/IPHL7User's Guide • October 200924
.
Using Enterprise Manager
Sun Adapter forTCP/IPHL7Overview
<web-app>
...
...
<!-- Default monitoring period used in monitoring the
external system connection -->
<context-param>
<param-name>monitorperiod</param-name>
<param-value>2000</param-value>
</context-param>
...
</web-app>
Schematron Support in the HL7 Adapter
Schematron is supported for HL7 V3 Message Libraries. The Schematron uses the concept of
nding tree patterns in the parsed document rather than the grammar. This approach allows
representation of numerous structures that are inconvenient and dicult in grammar-based
schema languages.
For example, the following le denes a Person element that includes a Name eld and a
Gender eld:
<?xml version="1.0" encoding="UTF-8"?>
<Person>
<Name>Eddie</Name>
<Gender>Male</Gender>
<Person>
The above XML document can be validated against the below schematron, which denes a test
for a Title eld, a test for Name and Gender, and a test for the order of elds:
<?xml version="1.0" encoding="UTF-8"?>
<sch:schema xmlns:sch="http://www.ascc.net/xml/schematron">
<sch:pattern name="Check structure">
<sch:rule context="Person">
<sch:assert test="@Title">The element Person must have a Title attribute<sch:assert>
<sch:assert test="count(*) = 2 and count(Name) = 1 and count(Gender) = 1">The element
Person should have the child elements Name and Gender.<sch:assert>
<sch:assert test="*[1] = Name">The element Name must appear before element
Gender.</sch:assert>
</sch:rule>
</sch:pattern>
</sch:schema>
Sun Adapter forTCP/IPHL7User's Guide25
Sun Adapter forTCP/IPHL7Overview
In the HL7 Adapter, this schematron is useful for validating an HL7 V3 document against
predened schematron schemas that you write. You can also obtain schemas from
organizations such as NHS and HL7.org. For example, NHS provides schemas for CDA
documents.
Schematron Congurationin HL7 Adapter
You congure the schematron validation from the Connectivity Map Properties Editor. The
Properties Editor includes two properties to support schematron validation:
■
Schematron Validation: Selecting true enables schematron validation. You then need to
enter an LDAP reference.
■
Schematron Files: The list of schematron validation les. Use commas to separate multiple
les.
API for SchematronValidation
The HL7 Adapter includes an API specic to schematron validation. This API is a wrapper of
the Open source XSLT-based API available at
API is an XSL le called metastylesheet (skeleton1-5.xsl). Applying the metastylesheet to the
schematron XML document generates another XSL le. This XSL le can be applied to the
input XML document to validate, which produces the output XML document that contains the
results of the validation. This document can be embedded inside the V3 acknowledgement and
can be sent to the original sender.
http://xml.ascc.net/schematron/1.5. The
The metastylesheet can be extended and overridden so that you can customize the output XML
document.
Example,
The following is an example of an output document generated after invoking the API using the
XML input document and the schematron validation document described above.
In the above example, domSource is the DOMSource object of the schematron XML.
Performing theValidation
Below is a sample call to the validate method.
com.stc.connector.hl7.schematron.ValidationOutput
output = validator.validate( dataSrc );
In the above example, dataSrc is the source of the payload. The payload can be an entire V3
XML document or a CDA document.
The ValidationOutput object contains the resulting XML document as well as a method
isValid(), which returns values when the validation has passed or failed.
Adding and Conguring a TCP/IP HL7 Adapter in a
Connectivity Map
All Adapters contain a set of properties that are unique to that Adapter type. When you add a
TCP/IP HL7 Adapter to a Connectivity Map, you can modify the properties for that specic
Adapter. When you add a TCP/IP HL7 External System in the Project’s Environment, you can
modify the properties for that Adapter type for all Projects that use that Environment.
Sun Adapter forTCP/IPHL7User's Guide27
Adding and Conguring a TCP/IP HL7 Adapter in a Connectivity Map
You can congure the TCP/IP HL7 Adapter properties in the following locations:
■
Connectivity Map: These properties most commonly apply to a specic component
Adapter, and may vary from other Adapters of the same type in the Project.
■
Environment Explorer: These properties are commonly global, applying to all Adapters of
the same type in the Project. The properties are shared by all Adapters in the TCP/IP HL7
External System window.
■
Collaboration: Many TCP/IP HL7 Adapter properties can also be set from a Collaboration,
in which case the settings override the corresponding properties in the Adapter’s
conguration le. Any properties that are not overridden retain their congured default
settings.
Adding a TCP/IP HL7 External Application to a
Connectivity Map
To create a TCP/IP HL7 Adapter you must rst add a TCP/IP HL7 External Application to the
Connectivity Map. A TCP/IP HL7 Adapter is automatically created when you link a TCP/IP
HL7 External Application and a Service. Services are containers for Java Collaborations,
Business Processes, Data Integrator processes, and so on.
▼
To Add a TCP/IP HL7 External Application
Create a Connectivity Map for the Project, and add a Service to the Connectivity Map.
1
On the Connectivity Map toolbar, click the External Applications icon.
2
Select HL7 External Application from the menu.
3
A TCP/IP HL7 External Application icon appears on the Connectivity Map toolbar.
Drag the new HL7 ExternalApplication icon from the toolbar onto the Connectivity Map canvas.
4
To bind the External Application with the Service, do one of the following:
5
■
If messages are entering from the HL7 system, drag a link from the HL7 External Application
to the Service.
■
If messages are being sent from the Service to the HL7 system, drag a link from the Service to
the HL7 External Application.
The TCP/IP HL7 Adapter appears on the link.
Sun Adapter forTCP/IPHL7User's Guide • October 200928
Adding and Conguring a TCP/IP HL7 Adapter in a Connectivity Map
FIGURE 1 Adapter Location
6
Modify the Adapter properties, as described in “Modifying the TCP/IP HL7 Adapter Properties in
the Connectivity Map”on page 29
.
Modifying the TCP/IP HL7 Adapter Properties in the
Connectivity Map
You can modify an Adapter's properties after it is created in the Connectivity Map. The
properties you modify in the Connectivity Map apply only to the specic Adapter you are
conguring. For information on modifying system-wide Adapter properties, see
Sun Adapter for TCP/IP HL7 Environment Properties” on page 91
Tip – A description of each parameter is displayed in the Description box when that parameter is
.
selected, providing an explanation of any required settings or options. Properties are also
described in the following topics:
Modifying Adapter Properties in the Connectivity Map
From the Connectivity Map, double-click the Adapter icon located in the link between the
1
TCP/IP HL7 External Application and the Service.
The Adapter Properties Editor appears, and displays either inbound or outbound properties
depending on the link to the Service.
In the explorer panel on the left of the Properties Editor,expand the tree until you see the
2
category you want to modify and then select that category.
For example, to modify server port binding properties, expand TCPIP Inbound Settings and
then select Server Port Binding.
Modify a property by either selecting a new value from a drop-down list (if available) or by
3
typing a new value in the propertyeld.
Tip – Click on the ellipsis button next to a property eld to open a separate conguration dialog
box. This is helpful for large values that cannot be fully displayed in the property eld. Enter the
property value in the dialog box and click OK. The value appears in the parameter’s property
eld.
(Optional)To record notes and information about the currently selectedproperty, click inside
4
the Comments box in the lowerleft of the editor and enter the text.
This information is saved for future reference.
When you are done conguring the properties, click OK.
The TCP/IP HL7 V2 inbound adapter conguration properties are organized into the following
sections on the Properties Editor accessed from the Connectivity Map: