This is a quick post without a lot of explanation, targeted to perhaps a small number of people but perhaps also intriguing to a lot more. This image is a quick summary of the post below:
[What’s FHIR? I’ve been blogging about it for more than a year; here are all the posts, newest first, though if you’re new to the concept please start here. This post doesn’t require understanding FHIR’s significance, but it sure helps.]
The context: someone needs to get their health data.
There’s a lot to be said about that, but now’s not the time. Assume you need some data that’s in your hospital’s or doctor’s computer. (This gets a lot more important for complicated patients, where it might be hospitals’ (plural!) computers and/or doctors’ (plural) computers. In such cases, often nobody has a complete picture. And that’s not good.)
The problem: sometimes it’s really really hard to get the data.
Sometimes the problem is technical, sometimes it’s ineptitude by hospital people, sometimes it’s stubbornness, sometimes it’s greediness, like the hospital CEO who told Yale’s Harlan Krumholz, “Why would we want to make it easy for people to get their health data? … We want to keep the patients with us.”
As in so many problems in human relationships – business or personal – it can be liberating to not focus on why you have the problem, but instead on what to do about it.
A remedy: get your data through APIs, using FHIR. It’s the law, now.
Again this isn’t the place to go into all the details, but on March 9 new US regulations were released saying that all your data in medical computers must be accessible to you, online, using the FHIR software standard.
FHIR is not a product; it’s a software standard that anyone can use without fees, not unlike HTML and HTTP for websites, or SMTP for email, etc. Vendors can make products that they charge for, which use HTML or HTTP or FHIR, but the standard itself is free.
(In fact, FHIR itself uses HTTP. Browsers use HTTP to fetch web data; FHIR uses HTTP to fetch health data. How cool is that?)
Here’s a glimpse of how FHIR works.
There’s so much apparent magic going on inside computers these days that it helps to have it demystified. FHIR is ridiculously simple in its concept. Look – here’s an actual realistic FHIR instruction, which you can use right now, by clicking it. It’s a URL!
http://hapi.fhir.org/baseR4/Observation?code=29463-7&patient=30
Go ahead, click it. If the internet isn’t dead, here’s what will come back: (I’ve highlighted the juicy parts)
{
“resourceType”: “Bundle”,
“id”: “d429112e-7cfb-4990-9d96-d019292fe32b”,
“meta”: {
“lastUpdated”: “2020-05-18T01:52:43.542+00:00”
},
“type”: “searchset”,
“total”: 1,
“link”: [ {
“relation”: “self”,
“url”: http://hapi.fhir.org/baseR4/Observation?code=29463-7&patient=30″
} ],
“entry”: [ {
“fullUrl”: “http://hapi.fhir.org/baseR4/Observation/69969”,
“resource”: {
“resourceType”: “Observation”,
“id”: “69969”,
“meta”: {
“versionId”: “1”,
“lastUpdated”: “2019-11-18T19:14:33.980+00:00”,
“source”: “#wdmelwvcvRwClyHA”
},
“status”: “final”,
“code”: {
“coding”: [ {
“system”: “http://loinc.org”,
“code”: “29463-7”
} ]
},
“subject”: {
“reference”: “Patient/30”
},
“encounter”: {
“reference”: “Encounter/35”
},
“effectiveInstant”: “2019-09-17T22:02:23.404+00:00”,
“issued”:
“2019-09-17T22:02:23.404+00:00”,
“valueQuantity”: {
“value”: 82.5,
“unit”: “kg”,
“system”: “http://unitsofmeasure.org”,
“code”: “kg”
}
},
“search”: {
“mode”:
“match”
}
} ]
}
To most people this won’t be a thrill, but to some it will be unimaginable: as long as you have the patient’s authorization code, you can extract the data items you request just by sending instructions like that, without going through confused or difficult people. Or even without sending a request to nice helpful people! You can just fetch it yourself, whenever you want.
Just like looking up airplane or hotel information. (Remember travel planning? I used to do it a lot.)
Here are the juicy bits in this particular dump:
- “Code: 29463-7” identifies what datum this is.
- The previous line identifies it as the LOINC code set.
- 29463-7 is the LOINC code for body weight.
- “Patient/30” is the patient’s ID in this computer.
- Note: the original request URL included this patient number and the LOINC code: it was the request, “send me the body weight for patient 30.” All in one stinkin’ little URL!
- “Encounter/35” means this measurement is part of the records for this computer’s 35th encounter (visit or whatever) with the patient
- “EffectiveInstant” is the moment when this information was collected
- The info itself: “Value” and “unit” 82.5 kg (182 lbs)
Of course at the receiving end you need to have a program / app to extract the information from the dump, confirm that it’s what you wanted (“body weight for patient 30” etc), make it look pretty, or whatever you wanted to do. But here’s the thing: all that other stuff was never worth a darn if you couldn’t get the data, and now you can. (Or will be increasingly able to over the next two years, as the new regulations roll out.)
So. If this is interesting, ask questions in the comments, or whatever you want. This is an experiment; I’m not sure how to explain this clearly. Your turn.
[…] such information from each other, so it flows automatically, just like with websites. Last month I blogged a simple illustration of how it […]