HL7 is an ad hoc standard open to all those that develop healthcare data processing systems. It tries to address the problems caused by different types of healthcare data available within and across healthcare institutions all around the world by standardizing data interchange between these institutions.
There are various tools out there that can be used to implement an HL7 interface engine, but the three tools that grabbed our attention the most were Mirth, Iguana and HAPI with Hibernate.
Mirth is a general tool for implementing an HL7 interface. It is an open source cross platform tool using HL7 API (HAPI). It has channel driven architecture i.e. a channel is the biggest block for transforming data to different formats. It can take input from various sources of data such as flat files, databases, LLP sockets, XML and transforms those data to produce different formats of messages such as XML, X12, HL7 containing the data.
The greatest strength of Mirth lies in the fact that it makes the implementation of a data transformation engine modular. This is shown in the figure above, which shows the data flow within a channel in Mirth. The connector components are responsible for accessing and writing data. The transformer map and transform the data and the filter is used for filtering data on the basis of rules set by the channel developer. This modularity is beneficial at times when there are changes in the engine design and only that particular portion of the engine can be changed. For example the data sources, destination or the mapping itself could be changed independent of each other. This makes development, testing and maintenance much easier.
Iguana is tool similar to Mirth. It has similar user interface and features however despite all the similarities Mirth is free to use and Iguana is not.
HAPI and Hibernate:
One of the options that was considered was using Hibernate in conjunction with HAPI (HL7 API). While this gave us the most flexibility, it also required tremendous amount of work, as we would have to configure Hibernate ourselves, handle sending the messages over LLP ourselves and handle the responses received by ourselves. As this added considerable overhead, we abandoned this approach.
Weighing the pros and cons of all the three tools we came to a conclusion that Mirth would be best suited to our needs. It could provide rapid development with the least amount of work. However our decision to use Mirth was not without regrets. Initially it was really tough because we had no idea on how to use the tool and no resources to consult. But we overcame that consulting forums, studying the source code and at times with trial and error. Thus using Mirth we successfully created a data transformation engine that generated hl7 messages from a database.