Introduction

This page lists known open source implementations of the FHIR specification. For a list of running servers, see Publicly Available FHIR Servers for testing

Reference Libraries

  • JAVA: https://github.com/jamesagnew/hapi-fhir - James Agnew / University Health Network
    • Object Models, Parsers, Client + Server Framework, FHIR Validator, & Utilities. The FHIR specification is built with this Java code.
    • Open-source Java library for quickly creating FHIR Servers and Clients
    • Geared towards adding FHIR capability to existing applications (e.g. it's not a database, it's a library for quickly bolting FHIR on to your own database, or connecting to other FHIR servers as a client)
    • Supports all resource types, most operations, and both xml and json encodings
    • "Tinder" code generator (Maven plugin) creates model objects and clients from Profiles and Conformance statements
  • .NET Server - Spark: https://github.com/FirelyTeam/spark
    • Reference server built in parallel with Grahame's to test the specification (actively developed during DSTU2, recent updates to support STU3)
    • Supports all resource types, searches, many operations, xml + json
    • Built in .NET with the .NET reference implementation, WebApi 2.0 library, Mongo DB for storage and search.
  • .NET Facade (brianpos): https://github.com/brianpos/fhir-net-web-api
    • Uses the Firely .NET SDK R4 reference implementation for models/serializers
    • Reference FHIR Facade Server based on the Spark engine code
    • Available via NuGet for dotnetcore or the full framework
    • Demonstration Server code here
  • Python 
    There is no single reference implementation for Python. 
    • client-py - a flexible Python client for FHIR servers supporting the SMART on FHIR protocol.
      • Object Model, Client and Utilities
      • Open-source Python library for quickly creating FHIR applications
      • Supports R4, STU3, and DSTU2, all resource types, json encodings, some validation
      • *fhirclient*, a flexible Python client for FHIR servers supporting the SMART on FHIR protocol
      • data model classes that handle (de)serialization and allow to work with FHIR data in a Pythonic way
      • *fhir-parser* application to build custom resources
      • Demo Flask App
    • fhir-py - async FHIR client for python3. 
    • fhir-py-types
      • CLI for generating dict-based types for FHIR from StructureDefinitions. It is designed to be used with fhir-py 
    • fhir.resources - Powered by pydantic python classes with built-in data validation.
      • Open-source Python library implements FHIR Specification in python, each resource represents a python class.
      • Available for R4, STU3, and DSTU2 currently.
    • fhirpath-py – a Python implementation of FHIRPath
    • Zato - Open-source, Python-based interoperability and integration platform
      • FHIR version-agnostic
      • Supports dozens of other technologies, data formats and serialization methods
      • Security (incl. OAuth), clustering and HA
  • Swift - SMART on FHIR
    • Object Model, Client and Utilities
    • Open-source Swift library for quickly creating FHIR applications: Swift-FHIR https://github.com/smart-on-fhir/Swift-FHIR
    • Supports R4, all resource types, json encodings, some validation
    • *Swift-SMART*: a full client implementation of the 🔥FHIR specification for building apps: https://github.com/smart-on-fhir/Swift-SMART
    • Swift classes representing data models of 🔥 FHIR elements and resources, compatible with iOS 11 and OS X 10.13 and later
    • *fhir-parser* application to build custom resources
  • PHP - PHP FHIR
  • Java - IBM FHIR Server: http://github.com/ibm/fhir
  • Dart/Flutter: - Grey Faulkenberry / Children's Hospital of Philadelphia
    • Open-source Dart/Flutter library for creating mobile FHIR applications
    • Github repository with source code for all packages
    • Pub.dev Packages - all packages available for free download and inclusion in all Dart/Flutter projects
    • fhir - Github/Pub.dev
      • base package supports R4, Stu3, Dstu2 and R5 (Preview #3)
      • json encodings/decodings
      • yaml encodings/decodings
      • most validation
      • all packages below also support all of these versions
    • fhir_auth - Github/Pub.dev
      • Autentication using SMART on FHIR
      • Also allows authentication with Google, Google Identity Platform and Azure
      • Authentication for AWS Health Lake coming soon
    • fhir_at_rest - Github/Pub.dev
      • Helper classes to simplify RESTful requests to FHIR servers
    • fhir_bulk - Github/Pub.dev
      • Package for uploading/downloading FHIR bulk files (.ndjson)
      • Also works with .zip (and gzip.tar)
    • fhir_db - Github/Pub.dev
      • For storing information securely on a mobile device
      • Build using a locally embedded NoSQL DB on top of SQLite
      • Allows encryption with AES-256 or Salsa20
    • fhir_uscore - Github/Pub.dev
      • Collection of the above packages
      • Trimmed down to conform to USCore IG
      • Only available in R4 currently
  • Flutter - UI add-on SDK to Grey Faulkenberry's Dart/Flutter packages
  • Java - SmartEhr / SmartServer implementations of "EHR Launch" embedded SMART on FHIR apps
    • Extensive tutorial and walkthrough (also see series parts 2, 3, 4)
    • Full code under MIT License: GitHub
    • Standalone app (no external web server required) or embed into any web framework
    • Minimal dependency (none beyond gson)
  • Android - https://github.com/google/android-fhir
    • The Android FHIR SDK is a Kotlin library for building offline-capable, mobile-first healthcare applications using FHIR resources on Android.
    • Working closely with the WHO and FHIR Clinical Guidelines groups
    • FHIR Engine - Search, sync, data access
    • SDC implementation
    • CQL (Library/$evaluate, PlanDefinition/$apply)
  • Clojure - Blaze FHIR Server: https://samply.github.io/blaze/

JavaScript

There is no single reference implementation for JavaScript.


  • Web Application Frameworks (Node):
    • Clinical Meteor - Opensource web application framework using the Meteor build tool (developed at MIT).  Includes an ecosystem of ~200 packages, with one package for each FHIR resource type, containing isomorphic hand-crafted DSTU2 schemas using SimpleSchema and UI components with a handlebars type syntax.  Relies on the Data Distribution Protocol for FHIR-over-websockets data subscriptions and optimistic UI.  Requires the Atmosphere package manager (Meteor/websockets specific).   Somewhat deprecated after 80+ prototypes, after successfully refactoring MeteorOnFHIR into the NodeOnFHIR project.  Clinical Meteor is something of a scrapyard of Node+FHIR projects.  

    • NodeOnFHIR - Successor to the Clinical Meteor and MeteorOnFHIR projects.  Modern Node based web stack, supporting Javascript, ECMAscript, CoffeeScript, TypesSript and other languages that compile to a JVM.  Supports Cordova and Electron build pipelines for distribution on iOS, Android, and other mobie devices.  Includes support for major FHIR libraries found on NPM, including `fhir-kit-client` and `fhirclient`.  Supports an express based FHIR server; as well as React based FHIR UI components.  

      • Example Plugin - NodeOnFHIR is built with a WordPress style plugin architecture.  The example plugin demonstrates basic page routing, config files, UI components, etc.
      • Covid19 On FHIR - SMART on FHIR data mining utility for query an FHIR server for COVID19 related data.
      • Vault Server (Freemium) - Express based FHIR Server for the NodeOnFHIR web application framework.
      • fhir-starter - NPM package for building React based FHIR components.  Material UI design dependencies.  No Meteor/Atmosphere dependencies.

Other Open source Implementations

  • FHIRBase - open source relational storage for FHIR with document API based on PostgreSQL. FHIRBase is an attempt to take the best parts of Relational & Document Databases for persistence of FHIR resources. FHIRBase stores resources relationally and gives you the power of SQL for querying & aggregating. At the same time FHIRBase provides a set of SQL procedures & views to persist and retrieve resources as a json documents in one hop.
  • the FHIR build tool itself is open source and includes various definitional and reasoning tools. See [2].
  • [4] - DSTU-2 FHIR entities compatible with .Net Core
  • Synthea - Synthetic patient simulation that generates longitudinal FHIR (R4, STU3, and DSTU2) records suitable for software development, integration, testing, demoing. Over 60 diseases with reasonable comorbidities and treatments. Supports Patient, Condition, Encounter, Observation, DiagnosticReport, Immunization, AllergyIntolerance, MedicationRequest, Procedure, ImagingStudy, Organization, Practitioner, Claim, ExplanationOfBenefit.
  • No labels

6 Comments

  1. Is this needed or is it covered in the FHIR specification itself?

    1. The FHIR specification points to this page actually.  The list of available open source implementations is dynamic and isn't appropriate to embed in the formal specification

  2. OK - I just like not having to worry about going to the wiki unless directed there by the spec - less confusing - one less place to check because it feels likes it in the spec then,

  3. Are there requirements to have a library listed here? I'm developing one for Flutter/Dart, and it's not completed yet, but I wanted to now if there are specifications it would have to meet to be listed here. 

    1. Just be an open-source licensed implementation of FHIR...

  4. Where is the code available for https://valentiatech.snochillies.com/?

    The Link for Patients First NZ Terminology Server is down. I couldn't find anything with classical search engines. - the endpoint is now https://terminz.azurewebsites.net/fhir

    Btw.: I think you could add GitHub - IHTSDO/snowstorm: Scalable SNOMED CT Terminology Server using Elasticsearch here.