Skip to content

Instantly share code, notes, and snippets.

@jonbrouse
Created July 7, 2022 15:21
Show Gist options
  • Save jonbrouse/e276f6c63222013881c23e63e65ebde5 to your computer and use it in GitHub Desktop.
Save jonbrouse/e276f6c63222013881c23e63e65ebde5 to your computer and use it in GitHub Desktop.

Fast Healthcare Interoperability Resources (FHIR)

Foundation

  1. A robust data model for describing health and administrative data
  2. A RESTful API for interacting with taht data using JSON or XML
  3. A set of open source tools to implement and test FHIR applications
  4. A collection of FHIR Servers around the world that you can interact with
  5. A community of implmentaters working together.

Manifesto

  1. FHIR should remain implementer focused and targeted at the developers who are building the healthcare solutions, rather than the clinicians who are using them. The resource must be implementable and workable.
  2. The standard must be well-tested
  3. Implementers should only include common scenarios (80:20 rule)
  4. FHIR should be open.
  5. It has to be easy to adopt.

Components

  1. A robust data model (supports 150 differnt resources)
  2. A RESTful API
  3. Open source tools
  4. A network of servers across the globe
  5. A collaborative community of implementers–that work in conjunction to form a scalable, useable, and interoperable system for healthcare.

Other Features

  • Narratives, a type of resource that offers human-readable versions of structured data, are important when data is sent to consumers who are running different software. When a new system receives data that it does not understand, it can still display the narrative to humans who are not FHIR experts, allowing them to roughly interpret the clinical data for a basic level of interoperability.
  • Resource identifiers–for patients, devices, specimens, or a myriad of other items–are another way to allow for true semantic interoperability.
  • Supports "logical deletes." Delete changes a flag on the resource so it no longer appears in search results.
  • Search API with parameters built into Smile CDR’s HAPI FHIR.

An implementation guide (IG) is a “mini specification” that constrains the FHIR specification for some specific use.

Data Model

Primartive Data Types

  • FHIR defines a set of roughly 150 resources - Find more details on the resource page
  • Building blocks of specificaiton
    • Patient (person who rescieves healthcare) resource model

Dates and times

  • dateTime: "human time" i.e. "Dr Bob tells me to take my medicine at 1 pm tomorrow." Variable/sliding scale of precission.
  • instant: captured by a computer ISO 861

General Purpose Data Type (composite)

  • HumanName General Purpose Type: first name, middle name, last name, etc

Resources

  • Metadata: resource ID, resource version, tags, profiles
  • Extensions: any information that doesn't fit in the 80% (custom)
    • Comprised of K/V pairs
      • Key: URL
      • Value: data type
  • Narrative:
    • Human-readable version of the content (optional but encouraged)
    • CDA has taught us that this is very important
    • Generated HTML encoded text
  • Body: raw structured data

Concepts

Identifier Data Type

  • The System is a URI indicating the kind of identifier
  • The Value is the actual identifier
{
  "system": "http://health.ca/NameSystem/ca-on-patient",
  "value": "01235"
}

Codes

  • The System is a URI indicating the kind of identifier
  • The Code is the actual code
{
  "system": "http://loinc.org",
  "code": "718-7",
  "display": "Hemoglobin mass/volume in blood"
}

Extentions

Extendsions are the way we include our "20%"

  • The key is a URL
  • The value is a FHIR datatype, or more extentions
  • Nested extensions are "child extensions"
{
  "extension": [
    { 
      "url": "http://hl7.org/some/uri",
      "extension": [
        {
          "url": ombCategory",
          "valueCoding": {
            "system": "urn:old:.16",
            "code":  "2106-3",
            "display": "White"
          }
        }
      ]
    }
  ]
}

Resource URLs

Start with base URL:

    Base URL           Type     ID
http://happi.fhir.org/ baseR4/ example

Web of Resources

  • Graph data
  • Example:
    • A patient has an observation and encounter point to it.
    • DiagnosticReport: Complete Blood Count for John Smith will collection each of those data points from the relationship.
  • Reference resource using "relative links"
http://acme.com/DiagnosticReport/62
name: "Chest XRay"
status: "complete"
subject: "Patient/242"
author: "Practitioner/15"

http://acme.com/Patient/242
name: "Jim Tester"
birthDate: "1999-01-02"

http://acme.com/Practitioner/15
name: "Dr Fakie Faker"
adddress: "Better Health Clinic"

  • Absolute Links can point to a url of another author/user

The Bundle Resource

  • A container for other resources.

RESTful API

    Base URL                  Type     ID
http://happi.fhir.org/baseR4/ Patient/ 123

PUT - Force creation of custom client assigned ID

Implementation Guide

  • FHIR spec is inteded to be a bae platform for interoperability (building blocks)
  • It is not specific enough to truly be "plug and play"
    • Almost nothing is mandatory
    • Different vocabulary is used in different places
    • Workflows are different everywhere

FHIR IG

  • A "mini FHIR specficiation" for a specific purpose
  • Developed using one of several tools:
    • Simplifier/Forge - paid, best possible tool
    • Trifolia
    • FHIR IG Publisher

Examples

  • US Core Implementation Guide creating in the Argonaut project (gold standard)
  • Carin Alliance (previously Carin Blue Botton IG) allows consumers to access their data
  • Gravity Project - building a framework for the meaningful incorporation and extraction of Social Determinants of Health into EHRs. The project is focused on three specific social risk domains: food insecurity, housing instability and quality, and transportation and access.
  • International Patient Summary (IPS) aims to create a meaningful summary of an individual's health that can be exchanged across polical borders.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment