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
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
ICW Developer ConferenceMay 5, 20094
Agenda
Part 1
• IPF Introduction
• Programming IPF
• Demo
Part 2
• OSGi Support
• IPF Services
• Demos
Part 3
• Outlook
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)
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
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!
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
• ...
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
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)
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)
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
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
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
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)
ICW Developer ConferenceMay 5, 200916
OSGi Support (3/3)
IPF runtime
• OSGi platform for IPF applications
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
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
ICW Developer ConferenceMay 5, 200921
Flow management (2/2)
User interfaces
• Any JMX client
- JConsole
- ...
• Platform manager
- Eclipse RCP application
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
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
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
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
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
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
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
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
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
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')
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
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
Thank you for your attention!
martin.krasser@icw.de

Mais conteúdo relacionado

Mais procurados

HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
Linaro
 

Mais procurados (20)

OPNFV: Open Source Carrier Networking Panel
OPNFV: Open Source Carrier Networking PanelOPNFV: Open Source Carrier Networking Panel
OPNFV: Open Source Carrier Networking Panel
 
Cloud standards interoperability: status update on OCCI and CDMI implementations
Cloud standards interoperability: status update on OCCI and CDMI implementationsCloud standards interoperability: status update on OCCI and CDMI implementations
Cloud standards interoperability: status update on OCCI and CDMI implementations
 
What is OPNFV? An Introduction
What is OPNFV? An IntroductionWhat is OPNFV? An Introduction
What is OPNFV? An Introduction
 
“OpenVX 1.3: An Open Standard for Computer Vision Software Acceleration,” a P...
“OpenVX 1.3: An Open Standard for Computer Vision Software Acceleration,” a P...“OpenVX 1.3: An Open Standard for Computer Vision Software Acceleration,” a P...
“OpenVX 1.3: An Open Standard for Computer Vision Software Acceleration,” a P...
 
OPNFV Overview
 OPNFV Overview  OPNFV Overview
OPNFV Overview
 
MuleSoft Manchester Meetup #4 slides 11th February 2021
MuleSoft Manchester Meetup #4 slides 11th February 2021MuleSoft Manchester Meetup #4 slides 11th February 2021
MuleSoft Manchester Meetup #4 slides 11th February 2021
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
Module 1: ConfD Technical Introduction
Module 1: ConfD Technical IntroductionModule 1: ConfD Technical Introduction
Module 1: ConfD Technical Introduction
 
Module 4: NETCONF Tutorial
Module 4: NETCONF Tutorial Module 4: NETCONF Tutorial
Module 4: NETCONF Tutorial
 
Advancing OpenFabrics Interfaces
Advancing OpenFabrics InterfacesAdvancing OpenFabrics Interfaces
Advancing OpenFabrics Interfaces
 
DevOps & Continuous Test for IIB and IBM MQ
DevOps & Continuous Test for IIB and IBM MQDevOps & Continuous Test for IIB and IBM MQ
DevOps & Continuous Test for IIB and IBM MQ
 
Creating a Service Platform for .NET - Clément Escoffier, University of Grenoble
Creating a Service Platform for .NET - Clément Escoffier, University of GrenobleCreating a Service Platform for .NET - Clément Escoffier, University of Grenoble
Creating a Service Platform for .NET - Clément Escoffier, University of Grenoble
 
Module 9: CDB Technical Intro
 Module 9: CDB Technical Intro Module 9: CDB Technical Intro
Module 9: CDB Technical Intro
 
What will be new in HDF5?
What will be new in HDF5?What will be new in HDF5?
What will be new in HDF5?
 
Dynamic Service Configuration and Automated Network Configuration with NETCON...
Dynamic Service Configuration and Automated Network Configuration with NETCON...Dynamic Service Configuration and Automated Network Configuration with NETCON...
Dynamic Service Configuration and Automated Network Configuration with NETCON...
 
(ATS3-DEV05) Coding up Pipeline Pilot Components
(ATS3-DEV05) Coding up Pipeline Pilot Components(ATS3-DEV05) Coding up Pipeline Pilot Components
(ATS3-DEV05) Coding up Pipeline Pilot Components
 
The State of libfabric in Open MPI
The State of libfabric in Open MPIThe State of libfabric in Open MPI
The State of libfabric in Open MPI
 
(Very) Loose proposal to revamp MPI_INIT and MPI_FINALIZE
(Very) Loose proposal to revamp MPI_INIT and MPI_FINALIZE(Very) Loose proposal to revamp MPI_INIT and MPI_FINALIZE
(Very) Loose proposal to revamp MPI_INIT and MPI_FINALIZE
 
Tail f - Why ConfD
Tail f - Why ConfDTail f - Why ConfD
Tail f - Why ConfD
 
Tail-f Webinar OpenFlow Switch Management Using NETCONF and YANG
Tail-f Webinar OpenFlow Switch Management Using NETCONF and YANGTail-f Webinar OpenFlow Switch Management Using NETCONF and YANG
Tail-f Webinar OpenFlow Switch Management Using NETCONF and YANG
 

Semelhante a The Open eHealth Integration Platform

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
 
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBMUsing OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
mfrancis
 

Semelhante a The Open eHealth Integration Platform (20)

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
 
[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...
 
"Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?""Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?"
 
Cwin16 tls-a micro-service deployment - v1.0
Cwin16 tls-a micro-service deployment - v1.0Cwin16 tls-a micro-service deployment - v1.0
Cwin16 tls-a micro-service deployment - v1.0
 
Apache conna2010 os-gi_flex-fornaciari
Apache conna2010 os-gi_flex-fornaciariApache conna2010 os-gi_flex-fornaciari
Apache conna2010 os-gi_flex-fornaciari
 
The DevOps Journey
The DevOps JourneyThe DevOps Journey
The DevOps Journey
 
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
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
Near real-time anomaly detection at Lyft
Near real-time anomaly detection at LyftNear real-time anomaly detection at Lyft
Near real-time anomaly detection at Lyft
 
Mobility and federation of Cloud computing
Mobility and federation of Cloud computingMobility and federation of Cloud computing
Mobility and federation of Cloud computing
 
Madrid meetup #7 deployment models
Madrid meetup #7   deployment modelsMadrid meetup #7   deployment models
Madrid meetup #7 deployment models
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
FluentD for end to end monitoring
FluentD for end to end monitoringFluentD for end to end monitoring
FluentD for end to end monitoring
 
OCP Datacomm RedHat - Kubernetes Launch
OCP Datacomm RedHat - Kubernetes LaunchOCP Datacomm RedHat - Kubernetes Launch
OCP Datacomm RedHat - Kubernetes Launch
 
SDN and metrics from the SDOs
SDN and metrics from the SDOsSDN and metrics from the SDOs
SDN and metrics from the SDOs
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
 
OFI Overview 2019 Webinar
OFI Overview 2019 WebinarOFI Overview 2019 Webinar
OFI Overview 2019 Webinar
 
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBMUsing OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
 
IJTC ServiceMix 4
IJTC   ServiceMix 4IJTC   ServiceMix 4
IJTC ServiceMix 4
 
EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18
 

Último

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Último (20)

Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 

The Open eHealth Integration Platform

  • 1. Open eHealth Integration Platform (IPF) ICW Developer Conference Martin Krasser / May 5, 2009
  • 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. ICW Developer ConferenceMay 5, 20094 Agenda Part 1 • IPF Introduction • Programming IPF • Demo Part 2 • OSGi Support • IPF Services • Demos Part 3 • Outlook
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. ICW Developer ConferenceMay 5, 200916 OSGi Support (3/3) IPF runtime • OSGi platform for IPF applications
  • 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. 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. ICW Developer ConferenceMay 5, 200921 Flow management (2/2) User interfaces • Any JMX client - JConsole - ... • Platform manager - Eclipse RCP application
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Thank you for your attention! martin.krasser@icw.de