Open eHealth Integration Platform (IPF)ICW Developer ConferenceMartin Krasser / May 5, 2009
Martin Krasser    Position     • Software architect and engineer    Focus     • Distributed systems     • Application inte...
Agenda    Part 1     • IPF Introduction     • Programming IPF     • Demo    Part 2     • OSGi Support     • IPF Services  ...
IPF Introduction (1/5)    Framework for implementing integration logic       •   Healthcare domain       •   General-purpo...
IPF Introduction (2/5)    Project       •   Hosted at the Open eHealth Foundation       •   Open source under Apache Licen...
IPF Introduction (3/5)    Technologies       •   Java and Groovy       •   Springframework       •   Apache ActiveMQ (opti...
IPF Introduction (4/5)    Development     • Focus on programming (internal DSL)     • DSL is easy to extend     • Platform...
IPF Introduction (5/5)    System overview                    IHE support                      Code mapping                ...
Programming with Camel     Overview        •   Components                                  Connectivity to external system...
Programming with IPF     Overview        •   All Camel features available        •   Dynamic language support (Groovy)    ...
Demo     Implement example route starting from scratch                                                 ?                  ...
Agenda     Part 1      • IPF Introduction      • Programming IPF      • Demos     Part 2      • OSGi Support      • IPF Se...
OSGi Support (1/3)     IPF components are OSGi bundles        •   Deployable to any OSGi R4 platform        •   Tested wit...
OSGi Support (2/3)     Technologies        •   Eclipse Equinox 3.4.1        •   Spring Dynamic Modules (DM)     Tooling   ...
OSGi Support (3/3)     IPF runtime        •   OSGi platform for IPF applications16   May 5, 2009   ICW Developer Conference
Demo     Implement example route as IPF OSGi application                                                                Pr...
Flow management (1/2)     Purpose                   •        Monitor messages processed by IPF applications               ...
Flow management (2/2)     User interfaces        •   Any JMX client                   -   JConsole                   -   ....
Demo     Enable flow management for example route                            B                                            ...
Message Buffering for Delivery Failure Recovery     Compensate unavailability of destinations        •   Automated redeliv...
Demo     Add a message buffer to example route                                                                        rout...
Mapping Service     Mapping between codes from different code systems        •   Often needed for HL7 message processing  ...
Demo     Mapping definition                       Mapping service usage      mappings = {                            // Ex...
Demo      Implement code mapping for example route                                                                        ...
Resources     Demo source code        •   http://repo.openehealth.org/sites/ipf/demo/20090505/demo-osgi.zip     IPF runtim...
Agenda     Part 1      • IPF Introduction      • Programming IPF      • Demos     Part 2      • OSGi Support      • IPF Se...
Outlook (1/4)     DSL for HL7v3 messages and CDA/CCD documents      // Create a CDA builder      CDABuilder builder = new ...
Outlook (2/4)     DSL for implementing IHE actor interfaces and transactions      from(ihe:xds.b:iti-41?port=8080)      .p...
Outlook (3/4)     IPF as a Service        •   Central operation of IPF runtime and applications        •   High-availabili...
Outlook (4/4)     Performance testing framework        •   Instrumentation DSL        •   Processing statistics     Grails...
Thank you for your attention!martin.krasser@icw.de
Upcoming SlideShare
Loading in …5
×

The Open eHealth Integration Platform

5,832 views
5,709 views

Published on

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,832
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
68
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

The Open eHealth Integration Platform

  1. 1. Open eHealth Integration Platform (IPF)ICW Developer ConferenceMartin Krasser / May 5, 2009
  2. 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.org2 May 5, 2009 ICW Developer Conference
  3. 3. Agenda Part 1 • IPF Introduction • Programming IPF • Demo Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook4 May 5, 2009 ICW Developer Conference
  4. 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. 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 repository6 May 5, 2009 ICW Developer Conference
  6. 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. 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. 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 demos9 May 5, 2009 ICW Developer Conference
  9. 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 endpoint10 May 5, 2009 ICW Developer Conference
  10. 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 endpoint11 May 5, 2009 ICW Developer Conference
  11. 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 transformation12 May 5, 2009 ICW Developer Conference
  12. 12. Agenda Part 1 • IPF Introduction • Programming IPF • Demos Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook • Q&A13 May 5, 2009 ICW Developer Conference
  13. 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 bundles14 May 5, 2009 ICW Developer Conference
  14. 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. 15. OSGi Support (3/3) IPF runtime • OSGi platform for IPF applications16 May 5, 2009 ICW Developer Conference
  16. 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 runtime19 May 5, 2009 ICW Developer Conference
  17. 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. 18. Flow management (2/2) User interfaces • Any JMX client - JConsole - ... • Platform manager - Eclipse RCP application21 May 5, 2009 ICW Developer Conference
  19. 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 bundle22 May 5, 2009 ICW Developer Conference
  20. 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 up23 May 5, 2009 ICW Developer Conference
  21. 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 bundle24 May 5, 2009 ICW Developer Conference
  22. 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 tables25 May 5, 2009 ICW Developer Conference
  23. 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 mapping26 May 5, 2009 ICW Developer Conference
  24. 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 DSL27 May 5, 2009 ICW Developer Conference
  25. 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.zip28 May 5, 2009 ICW Developer Conference
  26. 26. Agenda Part 1 • IPF Introduction • Programming IPF • Demos Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook • Q&A29 May 5, 2009 ICW Developer Conference
  27. 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 << document30 May 5, 2009 ICW Developer Conference
  28. 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. 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 AppEngine32 May 5, 2009 ICW Developer Conference
  30. 30. Outlook (4/4) Performance testing framework • Instrumentation DSL • Processing statistics Grails integration • IPF plugin for Grails IPF on ICW connector • Prototype exists33 May 5, 2009 ICW Developer Conference
  31. 31. Thank you for your attention!martin.krasser@icw.de

×