2009 Implementers Group Meeting Program MIRTH
Expectations
Overview of Mirth:
Mirth 101
Channels
Massaging Data
Input / Output
How Mirth is currently being used
Workshop / tutorial on data
Get a text file into OpenMRS through Mirth
Overview
Mirth - integration server developed by WebReach Inc.
Middle layer between 2 systems - e.g. OpenMRS & Lab/Pharmacy System
Allows you to send messages between systems and do custom transformations in the middle
Concept of channel:
Communicate through channel
Each channel has a single source, but can have multiple destinations
At the source, can have a set of filters and transformers:
Filter - can filter out messages
Transformer - get certain datatype in - can transform message slightly, custom porcessing
Each destination can have a set of filters and transformers
Supports multiple datatypes / inputs
File readers, database readers, HL7, DICOM, TCP sockets etc.
Custom javascript - e.g. using XML, can access tags easily
Dragging and dropping
Possibility of using web services
Application Demonstration
Creation of channels
Getting data into and out of channels
All server based - web base application
Dahsboard tab - current channels, queues, channel messages
Channels tab - displays existing channels
Creating a new channel:
On Channels tab, Right Click->Create New Channel
Choose input data type - HL7, XML etc
Connector Type - TCP Listener, File Reader, SOAP, Database Reader
On side panel
can define filters - create and edit filter rules
can define transformers - can define message templates, which builds a message tree
Choose destination / output data type - HL7, XML etc
Destination Connector Type - File Writer, SOAP, Database Writer
Example XML message template:<patient> <name></name> <age></age> </patient>
Question: Can you pull out an XML with patient demographics and various encounters, and separate this into demographics and an HL7 message for each encounter
Answer: Possibility: split into multiple destinations, but not entirely sure. (Look at documentation)
TCP Socket vs. Web Services
Web services have not been implemented in OpenMRS yet
Ryan Crichton has been working on OpenMRS module:
Uses TCP Socket to act as interface
Runs through the OpenMRS API, so not direct to DB
Allows for validation and transformation before persisting to the DB
Better practice to run through the API
Opens up server on predefined port, and listens for messages
Module to do this exists, but is not yet generic or well documented
If module would be useful to others, can make these additions to the module
James Arbaugh's Use Case
CSV file of patient data
One patient per file, with multiple lab results
Create New Channel:
Source - File reader with .csv file extension
Destination - HL7 File Writer with destination directory
Transformer - to convert between the two formats
Future
Look at using Mirth in conjunction with Sync