Performing PIX and PDQ Queries Against an EMPI
InterSystems can perform both probabilistic and deterministic queries against an external EMPI (Enterprise Master Patient Index).
Perform a Deterministic Query Against an EMPI (PIXv3)
InterSystems products support deterministic queries against an EMPI via the IHE “PIXv3” profile. A PIX query provides an MRN (Medical Record Number) and assigning authority and receives back the name and MPI ID of a single patient.
This section includes:
PIX Query Message Trace
The following diagram is an annotated PIX query message trace.
The test service shown in the diagram is a simple message router. Trace operations is a utility that makes intermediate processing steps visible. The numbers in the diagram match the steps in the procedure below.

PIX Query Procedure
- 
You provide a Patient Search RequestOpens in a new tab message containing an MRN and assigning authority to the InterSystems PIX Consumer operation. 
- 
The InterSystems PIX Consumer operation transforms the message into an IHE “PIXv3_QueryRequest” using the transformation specified in the TransformPatientSearchToPIX setting. 
- 
The InterSystems PIX Consumer operation then forwards the PIX request to the service named in the ServiceName setting. This setting is typically PIXv3.Manager, and it refers to a Service Registry entry pointing to the location of the PIX manager actor endpoint in another system. 
- 
The PIX manager on the other system returns a PIX response message that contains the name and MPI ID for a single patient if there is a match. 
- 
The InterSystems PIX Consumer operation transforms the response into a Patient Search ResponseOpens in a new tab message using the transformation specified in TransformPIXToPatientSearch. 
- 
The InterSystems PIX Consumer returns the Patient Search ResponseOpens in a new tab message, which contains the name and MPI ID of the patient, if found. If no patient is found, the response message indicates a <ResultsCount> of zero. If there is an error, the PIX Consumer returns null. 
PIX Query Components and Settings
| Component | Setting | 
|---|---|
| Business Hosts | PIX Consumer: HS.IHE.PIXv3.Consumer.OperationsOpens in a new tab | 
| Production Settings | TransformPatientSearchToPIX in the PIX Consumer operation | 
| Production Settings | ServiceName in the PIX Consumer operation | 
| Production Settings | TransformPIXToPatientSearch in the PIX Consumer operation | 
| Production Messages | HS.Message.PatientSearchRequestOpens in a new tab | 
| Production Messages | HS.Message.PatientSearchResponseOpens in a new tab | 
| XSL Transformations | IHE/PIX/Version1/PatientSearchToPRPAIN201309UV.xsl | 
| XSL Transformations | IHE/PIX/Version1/PRPAIN201310UVToPatientSearchResponse.xsl | 
| Service Registry Entries | PIXv3.Manager | 
| External IHE Actor Endpoint | PIX manager | 
PIX Query Example
The method below generates a PIX query:
 ClassMethod PIXQuery()
  {
     /// Create Patient Search Request message 
     Set obj=##class(HS.Message.PatientSearchRequest).%New()
     //Provide the Patient MRN
     Set obj.AssigningAuthority="EXTERNAL" //refers to an Assigning Authority entry in the OID Registry
     Set obj.MRN="1111222"
     // Send to the routing service (or directly to HS.IHE.PIXv3.Consumer.Operations)
     Do ##class(HS.Test.Service).SendSync(obj,.pr)
     quit
  }Perform a Probabilistic Query Against an EMPI (PDQv3)
InterSystems products support probabilistic queries against an EMPI via the IHE “PDQv3” profile. A PDQ query provides a partial set of patient demographics and receives back full demographics for one or more MPI IDs (patients) that match the provided demographics.
This section includes:
PDQ Query Message Trace
The following diagram is an annotated PDQ query message trace.
The test service shown in the diagram is a simple message router. Trace operations is a utility that makes intermediate processing steps visible in the trace. The numbers in the diagram match the steps in the procedure below.

PDQ Query Procedure
- 
You provide a Patient Search RequestOpens in a new tab message containing partial demographics to the InterSystems PDQ Consumer. 
- 
The InterSystems PDQ Consumer transforms the message into an IHE “PDQv3_QueryRequest” using the transformation specified in the TransformPatientSearchToPDQ setting. 
- 
The InterSystems PDQ Consumer then forwards the PDQ request to the PDQ supplier endpoint on another system that is named in the ServiceName setting. 
- 
The PDQ supplier on the other system returns a PDQ response message that contains the complete demographics for all patients that match the supplied partial demographics. 
- 
The InterSystems PDQ Consumer transforms the response into a Patient Search ResponseOpens in a new tab message using the transformation specified in the TransformPDQToPatientSearch setting. 
- 
The InterSystems PDQ Consumer returns the Patient Search ResponseOpens in a new tab message, which contains the full demographics and MPI IDs of the matching patients. If no patient is found, the response message indicates a <ResultsCount> of zero. If there is an error, the PDQ Consumer returns null. 
PDQ Query Components and Settings
| Component | Setting | 
|---|---|
| Business Hosts | PDQ Consumer: HS.IHE.PDQv3.Consumer.OperationsOpens in a new tab | 
| Production Settings | TransformPatientSearchToPDQ in the PDQ Consumer | 
| Production Settings | ServiceName in the PDQ Consumer | 
| Production Settings | TransformPDQToPatientSearch in the PDQ Consumer | 
| Production Messages | HS.Message.PatientSearchRequestOpens in a new tab | 
| Production Messages | HS.Message.PatientSearchResponseOpens in a new tab | 
| XSL Transformations | IHE/PDQ/Version1/PatientSearchToPRPAIN201305UV.xsl | 
| XSL Transformations | IHE/PDQ/Version1/PRPAIN201306UVToPatientSearchResponse.xsl | 
| Service Registry Entries | PDQv3.Supplier | 
| External IHE Actor Endpoint | PDQ Supplier | 
PDQ Query Example
The method below generates a PDQ query:
 ClassMethod PDQQuery()
  {
     // Create Patient Search Request message 
     Set obj=##class(HS.Message.PatientSearchRequest).%New()
 
     // Provide patient demographics
     Set obj.FirstName="James"
     Set obj.LastName="Smith"
 
     // Required only for HS.Test.Service to distinguish between PIX/PDQ
     Do obj.AdditionalInfo.SetAt(1,"PDQ")
 
     // Send to the routing service (or directly to HS.IHE.PDQv3.Consumer.Operations)
     Do ##class(HS.Test.Service).SendSync(obj,.sr)
 
     quit
  }