Jan 04

Every now and then a situation may arise where a message sent to a downstream system is rejected or a message arriving from an external system, is rejected. Some of the possible issue could be “fixable” and others not. If message is “fixable”, in the sense that its content or structure can be modified and the re-submitted modified message will be accepted, then the operator must follow the steps necessary to extract, repair and resubmit the message. In other circumstances it may be necessary to resubmit a specific batch of messages to an external system, for a particular time period or of particular kind.

In this article we will walk through the process of externalizing a message, “fixing” it and resubmitting it for processing. We will also briefly touch on other uses of the resubmit utility.

More details on the technical aspects of this topic can be found in the Oracle “Technical Note: 11g_005 Command-Line Utilities”, section “Resubmit Utility”, available at http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/326860.pdf.

This article assumes that the reader has the SOA Suite for healthcare integration environment with all necessary components installed and ready to use. The Bill of Materials for such an environment and a discussion on where the components can be obtained is provided in the earlier article, “SOA Suite for healthcare integration Series – Overview of the Development Environment”, to be found at http://blogs.czapski.id.au/2012/08/soa-suite-for-healthcare-integration-series-overview-of-the-development-environment.

This article assumes that the reader completed the solution discussed in the earlier article, “SOA Suite for healthcare integration Series – Exception Handling – Processing Endpoint Errors”, to be found at http://blogs.czapski.id.au/2013/01/soa-suite-for-healthcare-integration-series-exception-handling-processing-endpoint-errors.  

The complete article is available at http://blogs.czapski.id.au/wp-content/uploads/2013/01/SOASuiteHCI_ch11_ExternaliseRepairAndResubmit_v0.1.0.pdf.

Data files used in this article series are available at:

ADT_A01_broken_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_broken_1.zip – this file contains a single ADT A01 transaction, in which the EVN segment’s name is rbroken, making the message invalid. This message is used in the article “SOA Suite for healthcare integration Series – Exception Handling – Processing Endpoint Errors” for testing exception handling
ADT_A01_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_1.zip – this file contains a single ADT A01 transaction
ADT_A03_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A03_output_1.zip – this file contains a single ADT A03 transaction
ADT_A01_output_5099.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_5099.zip – this file 5099 ADT A01 transactions, separated by \r\r\n, or Carriage Return, Carriage Return and New Line

 

Jan 03

In this article we will add exception handling to the routing and transformation solution developed in the article entitled “SOA Suite for healthcare integration Series – Domain Value Map (DVM) – On-the-fly Code Mapping”, to explore how message processing exceptions can be redirected to a logic component for handling. The exception handling components will handle exceptions form all SOA Suite for healthcare integration applications.
This article assumes that the reader has the SOA Suite for healthcare integration environment with all necessary components installed and ready to use. The Bill of Materials for such an environment and a discussion on where the components can be obtained is provided in the earlier article, “SOA Suite for healthcare integration Series – Overview of the Development Environment”, to be found at http://blogs.czapski.id.au/2012/08/soa-suite-for-healthcare-integration-series-overview-of-the-development-environment.
This article assumes that the reader completed the solution discussed in the earlier article, “SOA Suite for healthcare integration Series – Domain Value Map (DVM) – On-the-fly Code Mapping”, to be found at http://blogs.czapski.id.au/2013/01/soa-suite-for-healthcare-integration-series-domain-value-map-dvm-on-the-fly-code-mapping
 
The complete article is available at http://blogs.czapski.id.au/wp-content/uploads/2013/01/SOASuiteHCI_ch10_ProcessingEndpointErrors_v0.1.0.pdf.

Data files used in the article series:

ADT_A01_broken_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_broken_1.zip – this file contains a single ADT A01 transaction, in which the EVN segment’s name is rbroken, making the message invalid. This message is used in the article “SOA Suite for healthcare integration Series – Exception Handling – Processing Endpoint Errors” for testing exception handling

ADT_A01_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_1.zip – this file contains a single ADT A01 transaction

ADT_A03_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A03_output_1.zip – this file contains a single ADT A03 transaction

ADT_A01_output_5099.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_5099.zip – this file contains 5099 ADT A01 transactions, separated by \r\r\n, or Carriage Return, Carriage Return and New Line

 

Jan 01

In this article the routing and transformation solution developed in the article entitled “SOA Suite for healthcare integration Series – Routing and Transformation using XSL Solution, will be extended to add an on-the-fly code mapping. This does not have anything to do with HL7 or HL7 processing, or indeed SOA Suite for healthcare integration infrastructure, but since the task is a pretty common one in the HL7 messaging world, it will be discussed and illustrated.
This article assumes that the reader has the SOA Suite for healthcare integration environment with all necessary components installed and ready to use. The Bill of Materials for such an environment and a discussion on where the components can be obtained is provided in the earlier article, “SOA Suite for healthcare integration Series – Overview of the Development Environment”, to be found at http://blogs.czapski.id.au/2012/08/soa-suite-for-healthcare-integration-series-overview-of-the-development-environment.
This article assumes that the reader completed the solution discussed in the earlier article, “SOA Suite for healthcare integration Series – Routing and Transformation using XSL Solution”, to be found at http://blogs.czapski.id.au/2012/12/soa-suite-for-healthcare-integration-series-routing-and-transformation-using-xsl-solution.

The complete article is available at http://blogs.czapski.id.au/wp-content/uploads/2012/12/SOASuiteHCI_ch9_DominValueNap_OnTheFlyCodeMapping_v0.1.0.pdf

Data files used in this article series are available at:

ADT_A01_broken_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_broken_1.zip – this file contains a single ADT A01 transaction, in which the EVN segment’s name is rbroken, making the message invalid. This message is used in the article “SOA Suite for healthcare integration Series – Exception Handling – Processing Endpoint Errors” for testing exception handling
ADT_A01_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_1.zip – this file contains a single ADT A01 transaction
ADT_A03_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A03_output_1.zip – this file contains a single ADT A03 transaction
ADT_A01_output_5099.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_5099.zip – this file 5099 ADT A01 transactions, separated by \r\r\n, or Carriage Return, Carriage Return and New Line
QRY_A19.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/QRY_A19.zip – this file contains a sample A19 query message

Dec 26

In this article the router, developed in “SOA Suite for healthcare integration Series – HL7 v2 Inbound CMM to Outbound Pass-through Solution”, to be found at http://blogs.czapski.id.au/2012/12/soa-suite-for-healthcare-integration-series-hl7-v2-inbound-cmm-to-outbound-pass-through-solution, will be extended to add a fan-out for distribution of one inbound message to two outbound receivers and a ADT A01/A03 to ADT A08 transformation using the eXtensible Style Language (XSL). SOA Suite for healthcare integration Dashboard functionality will also be explored.

This article assumes that the reader is sufficiently familiar with HL7 v2 and HL7 v2 messaging to require no elaboration on the message structures, message acknowledgement processing and the “equivalence” of HL7 v2 delimited and HL7 v2 XML message forms.

This article assumes that the reader has the SOA Suite for healthcare integration environment with all necessary components installed and ready to use. The Bill of Materials for such an environment and a discussion on where the components can be obtained is provided in the earlier article, “SOA Suite for healthcare integration Series – Overview of the Development Environment”, to be found at http://blogs.czapski.id.au/2012/08/soa-suite-for-healthcare-integration-series-overview-of-the-development-environment.

This article assumes that the reader completed the solution discussed in the earlier article, “SOA Suite for healthcare integration Series – HL7 v2 Inbound CMM to Outbound Pass-through Solution”, to be found at http://blogs.czapski.id.au/2012/12/soa-suite-for-healthcare-integration-series-hl7-v2-inbound-cmm-to-outbound-pass-through-solution.
 
The complete article is available at http://blogs.czapski.id.au/wp-content/uploads/2012/12/SOASuiteHCI_ch8_RountingAndTransformatonUsingXSL_v0.1.0.pdf.

Data files used in this article series are available at:

ADT_A01_broken_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_broken_1.zip – this file contains a single ADT A01 transaction, in which the EVN segment’s name is rbroken, making the message invalid. This message is used in the article “SOA Suite for healthcare integration Series – Exception Handling – Processing Endpoint Errors” for testing exception handling
ADT_A01_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_1.zip – this file contains a single ADT A01 transaction
ADT_A03_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A03_output_1.zip – this file contains a single ADT A03 transaction
ADT_A01_output_5099.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_5099.zip – this file 5099 ADT A01 transactions, separated by \r\r\n, or Carriage Return, Carriage Return and New Line
QRY_A19.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/QRY_A19.zip – this file contains a sample A19 query message

Dec 08

The archetypical “Hello World” solution in the HL7 v2 messaging world will consist of a HL7 v2 message receiver which writes the messages it receives to files in the file system. A more sophisticated solution will receive an inbound message and send it out to an external system, possibly transforming it before sending.
This article works through the mechanics of configuring the “SOA Suite for healthcare integration” to send a HL7 v2.3.1 ADT message as a Canonical Message, extending the solution developed in the previous article, “” to be found at .
This article assumes that the reader is sufficiently familiar with HL7 v2 and HL7 v2 messaging to require no elaboration on the message structures, message acknowledgement processing and the “equivalence” of HL7 v2 delimited and HL7 v2 XML message forms.
This article assumes that the reader has the SOA Suite for healthcare integration environment with all necessary components installed and ready to use. The Bill of Materials for such an environment and a discussion on where the components can be obtained is provided in the earlier article, “SOA Suite for healthcare integration Series – Overview of the Development Environment”, to be found at http://blogs.czapski.id.au/2012/08/soa-suite-for-healthcare-integration-series-overview-of-the-development-environment.
This article assumes that the reader completed the solution discussed in the earlier article, “SOA Suite for healthcare integration Series – HL7 v2 Inbound to File Solution”, to be found at http://blogs.czapski.id.au/2012/11/soa-suite-for-healthcare-integration-series-hl7-v2-inbound-to-file-solution.

The complete article is available at http://blogs.czapski.id.au/wp-content/uploads/2012/12/SOASuiteHCI_ch7_InboundCMM2Outboud_Passthrough_v0.1.0.pdf.

Data files used in this article series are available at:

ADT_A01_broken_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_broken_1.zip – this file contains a single ADT A01 transaction, in which the EVN segment’s name is rbroken, making the message invalid. This message is used in the article “SOA Suite for healthcare integration Series – Exception Handling – Processing Endpoint Errors” for testing exception handling
ADT_A01_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_1.zip – this file contains a single ADT A01 transaction
ADT_A03_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A03_output_1.zip – this file contains a single ADT A03 transaction
ADT_A01_output_5099.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_5099.zip – this file 5099 ADT A01 transactions, separated by \r\r\n, or Carriage Return, Carriage Return and New Line
QRY_A19.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/QRY_A19.zip – this file contains a sample A19 query message

Nov 11

The archetypical “Hello World” solution in the HL7 v2 messaging world will consist of a HL7 v2 message receiver which writes the messages it receives to files in the file system.

This article works through the mechanics of configuring the “SOA Suite for healthcare integration” to receive HL7 v2.3.1 ADT messages as a Canonical Messages and configuring the SOA Suite to write each message to a file in the file system.

This article assumes that the reader is sufficiently familiar with HL7 v2 and HL7 v2 messaging to require no elaboration on the message structures, message acknowledgement processing and the “equivalence” of HL7 v2 delimited and HL7 v2 XML message forms.

The complete article is available at http://blogs.czapski.id.au/wp-content/uploads/2012/11/SOASuiteHCI_ch6_Inbound2File_v0.1.0.pdf.

Data files used in this article series are available at:

ADT_A01_broken_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_broken_1.zip – this file contains a single ADT A01 transaction, in which the EVN segment’s name is rbroken, making the message invalid. This message is used in the article “SOA Suite for healthcare integration Series – Exception Handling – Processing Endpoint Errors” for testing exception handling
ADT_A01_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_1.zip – this file contains a single ADT A01 transaction
ADT_A03_output_1.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A03_output_1.zip – this file contains a single ADT A03 transaction
ADT_A01_output_5099.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/ADT_A01_output_5099.zip – this file 5099 ADT A01 transactions, separated by \r\r\n, or Carriage Return, Carriage Return and New Line
QRY_A19.hl7 – http://blogs.czapski.id.au/wp-content/uploads/2013/01/QRY_A19.zip – this file contains a sample A19 query message

Sep 02

Each different domain, covered by HL7 v2 standard, has a set of message definitions which support message exchanges for a particular domain. Most of the message definitions for a domain share certain segments. Many of the segments are optional and perhaps not used in a particular messaging environment.
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.
It is common for integrating specialists, if the tooling which they use permits, to develop one or few generalised message structures which can be used to represent more than one distinct message from a domain they work with. These are typically called canonical models. The overriding purpose is to standardise the message payload being passed around between integration components, enabling reuse and reducing complexity. The Canonical Message model (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, standardizing as much as possible, payload structure within the integration domain.
The article, whose full text is available at http://blogs.czapski.id.au/wp-content/uploads/2012/09/SOASuiteHCI_ch5_CanonicalMessage_v0.1.0.pdf, works through the mechanics of deriving a Canonical Message Model for the series of articles on SOA Suite for healthcare integration using the “Oracle SOA Suite for healthcare integration” tooling. It contains an abridged version of the article “Healthcare Enterprise – IT Architecture Building Blocks – Canonical Message Model for a HL7 Enterprise”, available at http://blogs.czapski.id.au/2010/10/healthcare-enterprise-%e2%80%93-it-architecture-building-blocks-canonical-message-model-for-a-hl7-enterprise, but adds new material related to testing the canonical structure against sample data and modifying the structure to accommodate data idiosyncrasies.

Aug 26

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.

 

Aug 25

In my past articles I presented, amongst other things, HL7 v2 messaging solutions using the Oracle SOA Suite 11g R1 B2B HL7 infrastructure. At the beginning of the calendar year 2012 Oracle released a new incarnation if its HL7 messaging capability under the name of the “SOA Suite for healthcare integration”. This capability builds on the SOA Suite B2B HL7, adding design, configurator, monitoring and management user interface capabilities which greatly simplify the task of creating HL7 v2 messaging solutions and enhance management and operational reporting.
The new and changed functionality is significant enough for me to consider writing a series of articles on the topic. The series is intended to walk the reader through the tasks of creating specific HL7 v2 messaging solutions using the SOA Suite for healthcare integration.
At this point in time I expect to produce articles on the following topics, in the order given:

  1. Overview of the Development Environment – this article
  2. A Very Brief Overview of HL7 v2 Messaging
  3. A Very Brief Overview of the SOA Suite for healthcare integration
  4. Creating a Canonical Message Model – http://blogs.czapski.id.au/2012/09/soa-suite-for-healthcare-integration-series-creating-a-canonical-hl7-v2-message-model
  5. HL7 v2 Inbound to File – http://blogs.czapski.id.au/2012/11/soa-suite-for-healthcare-integration-series-hl7-v2-inbound-to-file-solution
  6. Constructing file name from message content and messaging properties – http://blogs.czapski.id.au/2012/11/soa-suite-for-healthcare-integration-series-hl7-v2-inbound-to-file-solution
  7. HL7 v2 Inbound to HL7 v2 Outbound Pass-through – http://blogs.czapski.id.au/2012/12/soa-suite-for-healthcare-integration-series-hl7-v2-inbound-cmm-to-outbound-pass-through-solution
  8. Transformation and Routing using XSL and Mediator – http://blogs.czapski.id.au/2012/12/soa-suite-for-healthcare-integration-series-routing-and-transformation-using-xsl-solution
  9. Adding Data Map for pass-through code translation – http://blogs.czapski.id.au/2013/01/soa-suite-for-healthcare-integration-series-domain-value-map-dvm-on-the-fly-code-mapping
  10. Automating Exception Message Handling – http://blogs.czapski.id.au/2013/01/soa-suite-for-healthcare-integration-series-exception-handling-processing-endpoint-errors
  11. Externalise, “Repair” and Resubmit “broken” messages – http://blogs.czapski.id.au/2013/01/soa-suite-for-healthcare-integration-series-externalise-repair-and-resubmit-broken-messages
  12. Implementing an A19 Query Processor – http://blogs.czapski.id.au/2013/01/soa-suite-for-healthcare-integration-series-implement-an-a19-query-processor
  13. Send, Receive and Translate HL7 messages using B2B Web Services
  14. Other Key Features
  15. HL7 v2 solution using JMS “the Java CAPS way” – http://blogs.czapski.id.au/2013/02/soa-suite-for-healthcare-integration-series-hl7-v2-solution-using-jms-the-java-caps-way (this article was propmpted by correspondence with Steve L)

It will take some time to produce these articles and the list may change.
I am interested in hearing from people about other topics they might like to see covered. I will consider suggestions though I am not promising that I will act upon them.
In the following sections I am briefly elaborating on what I expect each topic to cover, and presenting a solution schematic where a solution will be developed.

The article is availabe as “SOA Suite for healthcare integration Series – Series Overview” at http://blogs.czapski.id.au/wp-content/uploads/2012/08/SOASuiteHCI_ch1_Introduction_v0.1.0.pdf.

Dec 13

Recently I had an occasion to work on an integration project which required the Rhapsody 4.01-based integration solution to receive messages from a JMS Topic hosted by the Sun Java System Message Queue bundled with the Oracle/Sun GlassFish v2.x JMS . Product documentation and Internet searches did not offer assistance in terms of how the Rhapsody JMS Adapter needs to be configured to support this. While there are a number of articles which discuss the topic of configuring JMS Client to interact with GlassFish-hosted SJSMQ JMS Server, none of the solutions described in these articles worked for me. A degree of experimentation and creative adaptation resulted in a working configuration. This article discusses this solution for the benefit of these who will be faced with this problem and for my own benefit if I need to do this again in the future.

In this article I deal with JMS client access to the JMS destinations using the “com.sun.jndi.fscontext.RefFSContextFactory”, to which references can be found on the Internet but which is not documented as well as I would have liked when I had a need to use this method.

Here I use Windows conventions for directory and file paths. For Unix, adjust as required. I assume that you have a GlassFish 2.x installation, perhaps as part of a Sun/Oracle Java CAPS SOA infrastructure or as part of the Oracle Healthcare Master Person Index infrastructure. I also assume that you need to create a Rhapsody integration solution using GlassFish environment-hosted JMS topics and/or queues. This last may or may not be your motivation. Except for the Rhapsody bits, the method should hold for any JMS client, but I have not tried this method in any other client deployment. Perhaps someday I will.

The article is available at http://blogs.czapski.id.au/wp-content/uploads/2011/12/Rhapsody_4.01_and_GlassFish-bundledJMS_v1.0.0.pdf

preload preload preload