Friday, September 23, 2011

Health Standard 7 (HL7) Development - C#

Getting into the development of  HL7 system , there are not many free libraries on net to start with.  HL7 being the standard way to talk between various components in a modern medical infrastructure is a way too old format to work with (except with new xml based HL7 3.0).  This lend to the complexity while dealing with the HL7 development. 

HL7 messages is a flat text with standard specifying the format of the message. HL7 message is divided into segments to hold the medical record information of various types (ex patient details, insurance details,patient visit etc). These segments are separated by carriage returns. 

MSH|^~\&|DDTEK LAB|ELAB-1|DDTEK OE|BLDG14|200502150930||ORU^R01^ORU_R01|CTRL-9876|P|2.4 CR 
PID|||010-11-1111||Estherhaus^Eva^E^^^^L|Smith|19720520|F|||256 Sherwood Forest CR
EVN|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||CR OBR|1|948642^DDTEK OE|917363^DDTEK LAB|1554-5^GLUCOSE|||200502150730||||||||| CR

Segments  are  divided into fields separated by the pipe (|) and further fields are divided into   components and subcomponents separated  by  “ ^ “ .  There has been many versions of HL7 standards with several updates and new additions, primarily we can deduct most important versions to be  2.1,  2.3,  2.4,  2.5,  2.6  (2.x version) . Out of which 2.5 is most widely used and  stable version . Version  3.0 of  HL7 is a move to shift from flat file base to new xml based HL7 standard format,  but it is not yet that much accepted in common use.

Now coming on to the development of HL7 standard from the view point of .Net developer, what many option do we really have ?.  Having good knowledge of what to implement is easy as there are many resources available to make our self familiar with nitty-gritty of HL7 standard  , but having the tools to implement HL7 is another matter.  There is support from Microsoft on HL7 in form of BizTalk Accelerator for HL7 ( http://www.microsoft.com/biztalk/en/us/accelerator-hl7.aspx )   , but as you guessed its not free  . Second option is to write a new library to deal with HL7, but its not a trivial task , as HL7 standard is divided into various versions and industry implement all these versions to certain degree . Another option is to write only specific demand based api for HL7 , targeting a single module or implementation of certain feature of HL7, but that's also not a very good solution as what happens when that specific api expands to accommodate multiple version of HL7. Why to reinvent the wheel , there should be some thing on web that targets the HL7 development in  .Net.  

Two top notch free solution for HL7 development are Hapi and NHapi . Hapi is open source extensive  java library   to deal with almost all the versions and angles of HL7 development.  Nhapi is  .Net implementation of the Hapi project.

Hapi:-  http://hl7api.sourceforge.net/

NHapi:- http://nhapi.sourceforge.net/home.php

So we do have .Net open source library for HL7 development . NHapi supports versions from 2.1  to  2.5 and will suffice for most of HL7 related development.  API’s are simple and easy to use . It creates a Object model for a HL7 message being parsed and can convert that into HL7 standard xml for easy use or for transformation via xslt. Using the HL7 message object model we can do variety of things related to the HL7 parsing and creation. 

Downside is that Nhapi is not as extensive as Hapi (Java library).    HL7 message validation is not there except for some low level validation (e.g  MSH segment validation , primitive validation etc ) . HL7 communication module is not there . Support up to 2.5 version of HL7 as comparison to  Hapi support up to 2.6 version . Most important of all there has been no activity recorded for Nhapi for some time and it makes future dependence on Nhapi a little scary (although its a open source and anybody is invited to contribute and extend ). 

Hapi is on the top list when it comes to the HL7 library , they recently released  Hapi 1.2 in June and forums are abuzz with discussions . Support for 2.6 is included and future support for HL7 3.0 and more are anticipated. HL7 message validation is very mature and there is good support for HL7 message communication .

So the question is how we,  .Net developers can leverage Hapi project and use it in our .Net applications . The answer can be  in using   java in [ .Net] ,  is it possible ? . Yes we can use java libraries in [.Net] , as they are [.Net] libraries and can use  full feature of  Hapi project.

Java interop tool developed  Jeroen Frijters (who is contributed for bringing  J# to its demise)  is the best and easy bet to use Hapi java api in .Net . I have done it and it works great . I will be soon writing on how to convert java jar files to .Net assemblies.

Technorati Tags:

7 comments:

  1. Hi Digvijay,
    After today's call,this is where I landed.I was on call with your team today.
    Helpful information.
    -Animesh

    ReplyDelete
  2. Hi, Digvijay Matura

    Can u please write a tutorial to convert jar files into .NET DLL for HL7 Messages and a sample code to make hl7 order message and parse hl7 result message. It would be great help for so many developers..and of course I am in dire need of this..please consider my request and suggestion..

    ReplyDelete
  3. Great Article...very informative...

    -- Rashid A. Khan

    ReplyDelete
  4. Thank you for sharing your thoughts. I really appreciate your efforts and I am waiting for your next
    post thanks once again.

    Also visit my page :: fotograf ślubny lublin

    ReplyDelete
  5. Perfect Tutorial DIGVIJAY, I love it... Very informative and clean!

    ReplyDelete
  6. Hi Dihvijay,

    I am Project manager working on development of web based HIS.What we require in our team is HL7 technical professional.
    Let me get you more details on who we are.
    We have a team of Healthcare IT professionals who work part time or as an when available on projects for IT companies.The project we have is developement of web based hospital information system with asp.net and MVC 4 framework.

    The client has specific requirement of making application HL7 version 2.x compliant and Hipaa compliant.

    please do let me know if u are intrested in part time contribution to the project.The project is paid and all work is done outsourced.
    We have a team of 9 professional who work on this platform without disturbing our regular affairs.

    Please visit our new website www.healthbizz.com

    Please revert back to me on our mail admin@healthbizz.com

    ReplyDelete