This is the first in a a multi-part series on Mirth Connect. Mirth Connect is a open source integration engine that is focused on healthcare. It is intended to be placed between two systems that need to communicate with each other, and handle the message routing, message transformation, and provide real-time moniting of the communications. When I first heard about Mirth I was somewhat excited, but very hesitant. My experience is that open source projects fall into two basic categories, mature projects that work well and may have a few rough edges but for the most part are a pleasure to work with (DotNetNuke, 7-Zip, FileZilla), and projects that are not mature and are generally a pain to work with. Unfortunately many open source projects that I have come across fall into the second category, so when looking for a interface engine to use for a large project I was a little hesitant to put my neck on the line with a open source project. However the cost of commerical interface engines caused me to take a long hard look at Mirth Connect. Since this is the first of multiple posts on Mirth Connect, it is obvious that I was impressed and comforatble enough with Mirth to use it for the project. In this post I will give a overview of what Mirth is, what I have liked about it, and what I have not like. In future posts I will provide more detailed information on using Mirth.
Installation
Installation has been a point of pain for me with many open source projects, so I was expecting some pain here. However this is one area where Mirth really shines, it would really be difficult to make the installation much easier. I have not attempted to install Mirth on a Linux machine, but I have installed it on multiple windows servers and I have never had an issue. You download the program from their website, and step through a graphical installer. Most users will be able to just accept the defaults and click ‘Next’ all the way through the installation. At the end of the installation Mirth starts and is running.
Mirth Connect includes a program call Mirth Connect Administrator that you will use to develop and manage interfaces. When you install mirth, it will make a web page available on that server on port 8080 that is used to launch the Mirth Connect Administrator program. You just click on the button and it launches as a Java Web Start application.
Development
To develop a interface for Mirth Connect you use the Mirth Connect Administrator program. A interface consists of a source (that receives the data) and a destination (that sends the data). Mirth supports a large number of sources and destinations, including ODBC databases, TCP, HTTP, files, web services, and LLP. You can attach filters and transformers to the source and to the destination. A filter will allow you to filter out messages, and a transformer will allow you to make changes to a message. There are GUI editors provided for basic filters and basic message transformations, but these will only work for the simplest scenarios. For more complicated scenarios you will have to write a script. Mirth Connect uses javascript for it’s scripting language, and I think this was a good choice. Most people are at least familar with javascript and will not have to learn a new scripting language.
When you are creating scripts you do not get auto-complete, gut they do provide reference area where various code examples are provided. You can just drag one of these examples onto your script and it will create some example code. Mirth Connect also makes it easy to work with HL7 in javascript. When the HL7 message is received into Mirth Connect it is transformed into XML. You can then use the javascript E4X standard to access the fields in the HL7 message, and there are examples that will help you understand how to do this if you are not familar with E4X.
There is no way to directly connect source control to the Mirth Connect Administrator program, so you will have to manage this manually. You can export a interface from Mirth, and save it as a XML file. When you are done making a change, export the interface as a XML file and then check that XML file into our source control. Since it is a XML file, you can also use a diff tool to see the difference between two versions of a interface. It would be nice if source control was integrated in, but it is at least pretty easy to manage it manually
Realiabiltiy/Administration
Realiability and ease of administration was another area of concern for me. The project that we are going to be using this on is critical for our business, so we cannot have the interface engine going down on a regular basis. I have been running Mirth for about three months and so far it has never crashed. So up to this point it has been very dependable.
The administration is fairly easy also. Mostly what you will need to do in terms of administration is check if it is sending messages, view the messages that it has received, etc.. For these type of functions you use the Mirth Administrator program. You run this program by going to a website that is running on port 8080 on the server where Mirth is installed, and it then installs the application from the website as a Java Web Start application. This makes it very simple to deploy and use this application.

The Mirth Administrator program is a nice graphical application, and is one of the better Java based windows applications that I have used. It provides a nice dashboard where you can see all of the interfaces that are currently active, and statistics on the number of messages received, filtered, queued, sent, errored, and alerted. You can also see the connection status of each interface.

If you select one of the interfaces you have the option to view the messages that have gone through the interface, and you can resend messages. Overall it makes administration fairly easy, and adds a lot of functionality that makes it a lot easier to manage and troubleshoot a interface.
Support
Mirth Corporation is the company behind Mirth Connect, and they do offer support for the product. Support prices range from $500 to over $10,000. I have never engaged their support, so I can’t comment on it. They also offer a support forum, and a wiki that you can access for free. I found the wiki to have some good examples, but the documentation available on it was not real extensive. The forums where pretty active and where helpful.
Conclusion
As I said at the beginning, when I use a open source project I usually expect to find a couple of rough edges. For Mirth these rough edges come in the form of the development being mostly script based instead of being able to develop in a nice GUI editor, and lack of documentation. I did not mind having to write scripts, and for me that Wiki and forum where enough to get me past the lack of documentation. What was very important for me is that it has been stable, it gives me a lot of power and flexibility in managing interfaces, and the scripts provide a lot of power and flexibility when creating interfaces.
