Understanding the Sun GlassFish ESB PIX/PDQ Manager

About the HL7 V3 Projects

The HL7 v3 projects provide the business logic to support HL7 v3 message processing in accordance with the IHE framework. These projects use the HTTP Binding Component with the SOAP protocol instead of the HL7 Binding Component, and process HL7 v3 messages into and out of the PIX/PDQ Manager using BPEL processes to define the logic. The projects implement both SOAP versions 1.1 and 1.2.

The HL7 v3 projects include three BPEL projects and one Composite Application project that provides the service assembly for all three BPEL projects. The PDQ_HL7V7_Direct BPEL project handles patient identity feeds and demographic queries. The PIX_HL7V3_Direct BPEL project handles PIX queries for patient identifiers. The PIX_HL7V3_UpdateNotification_Direct BPEL project handles outbound patient updates from the master index.

The following topics provide information about the HL7 v3 projects:

For a list of HL7 v3 message types that are included in the PIX/PDQ Manager, see HL7 V3 Messaging.

PDQ_HL7V3_Direct

The PDQ_HL7V3_Direct project handles HL7 v3 messages for patient demographics queries. It contains a main BPEL process, bpelPDQManager, and one subprocess, bpelExecuteCoreQuery. The main BPEL process calls the subprocess, which in turn call the Domain Lookup service to resolve domain names, checks whether the configured query uses wildcard characters, and then calls the Master Index Facade EJB to retrieve any matching patient records. It then resolves domain names again and sends the response back out to the main BPEL process.

The main BPEL process also processes query continuation messages and query cancel messages (QUQI_IN000003UV01). A query continuation message is sent by the consumer of the query results when multiple patient records are found as the result of a query and they are returned to the consumer in batches. When the consumer has processed on batch, it sends a message requesting to either continue to the next batch or cancel the query results. The main BPEL process uses On Event activities to determine whether to proceed with the next batch of results or to cancel the process.

The main BPEL process also defines fault handling, generates the ACK/NACK responses, and generates the ATNA audit repository messages. The subprocess in this project maps directly to the master index object structure. If you modify the master index object structure, the mapping in the bpelExecuteCoreQuery process might also need to be updated.

This project includes the corresponding WSDL documents for the main process and subprocess, and references the XML schema files to support HL7 v3 processing.

PIX_HL7V3_Direct

The PIX_HL7V3_Direct project handles patient identity feeds and PIX queries for identifiers, which includes the following types of HL7 v3 messages:

This project only contains one BPEL process, bpelPIXManager, that defines all of the processing logic for each message type. The BPEL process receives the incoming request and uses OnMessage activities to determine which type of processing to perform. For each message type, the process calls the Domain Lookup service to resolve domain names, and then calls the Master Index Facade EJB to perform the required operation. For patient record adds, the Master Index either adds a new record or updates an existing record depending on whether it finds a match in its database. For an identifiers query, the Master Index returns a list of patient identifiers associated with the given identifier if any are found.

The BPEL process also defines fault handling, generates the ACK/NACK responses, and generates the ATNA audit repository messages. The BPEL process includes mappings to the master index object structure. If you modify the master index object structure, the mapping in this process might also need to be updated.

This project includes the corresponding WSDL documents for each supported message type, and references the XML schema files to support HL7 v3 processing.

PIX_HL7V3_UpdateNotification_Direct

The PIX_HL7V3_UpdateNotification_Direct project handles outbound HL7 v3 PIX update notifications. In this type of transaction, updates to the master index data are written to a JMS topic and then processed through the Patient Update Handler MDB to separate HL7 v2 and HL7 v3 topics, making the updates available to any domains that subscribe to one of those topics. The BPEL process in this case receives the message from the HL7 v3 topic, calls the Domain Lookup service to resolve domain names, processes the message according to the IHE framework, and then generates the appropriate outbound message (a PRPA_IN201302UV02 message). These messages are sent dynamically to subscribed HL7 systems through the HTTP Binding Component. The BPEL process also performs fault handling, and generates the corresponding ATNA record and writes it to the audit log.

This project only contains one BPEL process, PIXV3UpdateNotificationHandler, that defines all of the processing logic.

PIXPDQ_HL7V3_Direct_ca

The PIXPDQ_HL7V3_Direct_ca project defines the service assembly for the all of the HL7 v3 BPEL projects. In the graphic below, you can see that messages are processed in through the HTTP Binding Component using either SOAP 1.1 or 1.2. Each BPEL process generates a response, which is then processed back out through the same Binding Component. ATNA logging activities are handled through the HTTP Binding Component (using SOAP) for all three BPEL modules.

Figure shows the composite application for the
HL7 V3 projects.

HL7 V3 Messaging

The PIX/PDQ solution provides schema definition files (XSD files) for a subset of the HL7 V3 library. The XSD files include definitions for the following message types:

Common Message Elements

COCT_MT030000UV04 

COCT_MT150007UV 

COCT_MT030007UV 

COCT_MT230100UV 

COCT_MT030202UV01 

COCT_MT240000UV01  

COCT_MT030203UV02 

COCT_MT240003UV02 

COCT_MT030207UV 

COCT_MT260003UV 

COCT_MT040008UV 

COCT_MT280000UV04 

COCT_MT040203UV01 

COCT_MT290000UV06 

COCT_MT050000UV01 

COCT_MT300000UV04 

COCT_MT060000UV01 

COCT_MT310000UV04 

COCT_MT070000UV01 

COCT_MT440001UV 

COCT_MT080000UV 

COCT_MT490000UV04 

COCT_MT090000UV01 

COCT_MT500000UV04 

COCT_MT090002UV01 

COCT_MT510000UV06  

COCT_MT090003UV01 

COCT_MT530000UV 

COCT_MT090100UV01 

COCT_MT600000UV06 

COCT_MT090102UV02 

COCT_MT670000UV04 

COCT_MT090108UV 

COCT_MT710000UV01 

COCT_MT090300UV01 

COCT_MT710007UV 

COCT_MT090303UV01 

COCT_MT740000UV04 

COCT_MT140007UV 

COCT_MT810000UV 

COCT_MT150000UV02 

COCT_MT820000UV  

COCT_MT150002UV01 

COCT_MT960000UV05 

COCT_MT150003UV03 

 
   

Message Act Infrastructure

MCAI_MT900001UV01 

 

Message Control Infrastructure

MCCI_IN000002UV01 

MCCI_MT000200UV01 

MCCI_MT000100UV01 

MCCI_MT000300UV01 

Master File Management Infrastructure

MFMI_MT700701UV01 

MFMI_MT700711UV01 

Patient Administration

PRPA_IN201301UV02 

PRPA_MT201301UV02 

PRPA_IN201302UV02 

PRPA_MT201302UV02 

PRPA_IN201304UV02 

PRPA_MT201303UV02 

PRPA_IN201305UV02 

PRPA_MT201304UV02 

PRPA_IN201306UV02 

PRPA_MT201306UV02 

PRPA_IN201309UV02 

PRPA_MT201307UV02 

PRPA_IN201310UV02 

PRPA_MT201310UV02 

Query Infrastructure

QUQI_IN000003UV01 

QUQI_MT021001UV01 

QUQI_MT000001UV01