Implementing IHE Actors using the Open ehealth Integration Platform (IPF) Alexander Ihls President and Director OeHF 1
Open ehealth Foundation Nucleus of broad healthcare industry and developer alliance Independent non-profit entity Promoting ehealth within the healthcare sector Providing an organizational, legal and financial frame for open source software projects Open Source development platform and community Work results comprise standardized data model implementations extensible frameworks tools for building, deploying and managing software solutions Making standards work 2
What is IPF? Java/Groovy-based ehealth Integration Framework Supports developers implementing ehealth standards (HL7, IHE, CDA...) Focuses on extensible domain-specific languages (ehealth DSLs) Based on the Apache Camel integration framework Deployment Options: embedded, standalone and distributed OSGi-based Integration Platform Dynamic load/unload of integration services/apps Development and monitoring tools (IPF Tools Project) IPF Eclipse plugin Open Source since Nov. 2008 http://gforge.openehealth.org/gf/project/ipf/ Latest stable release: IPF 2.0.2 Latest milestone release: IPF 2.1-m1 (2.1rc 26.03.2010) Apache 2 license 3
Example from HL7 Tutorial 4
Route design using enterprise integration pattern symbols. 5
'SampleRouteBuilder.groovy' package org.openehealth.tutorial import ca.uhn.hl7v2.validation.validationcontext import org.apache.camel.exchange import org.apache.camel.spring.springroutebuilder class SampleRouteBuilder extends SpringRouteBuilder { void configure() { from('jetty:http://localhost:8080/tutorial') // start HTTP server.to('direct:input') // forward request } from('direct:input') // receive HL7 message.unmarshal().ghl7() // create message adapter (HL7 DSL support).validate().ghl7().profile(lookup(validationcontext.class)) // validate against custom validation context.transmogrify { msg -> msg.pv1[3][2] = '' // clear room nr. msg.pv1[3][3] = '' // clear bed nr. msg.pid[7][1] = msg.pid[7][1].value.substring(0, 8) // format birth date msg.pid[8] = msg.pid[8].mapgender() // map 'gender' code msg // return result }.setheader(exchange.file_name) {exchange -> // set filename header to exchange.in.body.msh[4].value + '.hl7' // sending facility (MSH[4]) }.marshal().ghl7() // convert to external representation.to('file:target/output') // write external representation to file } 6
PIX v3 PDQ v3 ATNA... Medical Service Bus XDS.a XDS.b PIX v2 PDQ v2 IHE Plugins IMAP MLLP HTTP LDAP FTP SOAP TCP File SMTP...... HL7 v2 CDA CCD... Content DSL Device Connectivity Server - Scripting layer - DSL extension mechanism - Large message streaming - Flow management - Development tools - OSGi support -... Domain-specific language (DSL) Resequencer Splitter Router Filter Enricher Transformer Validator...? JMS JPA JDBC... Servlet JBI JCR SQL XSLT... Other IPF Applications IPF nagement) rvice F Flow man uality of Ser ssaging, IPF Qu ctional mes (Transac Monitoring (JMX X, IPF Man nager) Protocol Plugins Integration Patterns API Plugins 7
Monitoring (JMX X, IPF Man nager) 8
Q&A Do you have any documentation you could send me about the ICW Integration Layer? http://repo.openehealth.org/confluence/display/ovw/home http://architects.dzone.com/articles/introduction-open-ehealth Which IHE Connect-a-thon integration statements do you have? See next slide (green: statement, red: no statement) PIX/PDQv3 statements to follow on European Connect-a-thon (yellow) 9
IHE Transaction ID Description IPF IHE component Maven artifact ID ITI-8 Patient Identity Feed (PIX Feed) pix-iti8 xds-iti8 platform-camel-ihe-pix-iti8 ITI-9 PIX Query pix-iti9 platform-camel-ihe-pix-iti9 ITI-10 PIX Update Notification pix-iti10 platform-camel-ihe-pix-iti10 ITI-21 Patient Demographics Query (PDQ) pdq-iti21 platform-camel-ihe-pdq-iti21 ITI-22 Patient Demographics and Visit Query (PDQ) pdq-iti22 platform-camel-ihe-pdq-iti22 ITI-14 XDS.a Register Document Set xds-iti14 platform-camel-ihe-xds-iti14 ITI-15 XDS.a Provide & Register Document Set xds-iti15 platform-camel-ihe-xds-iti15 ITI-16 XDS.a Query Registry xds-iti16 platform-camel-ihe-xds-iti16 ITI-17 XDS.a Retrieve Document xds-iti17 platform-camel-ihe-xds-iti17 ITI-18 XDS.a+b Registry Stored Query xds-iti18 platform-camel-ihe-xds-iti18 ITI-41 XDS.b Provide & Register Document Set xds-iti41 platform-camel-ihe-xds-iti41 iti41 ITI-42 XDS.b Register Document Set xds-iti42 platform-camel-ihe-xds-iti42 ITI-43 XDS.b Retrieve Document Set xds-iti43 platform-camel-ihe-xds-iti43 ITI-44 Patient t Identity Feed (PIX Feed) v3 xds-iti44 platform-camel-ihe-pixv3-iti44 l i iti44 ITI-45 PIX Query v3 pixv3-iti45 platform-camel-ihe-pixv3-iti45 ITI-46 PIX Update Notification v3 pixv3-iti46 platform-camel-ihe-pixv3-iti46 ITI-47 Patient Demographics Query (PDQ) v3 pdqv3-iti47 platform-camel-ihe-pdqv3-iti47 ATNA platform-camel-ihe-atna-* 10
Thank you for your attention ti http://www.openehealth.org org Alexander Ihls President and Director Open ehealth Foundation InterComponentWare AG Industriestr. 41 69190 Walldorf Germany Phone: +49 (0) 6227 385 163 Mobile: +49 173 344 13 76 alexander.ihls@icw.de 11