HL7 API and Android

Mobile first is what makes companies nowadays decide to first develop solutions for the mobile market or at least it has higher priority. In the medical field, innovations are adapted much slower than in the private or consumer market. Things needed to be tested much better, the development is more expensive, mostly because of certifications and also the time of development is longer due to the fact of using medical (grade) standards. Interoperability is one of the top most buzzwords in medical software. If you create a new piece of software you need be able to interact with many different systems. Every time you are integrating with another software work has to be done, despite the usage of the same standards. HL7 (Health Level 7) is a medical messaging standard, used to envelope observation, lab results, patient administration data and much more. The most commonly used according to companies working mainly in the field of integrating medical software systems is HL7 V2.x. The latest innovation of HL7 is FHIR (Fast Healthcare Interoperability Resources) which embodies a REST based approach to bring healthcare standards to the 21st century.

Bringing HL7 to an Android device sounds beneficial for performance and scalability reasons but arises some issues regarding security, privacy and of course interoperability. Moving interoperability related standards directly to the consumer device would enable to integrate any Android device with an existing healthcare system like Hospital Information System.

For Java exists, as far as I know, one open source library for HL7 called Hapi. When I tried to bundle it with my Android application I got following exception:

W/c*.u*.h*.VersionLogger(29070): java.lang.NoClassDefFoundError: Failed resolution of: Lorg/w3c/dom/bootstrap/DOMImplementationRegistry;
W/c*.u*.h*.VersionLogger(29070):     at ca.uhn.hl7v2.util.XMLUtils.getDOMImpl(XMLUtils.java:52)
W/c*.u*.h*.VersionLogger(29070):     at ca.uhn.hl7v2.VersionLogger.checkDOMImplementation(VersionLogger.java:44)
W/c*.u*.h*.VersionLogger(29070):     at ca.uhn.hl7v2.VersionLogger.init(VersionLogger.java:36)
W/c*.u*.h*.VersionLogger(29070):     at ca.uhn.hl7v2.model.AbstractGroup.<clinit>(AbstractGroup.java:71)

meaning that required DOM (Document Object Model) implemenation is not available on Android. There is a way to add the missing xml-apis.jar but Android strongly discourages this method to be compatible with other and future releases.

So far I don’t have the ultimate solution and the question to the mailing list of API if they want to go for Android is not answered yet, but I got a hint to another small open source project for HL7 called Light HL7 Library for processing HL7 V2.x messages.

As soon as I have an answer I will post the solution for that.