Tag Archives: hl7 v2

SOA Suite for healthcare integration Series – Overview of the Development Environment

To develop HL7 v2 messaging solutions which use the SOA Suite for healthcare integration one needs a working development and deployment environment.

This article provides references to components which must be obtained and installed to get a working environment in preparation for development of solutions presented in possible future articles.

This article and the remaining articles assume a development environment based in Microsoft Windows XP 64-bit. Nothing, except the instructions for downloading Windows-specific components and screenshots of Windows-specific non-SOA Suite tools, prevents you from developing on any of the other supported platforms. Convers my Windows-specific instructions to your platform-specific instructions as needed.

The full text of this article is available as “SOA Suite for healthcare integration Series – Overview of the Development Environment” at http://blogs.czapski.id.au/wp-content/uploads/2012/08/SOASuiteHCI_ch2_Dev_Environ_v0.1.0.pdf.


Oracle SOA Suite 11g R1 PS3 HL7 Messaging – HL7 v2.3.1 A19 Query Processor

The Oracle SOA Suite 11g R1 B2B functionality can be used for HL7 v2.x delimited messaging, both inbound and outbound. I have a series of articles which provide step-by-step instructions for developing HL7 v2.x delimited messaging solutions for processing inbound and outbound messages, with varying ACK patterns – http://blogs.czapski.id.au/?s=hl7+soa+suite.

This article discusses how an A19 Query processing solution can be implemented using the SOA Suite 11g R1 PS3.
We have a client sending a HL7 v2.3.1 A19 QRY request, asking for demographic details for a patient specified by an ID. The HL7 v2.3.1 A19 ADR response will carry a PID segment with basic demographics. The client identifies itself with MSH-3 (Application ID) of “A19QRY” and MSH-4 (Facility ID) of “CLI1”. The query processor is identified by the client with MSH-5 (Application ID) of “A19ADR” and MSH-6 (Facility ID) of “GWYQ”.

The complete article is to be found at http://blogs.czapski.id.au/wp-content/uploads/2011/04/09_SOASuite11gR1PS3_HL7_A19_Processor_v1.0.0.pdf



HL7 Sender, HL7 Listener and HL7 Proxy – developer tools I always wanted

New release, v0.7, is available – see link below for downloadable archive. Throughput masurements were added. Manpages were updated.

I spend considerable time working with HL7. In the past I used SeeBeyond ICAN and Sun Java CAPS products, and OpenESB with HL7 Binding Component,  to rapidly create MLLP senders and receivers for the HL7 solutions I was building and testing. I also tried, at various times, 7 Scan, Interface Explorer and more recently HL7 Browser. For the blog articles I am writing on HL7 I need simple tooling that allows me to send HL7 v2 delimited messages from a file to a MLLP listener and receive acknowledgements, receive HL7 messages from a sender and retrun acknowledgements, and recently to combine multiple sender message streams into a single stream, with correct acknowledgement handling. The tooling has to be free for me to distribute with the projects and the articles and to use in my day job as well.

Not finding anything that would fit the bill, and that would work reliably enough, I developed my own tools.

I embellished the basic sender a bit so I could send multiple messages, one after the other, from a file, delay between successive sends, generate MSH-10, replace MSH-3-1, MSH-4-1, MSH-5-1 and MSH-6-1, and increase timeout for acknowledgements.

The tools are all old fashioned command line tools – no graphical user interface.

CMDHL7Listener – man page: http://blogs.czapski.id.au/wp-content/uploads/2010/12/CMDHL7Listener.pdf

CMDHL7Sender – man page: http://blogs.czapski.id.au/wp-content/uploads/2010/12/CMDHL7Sender.pdf

CMDHL7Proxy – man page: http://blogs.czapski.id.au/wp-content/uploads/2010/12/CMDHL7Proxy.pdf

Deprecated Distribution: http://blogs.czapski.id.au/wp-content/uploads/2010/12/CMDHL7_v0.5.zip

Current Distribution: http://blogs.czapski.id.au/wp-content/uploads/2010/12/CMDHL7_v0.7.zip

Release 0.5 and 0.7 are free to use by anyone for any purpose and will stay that way. There may not be future releases 🙂
I used HAPI 1.0.1 libraries for HL7 processing – http://hl7api.sourceforge.net/

Healthcare Enterprise – IT Architecture Building Blocks – Canonical Message Model for a HL7 Enterprise

In any but the simplest of HL7 messaging environments there will be multiple sources and multiple destinations of HL7 messages. It is very unlikely that all, or even a majority of these, will use exactly the same HL7 message structures in terms of versions, optional/mandatory segments, extension Z segments, and so on. A sensible approach to dealing with these kinds of issues, and a key component of the HL7 Enterprise Architecture, is the so called Canonical (or Common) Message Model (CMM). The CMM works hand-in-glove with the enterprise architecture in which transformation to/from the CMM is performed at the edges of the integration domain. This article discusses major considerations and works through the mechanics of deriving a Canonical Message Model for a fictitious Healthcare Enterprise and implementing it using the Oracle SOA Suite 11g HL7 tooling as an example. The article will also discuss and illustrate a mechanism for injecting arbitrary metadata into the canonical message, generated by the B2B Document Editor, in such a way that it is ignored by the Edge-dwelling B2B infrastructure but is significant to the SOA infrastructure.

The text of the article is available at http://blogs.czapski.id.au/wp-content/uploads/2010/10/HB01_OSS11g_HL7CannonicalMessageModel_v1.0.1.pdf

Oracle SOA Suite 11g HL7 Inbound Example – Back End-constructed Functional ACK Addendum

This article is a follow on to the “Oracle SOA Suite 11g HL7 Inbound Example – Functional ACK Addendum” article and the “Oracle SOA Suite 11g HL7 Inbound – Customized HL7 Message Structure and Data Validation” article.  In these articles the B2B infrastructure was configured to return the “Functional ACK” when it validated each message. The ACK was a positive or a negative ACK depending on whether the message passed validation. The ACK was generated by the B2B Layer before the message was passed on to the SOA Layer.

In this article I expand on the previous posts by configuring the B2B Layer to pass the message to the SOA Layer and pass the Functional ACK, generated by the SOA Layer on to the requester. To process a message and produce the ACK we will build and deploy a new SOA Composite.

The text of the article is to be found at http://blogs.czapski.id.au/wp-content/uploads/2010/06/05_Oracle_SOA_Suite_HL7_inbound_example_BackEnd_ACK_Addendum_v0.1.0.pdf.

Oracle SOA Suite 11g HL7 Inbound – Customized HL7 Message Structure and Data Validation

Messages we used in previous articles dealing with HL7 Inbound (Oracle SOA Suite 11g HL7 Inbound Example – Functional ACK Addendum, Oracle SOA Suite 11g HL7 Inbound Example) were not strictly speaking valid according to the default HL7 V2 ADT A01 message specification produced by the Oracle B2b Document Editor. Both the message structure was not quite right and the data was not quite right. To allow such messages in, we disabled Validation property in the B2B Trading Partnership Agreement.

In this article we will alalyze the data and  create a customized HL7 v2 ADT A01 structure which will allow us to successfully validate incoming messages. We will then modify the document definition and Partnership Agreements to use this custom structure and validate messages as they come in.

The customization discussed in this article only scratches the surface of what is possible with the Oracle B2B Document Editor.

The complete text of the article is available at http://blogs.czapski.id.au/wp-content/uploads/2010/06/04_Oracle_SOA_Suite_HL7_inbound_Customising_Message_Structure_v0.1.1.pdf

Oracle SOA Suite 11g HL7 Outbound Example

In this article I develop and exercise a simple Oracle SOA Suite 11g B2B infrastructure-based HL7 v2 Sender (outbound) project for an ADT A01 message and use Message tracker to view messages.

This article complements previous articles in the series, Oracle SOA Suite 11g HL7 Inbound Example and Oracle SOA Suite 11g HL7 Inbound Example – Functional ACK Addendum.

The text of the article, 03_Oracle_SOA_Suite_HL7_outbound_example_v0.1.0.pdf, is available at http://blogs.czapski.id.au/wp-content/uploads/2010/06/03_Oracle_SOA_Suite_HL7_outbound_example_v0.1.0.pdf

Oracle SOA Suite 11g HL7 Inbound Example – Functional ACK Addendum

This article is a follow on to the “Oracle SOA Suite 11g HL7 Inbound Example”, at http://blogs.czapski.id.au/2010/06/oracle-soa-suite-11g-hl7-inbound-example. In that article the B2B infrastructure was configured to return the “immediate ack” as soon as it received each message. The ACK was always a positive ACK, regardless of whether the message was valid or not and whether it was successfully processed.

In this article I expand on the previous post by adding the Functional ACK, an explicit ACK message, which is returned after a message is parsed and validated, if validation is required. This means that rather than always returning an ACK the receiver will return a NAK if the message is invalid.

The article, 02_Oracle_SOA_Suite_HL7_inbound_example_ACK_Addendum_v0.2.3.pdf, is available at http://blogs.czapski.id.au/wp-content/uploads/2010/06/02_Oracle_SOA_Suite_HL7_inbound_example_ACK_Addendum_v0.2.3.pdf

Exercising a Resilient Java CAPS 6 HL7 v2 Repository Solution

From time to time prospective clients ask for a proof that Java CAPS will not loose HL7 messages in the event of machine or network failure.

In this Note a heterogeneous, non-clustered collection of hosts will be used to implement and exercise Java CAPS 6/Repository HL7 v2 based solutions. The environment consists of two independent “machines”, which are not a part of an Operating System Cluster. Each “machine” hosts a GlassFish Application Server, which is the Java CAPS 6 runtime. Application Servers are independent of one another and are not clustered. This is to demonstrate that HL7 processing components, and solutions based on these components and other standard components in the Java CAPS infrastructure, can be designed and implemented in such a way that message loss in the event of typical failure and disruption scenarios is avoided.

This note discusses an exercise involving an example healthcare environment processing HL7 v2 messages. Discussion includes customization of a generic Java CAPS 6.2 VMware Virtual Appliance for a specific HL7 exercise and deploying ready-made Java CAPS 6/Repository-based solutions. The exercise for HL7 eWay and HL7 Inbound and Outbound projects, processing HL7 v2.3.1 messages, will be conducted and discussed.

The reader will be convinced that a resilient Java CAPS solution can be configured and that it will process messages in the face of typical failure and disruption scenarios without message loss or duplication.

Note that this article is not introductory in nature. It assumes that the reader has a fairly good working knowledge of the Java CAPS 5 or Java CAPS 6/Repository product and a good working knowledge of related areas, such as HL7 messaging, virtualisation and suchlike. These matters are not explained in this article.

The note is available as 03_Conducting_JavaCAPS_6_HL7_Resilience_Exercise_v1.0.0.0.pdf at http://blogs.czapski.id.au/wp-content/uploads/2010/04/03_Conducting_JavaCAPS_6_HL7_Resilience_Exercise_v1.0.0.0.pdf

Kiran Busi pointed out o me that the project export links in the PDF documehnt are broken. Here they are, correct this time. It is less trouble to post them here then to modify the PDF and re-post that.

JC62_HL7_Resilience_Project_Exports_no_Envs – http://blogs.czapski.id.au/wp-content/uploads/2010/04/JC62_HL7_Resilience_Project_Exports_no_Envs.zip

JC62_HL7_Resilience_Project_Exports_with_Envs – http://blogs.czapski.id.au/wp-content/uploads/2010/04/JC62_HL7_Resilience_Project_Exports_with_Envs.zip

Installing Java CAPS 6.2 Runtime on the Basic JeOS Appliance for HL7 Resilience Testing

From time to time prospective clients ask for a proof that Java CAPS will not loose HL7 messages in the event of machine or network failure.

This note walks through the process of installing a Java CAPS 6.2 runtime on the Base OpenSolaris-based VMware Virtual Appliance, discussed in the Blog Entry “GlassFish ESB v2.x Field Notes – Preparing Basic JeOS Appliance for GlassFish ESB LB and HA Testing” at http://blogs.czapski.id.au/2010/01/glassfish-esb-v2-x-field-notes-preparing-basic-jeos-appliance-for-glassfish-esb-lb-and-ha-testing.

At the end of the Note we will have a Java CAPS 6.2 VMware Appliance with Java CAPS 6.2 Runtime infrastructure, ready to use for reliability testing, or any other purpose for which a Java CAPS 6.2 runtime appliance might be appropriate.

The Note is available at “http://blogs.czapski.id.au/wp-content/uploads/2010/04/02_Installing_JavaCAPS_6.2_on_JeOS_appliance_v1.0.0.0.pdf“.