FHIR seems to have implemented their own coding systems. For example, this was found in a Synthea patient:
"valueCoding": {
"code": "2106-3",
"system": "urn:oid:2.16.840.1.113883.6.238",
"display": "White"
}
Which seems to be from:
https://www.hl7.org/fhir/us/core/CodeSystem-cdcrec.html
I'm not seeing anything on the Athena terminology download page for this (login required).
https://athena.ohdsi.org/vocabulary/list
The code '2106-3' does appear in the standard download of terminology from Athena but as a LOINC code for a Choriogonadotropin test (so, not the same thing).
Are these FHIR terminologies available for OMOP in Athena (or elsewhere)?
Is there a place to download all of these FHIR terminologies in csv (or other bulk uploadable format)?
The FHIR terminologies can be downloaded as XML or JSON. Some have hierarchy and relationships, so flat CSV files are harder, though I believe there's a proposal to add that to FHIR IG publication tooling in the future. Note that FHIR is a data exchange standard and the terminologies themselves are defined in a variety of places - some on http://terminology.hl7.org, some in the core FHIR specification and some in different FHIR implementation guides (which can be defined by anyone). As such, there won't be a single place to download content, though there are registries you can use to search and download large sets of them.
Related
I want to create an interoperability platform FHIR compliance with a complex business logic.
Our clients can send FHIR resources to platform.
The best architecture by best practise documentation is an ibrid system FHIR + SOA, as this link says.
Now I write two examples of scenario I must to manage:
The first:
I want to create a ServiceRequest resource with a subject where I know only the fiscal code as identifier. If I need other informations about the subject I can query an external database, for example, to know name, surname and others.
I can do this, send to my interoperability platform only a Service Request as follow?
"resourceType" : "ServiceRequest",
"subject" : {
"reference" : "Patient?identifier=FISCALCODE"
}
and so on
The second:
I want to create a ServiceRequest resource with a RelatedPerson linked in the requester tag.
The RelatedPerson is not a fully registry, I know only name and surname and a link to patient.
I must create a SOA method createServiceRequest where I must to pass two parameters the ServiceRequest and RelatedPerson? Or I can use a CRUD method for Bundle resource where I put as entries my ServiceRequest and my RelatedPerson?
So if I try to summarize, the possible ways are:
Create a method createMyMethodName(ServiceRequest serviceRequest, RelatedPerson relatedPerson)
Creation and exposure of this method is it FHIR standard?
If the answer of first quesiton point is YES, in my platform I'll have a lot of custom methods but I have a very strict control on the input informations
Use a CRUD Bundle method where I pass into the Bundle resource the following entries: ServiceRequest, RelatedPerson
In this way I expose only one method to write on my platform, but I must to implement a lot of code to manage all input bundles with several different entries (I suppose a mega switch and then for each branch I apply the business logic controls to accomplish my business logic rules)
This response is not intended as a complete response to your question and comes from a US perspective; however, you may find the perspective useful.
Gotcha with identifier queries
"reference" : "Patient?identifier=FISCALCODE"
As written, your ?identifier=FISCALCODE will query the FISCALCODE key against all code systems. I think what you want is to specify a code system, e.g. ?identifier=<CodeSystem>|<FiscalCode>
This is a common gotcha that's buried in the FHIR search documentation.
You'll either have to reference an existing code system, e.g. an Italy specific implementation guide analogous to US Core that contains the list of FiscalCodes, or author your own.
Which FHIR integration paradigm are you using?
Before diving into the createMethod vs Bundle question, I think it'd be useful to step back and pick an overall FHIR integration approach.
In my opinion, there are three major approaches:
Load data into an existing stand-alone FHIR server
Challenge: Drift between data loaded in FHIR server and other data warehouses
FHIR server queries non-FHIR API
Challenge: Duplication between FHIR API and non-FHIR API
NB: In the limiting case, there is no data stored in the FHIR server proper. Adding to the confusion, some will call this implementation a "FHIR gateway" instead of a "FHIR server."
FHIR server queries staging database for FHIR data
Challenge: Must write data access for each FHIR resource and each data element.
In the future, there may be a fourth approach where one uses the FHIR mapping language in real-time from an intermediate source model to multiple targets.
Your "CRUD Bundle method" is more in-line with POSTing data to a stand-alone FHIR server, whereas your "createMyMethodName" is more in-line with writing DAOs (Data Access Objects) to an external database.
In the limit where you don't need to maintain synchrony between the FHIR server and source data systems, importing data into a stand-alone FHIR server is much less work.
In the limit where you already have mappings to an intermediate data model (in the US, many large service providers will have mappings to either the USCDI or the Common Clinical Dataset), you'll have an easier lift writing CRUD in the FHIR server against an existing database.
For a more in-depth discussion, there was a FHIR integration patterns talk at FHIR Dev Days 2018, starting at Slide 21. Note that the author assumes a familiarity with architectural patterns such as the facade pattern.
Select a stand-alone server or library
Unless you have a compelling requirement or are a large company, it's advisable to use an existing open-source stand-alone server or library implementation. The three most popular are:
HAPI-FHIR (Java)
Microsoft (.NET)
IBM (Java)
If taking the stand-alone option, popular commercial FHIR servers
Microsoft (hosted in Azure)
Smile CDR (commercial version of HAPI-FHIR)
Firely Vonk
recently I've implemented MFN M15 message sender using HL7 (v2.x).
I see that HAPI FHIR is emerging as de-facto standard. Can someone point me out what would be MFN M15 message counterpart in https://hapifhir.io/?
NOTE:
I've already downloaded ca.uhn.hapi.fhir:org.hl7.fhir.dstu3:4.2.10-SNAPSHOT, and start investigation in org.hl7.fhir.dstu3.model but some directions would be more than gratefull.
Work on managing inventory using FHIR is still an area of exploration in FHIR (definitely a long way from 'de-facto standard' in this space, though FHIR is certainly becoming that for some areas of healthcare. In DSTU3, you may be able to cobble together part of a solution using Device and Medication. You might also look at this stream on chat.fhir.org: https://chat.fhir.org/#narrow/stream/179165-committers/topic/inventory.20tracking
I have just started reading about GraphQL and the description says it's a query language for API. Why is it termed as query language for API? Can't Graphql API service directly talk to Database or any other data source directly?
It's just poor word choice. Elsewhere on the official site, they refer to it as a "query language for your API" (emphasis mine), which is a bit less ambiguous. Other API endpoints can certainly be used as data sources for your GraphQL service, as can databases, file systems or just about anything. However, the intended meaning is that GraphQL can be used to create an API, not that it's used exclusively to interface with other APIs.
Here's a more technical and complete description from the spec:
GraphQL is a query language designed to build client applications by providing an intuitive and flexible syntax and system for describing their data requirements and interactions.
GraphQL is not a programming language capable of arbitrary computation, but is instead a language used to query application servers that have capabilities defined in this specification. GraphQL does not mandate a particular programming language or storage system for application servers that implement it. Instead, application servers take their capabilities and map them to a uniform language, type system, and philosophy that GraphQL encodes. This provides a unified interface friendly to product development and a powerful platform for tool‐building.
I'm looking for a way to write notes into patient chart in Epic. Couldn't find any current FHIR specs about writing notes , but I didn't find this proposal http://wiki.hl7.org/index.php?title=ClinicalNote_FHIR_Resource_Proposal
Are there any other options ?
Great question. I work on the FHIR team at Epic and from a FHIR perspective we are having a similar problem identifying the appropriate place in FHIR to return notes. The proposal you have linked is a starting artifact in defining a new resource for that purpose. Until we determine in the FHIR community if a new spec should be created or an existing FHIR resource should be used, we do not have a FHIR specification to develop support against.
Outside of FHIR, today there are multiple ways to get notes into Epic such as HL7 v2, document based exchange, or something more Epic defined (these are just the ones I'm aware of). Without knowing more about your use case, it is hard to say what option may or may not meet your needs. I recommend you reach out through the contact us at https://open.epic.com/. From this email group they can dive into what integrations would meet your specific scenario and you will have input from a full gamut of integration experts.
And if you are interested in the standards side of things and getting notes in the FHIR specification, I'd encourage you to get involved on chat.fhir.org or any of the HL7 FHIR meetings to provide input on the specification!
*Edited to point to website instead of email.
We have data stored in a standard flat file format (and even possibly in a relational database) that need to be mapped to FHIR resources. I'm wondering if there is a standard methodology and/or tool for doing data mapping to FHIR with the ability to track changes being made?
There's no particular "standard" methodology or tools for doing this. FHIR offers (but does not require the use of) the StructureMap resource which allows documenting and executing the mapping of two arbitrary data structures. The HL7 IGPublisher allows executing these mappings, but there's no HL7 or open source tool for authoring I'm aware of. The Open Mapping Software tool has a user interface for defining mappings that can be converted to StructureDefinitions as well as to executable Java code. However, to my knowledge, most implementers just code their own tranformations or use an interface engine capable of mapping flat files to XML and/or JSON syntaxes.