SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Open eHealth Integration Platform (IPF)
ICW Developer Conference
Martin Krasser / May 5, 2009
Martin Krasser

    Position
     • Software architect and engineer


    Focus
     • Distributed systems
     • Application integration
     • Application security
     • ...


    Open source projects
     • Open eHealth Integration Platform (Founder)
       http://gforge.openehealth.org/gf/project/ipf
       •   Security Annotation Framework (Founder)
           http://www.sourceforge.net/projects/safr
       •   Apache Camel (Contributor)
           http://camel.apache.org

2   May 5, 2009   ICW Developer Conference
Agenda

    Part 1
     • IPF Introduction
     • Programming IPF
     • Demo



    Part 2
     • OSGi Support
     • IPF Services
     • Demos



    Part 3
     • Outlook

4   May 5, 2009   ICW Developer Conference
IPF Introduction (1/5)

    Framework for implementing integration logic
       •   Healthcare domain
       •   General-purpose

    Platform to deploy and run integration solutions
     • OSGi-based with IPF services in service registry
     • Embedded, standalone and distributed deployments


    Based on Apache Camel
     • Routing and mediation engine
     • Enterprise Integration Patterns (EIPs)
     • Domain-specific language (DSL)

5   May 5, 2009   ICW Developer Conference
IPF Introduction (2/5)

    Project
       •   Hosted at the Open eHealth Foundation
       •   Open source under Apache License, Version 2
       •   Latest release – IPF 1.6.0 (April 2009)
       •   http://gforge.openehealth.org/gf/project/ipf/
                  -   Subversion repository
                  -   Release filesystem
                  -   Issue tracker
                  -   Mailing lists
       •   http://repo.openehealth.org
                  -   Reference documentation
                  -   Contribution guidelines
                  -   Build server and build reports
                  -   Maven and OSGi bundle repository
6   May 5, 2009       ICW Developer Conference
IPF Introduction (3/5)

    Technologies
       •   Java and Groovy
       •   Springframework
       •   Apache ActiveMQ (optional)
       •   „Camel components“ (for connectivity)

    Connectivity
     • Protocols (HTTP, SOAP, FTP, SMTP, MLLP ...)
       •   Interfaces (JMS, JPA, JDBC ...)
       •   More than 70 Camel (connectivity) components!




7   May 5, 2009   ICW Developer Conference
IPF Introduction (4/5)

    Development
     • Focus on programming (internal DSL)
     • DSL is easy to extend
     • Platform is easy to extend
     • No graphical route designer
     • ...



    IPF applications @ ICW
      • Medical Service Bus (MSB)
      • IHE profiles (PIX, PDQ, XDS)
      • Device connectivity server (DCS)
      • LifeSensor adapter (LSA)
      • IPF inside eHF
      • ...

8   May 5, 2009   ICW Developer Conference
IPF Introduction (5/5)

    System overview


                    IHE support                      Code mapping




                                                                                         OSGi support
                                                                          Performance
                                                                          test support




                                                                                                        Management consoles
                   CDA support                     Flow management




                                                                                                                              Development tools
                   HL7 support                   Large message support

                  Core processors                  Event infrastructure

                                                IPF Core

                                              Apache Camel


              Part of presentation and demos
9   May 5, 2009    ICW Developer Conference
Programming with Camel

     Overview
        •   Components                                  Connectivity to external systems or resources
        •   Endpoints                                   Send/receive messages to/from external systems
        •   Processors                                  Transform, validate, filter, route, etc. messages
        •   Routes                                      Endpoints connected by processors using DSL

     Route example



                     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='Martin']")    // XPath filter
      .to("http://localhost:8080/log");             // outbound HTTP endpoint

10   May 5, 2009    ICW Developer Conference
Programming with IPF
     Overview
        •   All Camel features available
        •   Dynamic language support (Groovy)
        •   DSL extension mechanism (Groovy meta-programming)
        •   Predefined DSL extensions (Contribution from modules)

     Route example


                                                 ?
                     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
       .to('http://localhost:8080/log')                                   //    outbound HTTP endpoint

11   May 5, 2009   ICW Developer Conference
Demo

     Implement example route starting from scratch

                                                 ?
                     HTTP                       HL7       HL7          HL7         HTTP
                   Endpoint                   Validator   Filter   Transformer    Endpoint
                   (inbound)                                                     (outbound)




        •   HTTP endpoints
        •   HL7 validation
        •   HL7 filtering
        •   HL7 transformation




12   May 5, 2009   ICW Developer Conference
Agenda

     Part 1
      • IPF Introduction
      • Programming IPF
      • Demos



     Part 2
      • OSGi Support
      • IPF Services
      • Demos



     Part 3
      • Outlook
      • Q&A


13   May 5, 2009   ICW Developer Conference
OSGi Support (1/3)

     IPF components are OSGi bundles
        •   Deployable to any OSGi R4 platform
        •   Tested with Eclipse Equinox 3.4.1


     IPF bundles register platform services
       • Flow manager, mapping service ...
       • Consumed by IPF applications



     IPF extender bundles activate DSL extensions
       • DSL extensions contributed by platform and application bundles



14   May 5, 2009   ICW Developer Conference
OSGi Support (2/3)

     Technologies
        •   Eclipse Equinox 3.4.1
        •   Spring Dynamic Modules (DM)


     Tooling
      • maven-bundle-plugin to generate MANIFEST.MF
        •   Eclipse Plugin Development Environment (PDE)




15   May 5, 2009   ICW Developer Conference
OSGi Support (3/3)

     IPF runtime
        •   OSGi platform for IPF applications




16   May 5, 2009   ICW Developer Conference
Demo

     Implement example route as IPF OSGi application

                                                                Proxy
                                             ?
              HTTP                         HL7       HL7                           HTTP
            Endpoint                     Validator   Filter                       Endpoint    route
            (inbound)                                                            (outbound)   bundle
       OSGi Service
       Registry
                                                                     Processor




                                                                  HL7                         service
                                                              Transformer                     bundle
        •    Two OSGi bundles
        •    Deploy to IPF runtime
        •    Change service implementation at runtime
19   May 5, 2009        ICW Developer Conference
Flow management (1/2)

     Purpose
                   •        Monitor messages processed by IPF applications
                   •        Support manual redelivery (replay) of messages


     Monitoring
                   •        Successful flows
                   •        Failed flows
                   •        Active flows
                   •        Flow duration
                   •        Message content
                   •        ...

     Replay
                   •        Recovery from delivery failures
                   •        Recovery from system failures        Complements automated
                   •        Recovery of application state     (failure) recovery mechanisms
                   •        ...
20   May 5, 2009       ICW Developer Conference
Flow management (2/2)

     User interfaces

        •   Any JMX client
                   -   JConsole
                   -   ...


        •   Platform manager
                   -   Eclipse RCP application




21   May 5, 2009        ICW Developer Conference
Demo

     Enable flow management for example route

                            B                                                   Proxy       D                 E
                                          ?
              HTTP                      HL7                 HL7                                    HTTP
            Endpoint                  Validator             Filter                                Endpoint        route
            (inbound)                                                                            (outbound)       bundle
                                                      OSGi Service Registry

          Replay Strategy
                                                        Flow Manager                 Processor



                                                   Flow
                                                  Manager


                                                                                  HL7
                                                                              Transformer

                                        platform-camel-flow               service
                                        bundle                            bundle




22   May 5, 2009    ICW Developer Conference
Message Buffering for Delivery Failure Recovery

     Compensate unavailability of destinations
        •   Automated redelivery of messages
        •   Number of redelivery attemps given by redelivery policy


     Implemented with transacted JMS queue
       • Transaction rolled back if destination unavailable
       • Transaction rollback causes message redelivery



     Manual replay of messages using flow manager
      • When automated redelivery gives up



23   May 5, 2009   ICW Developer Conference
Demo

     Add a message buffer to example route                                                                        route
                                                                                                                  bundle
                                                                                        JMS Queue
                        B                                                   Proxy                       D                    E
                                      ?
          HTTP                                                                                                    HTTP
                                    HL7                  HL7
        Endpoint                                                                             Proxy               Endpoint
                                  Validator              Filter
        (inbound)                                                                                               (outbound)

                                                         OSGi Service Registry

      Replay Strategy
                                                     Flow Manager                Processor                  JMS Component



                                                Flow                                                  camel-
                                               Manager                                               activemq

                                                                              HL7
                                                                          Transformer

                                    platform-camel-flow                service                osgi-config-jms
                                    bundle                             bundle                 bundle




24   May 5, 2009    ICW Developer Conference
Mapping Service

     Mapping between codes from different code systems
        •   Often needed for HL7 message processing
        •   Gender codes, encounter type codes ...


     Default mapping service
      • Accessed via mapping DSL
      • Configurable with mapping tables




25   May 5, 2009   ICW Developer Conference
Demo
     Mapping definition                       Mapping service usage
      mappings = {                            // Extension to java.lang.String
                                              assert 'F'.mapGender() == 'W'
              gender (
                  F      : 'W',               // Extension to HL7 DSL
                  (ELSE) : { it }             assert msg.PID[8].mapGender() == 'W'
              )

      }




     Gender code mapping




26   May 5, 2009   ICW Developer Conference
Demo

      Implement code mapping for example route                                                                                    route
                                                                                                                                  bundle
                                                                                                             JMS Queue
                                          B                                                      Proxy                   D                   E
                                                          ?
                          HTTP                                                                                                    HTTP
                                                         HL7                 HL7
                        Endpoint                                                                                                 Endpoint
                                                       Validator             Filter
                        (inbound)                                                                                               (outbound)

                                                                      OSGi Service Registry
                          Mapping
                          Service
                                                 Replay Strategy
                                                                         Flow Manager                 Processor              JMS Component



                               Bidi                                 Flow                                              camel-
         Mapping
                              Mapping                              Manager                                           activemq
         Definition
                              Service

                                                                                                   HL7
                                                                                               Transformer

     mapping              modules-hl7                   platform-camel-flow                   service             osgi-config-jms
     fragment             bundle                        bundle                                bundle              bundle


                                                  use via DSL

27     May 5, 2009    ICW Developer Conference
Resources

     Demo source code
        •   http://repo.openehealth.org/sites/ipf/demo/20090505/demo-osgi.zip



     IPF runtime with demo bundles
        •   http://repo.openehealth.org/sites/ipf/demo/20090505/demo-runtime.zip




28   May 5, 2009   ICW Developer Conference
Agenda

     Part 1
      • IPF Introduction
      • Programming IPF
      • Demos



     Part 2
      • OSGi Support
      • IPF Services
      • Demos



     Part 3
      • Outlook
      • Q&A


29   May 5, 2009   ICW Developer Conference
Outlook (1/4)

     DSL for HL7v3 messages and CDA/CCD documents
      // Create a CDA builder
      CDABuilder builder = new CDABuilder()

      // Create a new CDA document
      def document = builder.build {
          clinicalDocument {
              id(root:'2.16.840.1.113883.19.4', extension:'c266')
              code(
                   code:'11488-4',
                   codeSystem:'2.16.840.1.113883.6.1',
                   ...
              )
              title('Good Health Clinic Consultation Note')
              recordTarget {
                  ...
              }
              ...
          }
          ...
      }

      // Write document XML to stdout
      System.out << document

30   May 5, 2009   ICW Developer Conference
Outlook (2/4)

     DSL for implementing IHE actor interfaces and transactions

      from('ihe:xds.b:iti-41?port=8080')
      .process { exchange ->
          def document = exchange.in.body
          // do further document processing here ...
      }
      // communicate with your document management system
      .to('http://...')
      // notify about availability of new document
      .to('ihe:nav:iti-25:?to=martin@openehealth.org')




31   May 5, 2009   ICW Developer Conference
Outlook (3/4)

     IPF as a Service
        •   Central operation of IPF runtime and applications
        •   High-availability and scalability are part of service
        •   IPF application deployment via IPF Eclipse plugins
        •   Research in progress on scalable data stores
        •   Experiments with IPF on Google AppEngine




32   May 5, 2009   ICW Developer Conference
Outlook (4/4)

     Performance testing framework
        •   Instrumentation DSL
        •   Processing statistics


     Grails integration
      • IPF plugin for Grails



     IPF on ICW connector
       • Prototype exists




33   May 5, 2009   ICW Developer Conference
Thank you for your attention!

martin.krasser@icw.de

Mais conteúdo relacionado

Mais procurados

I18N refactoring support and the TapiJI online translator
I18N refactoring support and the TapiJI online translatorI18N refactoring support and the TapiJI online translator
I18N refactoring support and the TapiJI online translator
mreiterer
 

Mais procurados (20)

FOSDEM 2017 - A different Lua JIT using Eclipse OMR
FOSDEM 2017 - A different Lua JIT using Eclipse OMRFOSDEM 2017 - A different Lua JIT using Eclipse OMR
FOSDEM 2017 - A different Lua JIT using Eclipse OMR
 
Learn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVLearn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFV
 
Tail f - Why ConfD
Tail f - Why ConfDTail f - Why ConfD
Tail f - Why ConfD
 
Webinar: Applying REST to Network Management – An Implementor’s View
Webinar: Applying REST to Network Management – An Implementor’s View Webinar: Applying REST to Network Management – An Implementor’s View
Webinar: Applying REST to Network Management – An Implementor’s View
 
Jython for embedded software validation
Jython for embedded software validationJython for embedded software validation
Jython for embedded software validation
 
Module 9: CDB Technical Intro
 Module 9: CDB Technical Intro Module 9: CDB Technical Intro
Module 9: CDB Technical Intro
 
FOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMFOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VM
 
LCA14: LCA14-209: ODP Project Update
LCA14: LCA14-209: ODP Project UpdateLCA14: LCA14-209: ODP Project Update
LCA14: LCA14-209: ODP Project Update
 
Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview
Introduction to Data Models & Cisco's NextGen Device Level APIs: an overviewIntroduction to Data Models & Cisco's NextGen Device Level APIs: an overview
Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview
 
Module 1: ConfD Technical Introduction
Module 1: ConfD Technical IntroductionModule 1: ConfD Technical Introduction
Module 1: ConfD Technical Introduction
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
I18N refactoring support and the TapiJI online translator
I18N refactoring support and the TapiJI online translatorI18N refactoring support and the TapiJI online translator
I18N refactoring support and the TapiJI online translator
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimes
 
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
 
ODP Presentation LinuxCon NA 2014
ODP Presentation LinuxCon NA 2014ODP Presentation LinuxCon NA 2014
ODP Presentation LinuxCon NA 2014
 
Magillem marcos av_silva
Magillem marcos av_silvaMagillem marcos av_silva
Magillem marcos av_silva
 
DEVNET-1152 OpenDaylight YANG Model Overview and Tools
DEVNET-1152	OpenDaylight YANG Model Overview and ToolsDEVNET-1152	OpenDaylight YANG Model Overview and Tools
DEVNET-1152 OpenDaylight YANG Model Overview and Tools
 
Debugging Numerical Simulations on Accelerated Architectures - TotalView fo...
 Debugging Numerical Simulations on Accelerated Architectures  - TotalView fo... Debugging Numerical Simulations on Accelerated Architectures  - TotalView fo...
Debugging Numerical Simulations on Accelerated Architectures - TotalView fo...
 
Advancing OpenFabrics Interfaces
Advancing OpenFabrics InterfacesAdvancing OpenFabrics Interfaces
Advancing OpenFabrics Interfaces
 

Destaque (6)

Die Open eHealth Integration Platform
Die Open eHealth Integration PlatformDie Open eHealth Integration Platform
Die Open eHealth Integration Platform
 
Scala cheatsheet
Scala cheatsheetScala cheatsheet
Scala cheatsheet
 
System Integration with Akka and Apache Camel
System Integration with Akka and Apache CamelSystem Integration with Akka and Apache Camel
System Integration with Akka and Apache Camel
 
O jovem cristão e o uso da internet
O jovem cristão e o uso da internetO jovem cristão e o uso da internet
O jovem cristão e o uso da internet
 
Mi hermana lola
Mi hermana lolaMi hermana lola
Mi hermana lola
 
Implementierung von Enterprise Integration Patterns auf einem JBI ESB
Implementierung von Enterprise Integration Patterns auf einem JBI ESBImplementierung von Enterprise Integration Patterns auf einem JBI ESB
Implementierung von Enterprise Integration Patterns auf einem JBI ESB
 

Semelhante a The Open eHealth Integration Platform

Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
mfrancis
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
lennartkats
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
Yaniv Uriel
 

Semelhante a The Open eHealth Integration Platform (20)

The Open eHealth Integration Platform
The Open eHealth Integration PlatformThe Open eHealth Integration Platform
The Open eHealth Integration Platform
 
Open MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOFOpen MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOF
 
[WSO2 Integration Summit Nairobi 2019] Role of Integration in an API Driven W...
[WSO2 Integration Summit Nairobi 2019] Role of Integration in an API Driven W...[WSO2 Integration Summit Nairobi 2019] Role of Integration in an API Driven W...
[WSO2 Integration Summit Nairobi 2019] Role of Integration in an API Driven W...
 
OFI Overview 2019 Webinar
OFI Overview 2019 WebinarOFI Overview 2019 Webinar
OFI Overview 2019 Webinar
 
Going FaaSter, Functions as a Service at Netflix
Going FaaSter, Functions as a Service at NetflixGoing FaaSter, Functions as a Service at Netflix
Going FaaSter, Functions as a Service at Netflix
 
Lamp Zend Security
Lamp Zend SecurityLamp Zend Security
Lamp Zend Security
 
IBM BP Session - Multiple CLoud Paks and Cloud Paks Foundational Services.pptx
IBM BP Session - Multiple CLoud Paks and Cloud Paks Foundational Services.pptxIBM BP Session - Multiple CLoud Paks and Cloud Paks Foundational Services.pptx
IBM BP Session - Multiple CLoud Paks and Cloud Paks Foundational Services.pptx
 
The DevOps Journey
The DevOps JourneyThe DevOps Journey
The DevOps Journey
 
SDN and metrics from the SDOs
SDN and metrics from the SDOsSDN and metrics from the SDOs
SDN and metrics from the SDOs
 
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
Building Server-Side Eclipse based Web applications - Jochen Hiller, Principa...
 
Intro to Perfect - LA presentation
Intro to Perfect - LA presentationIntro to Perfect - LA presentation
Intro to Perfect - LA presentation
 
OSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P KriensOSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P Kriens
 
FluentD for end to end monitoring
FluentD for end to end monitoringFluentD for end to end monitoring
FluentD for end to end monitoring
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
 
Introduction to Kong API Gateway
Introduction to Kong API GatewayIntroduction to Kong API Gateway
Introduction to Kong API Gateway
 
"Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?""Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?"
 
IPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishIPMI is dead, Long live Redfish
IPMI is dead, Long live Redfish
 
Java one2013
Java one2013Java one2013
Java one2013
 

Último

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

The Open eHealth Integration Platform

  • 1. Open eHealth Integration Platform (IPF) ICW Developer Conference Martin Krasser / May 5, 2009
  • 2. Martin Krasser Position • Software architect and engineer Focus • Distributed systems • Application integration • Application security • ... Open source projects • Open eHealth Integration Platform (Founder) http://gforge.openehealth.org/gf/project/ipf • Security Annotation Framework (Founder) http://www.sourceforge.net/projects/safr • Apache Camel (Contributor) http://camel.apache.org 2 May 5, 2009 ICW Developer Conference
  • 3. Agenda Part 1 • IPF Introduction • Programming IPF • Demo Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook 4 May 5, 2009 ICW Developer Conference
  • 4. IPF Introduction (1/5) Framework for implementing integration logic • Healthcare domain • General-purpose Platform to deploy and run integration solutions • OSGi-based with IPF services in service registry • Embedded, standalone and distributed deployments Based on Apache Camel • Routing and mediation engine • Enterprise Integration Patterns (EIPs) • Domain-specific language (DSL) 5 May 5, 2009 ICW Developer Conference
  • 5. IPF Introduction (2/5) Project • Hosted at the Open eHealth Foundation • Open source under Apache License, Version 2 • Latest release – IPF 1.6.0 (April 2009) • http://gforge.openehealth.org/gf/project/ipf/ - Subversion repository - Release filesystem - Issue tracker - Mailing lists • http://repo.openehealth.org - Reference documentation - Contribution guidelines - Build server and build reports - Maven and OSGi bundle repository 6 May 5, 2009 ICW Developer Conference
  • 6. IPF Introduction (3/5) Technologies • Java and Groovy • Springframework • Apache ActiveMQ (optional) • „Camel components“ (for connectivity) Connectivity • Protocols (HTTP, SOAP, FTP, SMTP, MLLP ...) • Interfaces (JMS, JPA, JDBC ...) • More than 70 Camel (connectivity) components! 7 May 5, 2009 ICW Developer Conference
  • 7. IPF Introduction (4/5) Development • Focus on programming (internal DSL) • DSL is easy to extend • Platform is easy to extend • No graphical route designer • ... IPF applications @ ICW • Medical Service Bus (MSB) • IHE profiles (PIX, PDQ, XDS) • Device connectivity server (DCS) • LifeSensor adapter (LSA) • IPF inside eHF • ... 8 May 5, 2009 ICW Developer Conference
  • 8. IPF Introduction (5/5) System overview IHE support Code mapping OSGi support Performance test support Management consoles CDA support Flow management Development tools HL7 support Large message support Core processors Event infrastructure IPF Core Apache Camel Part of presentation and demos 9 May 5, 2009 ICW Developer Conference
  • 9. Programming with Camel Overview • Components Connectivity to external systems or resources • Endpoints Send/receive messages to/from external systems • Processors Transform, validate, filter, route, etc. messages • Routes Endpoints connected by processors using DSL Route example 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='Martin']") // XPath filter .to("http://localhost:8080/log"); // outbound HTTP endpoint 10 May 5, 2009 ICW Developer Conference
  • 10. Programming with IPF Overview • All Camel features available • Dynamic language support (Groovy) • DSL extension mechanism (Groovy meta-programming) • Predefined DSL extensions (Contribution from modules) Route example ? 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 .to('http://localhost:8080/log') // outbound HTTP endpoint 11 May 5, 2009 ICW Developer Conference
  • 11. Demo Implement example route starting from scratch ? HTTP HL7 HL7 HL7 HTTP Endpoint Validator Filter Transformer Endpoint (inbound) (outbound) • HTTP endpoints • HL7 validation • HL7 filtering • HL7 transformation 12 May 5, 2009 ICW Developer Conference
  • 12. Agenda Part 1 • IPF Introduction • Programming IPF • Demos Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook • Q&A 13 May 5, 2009 ICW Developer Conference
  • 13. OSGi Support (1/3) IPF components are OSGi bundles • Deployable to any OSGi R4 platform • Tested with Eclipse Equinox 3.4.1 IPF bundles register platform services • Flow manager, mapping service ... • Consumed by IPF applications IPF extender bundles activate DSL extensions • DSL extensions contributed by platform and application bundles 14 May 5, 2009 ICW Developer Conference
  • 14. OSGi Support (2/3) Technologies • Eclipse Equinox 3.4.1 • Spring Dynamic Modules (DM) Tooling • maven-bundle-plugin to generate MANIFEST.MF • Eclipse Plugin Development Environment (PDE) 15 May 5, 2009 ICW Developer Conference
  • 15. OSGi Support (3/3) IPF runtime • OSGi platform for IPF applications 16 May 5, 2009 ICW Developer Conference
  • 16. Demo Implement example route as IPF OSGi application Proxy ? HTTP HL7 HL7 HTTP Endpoint Validator Filter Endpoint route (inbound) (outbound) bundle OSGi Service Registry Processor HL7 service Transformer bundle • Two OSGi bundles • Deploy to IPF runtime • Change service implementation at runtime 19 May 5, 2009 ICW Developer Conference
  • 17. Flow management (1/2) Purpose • Monitor messages processed by IPF applications • Support manual redelivery (replay) of messages Monitoring • Successful flows • Failed flows • Active flows • Flow duration • Message content • ... Replay • Recovery from delivery failures • Recovery from system failures Complements automated • Recovery of application state (failure) recovery mechanisms • ... 20 May 5, 2009 ICW Developer Conference
  • 18. Flow management (2/2) User interfaces • Any JMX client - JConsole - ... • Platform manager - Eclipse RCP application 21 May 5, 2009 ICW Developer Conference
  • 19. Demo Enable flow management for example route B Proxy D E ? HTTP HL7 HL7 HTTP Endpoint Validator Filter Endpoint route (inbound) (outbound) bundle OSGi Service Registry Replay Strategy Flow Manager Processor Flow Manager HL7 Transformer platform-camel-flow service bundle bundle 22 May 5, 2009 ICW Developer Conference
  • 20. Message Buffering for Delivery Failure Recovery Compensate unavailability of destinations • Automated redelivery of messages • Number of redelivery attemps given by redelivery policy Implemented with transacted JMS queue • Transaction rolled back if destination unavailable • Transaction rollback causes message redelivery Manual replay of messages using flow manager • When automated redelivery gives up 23 May 5, 2009 ICW Developer Conference
  • 21. Demo Add a message buffer to example route route bundle JMS Queue B Proxy D E ? HTTP HTTP HL7 HL7 Endpoint Proxy Endpoint Validator Filter (inbound) (outbound) OSGi Service Registry Replay Strategy Flow Manager Processor JMS Component Flow camel- Manager activemq HL7 Transformer platform-camel-flow service osgi-config-jms bundle bundle bundle 24 May 5, 2009 ICW Developer Conference
  • 22. Mapping Service Mapping between codes from different code systems • Often needed for HL7 message processing • Gender codes, encounter type codes ... Default mapping service • Accessed via mapping DSL • Configurable with mapping tables 25 May 5, 2009 ICW Developer Conference
  • 23. Demo Mapping definition Mapping service usage mappings = { // Extension to java.lang.String assert 'F'.mapGender() == 'W' gender ( F : 'W', // Extension to HL7 DSL (ELSE) : { it } assert msg.PID[8].mapGender() == 'W' ) } Gender code mapping 26 May 5, 2009 ICW Developer Conference
  • 24. Demo Implement code mapping for example route route bundle JMS Queue B Proxy D E ? HTTP HTTP HL7 HL7 Endpoint Endpoint Validator Filter (inbound) (outbound) OSGi Service Registry Mapping Service Replay Strategy Flow Manager Processor JMS Component Bidi Flow camel- Mapping Mapping Manager activemq Definition Service HL7 Transformer mapping modules-hl7 platform-camel-flow service osgi-config-jms fragment bundle bundle bundle bundle use via DSL 27 May 5, 2009 ICW Developer Conference
  • 25. Resources Demo source code • http://repo.openehealth.org/sites/ipf/demo/20090505/demo-osgi.zip IPF runtime with demo bundles • http://repo.openehealth.org/sites/ipf/demo/20090505/demo-runtime.zip 28 May 5, 2009 ICW Developer Conference
  • 26. Agenda Part 1 • IPF Introduction • Programming IPF • Demos Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook • Q&A 29 May 5, 2009 ICW Developer Conference
  • 27. Outlook (1/4) DSL for HL7v3 messages and CDA/CCD documents // Create a CDA builder CDABuilder builder = new CDABuilder() // Create a new CDA document def document = builder.build { clinicalDocument { id(root:'2.16.840.1.113883.19.4', extension:'c266') code( code:'11488-4', codeSystem:'2.16.840.1.113883.6.1', ... ) title('Good Health Clinic Consultation Note') recordTarget { ... } ... } ... } // Write document XML to stdout System.out << document 30 May 5, 2009 ICW Developer Conference
  • 28. Outlook (2/4) DSL for implementing IHE actor interfaces and transactions from('ihe:xds.b:iti-41?port=8080') .process { exchange -> def document = exchange.in.body // do further document processing here ... } // communicate with your document management system .to('http://...') // notify about availability of new document .to('ihe:nav:iti-25:?to=martin@openehealth.org') 31 May 5, 2009 ICW Developer Conference
  • 29. Outlook (3/4) IPF as a Service • Central operation of IPF runtime and applications • High-availability and scalability are part of service • IPF application deployment via IPF Eclipse plugins • Research in progress on scalable data stores • Experiments with IPF on Google AppEngine 32 May 5, 2009 ICW Developer Conference
  • 30. Outlook (4/4) Performance testing framework • Instrumentation DSL • Processing statistics Grails integration • IPF plugin for Grails IPF on ICW connector • Prototype exists 33 May 5, 2009 ICW Developer Conference
  • 31. Thank you for your attention! martin.krasser@icw.de