Upload
krasserm
View
2.861
Download
1
Embed Size (px)
DESCRIPTION
Citation preview
Die Open eHealth Die Open eHealth Integration Platform Integration Platform (IPF) (IPF)
Martin Krasser & Christian Ohr | ICW AG
Martin Krasser Position
Software architect and engineer @ ICW
Fokus
Verteilte SystemeAnwendungsintegration, SystemintegrationSicherheit in verteilten Systemen
Open Source Projekte
Open eHealth Integration Platform (Founder) http://gforge.openehealth.org/gf/project/ipf
Apache Camel (Committer) http://camel.apache.org
...
Christian Ohr Position
Software architect and engineer @ ICW
Fokus
AnwendungsentwicklungAnwendungsintegrationMitarbeit in eHealth-Standardisierungsgremien
Open Source Projekte
Open eHealth Integration Platform (Committer) http://gforge.openehealth.org/gf/project/ipf
HAPI (Contributor)http://hl7api.sourceforge.net
Agenda IPF Grundlagen Anwendungsfälle Healthcare Standards und IPF Beispiel & Demo: IHE Transaktion (ITI-8)
Integrationsoptionen
Presentation Layer
Service Layer(Business Logic)
Data Store
Other Applications
Messages,SOA/ROA
IPF
Other Applications
PortalsMashups
Data Store
Other Applications
Shared DBReplication
Was ist IPF?• Open Source Java/Groovy Integrations-Framework
für den Healthcare Bereich• Hilft dem Entwickler, Healthcare Standards (HL7, IHE, CDA ...) zu
implementieren
• Fokus auf erweiterbare Healthcare DSLs
• Basiert auf dem Apache Camel Integrations-Framework
• Deployment Optionen: embedded, standalone und distributed
• Integrations-Platform auf OSGi Basis• Dynamisches Laden/Entladen von Integrationsanwendungen
• Development and monitoring tools (IPF Tools Projekt)
• IPF als Eclipse plugin
• Open Source seit Nov. 2008• http://gforge.openehealth.org/gf/project/ipf/
• Letztes Release: IPF 2.0.0
• Apache 2 Lizenz
Was ist IPF?• Artikel
• Introduction to the Open eHealth Integration Platform, by Martin Krasser
• http://architects.dzone.com/articles/introduction-open-ehealth
Was ist Apache Camel?• Open Source Java Integrations-Framework
• “… framework that focuses on making integration easier and more accessible to developers …”
• “… concrete implementations of all the widely used Enterprise Integration Patterns …”
• “… connectivity to a great variety of transports and APIs …“
• “… easy to use Domain Specific Language (DSL) to wire EIPs and transports together …”
From: Apache Camel: Integration Nirvana, by Jonathan Anstey
http://architects.dzone.com/articles/apache-camel-integration
Camel ArchitekturDomain-specific languages (DSL)
Ext
ensi
onpo
ints
ComponentsConnectivity to external systems or resources. More than 70 components!
EndpointsSend/receive messages to/from external systems
ProcessorsTransform, validate, filter, router etc.
RoutesEndpoints connected by processors using DSL
http://somewhere.com:8090/subscribers
ICW Developer Conference
Bsp.: Programmieren mit CamelÜberblickEnterprise Integration Patterns (EIPs)
Domänenspezifische Sprache (DSL)
BeispielFilterung von XML Nachrichten über HTTP
HTTPEndpoint(inbound)
HTTPEndpoint
(outbound)
XPathFilter
D D
from("jetty:http://0.0.0.0:8090/subscribers") // inbound HTTP endpoint.filter().xpath("/person[@name='John']") // XPath filter.to("http://somewhere.com:8080/subscribers"); // outbound HTTP endpoint
Camel DSL (Java)
http://somewhere.com:8080/subscribers
Anwendungsfall: Krankenhaus Unterschiedliche Szenarien
Patientenverwaltung Leistungsanforderung Medizinische Dokumentation Medizinische Spezialanwendungen
Heterogene Systemlandschaft Einsatz vieler unterschiedlicher vernetzter
Anwendungen Ausgeprägte Historie Standardfall: ereignisgetriebene Kommunikation
Patienten- Management
KlinischesInformations-
system
Küche
Labor-IS
Radiologie-IS
PACS
Archiv
eHealth Enterprise
Enterprise Departments
Community Integration
Cross-Community Integration
Patienten- Management
KlinischesInformations-
system
Küche
Labor-IS
Radiologie-IS
PACS
Archiv
Standards
Patienten- Management
KlinischesInformations-
system
Archiv
Register Patient– IHE „PIX“ Profile
HL7 v2.3 ADT^A01 MLLP (Socket)
Register Document– IHE „XDS.b“ Profile
ebXML WebService (Soap 1.2) HTTP(S)
Audit– IHE „ATNA“ Profile
RFC 3881 Syslog UDP
?
Wie kann IPF dabei helfen?• Unterstützung bei funktionaler Integration
über Standards• Datenaustausch (z.B. HL7, CDA)• Transportprotokolle (z.B. MLLP, HTTP,
WebServices)
• Kapselung kompletter Standard-Stacks• IHE IT-Infrastructure (ITI)• HITSP
IPF Camel Erweiterungen• Integrationskomponenten
• IHE Profile: XDSa, XDSb, PIX (v2/v3), PDQ (v2/v3), ...
IHEActor 1
IHEActor 2
Actor Interface
Actor Interface
IHEActor 3
Actor Interface
IHETransaction 1
IHETransaction 2
Application Layer
Integration Layer
Application Layer
Message
Application Component
Integration Component
IHE Profil (Konzept)
IPF Camel Erweiterungen• Content DSL
• HL7v2 DSL
• CDA/CCD DSL
• Routing (Camel) DSL Erweiterungen
• HL7/CDA Validierung ...
• Schematron Validierung ...
• Groovy closure support
• ...
• DSL Erweiterungsmechanismus auf Groovy Basis• Zur Definition neuer DSL Elemente (z.B. für projekt-spezifische DSLs)
Bsp.: Programmieren mit IPFÜberblickRouting DSL Erweiterungen
Content DSL (HL7v2)
BeispielValidierung und Filterung von HL7 Nachrichten über HTTP
?
HTTPEndpoint(inbound)
HTTPEndpoint
(outbound)
HL7Filter
D D
HL7Validator
from('jetty:http://0.0.0.0:8090/admissions') // inbound HTTP endpoint.unmarshal().ghl7() // HL7 parser.validate().ghl7() // HL7 validator.filter {it.in.body.PID[8].value == 'F'} // HL7 filter using HL7 DSL.to('http://localhost:8080/admissions') // outbound HTTP endpoint
IPF DSL (Groovy)
Bsp: IHE ITI-8Patientenmanagement
Klinisches Informationssystem
?Integration layer
Service layer
MLLP HL7 msg
HL7 msg
ADT-A01: Patient admissionADT-A08: Patient updateACK, NAK
IHE ITI-8
Patient Service
Bsp: Integration layer
?
IHE ITI-8 endpoint
HL7 msg
HL7 msg
Message queue
MLLP
HL7 message validation
Content-based router
HL7 to domain object transformer
Bean binding
endpoints
A01 Transformer
A08 Transformer
Mail server
on error
user2@localhost