5

I am trying to send and/or receive information from EPIC EMR. What is the best way to accomplish this? I am not aware of any APIs and I wonder if anyone can guide me to any API documentation or some other solution. Could an HL7 interface engine be a solution?

BluePython
  • 1,635
  • 3
  • 24
  • 35

2 Answers2

7

Background: I used to work at Epic, and now I help folks with these type of questions at Catalyze

For the most part, the key to gaining access to Epic documentation is to work with a hospital that is an Epic customer and to have them manage the process for you. Epic leaves it to its customers to broker that relationship; it also charges the hospital any pertinent licensing. So, the key is mostly to have a stand-alone product that gets your foot in the door with a hospital, then to work on an application.

As stated, from that point on most integration is HL7 based. As Mike mentions, you can use an interface engine like Mirth or Iguana. But, that may be overkill for a light transaction load. You could setup your own listener/response mechanism using a library like HAPI or this Ruby gem.

  • If I remember correctly, EPIC now has Direct API access, but the subscription cost is too high.No? – Sid Oct 25 '17 at 11:00
5

An HL7 interface will probably be the solution for you in this case. Direct access to data is generally not available or encouraged for most systems and RESTful or SOAP-based web services are essentially non-existent.

Most, if not all, EMR systems share data via HL7 interfaces. There are different interfaces to support different functionality through the hospital system. For example ADT messages contain admission, discharge and transfer information and SIU messages contain scheduling information. These interfaces are only made available on an as needed basis, so there will be no guarantee which interfaces are available from implementation-to-implementation.

Your best option will be to coordinate with the integration team at the hospital and get a listing of supported interfaces for their implementation.

Mike Stonis
  • 2,184
  • 14
  • 24
  • Mirth Connect would probably be an option. But how do I setup something like that to talk to my EMR? Do I need the EMR people to send to an additional server (i.e. or Mirth Channel?). What if I want to send information to the EMR? Could you provide some guidance on the specifics of this process? – BluePython May 12 '13 at 06:10
  • 1
    You are going down the right path. You would want to use an interface engine like Mirth or Iguana to receive the HL7 v2 messages. In order to receive the messages, you will need to coordinate with the EMR team and get information on which interfaces that they support (see above) and what kind of content they provide. If they have what you want, you can ask if they can create a new interface and send it to your engine. You will have to, at a minimum, provide the ip address and port that you are listening on. If you want to send messages, you essentially need to do the same process in reverse. – Mike Stonis May 12 '13 at 16:24
  • how can I get access to their API? http://open.epic.com/ is not very informative ? – s_curry_s Oct 28 '13 at 16:23
  • You'll need to work with an Epic customer to gain more specific access and documentation. But, if you know the type of data you're looking for, you could always build using that HL7 specification. See answer below. – Mark Olschesky Jun 13 '14 at 16:19