4.6.2.2 Oscar Integration with Meditech: IHA
Gordon Hutchison has connected Oscar to the Interior Health Authority (IHA) in BC in order to download Meditech narrative reports. HL7 messaging was used.
More recent details may be available with code committed to GIT
Introduction iha_auto-lab is a stand-alone Java program based upon the clinicalconnect program used in Ontario, but with certain enhancements such as an optional Swing graphical user interface. The Physician Office Integration (POI) project of the BC Interior Health Authority (IHA) takes laboratory, radiology and reports from MediTech and translates them using MIRTH into HL7 messages that are then encapsulated in XML and made available on a secure server to health care providers for download at: https://emr.ehealth.interiorhealth.ca/poi/interface.aspx iha_auto_lab retrieves messages from the POI server, encrypts them, sends them to OSCAR and then receives a reply from OSCAR indicating the success or failure in parsing each message. Messages are uniquely identified with a "msgID". An acknowledgement is then sent back to the POI server for each msgID. The POI server then removes that message from the queue. This is different from (for example) Excelleris, that removes all messages from the queue once downloaded. The POI-iha_auto_lab-OSCAR interface is more robust because each message is acknowledged only if it has been successfully parsed by OSCAR. Messages not acknowledged will continually be re-sent each time messages are downloaded from the POI server. Getting started iha_auto_lab will normally be distributed as a jar file that is run from java. The source code is freely available under the GPL. Maven can be used to compile the source code to the jar file if desired. If you do so you may have to install httpcomponents-client-4.1 in your maven repository, as this doesn't seem to be downloadable automatically. Create Key Pairs ------------------------- Log into the oscar server and click the admin tab at the top right. Scroll to the bottom of the Administrative Page and click on the Key Pair Generator link. Input a service name corresponding to your server (Use the type "IHA" from the drop down menu). If "IHA" is not a choice in the drop down menu, then your version of OSCAR is not able to interpret the output of iha_auto_lab. At the time of this writing, the first version of OSCAR able to do so will be 11_06. When you generate the key pair, keep track of the file's location for entry into IHAAutoLab.properties. IHAAutoLab.properties ---------------------------- Before running the program, it is necessary to have the IHAAutoLab.properties file in your home directory. The contents of this file initially looks like: #Auto Lab Properties (currently IHA-specific) #Tue Apr 19 17:18:05 PDT 2011 serviceLocation=https\://emr.ehealth.interiorhealth.ca/poi/interface.aspx keyLocation=<directory path>/keyPair.key URL=http\://localhost\:8080/oscar reportPath=/home/hutch/IHAAutoLab -the serviceLocation just gives the IHA POI website and that is unlikely to change. -the URL is for your OSCAR server. The one shown above would be used if you run iha_auto_lab from that server, but alternately you can run iha_auto_lab from another machine with internet access. (as of this writing, this hasn't been tested yet on Windows or Macs) -reportPath is the location of the report downloads on the machine running iha_auto_lab. This path should exist and you should have write permission to the directory. -place the log4j.xml file in the report path directory, and modify its contents to give it the chosen path to the log file that it will use. Once you've run iha_auto_lab and saved provider information, additional fields will be added such as: providers=0100,0101 poiID0100=<User ID obtained from IHA POI> poiPW0100=<Password obtained from IHA POI> poiInterval0100=20 min poiID0101=<User ID obtained from IHA POI> poiPW0101=<Password obtained from IHA POI> poiInterval0101=20 min These entries are set by the iha_auto_lab program: -in this case, two providers are listed. The program can handle multiple providers. -provider numbers are assumed to correspond to the provider number used by OSCAR, but this doesn't have to be the case, just easier to administer. The provider number should be written as four digits (ie. user 301 should be 0301 - iha_auto_lab will prepend the zero if needed) Setting up the extensions library. ---------------------------- Download httpcomponents-client-4.1.1 from http://www.apache.org commons-codec-1.4.jar httpclient-4.1.jar httpcore-4.1.jar commons-logging-1.1.1.jar httpclient-cache-4.1.jar httpmime-4.1.jar From httpcomponents-client-4.1.1 you need: httpclient-4.1.jar httpcore-4.1.jar commons-logging-1.1.1.jar commons-codec-1.4.jar Download commons-httpclient-3.1 from www.apache.org (or if you've run mvn package, this file should be in your maven repository (usually <home>/.m2/repository). Nb. I realize that iha_auto_lab currently mixes two httpclient versions. The old clinicalConnect used one, and my new code adapted code I had already written using the second. Things can probably be simplified in future. From commons-httpclient-3.1 you need: commons-httpclient-3.1.jar For string utilities, you need to download commons-lang-2.6 and install: commons-lang-2.6.jar Finally, for logging, you need to download log4j-1.2.16.jar I place all of these jar files in iha_auto_lab/lib directory. Running iha_auto_lab ---------------------------- I've created a shell script to run iha_auto_lab, specifying the classpath. The contents of this shell (for me) are: java -classpath /home/hutch/iha_auto_lab.jar:/home/hutch/iha_auto_lab/lib/* org.oscarehr.iha_auto_lab.IHAAutoLab You will need to modify this shell script with the path to your iha_auto_lab project. You also need to make it executable: chmod a+x iha_auto_lab.sh When iha_auto_lab is run for the first time, it will create 4 sub-directories in the reportPath: -incoming Where reports are stored temporarily while being processed. -completed Where reports are appended once successfully parsed by OSCAR -acknowledge Where responses from OSCAR and the POI server are stored -error Where reports are appended if an error has occurred. (Useful for debugging) Files in these sub-directories are uniquely identified by provider number and date. Running the shell script opens the GUI on your desktop, allowing you to enter and revise provider's IDs, passwords, and desired intervals between report downloads from the POI server (from every 5 minutes to every 24 hours). To start out, enter the desired provider number. Note that it will be changed so that it is four digits long. This is useful for file naming/sorting. Then enter the ID and password that you have obtained for that provider from the POI office at Interior Health. Choose a desired interval between report downloads. (Initially, choose "Once only" while you are testing the program) Now push "Save". This should save changes to the IHAAutoLab.properties file. To start the downloads, click on the "Start" button. This will start a thread that cycles every interval as long as the program is running. Click on the "Stop" button to stop the thread for that provider. The "Delete" button is used to remove providers from the list. Messages should appear in the window below the buttons. If a successful download/upload has occurred the message window will advise on the provider number and how many messages were successfully uploaded to OSCAR. Unsuccessful messages will also be indicated with "fail:". Error messages may also appear in this window. If desired, iha_auto_lab may be run as a cron job (on the server) using the "-nogui" option. This will run a download once for each provider in the IHAAutoLab.properties file.
Document Actions