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
}