IPF components for eHealth integration profiles
IPF provides support for several eHealth profiles, primarily from the IHE ITI domain. The basic idea is to offer a Camel component for each profile transaction. These components ensure that the technical requirements of the profile are met by applications built on top of the IPF eHealth Integration Profiles support.
Context
Core concepts of IHE profiles are:
Concept | IHE Definition (Technical Framework, Volume 1) | Description | Example |
---|---|---|---|
Actor | Actors are information systems or components of information systems that produce, manage, or act on categories of information required by operational activities in the enterprise. | An application role in a distributed system | Patient Identity Cross-Reference Manager aka PIX Manager. |
Transaction | Transactions are interactions between actors that communicate the required information through standards-based messages. | A message exchange between actors | Patient Identity Feed between the Patient Identity Source and the PIX Manager |
Profile | Each integration profile is a representation of a real-world capability that is supported by a set of actors that interact through transactions. | A set of actors and transactions | PIX profile |
IPF is a development framework with special support for the implementation of IHE concepts (i.e. profiles). This is illustrated with an abstract IHE profile the figure below.
The profile defines three actors and two transactions. Transaction 1 is between Actor 1 and Actor 2 whereas Transaction 2 is between Actor 1 and Actor 3.
With IPF, these IHE concepts are mapped to Camel components, partly by reusing or extending existing Camel components or by providing custom components.
Concept | Mapping to the IPF/Camel programming model |
---|---|
Actor | Producer or Consumer of a Camel endpoint |
Transaction | Camel component, e.g. pix-iti8 |
Profile | Group of Camel components, e.g. pix , xds |
Supported Transactions
The most IPF eHealth components are named according to the profile and the transaction they implement (transaction IDs and profiles relate to IHE, when not stated otherwise). A special case is the MLLP dispatcher component which allows to accept requests for multiple MLLP-based transactions through a single TCP port.
IHE Profiles are grouped by their underlying technical foundation, particularly by their message format and transport protocol into IPF modules that can be included as dependencies in the Maven project descriptor:
- HL7v2-based transactions (MLLP)
- HL7v2-based SOAP transactions
- HL7v3-based transactions (SOAP)
- ebXML transactions
- FHIR transactions
- DSMLv2-based transactions
- XACML-based transactions
The table below references all supported eHealth transactions. Click on the link in the first column for details about required dependencies, usage and parameters.
Transaction | Profile | Description | IPF Component | Transport and Message Format | IPF Module |
---|---|---|---|---|---|
ITI-8 | PIX | Patient Identity Feed | pix-iti8 |
MLLP(S), HL7 v2.3.1 | ipf-platform-camel-ihe-mllp |
ITI-8 | XDS | Patient Identity Feed | xds-iti8 |
MLLP(S), HL7 v2.3.1 | ipf-platform-camel-ihe-mllp |
ITI-9 | PIX | PIX Query | pix-iti9 |
MLLP(S), HL7 v2.5 | ipf-platform-camel-ihe-mllp |
ITI-10 | PIX | PIX Update Notfication | pix-iti10 |
MLLP(S), HL7 v2.5 | ipf-platform-camel-ihe-mllp |
ITI-18 | XDS | Registry Stored Query | xds-iti18 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-19 | ATNA | Authenticate Node | n/a |
n/a, n/a | ipf-platform-camel-ihe-atna |
ITI-20 | ATNA | Record Audit Event | n/a |
Syslog/TLS, DICOM/IHE Audit Message | ipf-platform-camel-ihe-atna |
ITI-21 | PDQ | Patient Demographics Query | pdq-iti21 |
MLLP(S), HL7 v2.5 | ipf-platform-camel-ihe-mllp |
ITI-22 | PDQ | Patient Demographics and Visit Query | pdq-iti22 |
MLLP(S), HL7 v2.5 | ipf-platform-camel-ihe-mllp |
ITI-30 | PAM | Patient Identity Management | pam-iti30 |
MLLP(S), HL7 v2.5 | ipf-platform-camel-ihe-mllp |
ITI-31 | PAM | Patient Encounter Management | pam-iti31 |
MLLP(S), HL7 v2.5 | ipf-platform-camel-ihe-mllp |
ITI-38 | XCA | Cross-Gateway Query | xca-iti38 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-39 | XCA | Cross-Gateway Retrieve | xca-iti39 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-41 | XDS, XDM, XDR, Continua | Provide & Register Document Set | xds-iti41 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-42 | XDS | Register Document Set | xds-iti42 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-43 | XDS | Retrieve Document Set | xds-iti43 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-44 | PIXv3 | Patient Identity Feed v3 | pixv3-iti44 |
SOAP/HTTP(S), HL7v3 | ipf-platform-camel-ihe-hl7v3 |
ITI-44 | XDS | Patient Identity Feed v3 | xds-iti44 |
SOAP/HTTP(S), HL7v3 | ipf-platform-camel-ihe-hl7v3 |
ITI-45 | PIXv3 | PIX Query v3 | pixv3-iti45 |
SOAP/HTTP(S), HL7v3 | ipf-platform-camel-ihe-hl7v3 |
ITI-46 | PIXv3 | PIX Update Notification v3 | pixv3-iti46 |
SOAP/HTTP(S), HL7v3 | ipf-platform-camel-ihe-hl7v3 |
ITI-47 | PDQv3 | Patient Demographics Query (PDQ) v3 | pdqv3-iti47 |
SOAP/HTTP(S), HL7v3 | ipf-platform-camel-ihe-hl7v3 |
ITI-51 | XDS | Multi-Patient Stored Query | xds-iti51 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-55 | XCPD | Cross-Gateway Patient Discovery | xcpd-iti55 |
SOAP/HTTP(S), HL7v3 | ipf-platform-camel-ihe-hl7v3 |
ITI-56 | XCPD | Cross-Gateway Patient Location Query | xcpd-iti56 |
SOAP/HTTP(S), HL7v3 | ipf-platform-camel-ihe-hl7v3 |
ITI-57 | XDS | Update Document Set | xds-iti57 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-58 | HPD | Provider Information Query | hpd-iti58 |
SOAP/HTTP(S), DSMLv2 | ipf-platform-camel-ihe-hpd |
ITI-59 | HPD | Provider Information Feed | hpd-iti59 |
SOAP/HTTP(S), DSMLv2 | ipf-platform-camel-ihe-hpd |
ITI-61 | XDS | Register On-Demand Document Entry | xds-iti61 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-62 | RMD | Remove Metadata | rmd-iti62 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-63 | XCF | Cross-Gateway Fetch | xcf-iti63 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-64 | XPID | Notify XAD-PID Link Change | xpid-iti64 |
MLLP(S), HL7 v2.5 | ipf-platform-camel-ihe-mllp |
ITI-65 | MHD | Provide Document Bundle | mhd-iti65 |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-mhd |
ITI-66 | MHD | Find Document Manifests | mhd-iti66 |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-mhd |
ITI-67 | MHD | Find Document References | mhd-iti67 |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-mhd |
ITI-68 | MHD | Retrieve Document | mhd-iti68 |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-mhd |
ITI-78 | PDQm | Patient Demographics Query for Mobile | pdqm-iti78 |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-pixpdq |
ITI-79 | SeR | Authorization Decisions Query | ser-iti79 |
SOAP/HTTP(S), XACML 2.0 | ipf-platform-camel-ihe-xacml20 |
ITI-80 | XCDR | Cross-Gateway Document Provide | xcdr-iti80 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-81 | ATNA | Retrieve ATNA Audit Event | atna-iti81 |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-audit |
ITI-83 | PIXm | Patient Identifier Cross-reference for Mobile | pixm-iti83 |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-pixpdq |
ITI-86 | RMD | Remove Documents | rmd-iti86 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-92 | RMU | Restricted Update Document Set | rmu-iti92 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
ITI-105 | MHD | Simplified Publish | mhd-iti105 |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-mhd |
RAD-69 | XDS-I | Retrieve Imaging Document Set | xdsi-rad69 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
RAD-75 | XCA-I | Cross-Gateway Retrieve Imaging Document Set | xcai-rad75 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
PCC-1 | QED | Query for Existing Data | qed-pcc1 |
SOAP/HTTP(S), HL7v3 | ipf-platform-camel-ihe-hl7v3 |
PCC-44 | QEDm | Mobile Query Existing Data | qedm-pcc44 |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-qedm |
PCD-01 | PCD | Communicate Patient Care Device (PCD) Data | pcd-pcd01 |
SOAP/HTTP(S), HL7 v2.6 | ipf-platform-camel-ihe-hl7v2ws |
PHARM-1 | CMPD | Query Pharmacy Documents | cmpd-pharm1 |
SOAP/HTTP(S), ebXML | ipf-platform-camel-ihe-xds |
CH-PIDD | CH:HPD | Provider Information Delta Download | ch-pidd |
SOAP/HTTP(S), DSMLv2 | ipf-platform-camel-ihe-hpd |
CH-ADR | CH:ADR | Authorization Decision Request | ch-adr |
SOAP/HTTP(S), XACML 2.0 | ipf-platform-camel-ihe-xacml20 |
CH-PPQ-1 | CH:PPQ | Privacy Policy Feed | ch-ppq1 |
SOAP/HTTP(S), XACML 2.0 | ipf-platform-camel-ihe-xacml20 |
CH-PPQ-2 | CH:PPQ | Privacy Policy Retrieve | ch-ppq2 |
SOAP/HTTP(S), XACML 2.0 | ipf-platform-camel-ihe-xacml20 |
CH-PPQ-3 | CH:PPQm | Mobile Privacy Policy Feed | ch-ppq3 |
FEST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-chppqm |
CH-PPQ-4 | CH:PPQm | Mobile Privacy Policy Bundle Feed | ch-ppq4 |
FEST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-chppqm |
CH-PPQ-5 | CH:PPQm | Mobile Privacy Policy Retrieve | ch-ppq5 |
FEST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-r4-chppqm |
custom FHIR Based | n/a | Accept requests for custom FHIR-based transactions | fhir |
REST/HTTP(S), FHIR | ipf-platform-camel-ihe-fhir-core |
custom MLLP Based | n/a | Accept requests for custom MLLP-based transactions | mllp |
MLLP(S), HL7v2 | ipf-platform-camel-ihe-mllp |
all MLLP Based | n/a | Accept requests for multiple MLLP-based transactions through a single TCP port | mllp-dispatch |
MLLP(S), HL7v2 | ipf-platform-camel-ihe-mllp |
CH-CIQ | CH:CPI | Community Information Query | ch-ciq |
SOAP/HTTP(S), DSMLv2 | ipf-platform-camel-ihe-hpd |
CH-CIDD | CH:CPI | Community Information Delta Download | ch-cidd |
SOAP/HTTP(S), DSMLv2 | ipf-platform-camel-ihe-hpd |
Supported Transaction Parameters
The parameters usually depend on the IHE transaction; some parameters are valid for groups of transactions, a few are even valid for all transactions (e.g. turning ATNA auditing on or off). Details are given in the respective pages describing each component.
Example
An implementation of a Patient Identity Cross-Reference Manager actor for the Patient Identity Feed (PIX ITI-8) transaction shall be created. PIX ITI-8 is a HL7v2-based transaction using MLLP as transport protocol. Receiving actors are implemented as a Camel consumer.
Thus, the following dependency must be registered in pom.xml
:
<dependency>
<groupId>org.openehealth.ipf.platform-camel</groupId>
<artifactId>ipf-platform-camel-ihe-mllp</artifactId>
<version>${ipf-version}</version>
</dependency>
The basic pattern for consumers is to specify the component name in the URI parameter of a from
-clause at the beginning of a Camel route:
// IHEConsumer.java
from("pix-iti8://0.0.0.0:8777?parameters....")
.process(...)
// process the incoming HL7v2 request and create a response
While stepping through the Camel route, a proper response (or an Exception) must be generated that is sent back to the caller.
On the other side of the transaction, sending actors (for ITI-8 the Patient Identity Source) are implemented as a Camel producer. The basic pattern for producers is to specify the component name in the URI parameter of a to-clause at the end of a Camel route:
// IHEProducer.java
from(...)
.process(...)
// create a ITI-8 request (i.e. HL7v2 message)
.to("pix-iti8://mpiserver.com:8888?parameters....")
// optionally process the response