2009 Implementers Group Meeting Program Importing External Observations

Importing External Observations to OpenMRS

In the room

  • Carl

  • Win

  • Ben

  • Paolo

  • Pinkie

  • Burke

  • Russell

  • Nicholas

  • Wayne

  • Claudio

  • James

  • Roger

  • Ignatio

  • Chris

  • Saira

Ideas

  • Migration: legacy systems to OpenMRS

  • Other systems (lab system) that output a certain type of data to OpenMRS

    • Carl thinks that the second one is more of a interoperability

    • This is not synch topics

  • There is an hl7 example on the wiki on how to import obs

  • There is an hl7 processor in OpenMRS to do export / import data from and to OpenMRS

  • XAware system to create a set of xml format that might be able to be used as a data import tool

  • Another alternative is the mapforce from xml spy

  • How would you map legacy data:

    • Build concept dictionary based on the legacy system

    • Get the concept and the structure in the legacy system

    • The import is not general enough. The import will be specific to the legacy system

  • Carl proposed to create a module to do the import

  • Burke (as always) proposed Groovy module to solve the import, he loves Groovy. See his archive:groovy example below.

  • Burke showed some examples on how to import data using Groovy. The Groovy module is out there in the modules repos http://modules.openmrs.org

    • import the legacy system database to flat file and use Groovy to load it to the OpenMRS database

  • Mirth server is another option to go. Check the interoperability notes on the wiki and there will be a topic slot on Mirth

  • eKapa system:

    • Take the front end the system and put OpenMRS as the backend of the eKapa

    • Another topic is how to sync several remote site

    • Another issue is eKapa datamodel is slightly different with OpenMRS datamodel

      • Mirth as an option to perform the backend migration and perform the datamodel translation using Mirth

  • Using XStream serialize your data from legacy database to xml format

Groovy Example

import org.openmrs.*

def createPatient(identifier, givenName, middleName, familyName, gender, birthdate) {

p = new Patient()
type = new PatientIdentifierType(1)
location = new Location(1)
pid = new PatientIdentifier(identifier, type, location)
p.addIdentifier(pid)
name = new PersonName()
name.familyName = familyName
name.givenName = givenName
name.middleName = middleName
p.addName(name)
p.gender = gender
p.birthdate = Date.parse('yyyy-MMM-dd', birthdate)
patient.savePatient(p)

}

def data = """4-2,Susan,D.,Schnoggenlocher,F,1994-Jul-04
5-0,James,Knox,Polk,M,1795-Nov-02"""

def patients = data.split("\n").collect{ it.split(",") }

patients.each { p ->

createPatient(p0, p1, p2, p3, p4, p5)

}