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>
- On Channels tab, Right Click->Create New Channel
- Creating a new channel:
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