FHIR Chat · Intro to FHIR Servers · implementers

Stream: implementers

Topic: Intro to FHIR Servers


view this post on Zulip David Reeves (May 29 2020 at 17:32):

I am a business analyst/data analyst and have been tasked with learning about FHIR servers (not exactly my wheelhouse). I think I've found some good articles but am not sure whether I'm on the right track, and haven't been able to find a FHIR server overview diagram. These are my current findings:
a. Server receives a request from a client
b. Server validates request URL
c. Server routes the request through a handler (POST, GET, PUT, DELETE)
d. Handler extracts, parses and validates request body to ensure valid XML/JSON
e. Handler performs any necessary parameter validation
f. Handler accesses the resource type in the database (insert, select, update, delete)
g. Handler uses profile strings to map returned data (and complex data types) and success/failure code to XML/JSON
h. Examples of profile strings (aka request handler functions?):

  - fhir/mappings/Db_to_XML/patient
  - fhir/mappings/Db_to_JSON/patient
  - fhir/mappings/XML_to_Db/patient
  - fhir/mappings/JSON_to_Db/patient

i. Server returns result to client
Thanks to: https://help.interfaceware.com/v6/fhir-client-and-server

view this post on Zulip Michele Mottini (May 29 2020 at 17:36):

How FHIR servers work is an internal 'detail', and for sure there are a lot of different ways to implement one - the FHIR specs describe the outside behavior: which requests are valid, what is the expected response, and FHIR server implement that as they see fit

view this post on Zulip Joel Schneider (Jun 02 2020 at 05:53):

The FHIR specification itself is a good starting point for learning about FHIR.
https://hl7.org/fhir/

It includes introductory documentation targeted toward various audiences, and specification details organized into modules.

The Exchange module contains details about data exchange methods, including the RESTful API.
https://hl7.org/fhir/exchange-module.html

view this post on Zulip Jakub Kaczmarzyk (Jun 02 2020 at 15:29):

Hi all, I am trying to implement an FHIR server in Golang as an educational exercise. I started off by writing datatypes and the Patient resource by hand, but I noticed that other server implementations, like https://github.com/grahamegrieve/fhirserver, generate the code. What files are used to generate the code for an FHIR server? Is it the FHIR definitions at https://www.hl7.org/fhir/downloads.html? I guess I am looking for guidance on what parts of the server can be generated and how that is done in general terms.

view this post on Zulip Lloyd McKenzie (Jun 02 2020 at 15:49):

@Paul Church

view this post on Zulip Chris Moesel (Jun 02 2020 at 16:04):

I don't know if you consider it "cheating", but you might have a look at this Go FHIR implementation: https://github.com/eug48/fhir

It's forked from a project I originally worked on a few years ago. When we initially built the GoLang FHIR server, we hooked into the Java FHIR build process to generate models (among other things). If I were to do it today, I'd definitely generate code from the published StructureDefinitions instead. I'm not sure how the forked implementation handles code generation, but they definitely improved on our original implementation (which we no longer maintain) in several other areas -- so if you're going to check one out, do check out the fork I linked above.

view this post on Zulip Jakub Kaczmarzyk (Jun 04 2020 at 15:14):

Thanks @Chris Moesel - I will take a look at that fork, and I will try to generate code using the StructureDefinitions.

view this post on Zulip David Reeves (Jun 05 2020 at 19:20):

What is the difference between creating a database based on the FHIR resources model and using something like MuleSoft or MIRTH (from NextGen) to access the data, versus using a FHIR server? Or are MuleSoft and MIRTH also FHIR servers? Obviously I'm pretty new to this (and probably just as obvious I'm out of my depth) and the reason I'm asking is we are wondering whether to be FHIR conformant we need an actual FHIR server...

view this post on Zulip Lloyd McKenzie (Jun 05 2020 at 19:41):

Most FHIR implementations don't have FHIR-based data bases. Most convert between their internal data models and the FHIR API - whether they do that using an interface engine or custom code depends on the implementation.

view this post on Zulip David Reeves (Jun 05 2020 at 20:32):

Thanks Lloyd, and when you say "custom code" you're referring to a FHIR server, right?
And when you say an interface engine, would they still have a Capability Statement, IG's, profiles, etc.?

view this post on Zulip Michele Mottini (Jun 05 2020 at 20:48):

Which kind of system do you have that should be made 'FHIR conformant'? an EHR ? A patient app? A...?

view this post on Zulip David Reeves (Jun 05 2020 at 21:03):

Thanks Michele, we are integrating data from a community care EHR, primary care EMR and a wound care system into a new Operational Data Store (ODS) with a data model based on FHIR resources.

view this post on Zulip Michele Mottini (Jun 05 2020 at 21:13):

So is this new operational data store that should be FHIR conformant? Then it needs to have a FHIR API on top of it - ie it should be a FHIR server (that if the data model is already based on FHIR should not be too difficult)

view this post on Zulip David Reeves (Jun 05 2020 at 21:23):

Thanks Michele. Yes, it is our new Community Care ODS that should be FHIR conformant. And if we do not implement a FHIR server (and instead use MuleSoft or something like that), would we not say it is FHIR conformant?

view this post on Zulip Lloyd McKenzie (Jun 05 2020 at 21:29):

From a cursory web scan, it looks like MuleSoft is capable of exposing at least a limited FHIR API for some resources - whether it's sufficient for your needs, whether it is fully conformant and whether it supports the version(s) of FHIR you'll need, I don't know.

view this post on Zulip Steven Wang (Jun 08 2020 at 09:12):

Can I use Spring boot rest instead of HAPI Plain Server? is there any particular thing I need to notice?

view this post on Zulip Lloyd McKenzie (Jun 08 2020 at 14:28):

This is a good question to raise on #hapi


Last updated: Apr 12 2022 at 19:14 UTC