SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a Die Open eHealth Integration Platform

SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaGeorg Knon
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunk
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunk
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & ToolsUlrich Krause
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeKremer Consulting
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenChristian Münch
 
Deutsche Wolke
Deutsche WolkeDeutsche Wolke
Deutsche WolkeThomas Uhl
 
Hosting Provider Summit Mai 2012
Hosting Provider Summit Mai 2012Hosting Provider Summit Mai 2012
Hosting Provider Summit Mai 2012Thomas Uhl
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computingWolfgang Weigend
 
Lotus Foundations Workshop Teil1
Lotus Foundations Workshop Teil1Lotus Foundations Workshop Teil1
Lotus Foundations Workshop Teil1Andreas Schulte
 
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und RaumfahrtforschungPython, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und RaumfahrtforschungAndreas Schreiber
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
RESTful APIs mit Dart
RESTful APIs mit DartRESTful APIs mit Dart
RESTful APIs mit DartNane Kratzke
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 

Semelhante a Die Open eHealth Integration Platform (20)

SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use Case
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
Verteilte GI-Systeme
Verteilte GI-SystemeVerteilte GI-Systeme
Verteilte GI-Systeme
 
Interaktives Web
Interaktives WebInteraktives Web
Interaktives Web
 
mühlnickel beit_PechaKucha
mühlnickel beit_PechaKuchamühlnickel beit_PechaKucha
mühlnickel beit_PechaKucha
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of Life
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 
Deutsche Wolke
Deutsche WolkeDeutsche Wolke
Deutsche Wolke
 
Hosting Provider Summit Mai 2012
Hosting Provider Summit Mai 2012Hosting Provider Summit Mai 2012
Hosting Provider Summit Mai 2012
 
Ajax, Comet & Co.
Ajax, Comet & Co.Ajax, Comet & Co.
Ajax, Comet & Co.
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
 
Lotus Foundations Workshop Teil1
Lotus Foundations Workshop Teil1Lotus Foundations Workshop Teil1
Lotus Foundations Workshop Teil1
 
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und RaumfahrtforschungPython, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und Raumfahrtforschung
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
RESTful APIs mit Dart
RESTful APIs mit DartRESTful APIs mit Dart
RESTful APIs mit Dart
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 

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 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
  • 11. Anwendungsfall: Krankenhaus  Unterschiedliche Szenarien  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
  • 16. Patienten- Management Küche Labor-IS Klinisches Informations- Radiologie-IS system PACS Archiv
  • 18.
  • 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 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