FHIR Basics - Agoria

30
1 CC-BY, except if otherwise indicated FHIR Basics Resources, Data Types, REST, Profiling

Transcript of FHIR Basics - Agoria

1CC-BY, except if otherwise indicated

FHIR BasicsResources, Data Types, REST, Profiling

2

Example: Patient Resource

3

A Resource’s identity

• In fact: a URL

https://server.org/Patient/123

“Logical Id” as used by a FHIR-enabled application

endpoint

resource type

4

“Business” identifiers

5

The FHIR Specification – resource definitionsLet’s look at Resources in the spec…. (http://fhir.hl7.org)

6

Example: references

7

Resource Reference

example snippet taken from a DiagnosticReport:

8

+ =

Extensibility

Patient resource(covers the 80%) Extensions

Patient resourcewith extensions

9

The Case for Extensions

• Simple choice – design for absolutely everything or allow extensions

• Everyone needs extensions, everyone hates them• Define, publish, find extensions

– Repository– Documented just like resources– Can be fetched & interpreted by clients

DICOM has ‘private groups’, v2 has Z-Segments

10

Example: simple extension of a data type

11

Example: simple extension of a data type

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

<extension url="http://fhir.nl/fhir/StructureDefinition/nl-core-address-official"><valueBoolean value="true"/>

</extension><!-- ... other address content ... -->

</address></Patient>

{"resourceType" : "Patient","address" : [{

"extension" : [{"url": "http://fhir.nl/fhir/StructureDefinition/nl-core-address-official","valueBoolean": true

}]}]

}

12

FHIR DATA TYPES

13

Complex Datatypes

14

XML example

15

Coded types

Codes are defined in code systems

16

FHIR BUNDLES

17

Communicating sets

• We need to communicate sets of Resources– Search result– Multiple-resource inserts (“batches”)– Transactions– Documents– Messages

18

Query Response Bundle, link types

GET [base]/Patient?name=e&eyecolor=blue

Query as understood/ executed by

server

Query as sent by client

{"resourceType": "Bundle","id": "c5120cf3-0d1e-424c-99b7-cbfb36efd09c","type": "searchset","total": 27,"link": [{

"relation": "self","url": "https://vonk.fire.ly/Patient?name=e"

},{"relation": "next","url": "https://vonk.fire.ly/Patient?name=e&_count=10&_skip=10"

},{"relation": "last","url": "https://vonk.fire.ly/Patient?name=e&_count=10&_skip=20"

}],"entry": [{

19

Basic search

• SyntaxGET [base]/[resourcetype]?key=value&...

• Getting all patientsGET http://acme.org/fhir/Patient

• Example:GET http://acme.org/fhir/Patient?name=eve

20

Search parameters

Each resource has a set of “standard” search parameters,

not every element can be searched!:

Our example search used this one

21

Query Result - Example Bundle

Query as understood/ executed by

server

22

Transaction Bundle

FHIR server

Obs

DxReport

DxReport

DxReport

Lab System

PostLab result

Obs

Obs

“transaction Bundle”

23

For comments and questions: [email protected]

Summary

• Resource, extensions, ‘80/20 rule’, references• Logical identifier (URL), business identifiers

– <resourceType>.id and <resourceType>.identifier

• Data Types• FHIR specification

24

CONFORMANCE LAYER

25

How to adapt the specs to meet our needs

“Profile”

StructureDefinition

SearchParameter

ValueSet

ConceptMap

CodeSystem

OperationDefinition

CapabilityStatement

26

Profiled Observation (Blood Pressure)Id of profile (a URL) = http://project.org/Bloodpressure

Use a meta.profile tag to declare conformanceTo one or more profiles:

<Observation><meta>

<profile value=“http://project.org/Bloodpressure"/>

</meta><other elements…. />

</Observation>

27

On the profiling of Profiles

28

Example Implementation Guide

29

Profile-less FHIR

• You don’t need profiles to interoperate with FHIR– Resources are “discrete” enough that mechanism to populate most

elements is clear

• Approach– Populate/consume all elements you know, use HL7 or country-

standard extensions for extras– Map to/from “recommended” terminologies as much as possible,

populate CodeableConcept.text– Expose capabilities in CapabilityStatement resource

30

For comments and questions: [email protected]

Summary

• FHIR Profiles are quite useful– Define usage of Resources– Define Extensions– Set interoperability expectations in a particular context

• National standards, types of care, business patterns

– Clinical practice guidelines / detailed clinical models– Document system capabilities

Note: full online FHIR (16 hour, 50% hands-on) training courses are regularly held in cooperation with HL7/IHE Belgium.