Martin Krasser & Christian Ohr | ICW AG


Die Open eHealth
Integration Platform
(IPF)
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
     ...
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
Agenda
   IPF Grundlagen
   Anwendungsfälle
   Healthcare Standards und IPF
   Beispiel & Demo: IHE Transaktion (ITI-8)
Integrationsoptionen

                     Portals
   Presentation      Mashups         Other
      Layer                        Applications

                       Messages,
  Service Layer        SOA/ROA       Other
  (Business Logic)                 Applications
                         IPF
                     Shared DB
      Data           Replication     Other
      Store                        Applications
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 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
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
Anwendungsfall: Krankenhaus
 Unterschiedliche Szenarien
     Patientenverwaltung
     Leistungsanforderung
     Medizinische Dokumentation
     Medizinische Spezialanwendungen
 Heterogene Systemlandschaft
   Einsatz vieler unterschiedlicher vernetzter
    Anwendungen
   Ausgeprägte Historie
   Standardfall: ereignisgetriebene Kommunikation
eHealth Enterprise
              Patienten-
             Management

   Küche




  Labor-IS
               Klinisches
             Informations-   Radiologie-IS
                system



                                PACS


                Archiv
Enterprise Departments
Community Integration
Cross-Community Integration
Patienten-
           Management

 Küche




Labor-IS
             Klinisches
           Informations-   Radiologie-IS
              system



                              PACS


              Archiv
Standards
Patienten-      Register Patient
Management         – IHE „PIX“ Profile
                       HL7 v2.3 ADT^A01
                       MLLP (Socket)
                 Register Document
                   – IHE „XDS.b“ Profile ?
                       ebXML
  Klinisches
Informations-          WebService (Soap 1.2)
   system              HTTP(S)
                 Audit
                   – IHE „ATNA“ Profile
                       RFC 3881
   Archiv              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), ...


   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
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
Ü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
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
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

Die Open eHealth Integration Platform

  • 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 ApacheCamel? • 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 mitCamel Ü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
  • 11.
    Anwendungsfall: Krankenhaus  UnterschiedlicheSzenarien  Patientenverwaltung  Leistungsanforderung  Medizinische Dokumentation  Medizinische Spezialanwendungen  Heterogene Systemlandschaft  Einsatz vieler unterschiedlicher vernetzter Anwendungen  Ausgeprägte Historie  Standardfall: ereignisgetriebene Kommunikation
  • 12.
    eHealth Enterprise Patienten- Management Küche Labor-IS Klinisches Informations- Radiologie-IS system PACS Archiv
  • 13.
  • 14.
  • 15.
  • 16.
    Patienten- Management Küche Labor-IS Klinisches Informations- Radiologie-IS system PACS Archiv
  • 17.
  • 19.
    Patienten-  Register Patient Management – IHE „PIX“ Profile  HL7 v2.3 ADT^A01  MLLP (Socket)  Register Document – IHE „XDS.b“ Profile ?  ebXML Klinisches Informations-  WebService (Soap 1.2) system  HTTP(S)  Audit – IHE „ATNA“ Profile  RFC 3881 Archiv  Syslog  UDP
  • 20.
    Wie kann IPFdabei 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 mitIPF Ü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