Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

The Open eHealth Integration Platform

92 Aufrufe

Veröffentlicht am

The Open eHealth Integration Platform

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

The Open eHealth Integration Platform

  1. 1. Open eHealth Integration Platform (IPF) ICW Developer Conference Martin Krasser / May 5, 2009
  2. 2. ICW Developer ConferenceMay 5, 20092 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
  3. 3. ICW Developer ConferenceMay 5, 20094 Agenda Part 1 • IPF Introduction • Programming IPF • Demo Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook
  4. 4. ICW Developer ConferenceMay 5, 20095 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. 5. ICW Developer ConferenceMay 5, 20096 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. 6. ICW Developer ConferenceMay 5, 20097 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. 7. ICW Developer ConferenceMay 5, 20098 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. 8. ICW Developer ConferenceMay 5, 20099 IPF Introduction (5/5) Apache Camel IPF Core HL7 support CDA support IHE support Code mapping Large message support Event infrastructure OSGisupport Developmenttools Flow management Managementconsoles System overview Core processors Performance testsupportPart of presentation and demos
  9. 9. ICW Developer ConferenceMay 5, 200910 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 Endpoint (inbound) HTTP Endpoint (outbound) XPath Filter 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 Camel DSL (Java)
  10. 10. ICW Developer ConferenceMay 5, 200911 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 Endpoint (inbound) HTTP Endpoint (outbound) HL7 Filter HL7 Validator 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 IPF DSL (Groovy)
  11. 11. ICW Developer ConferenceMay 5, 200912 Demo Implement example route starting from scratch • HTTP endpoints • HL7 validation • HL7 filtering • HL7 transformation ? HTTP Endpoint (inbound) HTTP Endpoint (outbound) HL7 Filter HL7 Validator HL7 Transformer
  12. 12. ICW Developer ConferenceMay 5, 200913 Agenda Part 1 • IPF Introduction • Programming IPF • Demos Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook • Q&A
  13. 13. ICW Developer ConferenceMay 5, 200914 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. 14. ICW Developer ConferenceMay 5, 200915 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. 15. ICW Developer ConferenceMay 5, 200916 OSGi Support (3/3) IPF runtime • OSGi platform for IPF applications
  16. 16. ICW Developer ConferenceMay 5, 200919 Implement example route as IPF OSGi application • Two OSGi bundles • Deploy to IPF runtime • Change service implementation at runtime OSGi Service Registry Demo ? HTTP Endpoint (inbound) HTTP Endpoint (outbound) HL7 Filter HL7 Validator HL7 Transformer Proxy Processor route bundle service bundle
  17. 17. ICW Developer ConferenceMay 5, 200920 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 • Recovery of application state • ... Complements automated (failure) recovery mechanisms
  18. 18. ICW Developer ConferenceMay 5, 200921 Flow management (2/2) User interfaces • Any JMX client - JConsole - ... • Platform manager - Eclipse RCP application
  19. 19. ICW Developer ConferenceMay 5, 200922 Enable flow management for example route OSGi Service Registry Demo ? HTTP Endpoint (inbound) HTTP Endpoint (outbound) HL7 Filter HL7 Validator HL7 Transformer Proxy Processor route bundle service bundle platform-camel-flow bundle Flow Manager B E Replay Strategy Flow Manager D
  20. 20. ICW Developer ConferenceMay 5, 200923 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
  21. 21. ICW Developer ConferenceMay 5, 200924 Add a message buffer to example route OSGi Service Registry Demo ? HTTP Endpoint (inbound) HTTP Endpoint (outbound) HL7 Filter HL7 Validator HL7 Transformer Proxy Processor route bundle service bundle platform-camel-flow bundle Flow Manager B E Replay Strategy Flow Manager JMS Queue camel- activemq JMS Component Proxy D osgi-config-jms bundle
  22. 22. ICW Developer ConferenceMay 5, 200925 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
  23. 23. ICW Developer ConferenceMay 5, 200926 Demo mappings = { gender ( F : 'W', (ELSE) : { it } ) } // Extension to java.lang.String assert 'F'.mapGender() == 'W' // Extension to HL7 DSL assert msg.PID[8].mapGender() == 'W' Mapping definition Mapping service usage Gender code mapping
  24. 24. ICW Developer ConferenceMay 5, 200927 Implement code mapping for example route OSGi Service Registry Demo ? HTTP Endpoint (inbound) HTTP Endpoint (outbound) HL7 Filter HL7 Validator HL7 Transformer Proxy Processor route bundle service bundle platform-camel-flow bundle Flow Manager B E Replay Strategy Flow Manager JMS Queue camel- activemq JMS Component D osgi-config-jms bundle Mapping Service Mapping Definition modules-hl7 bundle Bidi Mapping Service mapping fragment use via DSL
  25. 25. ICW Developer ConferenceMay 5, 200928 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
  26. 26. ICW Developer ConferenceMay 5, 200929 Agenda Part 1 • IPF Introduction • Programming IPF • Demos Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook • Q&A
  27. 27. ICW Developer ConferenceMay 5, 200930 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
  28. 28. ICW Developer ConferenceMay 5, 200931 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')
  29. 29. ICW Developer ConferenceMay 5, 200932 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
  30. 30. ICW Developer ConferenceMay 5, 200933 Outlook (4/4) Performance testing framework • Instrumentation DSL • Processing statistics Grails integration • IPF plugin for Grails IPF on ICW connector • Prototype exists
  31. 31. Thank you for your attention! martin.krasser@icw.de

×