A Simple Solution

Top  Previous  Next

We'll assume that since you're reading this that you know what HL7 is, what it is supposed to do and how it is supposed to work.  So first we'll start with a couple of questions.  Have you ever looked at any of the object models of the commercially available HL7 communications engine and seen what actually happens when transferring data between applications?  If you have, did you ever think to yourself 'Boy, it seems like that data goes on a LONG train ride before my code ever even sees it?'  If you have, then you will be able to really appreciate EasyHL7 and what it does for you, and more importantly, what it lets you do for yourself. 

 

We know from experience that when an HL7 message leaves your customers Application <XXX> and never shows up in Application <YOURAPPLICATION> they will be on the phone double quick, not with the vendor for Application <XXX>, not with any of the intermediate 3rd party HL7 message transfer and interface engines, but with YOUR support desk.

 

What we have tried to do is 'flatten' this process and make it more transparent to you, the developer of the HL7 solution.  To reduce the number of 'moving parts' (so to speak) involved, so that data is a) passed over to your code for processing as quickly and cleanly as possible (if receiving HL7) or b) taken from your code and dispatched quickly and cleanly (if sending HL7).  When the data doesn't flow, the customer won't be amused or interested when you come back to them after three weeks of research and tell them that an embedded VBSCRIPT (that's 6 configuration layers deep that you didn't even write or know existed because it installed that way) failed because the patient address had an invalid zip code.

 

When developing HL7 interface applications we asked developers:

 

As a developer working on a piece of medical software what would you want HL7 components to do for you and what would you want to do yourself?

 

We came up with the following answers and these form the guiding principles for the EasyHL7 approach to development.

 

1.My product is <YourProductHere Labs, Billing, EMR etc>.  That's what I know about.  I don't want to have to know or think about the low-level aspects of the HL7 integration that much.
2.I want all of the communications to be handled for me with a minimum of setup and configuration.  This includes functional ACK (or NAK)
3.I know my own data, I want an event-driven system that will pass me (upon receipt) HL7 data in a consistent, easy to manipulate format that I can then interrogate and use at will.
4.I don't want to do database mapping.  I don't trust 3rd party software to update my data directly.
5.I know my own data, I want a system that will allow me to use a STANDARD interface to create HL7 data quickly and dispatch it correctly to the right target.
6.I want to be able to create new solutions for different vendors and deploy them quickly and painlessly.
7.I want a solution that is affordable.  Runtime licenses for my solution MUST be low or non-existent.
8.Support must be simple.  When troubleshooting problems, I want to isolate the problem as quickly as possible.  So the components must be reliable and easy to diagnose.  When problems occur, I need to know whether the problem is in my code or in the component.
9.The solutions must be scalable.  If new versions of HL7 appear and your company is gone, am I stuck?  I must be able to create and maintain my own vendor/version definitions.
10.The components MUST be stand-alone and require NO additional software, no database, no word processors, etc.
11.The components MUST require no special hardware.
12.Example code must be provided that is simple and easy to follow.

 

We have done our best to adhere to all of the concepts above.  That being said, there are some things you will need to know:

You will need a basic understanding of HL7 and how the structures are laid out.  Documentation and samples are provided.  If you're not familiar with HL7 try browsing some sample files.
You should be familiar with XML and using XML objects.  We provide a simple MS XML DOM object class wrapper (for MS VB6).  EasyHL7 messages are translated into XML and presented in a standard structure for your programming interface.
You should be familiar with the use of ActiveX objects with events and programming in MS Visual Basic.  The components were developed in MS Visual Basic 6 but are compatible with VB.Net