57
Fast Health Interoperabilty Resources – FHIR Michael Lawley | Group Leader, Health Informatics Jim Steel | Research Engineer 11 October 2017 THE AUSTRALIAN E-HEALTH RESEARCH CENTRE | HEALTH & BIOSECURITY

Fast Health Interoperabilty Resources FHIR - hisa.org.au · Fast Health Interoperabilty Resources –FHIR Michael Lawley | Group Leader, Health Informatics Jim Steel | Research Engineer

Embed Size (px)

Citation preview

Fast Health Interoperabilty Resources – FHIR Michael Lawley | Group Leader, Health InformaticsJim Steel | Research Engineer

11 October 2017

THE AUSTRALIAN E-HEALTH RESEARCH CENTRE | HEALTH & BIOSECURITY

The Australian e-Health Research CentrePartnered for success

Australia’s leading national eHealth research centre

• 80 staff, students, visiting researchers

• Embedded in RBWH

Funding from CSIRO

Queensland Health

Engagement partners

Success built on partnering -Government, clinicians, industry

Fast Health Interoperability Resources | Page 2 |

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

The acronym

F – Fast (to design & to implement)

Relative – No technology can make integration as

fast as we’d like

H – Health

That’s why we’re here

I – Interoperable

Ditto

R – Resources

Building blocks – more on these to follow3

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

The Need

Has been a need to share healthcare

information electronically for a long time

HL7 v2 is nearly 30 years old

Increasing pressure to broaden scope of

sharing

Across organizations, disciplines, even borders

Mobile & cloud-based applications

Faster – integration in days or weeks, not months

or years4

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Interchange standards -Complexity

Difficu

lty (

log

)

Semantic Depth

HTTP /

HTML

XML

WS

HL7

v2

CDA

HL7

V3

openEH

R

How?

Text

Fast Health

Interoperability Resources

5

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Platform for Interoperability

Build capability for all systems

Only fix behaviour

When everyone agrees to it

When it creates capability or simplicity

Push constraints on behaviour to

“Implementation Guides”

FHIR is loose, but capable

Implementation space will be fractal

6

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

FHIR – Key differences

Focus on Implementers

Target support for common scenarios

Leverage cross-industry web technologies

Require human readability as base level of

interoperability

Make content freely available

Support multiple paradigms & architectures

Demonstrate best practice governance7

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Implementer Focus

Specification is written for one target audience:

implementers (that’s not just programmers)

Rationale, modeling approaches, etc. kept elsewhere

Multiple reference implementations from day 1

Publicly available test servers

Starter APIs published with spec

C#, Java, Pascal, Swift, more coming

Connectathons to verify specification approaches

Instances you can read and understand

Lots of examples (and they’re valid too)

using HL7.Fhir.Instance.Model;using HL7.Fhir.Instance.Parsers;using HL7.Fhir.Instance.Support;

XmlReader xr = XmlReader.Create(new StreamRead

IFhirReader r = new XmlFhirReader

// JsonTextReader jr = new JsonTe// new StreamRead// IFhirReader r = new JsonFhirRe

ErrorList errors = new ErrorList(LabReport rep = (LabReport)ResourAssert.IsTrue(errors.Count() == 0

8

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Support “Common” Scenarios

Inclusion of content in core specification is

based on “80%” rule

Only include data elements we are confident that

most (~80%) of normal implementations using that

resource will make use of

Other content in extensions (more on this later)

Easy to say, governance challenge to achieve

Resources are simple and easy to

understand & use

9

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Example – ISO AD type

isNotOrdered, updateMode, flavorId, nullFlavor, controlActroot & extension, validTime low and high, useable period (GTS – no room on the slide), use home, primary home, vacation home, workplace, direct, public, bad,

physical, postal, temporary, alphabetic, ideographic, syllabic, search, soundex, phonetic

0..* parts, each with: value, code, code system, code system name, code system version,

language, type: address line, additional locator, unit identifier, unit designator,

delivery address line, delivery installation type, delivery installation area, delivery installation qualifier, delivery mode, delivery mode identifier, street address line, building number, building number numeric, building number suffix, street name, street name base, street type, direction, intersection, care of, census tract, country, county or parish, municipality, delimiter, post box, precinct, state or province, postal code, delivery point identifier

10

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Example – FHIR Address

isNotOrdered, updateMode, flavorId, nullFlavor, controlActroot & extension, validTime low and high, useable period(low, high) (GTS – no room on the slide), use home, primary home, vacation home, workplace, direct, public, bad,

physical, postal, temporary, alphabetic, ideographic, syllabic, search, soundex, phonetic, old

0..* parts, each with:text value, code, code system, code system name, code system version,

language, type: address line, additional locator, unit identifier, unit designator,

delivery address line, delivery installation type, delivery installation area, delivery installation qualifier, delivery mode, delivery mode identifier, street address line, building number, building number numeric, building number suffix, street name, street name base, street type, direction, intersection, care of, census tract, country, county or parish, municipalitycity, delimiter, post box, precinct, state or province, postal codezip, delivery point identifier

11

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Won’t extensions break interoperability?

The 80% + narrative helps provide “base”

interoperability

For “robust” interoperability

Profile – constrains structure

Conformance – constrains behavior

Needed to claim “I’m FHIR conformant”

12

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

FHIR selling points

One schema world-wide

Reduces silos, larger community, better open source &

tools, can leverage profiles, data from more places

Easy to use

Developers up and running quickly, low learning curve

Extensible

Easy to add new capability, don’t need to move

in lock-step with communication partners

Flexible

Multiple architectures, component based13

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

+ =

FHIR solutions

Resources Extensions Solution

14

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Resources

“Resources” are:

Small logically discrete units of exchange

Defined behaviour and meaning

Known identity / location

Smallest unit of transaction

“of interest” to healthcare

V2: Sort of like Segments

V3: Sort of like CMETs15

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

What’s a Resource?

Examples

Administrative

Patient, Practitioner,

Organization, Location,

Coverage, Invoice

Clinical Concepts

Allergy, Condition, Family

History, Care Plan

Infrastructure

Document, Message, Profile,

Capability Statement

Non-examples

Gender

Too small

Electronic Health Record

Too big

Blood Pressure

Too specific

Intervention

Too broad

100-150 total - ever

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Why resources?

Increases re-use

Can use the same resource structures (and

profiles on them) in many solutions

Lighter-weight communication

Can point to resources “by reference” rather than

sending all data

Aligns well with how data is stored

17

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

What’s in a resource definition?

Each resource defines:

What elements are part of “core”

Names

Definitions

Cardinality

Code lists

Mappings (to RIM, v2 and other specs)

Constraints

All in a computable form

Create spec, schemas, reference implementations18

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Framework

Common features of all resources:

A URL that identifies it

Common metadata

A human-readable XHTML summary

A set of defined common data elements

An extensibility framework

Represented as either XML or JSON19

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Human Readable

Summary

Standard Data

Content: MRN

Name

Gender

Date of Birth

Provider

Extension with

reference to its definition

Identity & Metadata

20

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

STU3 Resource List

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Web of resources

Lab

Report

Related

Person

Patient

Practitioner

Location

22

Operations and technical details- beyond Resources

Fast Health Interoperability Resources | Page 25

"resourceType": "Patient",

"id" : "23434",

"meta" :

"versionId" : "12",

"lastUpdated" : "2014-08-18T15:43:30Z"

"text":

"status": "generated",

"div": "<!-- Snipped for Brevity -->"

,

"extension": [

"url": "http://example.org/consent#trials",

"valueCode": "renal"

],

"identifier": [

"use": "usual",

"label": "MRN",

"system": "http://www.goodhealth.org/identifiers/mrn",

"value": "123456"

],

"name": [

"family": [

"Levin"

],

"given": [

"Henry"

],

"suffix": [

"The 7th"

]

],

"gender":

"text": "Male"

,

"birthDate": "1932-09-24",

"active": true

Example Resource Instance

Fast Health Interoperability Resources | Page 26

Create = POST https://example.com/path/resourceType

Read = GET https://example.com/path/resourceType/id

Update = PUT https://example.com/path/resourceType/id

Delete = DELETE https://example.com/path/resourceType/id

Search = GET https://example.com/path/resourceType?search parameters...

History = GET https://example.com/path/resourceType/id/_history

Transaction =POST https://example.com/path/(POST a transaction bundle to the system)

Operation = GET https://example.com/path/resourceType/id/$opname

Details http://hl7.org/fhir/http.html

Interactions

Fast Health Interoperability Resources | Page 25 |

POST https://example.com/path/resourceType

POST some base path/Patient HTTP/1.1

Authorization: Bearer 37CC0B0E-C15B-4578-9AC1-D83DCED2B2F9

Accept: application/fhir+json

Content-Type: application/fhir+json

Content-Length: 1198

"resourceType": "Patient",

...(properties)

Creating a resource

Fast Health Interoperability Resources | Page 26 |

HTTP/1.1 422 Unprocessable Entity

Content-Length: 161

Content-Type: application/fhir+json

Date: Mon, 18 Aug 2014 01:43:30 GMT

"resourceType": "OperationOutcome",

"text":

"status": "generated",

"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">MRN conflict

- the MRN 123456 is already assigned to a different patient</div>"

,

Error response

Fast Health Interoperability Resources | Page 27 |

GET https://example.com/path/resourceType/id

GET /Patient/347?_format=xml HTTP/1.1

Host: example.com

Accept: application/fhir+xml

Cache-Control: no-cache

Read Request

Fast Health Interoperability Resources | Page 28 |

HTTP/1.1 200 OK

Content-Length: 729

Content-Type: application/fhir+xml

Last-Modified: Sun, 17 Aug 2014 15:43:30 GMT

ETag: W/"1"

<?xml version="1.0" encoding="UTF-8"?>

<Patient xmlns="http://hl7.org/fhir">

<id value="347"/>

<meta>

<versionId value="1"/>

<lastUpdated value="2014-08-17T15:43:30Z"/>

</meta>

<!-- content for patient -->

</Patient>

Read Response

Fast Health Interoperability Resources | Page 29 |

GET https://example.com/path/resourceType?criteria

GET https://example.com/base/MedicationRequest?patient=347

Search Request

Fast Health Interoperability Resources | Page 30 |

"resourceType": "Bundle",

"type": "searchset",

"id" : "eceb4882-5c7e-4ca4-af62-995dfb8cef01"

"meta" :

"lastUpdated" : "2014-08-19T15:49:30Z"

,

"total": "3",

"link": [

"relation" : "next",

"url" : "https://example.com/base/MedicationRequest?patient=347&searchId=ff15fd40-ff71-4b48-b366-

09c706bed9d0&page=2"

,

"relation" : "self",

"url" : "https://example.com/base/MedicationRequest?patient=347"

],

... continued next slide ...

Search Response

Fast Health Interoperability Resources | Page 31 |

... continued from previous slide ...

"entry": [

"resource" :

"resourceType": "MedicationRequest",

"id" : "3123",

"meta" :

"versionId" : "1",

"lastUpdated" : "2014-08-16T05:31:17Z"

,

... content of resource ...

,

,

... 2 additional resources ....

]

Search Response cont’d

Fast Health Interoperability Resources | Page 32 |

Operations

Fast Health Interoperability Resources | Page 33 |

URL: [base]/[Resource]/$validateURL: [base]/[Resource]/[id]/$validate

In Parameters:

Out Parameters:

Validate a resource

Fast Health Interoperability Resources | Page 34 |

Name Cardinality Type Binding Documentation

resource 0..1 Resource Must be present unless the mode is "delete”

mode 0..1 code ResourceValidationMode(Required)

Default is 'no action'; (e.g. general validation)

profile 0..1 uri If this is nominated, then the resource is validated against this specific profile. If a profile is nominated, and the server cannot validate against the nominated profile, it SHALL return an error

Name Cardinality Type Binding Documentation

return 1..1 OperationOutcome If the operation outcome does not list any errors, and a mode was specified, then this is an indication that the operation would be expected to succeed (excepting for transactional integrity issues, see below)Note: as this the only out parameter, it is a resource, and it has the name 'return', the result of this operation is returned directly as a resource

Code System

Metadata – identity, version, publisher, description

Content – codes, properties of codes, available filters

Value Set

Metadata – identity, version, publisher, description

Content – rules for what codes are in the value set

Concept Map

Metadata – identity, version, publisher, description

Content – source code, target code, relationship

Operations

expand, validate-code, translate, lookup, [closure, subsumes, ...]

FHIR terminology subsystem

URL: [base]/ValueSet/$validate-codeURL: [base]/ValueSet/[id]/$validate-code

Given a code, system, optional display text, and a ValueSet,

Validate that the code is in the set of codes allowed by the value set, and is display text is provided, that the display text is a valid designation for the code.

Out parameters:

Value Set based Validation

Fast Health Interoperability Resources | Page 36 |

Name Cardinality Type Binding Documentation

result 1..1 boolean True if the concept details supplied are valid

message 0..1 string Error details, if result = false. If this is provided when result = true, the message carries hints and warnings

display 0..1 string A valid display for the concept if the system wishes to display this to a user

Built on FHIR terminology subsystem

ATOM for content distribution

National Terminology Server (readonly)

Free (in Australia) licence for own Ontoserver instances

Deep SNOMED CT support

Also LOINC, OWL, and FHIR Code Systems

“terminology is the foundation of semantic integration”

National Clinical Terminology Service (NCTS)

Fast Health Interoperability Resources | Page 37 |

FHIR Apps

Fast Health Interoperability Resources | Page 38 |

• Originally: “Substitutable Medical Apps, Reusable Technology”

• Boston Children’s Hospital & Harvard Medical School• ... And Argonaut, including the big EHR vendors

• Gallery of sample apps

• Sandboxes for building new apps

SMART

Fast Health Interoperability Resources | Page 39 |

• Standards that build on top of FHIR, especially for security and launch context

• Security based on OAuth2

• Standard OAuth2 flows for apps (either in-EHR or standalone) to access data

• Defines a set of authorizations for use in apps• Patient/Encounter.read

• User/Observation.*

• launch/patient

SMART-on-FHIR

Fast Health Interoperability Resources | Page 40 |

Fast Health Interoperability Resources | Page 41 |

Smart on FHIR Apps

Fast Health Interoperability Resources | Page 42 |

Source: https://apps.smarthealthit.org/app/cardiac-risk (Boston Children’s Hospital)

Smart on FHIR Apps

Fast Health Interoperability Resources | Page 43 |

Source: https://apps.smarthealthit.org/app/growth-chart (Boston Children’s Hospital)

Caracol – $validate-code in action

Fast Health Interoperability Resources | Page 44 |

• Alternative standard for clinical decision support

• Register for client triggers as FHIR resource events

• Server receives prefetch of relevant resources (equivalent of SMART launch context)

• Server returns cards with feedback

• Lightweight, simple and consistent UI

• Can launch a SMART app if deeper interaction is required

• http://cds-hooks.org/

CDS Hooks

Fast Health Interoperability Resources | Page 45 |

FHIR & Analytics

Fast Health Interoperability Resources | Page 46 |

CQL – Clinical Quality Language

• from HL7, but not specifically FHIR

FHIRPath

• like XPath or OCL for FHIR (and other information models)

• informed by needs of CQL

GraphQL – facebook

• results are JSON, not FHIR+JSON

Bulk data access

• http://www.healthintersections.com.au/?p=2689

• gForge tasks 13919 – 13923

Pieces of the puzzle

Fast Health Interoperability Resources | Page 47 |

Graph-traversal: FHIRPath is a graph-traversal language; authors can clearly and concisely express graph traversal on hierarchical information models (e.g. HL7 V3, FHIR, vMR, CIMI, and QDM).

Fluent: FHIRPath has a syntax based on the Fluent Interface pattern

Collection-centric: FHIRPath deals with all values as collections, allowing it to easily deal with information models with repeating elements.

Platform-independent: FHIRPath is a conceptual and logical specification that can be implemented in any platform.

Model-independent: FHIRPath deals with data as an abstract model, allowing it to be used with any information model.

STU1 – Dec 2016

FHIRPath features

Fast Health Interoperability Resources | Page 48 |

search parameter paths - used to define what contents the parameter refers to (e.g. Observation.dataAbsentReason)

slicing discriminator - used to indicate what element(s) define uniqueness (e.g. Observation.category)

invariants in ElementDefinition, used to apply co-occurrence and other rules to the contents (e.g. value.empty() or code!=component.code)

error message locations in OperationOutcome

URL templates in Smart on FHIR’s cds-hooks

FHIRPath use in FHIR

Fast Health Interoperability Resources | Page 49 |

Search – identifying Resources of interest

ETL – extracting the relevant parts for local processing

See Hay on FHIR - https://fhirblog.com/2017/08/16/fhirpath/

FHIRPath for analytics

Fast Health Interoperability Resources | Page 50 |

“GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data.”

http://graphql.org

[base]/$graphql[base]/[Type]/[id]/$graphql

Easily follow resource references

Tied to FHIR’s JSON representation

Can be applied to operation results with the _graphql parameter

http://build.fhir.org/graphql.html

GraphQL – draft, post STU3

Fast Health Interoperability Resources | Page 51 |

Access to data on a set of patients, potentially >100 000 000 resources

Authorization – SMART (System/*.read)

Data format – application/fhir+ndjson http://ndjson.org

GET [base]/Patient/$everything?start=[date-time]&_type=[type,type]

GET [base]/Group/[id]/$everything?start=[date-time]&_type=[type,type]

Asynchronous Query

HTTP’s Prefer: respond-async RFC 7240

202 Accepted + Location header

Bulk Data Access

Fast Health Interoperability Resources | Page 52 |

FHIR easy to adopt and use

Provides interoperability

Supports data quality

Focus on record-based access

Starting to address bulk-access & server-side processing

Current model favouring client-side ETL processing

jq is your friend https://stedolan.github.io/jq/

NOW is the time to get involved & influence the outcome

Summary

Fast Health Interoperability Resources | Page 53 |

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Freely available

Unencumbered – free for use, no

membership required

http://hl7.org/fhir

54

© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Links

http://hl7.org/fhir/ http://hapifhir.io

Community: https://chat.fhir.org55

56

Thank youAustralian e-Health Research CentreMichael LawleyJim Steel

[email protected]@csiro.au

aehrc.com

THE AUSTRALIAN E-HEALTH RESEARCH CENTRE | HEALTH & BIOSECURITY