INTRODUKTION TIL HL7 FHIRGennemgang af centra le begreber i FHIRL ø s n i n g s a r k i t e k t To r b e n H a g e n s e n , M j ø l n e r
• En standard lige som alle de andre• En informationsmodel• Terminologi• Constraints og regler• Fysiske formater
• En standard der kan noget mere• Profilering• Anvendelse
• API’er og services• Beskedudveksling• Dokumentformat• Database-format
Hvad er FHIR?
INTRODUKTION TIL HL7 FHIR
F – FAST
• Hurtigt at definere• Hurtigt at udvikle
H – HEALTHCARE
• Fokus på sundhedsvæsenet• Levere en solid grundmodel
I – ITEROPERABILITY
• Fokus på deling af information• Baseret på velkendte teknologier
R – RESOURCES
• Fælles byggeblok for alle data
Hvad er målet med FHIR?
INTRODUCTION TIL HL7 FHIR
EN STANDARD FOR SUNDHEDSDATAInformat ionsmodel , termino log i , constra ints og fys i ske formater
• Ressource• Grundlæggende byggeblok i
informationsmodellen• Består af et eller flere elementer
• Backbone Element• Element som er defineret af og
indgår i en ressource, fx Contact• Complex Data Type
• Element med attributter som er andre elementer, fx Address
• Primitive Data Type• Element med en simpel værdi, fx
string, boolean, date, code
Grundlæggende byggesten
INFORMATIONSMODEL
• Indeholder 145 ressourcer, som beskriver de grundlæggende begreber
• Ressourcer refererer til hinanden i en sammenhængende model
• Ressourcer har de elementer, der adresserer ca. 80% af anvendelser
• Ressourcer kan og bør profileres til den konkrete anvendelse
Ressourcer
INFORMATIONSMODEL
• Code• En streng med en værdi fra et givet
kodesystem• Coding
• En code med angivelse af det anvendte terminologisystem (SKS, ICD-10, SnomedCT, …) eller ValueSet
• CodeableConcept• En eller flere Codings eller en tekst
• ValueSet• Et afgrænset sæt af koder fra en
eller flere klassifikationer (CodeSystems)
Begreber og referencer til begreber
TERMINOLOGI
• Termer• Begrænset til et givet værdisæt via
Code, Coding, CodeableConcepteller et ValueSet
• Begrænsning kan være required, extensible, preferred eller example
• Referencer• Begrænset til givne ressource-typer
• Kardinalitet• Angivelse af attributtens kardinalitet• Understøttelseskrav (must support)
• Komplekse regler (FHIRPath udtryk)• Fx Patient.contact – name.exists() or
telecom.exists() or address.exists() or organization.exists()
CONSTRAINTS OG REGLER
Uafhængig af format - typisk XML eller JSON
Formater
<?xml version="1.0" encoding="UTF-8"?>
<Patient xmlns="http://hl7.org/fhir">
<id value="example"/>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml">Læsbar beskrivelse</div>
</text>
<identifier>
<use value="usual"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/v2-0203"/>
<code value="MR"/>
</coding>
</type>
<system value="urn:oid:1.2.36.146.595.217.0.1"/>
<value value="12345"/>
<period>
<start value="2001-05-06"/>
</period>
<assigner>
<display value="Acme Healthcare"/>
</assigner>
</identifier>
<active value="true"/>
<name>
<use value="official"/>
<family value="Chalmers"/>
<given value="Peter"/>
<given value="James"/>
</name>
…
{
"resourceType": "Patient",
"id": "example",
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Læsbar beskrivelse</div>"
},
"identifier": [
{
"use": "usual",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
"code": "MR"
}
]
},
"system": "urn:oid:1.2.36.146.595.217.0.1",
"value": "12345",
"period": {
"start": "2001-05-06”
},
"assigner": {
"display": "Acme Healthcare"
}
}
],
"active": true,
"name": [
{
…
EN STANDARD SOM KAN TILPASSESProf i ler ing og anvendelse som passer t i l behovet
• Strammere constraints og regler• Færre lovlige termer• Færre lovlige typer af referencer• Mindre kardinalitet• Flere ”must support” krav• Yderligere komplekse regler
• Slicing• Præcisering af indhold i lister
• Extension• Definere yderligere attributter
Ex: Patient med krav om dansk cpr-nrEx: Organisation med krav om SOR-kode
Tilpasning af modellen
PROFILERING
MessagingOrganization.identifier• Skal indeholde
• Én SOR kode• Ét EAN nummer
• Kan indeholde• Flere identifiers
• Skelnes med slicing discriminator• SOR ~ system=”urn:sds:sor”• EAN ~ system=”urn:medcom:ean”
Slicing eksempel
PROFILERING
ClinicalEmailComposition.section.section• Udvidet med dato-felt for sektionen
• Feltet er påkrævet• Værdien skal være en dato
Extension eksempel
PROFILERING
• StructureDefinition• Indeholder profilering af en ressource
eller en extension• ”differential” beskriver ændringerne
• CodeSystem• Erklærer eksistensen af en
klassifikation og kan helt eller delvist indeholde koderne
• ValueSet• Udpeger koder fra et eller flere
CodeSystems• Anvendes fra Coding attributter i
StructureDefinitions
GEVINST: FHIR værktøjer kan maskinelt validere om ressourcer overholder profilerne
Profileringsressourcer
PROFILERING
• API’er og services• FHIR definerer anvendelsen af
ressourcer i et REST API og dermed snitfladen til et system (FHIR Server)
• Beskeder• Beskeder defineres via profilering af
Bundle ressourcer• Dokumenter
• Dokumenter defineres via profilering af Bundle ressourcer
• Databaseformat• FHIR kan anvendes som format i
database, hvor profileringen beskriver datastrukturen af ressourcerne
Samme indhold uanset typen af interoperabilitet
ANVENDELSE
• Beskeden opbygges i en Bundle ressource• ”id” er beskedens identifikation• ”type” skal være message• ”entry” indeholder ressourcerne
• MessageHeader• ”id” er indholdets identifikation• ”event” er hændelsen• ”sender” og ”destination.receiver”
refererer til entries• Øvrigt indhold
• Modtageren behandler beskeden og skal sende et eller flere responses• ”identifier” er originalens MessageHeader.id
Beskedudveksling
ANVENDELSE
Format af en besked - typisk XML eller JSON
ANVENDELSE
<?xml version="1.0" encoding="UTF-8"?>
<Bundle xmlns="http://hl7.org/fhir">
<id value="10bb101f-a121-4264-a920-67be9cb82c74"/>
<type value="message"/>
<timestamp value="2019-07-14T11:15:33+10:00"/>
<entry>
<fullUrl value="urn:uuid:267b18ce-3d37-4581-9baa-6fada338038b"/>
<resource>
<MessageHeader>
<id value="267b18ce-3d37-4581-9baa-6fada338038b"/>
<eventCoding>
<system value="http://example.org/fhir/message-events"/>
<code value="patient-link"/>
</eventCoding>
<source>
<endpoint value="http://example.org/clients/ehr-lite"/>
</source>
<responsible>
<reference value="http://acme.com/ehr/fhir/Practitioner/2323-33-4"/>
</responsible>
<focus>
<reference value="http://acme.com/ehr/fhir/Patient/pat1"/>
</focus>
<focus>
<reference value="http://acme.com/ehr/fhir/Patient/pat12"/>
</focus>
</MessageHeader>
</resource>
</entry>
<entry>
<fullUrl value="http://acme.com/ehr/fhir/Patient/pat1"/>
…
{
"resourceType": "Bundle",
"id": "10bb101f-a121-4264-a920-67be9cb82c74",
"type":”message",
"timestamp": "2019-07-14T11:15:33+10:00",
"entry": [
{
"fullUrl": "urn:uuid:267b18ce-3d37-4581-9baa-6fada338038b",
"resource": {
"resourceType": "MessageHeader”,
"id": "267b18ce-3d37-4581-9baa-6fada338038b",
"eventCoding": [
{
"system": "http://example.org/fhir/message-events",
"code": ”patient-link"
}
"source": {
"endpoint": "http://example.org/clients/ehr-lite"
}
"responsible": {
"reference": "http://acme.com/ehr/fhir/Practitioner/2323-33-4"
},
"focus": {
"reference": "http://acme.com/ehr/fhir/Patient/pat1"
},
"focus": {
"reference": "http://acme.com/ehr/fhir/Patient/pat12"
}
}
},
{
…
SPØRGSMÅL