Code Templates in Mirth

Mirth is a wonderful tool which has provided options to use generalized functions in the form of code templates. This will improve the performance of the channels in the greater fashion. Code re-usability is a major success of Mirth which is the reason why Code Templates are used for.

Please see the example below.

code templates

Navigate to “Channels” tab in the Left pan of the Mirth navigation bar, create a new Channel or choose any existing channel. When a channel is selected, the options will expand on the left wing of the navigation bar. Select “Edit Code Templates” option there.

You will get a screen like showed below

create library

Note: You will not have any libraries listed at first. Unless you imported a channel from previous version of mirth that might have taken the libraries along with it.

On the right hand side you can see the list of channels that are available in the Mirth tool. You can select the channel that needs this code template to be used. In real time not all channels will use the generalized functions. It depends on the business needs of the channel creation.

Now create a new library to use in your channel by clicking the “New Library” on the left hand side navigation bar. This will list a new library on the dashboard. Please add the description for the library you have created. It is a good practice to write description where ever needed that includes writing the description for the channel even.

Now, be on the same library you have created and select “New Code Template” on the left hand side of the navigation panel. You will be provided with three options on the code template. They are as follows:

  1. Functions
  2. Drag-And-Drop code block
  3. Complied Code Block

I’m going to explain the code templates usage in here by using a simple function. I’m writing a function that will get the segment of the HL7 message and check if the length of the String in the segment is not empty. If the length of the string is 0 or empty then it should alert by saying “Length is irregular”. Below goes the code:

function checkStringLength(data) {
if (data.length != 0) {
data = data;
} else if (data.length == 0) {
data = “Length is irregular”;
return data;

Navigate to Save Changes on the left hand side of the navigation panel. Now The generalized function that has to be used again and again is successfully written in the code template. The purpose becomes meaningful only we know how to access this code, right?…

  1. To execute this. Navigate to the “Channels” tab, and double click on the channel you have created.
  2. Navigate to the Source Tab.
  3. Click on Edit Transformer on the left hand side of the navigation pan.
  4. Now you will see the source transformer dashboard area. Select the type as “Javascript”
  5. In the Right hand sideĀ  there will be three tabs available at the top. Reference, message Trees and Message Template. -> Select Message Template.
    Place the HL7 sample message provided below in the template area.

MSH|^~\&|EPICADT|DH|LABADT|DH|201301011226||ADT^A01|HL7MSG00001|P|2.3| EVN|A01|201301011223||
PID|||MRN12345^5^M11||^JOHN^A^III||19710101|M||C|1 DATICA STREET^^MADISON^WI^53005-1020|GL|(414)379-1212|(414)271-3434||S||MRN12345001^2^M10|123456789|987654^NC|

Whatever function we created in the code template will be available ready-made in the Reference tab. I have named the code template as “Check String Length“. As shown in the picture below


So I’m typing “Check String Length” in the Reference tab of the source transformer search area. You will get the function that you have created on the code template area in here directly as shown below

Poin check String length

You can drag and drop the function in your transformer Javascript area. I have just made a printing function that will get the value from the specific segments of the PID 5.1 field of the HL7 message which is basically patient’s first name. And call this function. The code is as below“check String length : “+checkStringLength(msg[‘PID’][‘PID.5’][‘PID.5.2’].toString()));

Now deploy the channel and send the HL7 message pasted above and send it via the dashboard channel by right clicking it. Observe the inferences on both stages when it has a value, it should display the name as it is, When it does not have value it should through the statement in the else part.

Hope it clarifies the question on how to use Code Templates.

Happy Coding & Integration …….

Don’t hesitate to reach out to me if there is any questions on the above part.



Mirth 3.5 Release Notes

Mirth Connect 3.5 introduces around a hundred new features, improvements, and bug fixes. Enhanced filtering for channel names / tags makes it even easier to manage and monitor your interfaces. Filter / Transformer Iterators allow you to loop through segments and fields and map / extract data without having to write any JavaScript. This version also includes enhancements to attachment handlers, destination set filtering, the REST API, and many other features designed to make Mirth Connect channels even more powerful, and at the same time easier to create and manage

Attachment Handler Improvements

Multiple regular expressions, each with their own MIME types, supported in the Regex attachment handler:

  • Regex and JavaScript attachment handlers now support binary data
  • Source map variable replacement supported for MIME types
  • Use attachments across multiple channels

Filter / Transformer Iterators

Iterating through repeating segments / fields has always been possible in Mirth Connect, but now in 3.5 it’s easier than ever, and doesn’t require any custom JavaScript code!

  • Drag-and-drop wizard dialog helps decide what parts of the message to iterate on
  • See the flow control of your transformer scripts at-a-glance, without having to step through code
  • Supports multiple nested iterations

Channel Tag / Filtering Enhancements

Channel tags are easier than ever to configure and use. Simply start typing, and available channels / tags will show up in an auto-completion dialog.

  • Filter by channel tags, partial matches on channel names, or both at the same time
  • Quickly filter down to a specific channel
  • Display colored tag icons next to the channel names on both the Dashboard and Channels views
  • Add / remove / modify multiple tags across multiple channels in just a few clicks

In 3.4 we added Channel Groups for hierarchical organization of channels. These can be used in tandem with channel tags to allow organization from multiple angles! Each channel is under one group, but tags can still apply to multiple channels at once, even across different groups

Destination Set Filtering Improvements

Destination Set Filtering was added back in 3.1, but now in 3.5 you can leverage this powerful feature without having to write any JavaScript!

  • New “Destination Set Filter” type available in the source transformer
  • Remove specific destinations, all except specific destinations, or all destinations

Other Features / Enhancements

  • REST API: Supports basic auth, CORS headers configurable in
  • DICOM Listener: A wide variety of source map variables are now available for use!
  • Database Reader: Now supports aggregating the results of a query into a single consolidated message, instead of dispatching multiple messages for each row
  • Reprocess / Remove Results: Additional confirmation / warnings added, so users cannot accidentally reprocess or remove multiple messages at once.
  • Channel Metadata: Changing pruning settings / tags or enabling / disabling a channel will no longer cause the channel revision to change
  • Password-protected ZIPs: When exporting or archiving messages to compressed ZIP files, you can now specify a password and encryption algorithm.
  • Easy List/Map Creation: New utility classes available in JavaScript contexts to create quick-and-easy Java Lists and Maps.
  • Security Updates: Updated cipher suites for SWEET32 vulnerability. Ephemeral Diffie-Hellman key size now 2048 to finish addressing Logjam. Added clickjack prevention headers to the REST API.

Blog at

Up ↑