1. Martin Krasser & Christian Ohr | ICW AG
Die Open eHealth
Integration Platform
(IPF)
2. Martin Krasser
Position
Software architect and engineer @ ICW
Fokus
Verteilte Systeme
Anwendungsintegration, Systemintegration
Sicherheit 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
...
3. Christian Ohr
Position
Software architect and engineer @ ICW
Fokus
Anwendungsentwicklung
Anwendungsintegration
Mitarbeit in eHealth-Standardisierungsgremien
Open Source Projekte
Open eHealth Integration Platform (Committer)
http://gforge.openehealth.org/gf/project/ipf
HAPI (Contributor)
http://hl7api.sourceforge.net
4. Agenda
IPF Grundlagen
Anwendungsfälle
Healthcare Standards und IPF
Beispiel & Demo: IHE Transaktion (ITI-8)
5. Integrationsoptionen
Portals
Presentation Mashups Other
Layer Applications
Messages,
Service Layer SOA/ROA Other
(Business Logic) Applications
IPF
Shared DB
Data Replication Other
Store Applications
6. 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
7. Was ist IPF?
• Artikel
• Introduction to the Open eHealth Integration Platform,
by Martin Krasser
• http://architects.dzone.com/articles/introduction-open-
ehealth
8. 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
9. Camel Architektur
Domain-specific languages (DSL) Components
Connectivity to external systems or
resources. More than 70 components!
Endpoints
Send/receive messages to/from
external systems
Processors
Extension
points
Transform, validate, filter, router etc.
Routes
Endpoints connected by processors
using DSL
10. Bsp.: Programmieren mit Camel
Überblick
Enterprise Integration Patterns (EIPs)
Domänenspezifische Sprache (DSL)
Beispiel
Filterung von XML Nachrichten über HTTP
http://somewhere.com:8090/subscribers http://somewhere.com:8080/subscribers
D D
HTTP XPath HTTP
Endpoint Filter Endpoint
(inbound) (outbound)
Camel DSL (Java)
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
ICW Developer Conference
20. 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
21. IPF Camel Erweiterungen
• Integrationskomponenten
• IHE Profile: XDSa, XDSb, PIX (v2/v3), PDQ (v2/v3), ...
IHE Profil (Konzept)
IHE IHE
Actor 2 Actor 3 Application Layer
Actor Interface Actor Interface
IHE IHE
Transaction 1 Transaction 2 Integration Layer
Actor Interface
IHE
Actor 1 Application Layer
Application Component
Integration Component
Message
22. 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)
23. Bsp.: Programmieren mit IPF
Überblick
Routing DSL Erweiterungen
Content DSL (HL7v2)
Beispiel
Validierung und Filterung von HL7 Nachrichten über HTTP
D ? D
HTTP HL7 HL7 HTTP
Endpoint Validator Filter Endpoint
(inbound) (outbound)
IPF DSL (Groovy)
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
24. Bsp: IHE ITI-8
Patientenmanagement
HL7 ADT-A01: Patient admission
MLLP HL7
IHE ITI-8
msg
msg ADT-A08: Patient update
ACK, NAK
Integration layer ?
Patient Service
Service layer
Klinisches Informationssystem
25. Bsp: Integration layer
HL7
HL7
msg
msg
MLLP
IHE ITI-8 Bean
endpoint binding
endpoints
A01 Transformer
?
A08 Transformer
HL7 Message Content- HL7 to
on error
message queue based domain
validation router object
transformer
Mail
server
user2@localhost