There would probably need to be a bit of database work within the open emr, unless there was a field such as last update date/time. I am looking at the patietn_data table and don’t see such a field, but I do see some date fields. Basically we’d need to know what type of message to send and where to send it. For example the typical new patient ADT is an A04, so when a new entry in the patient_data table was created, we need somewhere to say ‘create an Hl7 message for this patient’, such as an HL7 table with the id, date, and message type.
As for the HL7 itself, probably it would be best to do the work in Mirth, that way the core application is insulated from any requirements. For example Epic doesn’t really like A04s without a CSN, they want an A28. Some don’t want version 2.5.1 of HL7, they want version 2.2 or 2.3.
My biggest question - is there a training database somewhere with some (fake) patient data? I’d need that or to figure out the app enough to do registration, scheduling, create vaccination orders, that sort of thing.
For training purposes, you can either use demo farm established by Brady which get refreshed on a schedule OR download an VM appliance.
As you get specific questions, several members on this forum will be extremely helpful.
Please consider using outbound interface first. If you use direct database reads, you will bypass the logging mechanism in emr but mirth could probably log that action in its database if needed.
Most tables will have ‘date’ field, it is usually date created. Application also includes a phpmyadmin installation (Admin -> More -> Database).
For testing purposes, use Admin -> Layout -> Demographics to maintain screen layout. You can either use one of the unused ‘custom’ fields for user to mark for HL7 output and change it from ‘unused’ to ‘optional’ OR you can add a new field for this purpose. Try it in any of the public demos.
For production use, we could probably put in little code in the application that will directly call Mirth as a jsonp / web service providing patient id and facility as the keys which can in turn do the HL7 export action in real time. Inbound processing logic will take some thought as no office will want another system creating an entry in the background.
Terry and I are working on outbound ADT as a proof of concept, about half done. I’ll share when we’re more fleshed out.
Regarding 3.x - yes it’s completely different. I haven’t seen any U.S. implementations yet (but the world is big and I am small). Mostly we are going towards CCD generation and exchange. 2.x is mostly for real-time exchange of interfaced systems such as labs, documentation, etc. CCDs are great for patient portals and the like. (probably most of you know this but anyway.).
Terry and I are working on outbound ADT as a proof of concept, about half
done. I’ll share when we’re more fleshed out.
Regarding 3.x - yes it’s completely different. I haven’t seen any U.S.
implementations yet (but the world is big and I am small). Mostly we are
going towards CCD generation and exchange. 2.x is mostly for real-time
exchange of interfaced systems such as labs, documentation, etc. CCDs are
great for patient portals and the like. (probably most of you know this but
anyway.).
–
Please be aware that e-mail communication can be intercepted in
transmission or misdirected. Please consider communicating any sensitive
information by telephone. The information contained in this message may be
privileged and confidential. If you are NOT the intended recipient, please
notify the sender immediately with a copy to hipaa-security@mrsb-ltd.com and
destroy this message.
I am done with a proof of concept system which will send person updates or add persons based on a trigger added to the patient_data table. Here are the files needed for it to run. Once the new SQL is added to the database, create c:\mirth, c:\mirth\in and c:\mirth\out, deploy the two channels in mirth, and do a patient update (ie change the name). Or add a new patient. You should get an ADT outbound in the c:\mirth\out directory.
This POC is missing visit level info, dx info, and any insurance beyond primary.
Awesome turnaround time! We will try it out on our test installation.
Would be extremely helpful for community if you have time to release this as an VM appliance since many enthusiasts in the community could get turned off by Mirth installation steps and unfairly write the PoC off as too complicated. If VM appliance is available, test instructions would be few lines such as :
Download and install OpenEMR VM appliance.
Download and install Mirth VM appliance.
If necessary, log on to Mirth appliance and change %MIRTH_HOME%/conf/mirth.properties as follows …
CentOS 6.4
Mirth 3.2.2.7694 with Derby
OpenEMR 4.2.0 patch 3 using MySQL Server version: 5.1.73, PHP 5.3.3
Mirth and OpenEMR both running on the same box
Hi, I am a novice/intermediate user of OpenEMR and Mirth. I am interested in trying out the proof of concept. I already have several entries in my patient_data table that I wanted to preserve, so instead of using openemr_patient_data.sql, I used:
ALTER TABLE patient_data ADD processed_HL7 int(11) DEFAULT ‘0’;
ALTER TABLE patient_data ADD processed_dttm datetime DEFAULT NULL;
I used the openemr_hl7_log.sql script as-is.
I did not change anything in the OpenEMR web files.
I imported the .xml files into Mirth; my newer version offered to update the format automatically to match the version, which I accepted.
Since I am on CentOS, I changed the mirth in location to /home/wdockery/mirthin and the mirth out location to /home/wdockery/mirthout.
Now I’m stuck. I tried changing the spelling of one of the patients in OpenEMR but did not get any Mirth activity. I’m not quite sure what is the expected flow of info between Mirth and OpenEMR; I’m pretty sure I need to change the file reader and file writer locations, but I’m not sure how.
Hi, this is all I am trying to do. I’m wondering if there’s any documentation on how to do this yet? I have been browsing for a while and can’t seem to find any tips on how to get Mirth and OpenEMR to communicate. My end goals are below. I would love to get one working:
to have Mirth send ADT to OpenEMR
to have OpenEMR send ADT to Mirth.
All of this is being done on my local computer running XAMPP and Mirth Connect.
Hello David,
ViSolve has implemented exchanging ADT messages using Mirth with OpenEMR for an educational institution and for a commercial PMS system. We have implemented this by directly inserting HL7 messages into OpenEMR DB after parsing it. As far as we know, there is no change needed in OpenEMR app. Add a channel in Mirth to exchange data using server side Java Scripts. Mirth manual is straight forward.
-ViSolve OpenEMR Support team
Hi! I’m not sure what you mean “mail ID”? I’m new to this forum, where could I find this? Thanks for your help. I’m essentially looking for a sample channel that I may be able to import as a reference. Maybe something with a sample as simple as how to insert an A04 message to OpenEMR from Mirth to insert a new patient.
Thanks, @jacksparrow25. Would you be willing to summarize what was required, and perhaps provide some code here instead of a demo? There may be others who could benefit from this as well.
Maybe just one message type, like an A04? I’d love to see what needed to be done on the OpenEMR side, and on the Mirth side. For Mirth you could just export and upload your channel and I can open it and see how it’s setup.
To import ADT Messages to OpenEMR , we just need to create a channel at Mirth Side .
We will not make any changes in OpenEMR coding. I just attached one simple channel to Import ADT messages to OpenEMR .
Steps to use :
Import this channel in your mirth
This channel is TCP listener and it will listen to port 8444 to receive HL7 messages from any PMS or Other systems.
Make changes on Database credentials in destination connector .
we can also add our own filters and transformations in this channel .
It depends upon the process and i am sure this will help you to understand the basic ADT channel .
Please check and let me know if any clarifications.