Code Monkey home page Code Monkey logo

endava-hl7fhir-openapi's Introduction

Endava Logo

Endava HL7 FHIR OpenAPI Demo

Matjaz Bravc, Senior Developer

Introduction

This repo contains demonstration code to illustrate the use of the FIHR standard for healthcare data, developed by the HL7 organisation. The demonstration shows how to build an OpenAPI to FHIR data using .NET. The demonstration accompanies a series of blog posts on the Endava Engineering Blog by Matjaz, entitled "Creating EHR to HL7 FHIR Integration - The Software Developer's Guide".

Table of Contents

Overview of the Project

HL7 Logo

When adopting FHIR, a common scenario is needing to convert your existing data into the FHIR model. For this demo, we will be building a OpenAPI which maps custom EHRs into FHIR Patient and Observation resources. Other resources were not implemented (yet). For this purpose we will use the .NET 5, Firely .NET SDK and public FHIR server UHN_HAPI Server (R4) which is regularly purged and reloaded with fixed test data.

What is FHIR?

FHIR (Fast Healthcare Interoperability Resources) is a new and emerging standard being developed under the auspices of the Health Level Seven (HL7) organization. Pronounced as 'Fire,' it was initially developed by Graham Grieve, who insisted FHIR be open sourced. At its core, FHIR is intended to be the next generation of healthcare interoperability. It tries to combine the best features of HL7 Version 2 and Version 3, in which Grieve was significantly involved.

Why FHIR?

The current predominant method for exchanging clinical data between healthcare applications is known as HL7v2 and it presents serious challenges. Organizations today spend huge amount of money per HL7v2 interface, not to mention licensing fees to implement and use integration engines. Why then we need an integration engine? That's why:

HL7v2 is a standard but it is NOT an open standard. You need to be a member of the HL7 organization and pay fees before using the content in any commercial fashion, and HL7v2 is an ancient standard. It was developed in the late 80s when a lot of things we take for granted now didn't exist - mobile numbers, emails, APIs, Cloud, etc.

What resulted was a lot of "I'll just do it my way," causing an explosion of HL7v2 variants. With other words: "Welcome to the jungle!"

Given the above, FHIR does offer many improvements over existing standards:

  • It's open source: This is a big deal and the first effort in making healthcare integration more transparent and accessible. Putting it out in the open has created a significant community including developers, vendors and enterprises.
  • RESTful: REST-based design brings a significant amount of benefit, namely that an API that adheres to the principles of REST does not require the client to know anything about the structure of the API. Rather, the server needs to provide whatever information the client needs to interact with the service.
  • Extensible: Extensibility under the RESTful context ensures that additions can be easily tacked on to cover specific use cases without impacting the core models.
  • Composable: Composability ensures that almost any request can be cobbled together using core models or resources and associated extensions.
  • Good documentation: Uniquely driven by the RESTful API approach, which enforces good documentation as a byproduct.
  • Support for modern web standards: XML, JSON, HTTP, Atom, OAuth, REST - these are the underlying technologies that FHIR leverages. These are battle tested and have been proven at scale and under significant security requirements.
  • Human readability: HL7 3.0 had a concept of a human readable version of the document or data being shared to ensure that developers or clinicians could still read the source data to eliminate any potential of misconfiguration or coding errors. FHIR borrows this concept as well. Every resource carries a human-readable text representation using html as a fallback display option. This is particularly important for complex clinical information where many systems take a simple textual or document-based approach.

Summarising FHIR

FHIR is still a work in progress, but it is maturing quickly. It is not an event-based (triggered) protocol. In contrast, HL7v2 pushes data based on some event or activity in the source system. If someone was admitted to the hospital, the source system could be configured to push an ADT message based on the admission. FHIR is currently still a request based protocol.

FHIR has cemented its place as the next interoperability standard for clinical data exchange. Any standard has gaps, but they are neither unexpected nor insurmountable. The Standard, the official blog of the HL7 organization, has frequent updates and news as the FHIR standard evolves.

FHIR R4, released in 2019, includes a normative base with backwards compatibility, which aims to give developers and organizations confidence that FHIR implementations they undertake will be supported for the foreseeable future and allow developers to implement FHIR more consistently and uniformly. While FHIR Release 4 is the current published version, development on Release 5 is underway with the hope of getting even closer to interoperability.

Using the Demonstration Code

The demonstration code is a Microsoft Visual Studio project, which you can simply open with VS and use directly.

Enjoy!

Prerequisites

API documentation

Swagger UI

Tags, technologies and sources

Further information

Contributing

Please refer to CONTRIBUTING.md.

Trademarks

HL7®, FHIR® and the flame Design mark are the registered trademarks of Health Level Seven International.

endava-hl7fhir-openapi's People

Contributors

en-ewoods avatar gstoian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

endava-hl7fhir-openapi's Issues

How would you handle consents/permissions?

Dear Matjaz. It's a very comprehensive article you wrote, congrats! The one thing is still don't understand: How can you make sure that a patient can only request his/her own data - and does not retrieve data of other patients? Does FHIR (like HAPI or Firely) implement such security or would it be your own *Controller classes that need to read Consent resources and evaluate if a user is allowed to read/write data?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.