Stream: implementers
Topic: Confusion about what FHIR and HL7 can and cannot do
Armin Linder (Jan 13 2022 at 12:59):
Hi, I am an experienced programmer, but I am new to this topic, so I need some basic advice to get things going.
So far I got, in paper, some sketchy project specs where I read that somehow it shoud be possible to use FHIR and/or HL7 through either Web-Technology (JSON) or the MLLC protocol to query patient and location data.
First question: is this possible using HL7 or FHIR at all? I read a lot about HL7 which shows its use to "push" messages from a server, saying that, for instance, patient x was given treatment y at location z, but found no clues that retrieving, for instance, a list of all patients or a list of all locations was part of the standard. For the project to function I'd need kind of a "pull" interface so I can specify what data I need. I found no trace of such an interface so far, did I miss something?
I did also spent almost a week now trying to find detailed specs for this "interface" from a network perspective. Things like IP ports, authentifcation required, data encryption, in other words the basics required to connect to any server service and query some data. Where is, in technical terms, any documentation for all levels above OSI level 7? Is this standardized in HL7/FHIR at all?
As soon as the bytes keep dropping in I think I am on safe ground, since there is plenty of information around concerning the individual data structures.
Thanks very much for your help,
Armin.
Daniel Venton (Jan 13 2022 at 13:27):
FHIR specifies the API methods and the constructs with which it operates. "You shall have a /Encounter endpoint", "The encounter endpoint shall accept these params", "The encounter endpoint shall return data in this format (Encounter Resource)".
Things around security of your data is defined in other specs like HIPPA and HI-TECH.
Typically a FHIR server will be on https (port 443) and will expect an oauth token to prove access (US, bound by interoperability rules). But the server doesn't have to, the server controls its security in a manner they want to.
If you are not bound by other regulations then you are free to host your FHIR server on any port using any security (or none at all if that's legal for you).
John Moehrke (Jan 13 2022 at 13:35):
Armin. Your "First question" is about HL7 messaging. Which there are three different protocols that have been defined by HL7 over the years. V2 is uses the "MLLP" network protocol and a byte encoding. V3 uses mostly SOAP network protocol and XML. FHIR is the newest, that is a data model that leverages json and xml encoding, and is designed with RESTful principles. I say designed with RESTful principles, because FHIR can be used in multiple different ways including "Messaging", "Documents", "Operations", and http REST.
John Moehrke (Jan 13 2022 at 13:36):
did you read the executive overview within the FHIR specification?
https://hl7.org/fhir/summary.html
Armin Linder (Jan 13 2022 at 14:10):
Thanks for your helpful input.
The long and the short of it seems (to me), that neither HL7 nor FHIR goes beyond OSI level 7, so any kind of transport two parties agree upon may be used [as long as it does not violate common security standards, of course].
Furthermore it seems that neither HL7 nor FHIR specifies any query language nor any network communication protocols, they both cover only specifications of data formats for objects.
Right?
John Moehrke (Jan 13 2022 at 14:14):
no exactly. no
John Moehrke (Jan 13 2022 at 14:15):
FHIR - when using http REST, there both a transport and a very strong query language -- https://hl7.org/fhir/http.html
John Moehrke (Jan 13 2022 at 14:16):
Note that FHIR "core" is just the definition of the Resources... Around the core are many Implementation Guides. Implementation Guides take a use-case and constrain the standards for that use-case.
John Moehrke (Jan 13 2022 at 14:16):
There are Security and Privacy Implementation Guides https://hl7.org/fhir/secpriv-module.html
Vassil Peytchev (Jan 13 2022 at 15:03):
And HL7v2 messages have two defined wire protocols in common use, MLLP (over TCP), and HL7 over HTTP. Both can support TLS.
Elliot Silver (Jan 13 2022 at 16:15):
Returning to your original question, it is possible to query using FHIR V2 and MLLP. The details are in the V2 specification (don’t recall the chapter), but luckily IHE has extracted and standardized the parts into their PLQ (Patient Location Tracking) profile, which can be found https://www.ihe.net/resources/technical_frameworks/.
HL7 FHIR also can be used to query for location. The trick would be that neither Location nor Patient refer directly to each other, so you’d need to devise a query that uses a linking resource like Encounter.
As for standardizing on ports, etc. No, there’s no standard because many systems will have multiple ports with multiple settings available to serve different capabilities to different clients. For V2, each company making a product should have an Interface Specification document that details how they implement the spec, and how ports, etc can be configured. Then you need to talk to the actual customer to find out which of the ways their vendor allows, they have actually chosen to do. For FHIR, similar information Is available from the /metadata endpoint, but getting there does mean you need to know the rest of the URL.
Lloyd McKenzie (Jan 13 2022 at 18:23):
With FHIR, the 'traditional' HTTP and HTTPS ports will most commonly be used, but for a variety of technical reasons, some servers much listen on other ports. (The same is true for any HTTP connection - you can specify a port when you hit an address with your browser. However typically, everyone uses the default one because needing to specify a port number is annoying. With v2, there's no "standard" port. (In fact, I believe that TCP/IP hadn't even been landed on as the defacto networking protocol at the time HL7 was introduced.)
Last updated: Apr 12 2022 at 19:14 UTC