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.

Abstract IHE Profile

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:

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