IPF architecture
| IPF architecture in OSGi environments described elsewhere IPF's architecture in OSGi environments is described in the architecture section of the OSGi support page. It complements the information presented here. |
Component architecture
The following figure gives an overview of the IPF components, their dependencies and their namespaces (abbreviated package names). The components of the ihe subpackages (white color) are shown in the next section. The last subsection describes the namespaces and components in more detail. The component names match the jar file names in the Maven repository. The IPF component architecture is also closely related to the project structure in the code repository.
IHE components
The next figure shows the IPF IHE components. The Camel-independent components are contained in the ipf.commons.ihe package, Camel-specific IHE components are contained in the ipf.platform-camel.ihe package. IPF IHE components can be used to implement actor interfaces of IHE transactions. The transaction numbers (ITI) contained in the component name correspond to the transaction numbers in IHE specifications.
IPF and OSGi
All IPF components have been designed to run on an OSGi R4 version 4.1 platform. The osgi package additionally containes specialized OSGi bundles such as extender bundles and configuration fragments (not shown). For a detailed description about IPF and OSGi refer to the OSGi support section.
Namespace and component descriptions
| Namespace | Description |
|---|---|
| commons | Namespace for commonly used libraries. Components in this namespace are independent of Apache Camel and have no dependencies to platform-camel. |
| modules | Namespace for domain-specific (e.g. HL7) libraries and message processing components. Components in this namespace are independent of Apache Camel and have no dependencies to platform-camel. |
| osgi | Namespace for IPF OSGi infrastructure and configuration bundles. |
| platform-camel | Namespace for extensions to the Apache Camel routing and mediation engine. These extensions together with Apache Camel are referred to as the Open eHealth Integration Platform (IPF) from a technical viewpoint. |
| tutorials | Namespace for tutorials demonstrating the features of the Open eHealth IPF (not shown in any of the figures). |
| archetypes | Namespace for IPF project archetypes (not shown in any of the figures). |
| Component | Description |
|---|---|
| commons-core | A library that defines the common message processing API to be implemented by components contained in the modules folder. platform-camel provides special integration points for components implementing this common API. The API was defined for implementing message processing components independent of a certain integration infrastructure like Apache Camel. This increases their re-usability and allows applications to implement light-weight message processing functionality without implementing an integration platform or enterprise service bus. |
| commons-flow | A library implementing the flow management services. It is used to monitor, query, audit and replay message flows. The management interfaces are based on JMX. An integration into Apache Camel is provided by platform-camel-flow. |
| commons-ihe-atna | A library used by other IPF IHE components to implement IHE ATNA. |
| commons-ihe-xds-* | Libraries used to implements IHE XDS.a and XDS.b actor interfaces. The libraries are Camel-independent |
| commons-map | A code-mapping library. |
| commons-lbs | A library providing storage for large binaries and javax.activation.DataSource implementations to represent stored binaries. |
| commons-event | A library containing the Camel independent functionality of the Event infrastructure. |
| commons-test | A library providing support for HTTP-based integration and performance tests. |
| commons-xml | An XML library with focus on Schematron validation. |
| modules-cda | A library for creating, parsing, navigating and rendering CDA documents. Also includes support for several CDA profiles. |
| modules-hl7 | A library that implements extensions to the HAPI library. |
| modules-hl7dsl | A library that implements a DSL for manipulating HAPI messages. |
| osgi-commons | See IPF bundle overview. |
| osgi-extender-basic | See IPF bundle overview. |
| osgi-extender-spring | See IPF bundle overview. |
| osgi-config-log | See IPF bundle overview. |
| osgi-config-jms | See IPF bundle overview. |
| osgi-config-flow-repository | See IPF bundle overview. |
| osgi-config-flow-manager | See IPF bundle overview. |
| platform-camel-core | A component that is required by most other platform-camel component. It provides:
|
| platform-camel-flow | A component that implements a flow management DSL for integrating commons-flow into Camel routes. The DSL was built with the DSL extension mechanism. |
| platform-camel-event | A component offering the DSL extensions of the event infrastructure |
| platform-camel-hl7 | A component that implements an HL7 message processing DSL for integrating modules-hl7 and modules-hl7dsl into Camel routes. The DSL was built with the DSL extension mechanism. |
| platform-camel-lbs-core | A component offering the DSL extensions of the large binary support mechanism as well as the interface to adapt various endpoint technologies to the LBS. |
| platform-camel-lbs-cxf | A component with adaptor implementations for using CXF endpoints with the large binary support. |
| platform-camel-lbs-http | A component with adaptor implementations for using HTTP/Jetty endpoints with the large binary support. |
| platform-camel-lbs-mina | A component with adaptor implementations for using MINA/HL7 endpoints with the large binary support. |
| platform-camel-ihe-mllp-* | Provides MLLP-related functionality used by IPF PIX and PDQ components. |
| platform-camel-ihe-pix-* | Components to implement actor interfaces of IHE PIX transactions. See IHE support. |
| platform-camel-ihe-pdq-* | Components to implement actor interfaces of IHE PDQ transactions. See IHE support. |
| platform-camel-ihe-xds-* | Components to implement actor interfaces of IHE XDS.a and XDS.b transactions. See IHE support. |
| platform-camel-test | A component for measuring the performance characteristics of IPF applications. It provides DSL extensions used to measure processing time of messages (for route parts and whole routes) and the message throughput. Performance measurement reports can be created as well. |
| tutorials-basic | A Hello World-level tutorial for getting started with platform-camel |
| tutorials-flow | A tutorial demonstrating IPF flow management features. |
| tutorials-hl7 | A tutorial demonstrating HL7 message processing features. |
| tutorials-lbs | A tutorial demonstrating the use of the LBS with CXF and HTTP endpoints. |
| tutorials-osgi-* | A tutorial demonstrating how to write IPF OSGi applications. |
| tutorials-ref | A complete reference application that may be used as blueprint for production-ready IPF applications. The reference application is a comprehensive demonstration of IPF features. |
| tutorials-xds | A tutorial that demonstrates how to use IPF XDS components. |
| ipf-archetype-* | Archetypes for creating IPF integration projects with a ready-to-use Maven 2 and Eclipse configuration plus an example route and unit tests. |

