The most important API you’ve never heard of
rockhealth.com
rockhealth.com
> I hope you like XML documents, flat files, pipes and hats, SOAP, and even CORBA.
Completely true. But that's not really the problem. You can download an HL7 or XML-parsing library and the dirtiness of the representation is converted to JSON or whatever works for you.
The problem is API loopholes.
HL7 does a pretty fair job defining what concepts get put into which fields. However, many implementations ignore the computer-readable fields and literally dump everything as 80-character human-readable console outputs in the "custom text" fields. Want any structured data? You're gonna have to write a text parser specific to the hospital's legacy console systems.
There's also a good deal of standardization over how things SHOULD be presented (ICD-9 etc), but those are ignored. Often times physicians or pharmacists just type the drug into a free-text box. 5 different spellings of Ampicillin are the least of your worries -- it gets bad when the dosage is mixed in with the name, and it gets worse once you get into compounds or mixes. The standard isn't the problem, its the data mapping problem for all the human-inputs.
And then you get into fun stuff where billing people use different codes than everyone else for the same drugs, procedures, admissions, etc (there's a reason billing admins are so highly paid... it's a black art where you get creative how you describe things to the insurance companies).
All of this is to say that I would love to see a RESTful, well-modelled API over HL7 messages, but the problems go far deeper than the protocol spec (and that's just for technical side of things... the politics and business threats of open APIs that the article talks about are completely true as well). It's been a couple of years since I've been in the space and not at all familiar with these new FHIR specs, but I wish that process all the best. If you're looking for a real challenge, it's not picking up Clojure or whatever is the language du jour... a true challenge is doing anything in healthcare.
The service we're interacting with has all the structure we need, but doctors and nurses aren't data entry specialists: for the most part, they seem to ignore all the structured fields that they're given and encode all the information ("Ampicillin 5mg three times daily") as free text in the medication's "Description" field.
The problem's not in the protocol spec here (at least, not for our application). The problem's more a human factors issue-- how do you get the clinics' staff to provide you with the clean, structured data that you actually need? Needs to be something that's lower-impedance than just entering a prescription as plain-text (or they'll continue to circumvent your system), and it needs to require minimal retraining or you're going to get push-back from the staff who are expected to use it.
I think the previous comment had it closer:
> but doctors and nurses aren't data entry specialists: for the most part, they... encode all the information ("Ampicillin 5mg three times daily") as free text in the medication's "Description" field.
When I worked in the field, the user interviews we did said that basically that doctors don't have time to flip through all the menus and dropdowns. Part of it is the ego that comes with a decade of med school, but part of it is that it IS legitimately faster to scrawl "Ampicillin 5mg three times daily" (or some days "5mg Amp 3x daily") on a piece of paper and move on to the next crisis.
This is the part of medicine that could benefit from the silicon valley consumer-centric design mentality. It's not that hard to build something prettier than the average piece of enterprise software. The real test is can your responsive and reactive UI make something that has the accuracy benefits of being electronic while still faster than scrawling "5mg Amp 3x daily" on paper so your user can move on to the next patient.
The doc would say the pharmacist is not being restrictive enough because the doc has to wade through so many permutations of what is medically the same med, or has to sift through medication forms that he/she has no use for.
From the pharmacist's perspective I want a _complete_ database so I can record with very granular accuracy what the order was. Also, the pharmacy database has things like ingredients in it which it factors into allergy and interaction checking.
I agree with your other points, though. Free text entry is faster - especially if you have voice recognition.
The way to design med lookups, in my opinion, is to have a dropdown for the pharmaceutical substance the physician wants, then the dose, then an optional drop-down for the form (tab, injection, suppository, whatever).
A suitable medication form would need to be found between what's medically indicated, what the pharmacist is okay with, and what the hospital has in stock - ideally in a dispensing machine at the point of care.
Honestly, I think the best thing to do would be to get a whole shitton of venture capital and start opening brand new hospitals with modern workflows and policies designed to optimize data entry and acquisition.
Bolting that onto institutions with the most amazing sorts of data denormalization possible is kinda painful.
"policies designed to optimize data entry and acquisition"
Those policies may lead to patient deaths. But hey, I guess that you don't have to worry about that...
Having nurses pull double or triple shifts, having doctors answering their phones at all hours--just because they do it now doesn't mean that that is a good state of affairs. In fact, that's a sign of really shitty management.
To answer your implied second question:
Do you have any idea how many patients are harmed or lost every year because of operational errors? Bad procedures, bad diagnoses, bad drug administrations? All under the existing system?
You realize that, in many cases, hospitals can't even tell you what bed a particular patient is in with a high degree of certainty? Or when, exactly, medications were administered?
"Those policies may lead to patient deaths" is FUD, coming from a place ignorant of operational issues in hospitals today.
I'm sure it's an avenue you've explored - what's been the major challenge?
The purpose of the comment is to offer up the strawman solution so that we can hear more about the interesting part of the problem that means it isn't trivial.
That depends heavily on what kind of HL7 you're receiving.
A formal grammar to describe the HL7 2.x pipehat format does not exist because there are irreconcilable ambiguities in the definition of the format. (It's something like: "it's impossible to tell the difference between FOO-1.1.2 and FOO-1.1[1]" BUT, that's not it. Sorry, I don't have the details.)
That being said... There are parsers for specific message types. An ADTA08 is defined well enough, you know?
Try convincing anyone of that after a painful, multi-year, billion dollar Epic installation
This is currently happening in Finland's capital region: http://www.helsinkitimes.fi/finland/finland-news/domestic/12...
Though CGI did stall the process by suing the project in Market Court, claiming Epic has gotten more favorable treatment. Incidentally, CGI is the provider of the current system, which is reviled, costs 45 million a year to maintain:
http://www.helsinkitimes.fi/finland/finland-news/domestic/12...
Final tally for the new system is estimated to somewhere around half a billion euros.
My solution involves a system which allows you to create clinical data entry forms to document your encounters. All the information goes in as well modeled data with standard terms applied. It is not a complete EMR. I doubt it would require 100s million euros but it would do all the stuff a proper EMR does either. The problem is convincing people who spent so much on an all in one solution to do best of breed for one component
I worked at a pharmacy company trying to make consultant pharmacist reports to help flag drug interactions that will happen if someone has a diagnosis (ICD-9 at the time) that flags a side effect or condition.
Doing this meant a ton of data normalization on med names and NDCs. Pretty cool shit until our idiot parent company shut our office. Good old bean counters.
SMART on FHIR builds on top of FHIR for cross-EHR applications. In their words (http://smartplatforms.org/for-developers/):
"SMART on FHIR takes advantage of a new and powerful set of health data standards called Fast Healthcare Interoperability Resources, or FHIR. By using HL7’s FHIR for the clinical data layer, SMART offers a standards-based platform with broad reach, a rich set of detailed models, and the opportunity to create population-level as well as patient-level apps. SMART on FHIR also uses an updated set of authorization and authentication standards including OAuth2 and OpenID Connect."
and
http://jamesagnew.github.io/hapi-fhir/
(extension to the HL7 Java API "Hapi" which deals with FHIR and is (IMO) one of the more full-featured implementations of FHIR)
Disclaimer: I used to work for a major EHR company but no longer do so.
1. http://www.cerner.com/Intermountain_and_Cerner_announce_stra...
Before we start talking APIs, I want to know the hoops I'm going to have to jump through before I even git init.
I think FHIR only helps this process if it standardizes/centralizes security. So much of the process of setting up integration is getting whitelisted by an organization and setting up VPNs and other security measures that have nothing to do with HL7 or FHIR or IHE profiles. If startups have to establish credibility and integrity at each hospital they go to, the cycle will continue even with a public API.
You can rant about it all you want, but that's the reality. The status quo exists for a reason.
I know people on HN have fire in their breast to change the world but the rock is harder to move then many think. I tried to do it for almost 5 years and didn't get very far.
Additionally, there's still an emotional component of "You're not getting our data because we don't trust you know how to secure it properly." From the personal experience of having worked with the IT staff at various medical institutions there is often a level of paranoia around their data. Which, in some regards is fully justified given the regulations (HIPPA, HITECH, etc) they are required to meet. The issue is that it often moves beyond meeting the regulations into a place of attempting to exceed the regulations. Which, seems like a smart move until it is too late and you've only succeeded in adding extra bureaucracy into your internal processes. These added burdens are then foisted upon external parties who are attempting to integrate with the system and therefore, by the nature of the regulations, the processes which have been previously set forth by the implementing institution.
All of that said, I agree with your statement, "I know people on HN have fire in their breast to change the world but the rock is harder to move then many think.". However my take is that we are attempting to move the wrong rock. Healthcare institutions need to learn the correct way to introduce and enforce secure yet flexible processes and policies in regards to technology. After that occurs then the technology rock will be much easier to move.
I'm going to add that I've been a Medical Software Engineer for just shy of 10 years and it has been both an extremely frustrating and also extremely rewarding ride.
And honestly, the APIs at Allscripts, EPIC, et al are getting a lot better. The APIs avoid a lot of the free text nonsense that floatrock mentioned. They aren't great, especially around allergies and immunizations, but I think they have legs.
The funny thing is, if you study MUMPS even briefly, you will be struck a weird sense of deja vu... It's what we call "NoSQL" now. And it was superseded by RDBMS in the 80's for a reason.
Fortunately they fired that CIO (who literally knew nothing about computers or IT, but hey, the committee appointed him).
As far as I can tell, the EMR system my surgeons & doctors use is solely a hindrance to his workflow as compared to paper charts. I'm sure it's easier for the people/computers processing paperwork and billing on the backend, but for the doctors and nurses in the room all I've heard so far are complaints. From my observation, the UI/UX of the whole thing is terrible. I'm actually embarrassed by it as a member of the profession.
This makes a lot of sense. IHE profiles and CCDAs are suboptimal ways in 2015 to transfer data between HIEs and Epic/Cerner/Allscripts along with every other EHR vendor either sell them or need to connect with them. It would behoove them to embrace this support in the same way it behooved hospitals to embrace HL7v2 in 1990: it saves them alot of work and money.
Of course, this doesn't help the average patient or app developer. How users will interact with these APIs and whether or not hospitals will have a standard and easy way to open them up is still yet to be seen. I imagine there will still be some work involved there, but I'm optimistic for the future.
It is a career killer.