Intro HL7 versie 3
Tom de Jong
[email protected] 22 november 2012
Definitie
van Health Level Seven Health Level Seven (HL7) is een applicatieprotocol voor elektronische gegevensuitwisseling in de gezondheidszorg.
De aanduiding ‘Seven’ slaat op het feit dat het protocol betrekking heeft op laag 7 van OSI netwerkmodel (de applicatielaag).
HL7 Standaarden • Versie 2.x • Messaging methodiek (1987+)
• Versie 3 • Messaging methodiek (1995+) • Document methodiek (1999+) •
CDA: Clinical Document Architecture
• Services methodiek (parallel)
• Geadopteerd: • CCOW: desktop integration • Arden Syntax: decision support 3
HL7 v2 (A01-)bericht MSH|^~\&|ZIS|AMC|||2003040112149||ADT^A01|20030401112149 |P|2.2|||AL|NE|
EVN|A01|200204010800|20020401112149||| PID||""|8005069^9^M11||Vandenberg^Anne^E^^""||19601012|F||| Prinsengracht^22^Amsterdam^^1000PJ^""^P|| 020-555366|""||""|||||||""|""||||
Message Type
Subfield
Segment Segment
Field
Subfield
HL7 v3: Fragment
december ’12
© Stichting HL7 Nederland
5
Wat is essentieel aan HL7 v3? • Niet berichten, documenten of services. • Niet XML of SOAP of rooksignalen. • Niet AORTA/LSP of CCR/CCD. • • • • •
Wel: Wel: Wel: Wel: Wel:
referentie informatie model (RIM) conceptuele modelleermethode (HDF) scheiding tussen data- en procesmodel datatypes (elementaire bouwstenen) regels voor identificatie & classificatie
Versie 3 is gebaseerd op modellen • Modellen in V3 bieden een ‘taal’ voor het begrijpen en vastleggen van de betekenis, de vorm en het gedrag van gegevensuitwisseling in de gezondheidszorg • Berichten zijn het resultaat van het samenvoegen van gegevens- en procesmodellen: wanneer verstuur ik wat?
Informatiemodellen • Elk informatiemodel binnen HL7 versie 3 bestaat uit de volgende componenten: • Klassen (classes), hun attributen (attributes) en de associaties ertussen (relationships) • Data types voor alle attributen en vocabulary domains voor gecodeerde attributen
Reference Information Model RIM • Vier+twee basisklassen van het RIM (backbone) Act Relationship
Role Relationship
Entity
Role
Participation
Act
Person classCode*: <= PSN determinerCode*: <= PSN name: EN [0..*] birthTime: TS [0..*]…
model voorbeeld Person A
Practitioner
perfomer Anamnese
Person B
Patient
subject
1..1 patientPerson Patient classCode*: <= PAT id*: II [1..1] addr: AD [0..1] telecom: TEL [0..*]
Person
1..1 patient subject typeCode*: <= SBJ
1..1 practitioner playedBy scopedBy
Organization
Practitioner classCode*: <= PRT id*: II [1..1] telecom: TEL [0..*]
performer typeCode*: <= PRF time: IVL
Anamnese classCode* <= xy moodCode* <= xy id*: II [1..1] ...
Reference Information Model RIM
• Modelering door specialisatie + „klonen“ Persoon A classCode
Arts classCode
Uitvoerder typeCode
RIM
Anamnese classCode Persoon B classCode
Patiënt classCode
“Object” typeCode
Entity
Role
Participation
Act
HL7 Development Framework (HDF) scheiding van data- en (optioneel) procesmodel Dynamic Use-Case Storyboard
Interaction analysis: Interaction Model
Implementable Domain analysis: D-MIM
Message/Document
Specification (based on ITS) Message design: R-MIM
Static
Document design: CDA
Data Types • Data types zijn de basale bouwstenen voor het samenstellen van iedere gegevensstructuur in HL7 versie 3, of het nu gaat om berichten of documenten. • Data types bepalen de eigenschappen van een gegevenselement, maar ook de vorm waarin het wordt weergegeven (d.m.v. vaste XML representatie). • Drie releases in gebruik: • DT R1 • DT R1.1 • DT R2
HL7 v3 Basic Data types (Excerpt)
• • • • • • • •
ANY BL ST INT REAL QTY PQ II
• ED
Boolean Character String Integer Number Real Number Quantity Physical Quantity Instance Identifier Encapsulated Data
• CV • CE • CD
Code Value Coded Equivalent Concept Descriptor • EN Entity Name • PN Person Name • ON Organization Name • TEL Telecom Address • AD Postal Address • TS Point in Time 14
Representatie van data types •
•
•
Elk data type heeft: •
Abstracte specificatie (semantiek, eigenschappen)
•
XML representatie (syntax, formaat, structuur)
XML representatie is vast binnen HL7v3 •
dus gelijke vorm in berichten en documenten
•
stabiele bouwstenen voor alle HL7v3 varianten
Voorbeelden:
V3 coderingssysteem
(bijv. G-Standaard als bron van codes)
Nabrander… • Al het voorgaande geldt voor ALLE implementatievormen (dus bijv. bij berichten via AORTA/DBC Grouper, documenten zoals CCD) van HL7v3. • Je kunt dus niet zeggen: HL7v3 óf CCD, want CCD is een vorm van CDA (later meer) en CDA is een vorm van HL7 versie 3. • Tot zover de overeenkomsten… nu de verschillen…
De smaken binnen HL7v3:
uitwisselmechanismes
Gegevensmodel (bijv. deel van medisch dossier van specialist)
Message payload Transmission Wrapper Transport: van waar naar waar?
ControlAct Wrapper Transactie: door wie en waarom? Payload
Transmission wrapper Entry Point 1..1 Sender
Message (Message)
…
Id: II [1..1] interactionId: II [1..1] Receiver creationTime: … profileId: 1..1 … …
1..1
1..1
Device classCode <= DEV Id: II [1..*] Telecom: BAG …
0..1
Agent
0..1
classCode: AGNT
0..1 „Exit Point“
ControlActProcess classCode <= CACT …
ControlAct Wrapper Stub
Organization classCode <= ORG Id: Name: Telecom: BAG …
ControlAct Wrapper Stub 22
Control Act Wrapper
Entry Point ControlActProcess
0..*
classCode <= CACT
CMET (Assigned)
AuthorOrPerformer
R_AssignedPerson
typeCode: CS time: IVL signatureCode:
[universal] (COCT_MT090100)
0..*
code: CD CWE [0..1] <=HL7TriggerEventCode effectiveTime: IVL [0..1] …
InformationRecipient typeCode: CS
0..*
DataEnterer typeCode: CS Subject typeCode: <= SUBJ contextConductionInd: BL
Payload Stub
Act classCode <= ACT…
0..* „Exit Point“
ControlAct Wrapper
Payload Stub
Interacties in het ‘berichtmodel’ A
Order of Query
B
Initial Trigger
Execute reciever responsibilities
Accept Acknowledgement
Application Response - OK
OR Application Response - Reject
Notificatie
Notification
Initial Trigger
NO reciever responsibilities
Accept Acknowledgement
25
Interaction = Payload (Static Model) + wrappers, Trigger Event & Receiver Responsibilities
Transmission Wrapper ControlAct Wrapper
Payload
Berichten als body bij aanroepen van een web service (bijv. AORTA)
Voorschriftbericht.wsdl WSDL Voorschriftbericht_Service Service http://www.xis.nl/Voorschriftbericht Service Location Diagram Communicatie op HTTPniveau: Iedere pijl van client naar server is een HTTP-request, iedere pijl terug van server naar client daaronder is de bijbehorende HTTP response.
Voorschriftbericht
Operations Voorschriftbericht_ActiveerM edicatievoorschrift SOAP Action Input
"urn:hl7-org:v3/Voorschriftbericht_ActiveerMedicatievoorschrift"
hl7:PORX_IN932000NL Schema Voorbeelden Output
PORX_IN932000NL.xsd PORX_EX932000NL_01.xml PORX_EX932000NL_02.xmlPORX_EX932000NL_03.xml
hl7:MCCI_IN000002 Schema Voorbeelden
MCCI_IN000002.xsd MCCI_EX000002_01.xml MCCI_EX000002_01_TOCK.xml MCCI_EX000002_02.xmlMCCI_EX000002_03.xml MCCI_EX000002_05.xml
Zelfde payload, maar nu in CDA document Header Clinical Document
Patient Provider
Body Body Structures (Sections)
Body Entries (Clinical Statements) Observation
Procedure
Encounter
Medication ...
Main Components of CDA ... <StructuredBody> <Section> Narrative Block ... ... E N T R <ExternalObservation> External I ... References E S <Section> <Section>... 29
Header
S E C T I O N S
B O D Y
D O C U M E N T
CDA Sections: Level 1 • Level 1 <section> 29.08.2005: History Onset of asthma in his teens. He was hospitalized twice last year, and already twice this year.
30
CDA sections: Level 2 • Level 2 <section>
29.08.2005: History Onset of asthma in his teens. He was hospitalized twice last year, and already twice this year. 31
<section> asthma in his teens. He was hospitalized twice last year, and alread Level 3 twice this year. • procedures <entry typeCode="COMP"> • Obs.
32
CDA sections: Level 3 •
Zelfde betekenis, andere verpakking (m.a.w. ander uitwisselmechanisme) • Document header en sections vervullen vergelijkbare rol als wrappers in berichten. • Zijn alleen niet gericht op transport en transactie, maar op documentkenmerken, tekstuele weergave en sectie-indeling.
Verschil in XML Schema (representatie ‘over de lijn’): • Bij messaging: elke payload eigen Schema (gebaseerd op R-MIM van bijbehorend model).
• Bij CDA document: maar één XML Schema. Elke invulling ervan gebeurt d.m.v. ‘templates’.
• XML Schema van huidige CDA Release (R2) bevat slechts een deel van RIM elementen. • Gevolg van bovenstaande zaken is: •
Niet alle concepten zijn (zuiver) weer te geven in CDA.
•
Representatie van dezelfde (model)concepten zal (meestal) tot een verschillende representatie leiden.
Accepteer dat ze vooralsnog beide bestaan, maar laat ze convergeren: • Nu reeds mogelijk: • Gebruik indien mogelijk XML transformaties • Gebruik voor bestaande bouwstenen extensies op CDA om (bericht)modellen te kunnen hergebruiken
• Opties op termijn: • Verander clinical statement in CDA zodanig dat het alle berichtmodellen kan afdekken (CDA R3) • Baseer berichtmodellen niet meer op aparte XML Schema’s, maar op datzelde clinical statement!