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