This page is part of the US Prescription Drug Monitoring Program (PDMP) (v1.0.0-ballot: STU1 Ballot 1) based on FHIR (HL7® FHIR® Standard) R4. . For a full list of available versions, see the Directory of published versions
This section describes how a PDMP Requester can retrieve a patient’s information from a PDMP Responder by calling the pdmp-history
operation directly or by submitting that operation request using FHIR messaging.
The PDMP request and response are accomplished using a FHIR Operation (pdmp-history) which is invoked by POSTing a FHIR Parameters resource containing patient and requesting provider details to the PDMP Responder’s Patient/$pdmp-history
endpoint. In response, the PDMP Responder gathers PDMP history information and returns it within another Parameters resource.
The PDMP history may be returned as…
pdmp-history-data
parameterand / or
pdmp-history-link
parameter.A PDMP Responder may choose to implement either or both of those options, with consideration for applicable state rules or other requirements.
Also contained in the response are:
pre-stage-retrieval-key
parameteroutcome
parameter.Use of an operation enables the process to support current PDMP processing requirements including:
Operation definition. See the pdmp-history OperationDefinition for an overview of the operation’s inputs and outputs, and the following Parameter definitions for additional details:
Submission options. The operation can be called in two ways:
[base]/Patient/$pdmp-history
endpointpdmp-history
operation definition. See the messaging section below for details.The PDMP pdmp-history
operation may also be invoked using FHIR messaging. The PDMP Requester submits the operation’s request parameters within a FHIR Bundle that also includes a MessageHeader. The event
element in the MessageHeader references the pdmp-history
operation definition.
A message-based request is illustrated below:
The messaging method may also be used to transmit requests via an intermediary such as an e-prescribing network or other healthcare data exchange. The MessageHeader supplies elements that the participants may use to:
Below is an illustration of submission through an intermediary:
The PDMP Request message includes a MessageHeader and a Parameters resource containing the information needed to retrieve a single individual’s information from a PDMP Responder (see request parameter details). Note that the MessageHeader.event of the request references the same pdmp-history operation that can be invoked directly using a RESTful POST to in non-messaging environments.
Further details and examples are at PDMP Bundle - Request Message
The PDMP Response message contains a MessageHeader and the response Parameters resource defined in the pdmp-history operation.
Further details and examples are at PDMP Bundle - Response Message
Invoking the pdmp-history
operation via FHIR messaging is accomplished following the guidance provided in the Invoking Operations via Messages section of the FHIR specification.
MessageHeader population
The MessageHeader.event of the request message references the pdmp-history
operation. Specifically:
"urn:ietf:rfc:3986"
"http://hl7.org/fhir/us/pdmp/OperationDefinition/pdmp-history"
Submission endpoint and parameters
The request message is POSTed to the PDMP Responder using the standard FHIR $process-message operation…
[base]/$process-message
Per the standard, the $process-message operation SHALL contain a single content
parameter consisting of a FHIR message (a Bundle containing a MessageHeader resource).
The async
and response-url
Process Message parameters may be used when supported by the PDMP Responder.
PDMP messages are exchanged using standard FHIR messaging features.
This section provides guidance for PDMP Responders for responding in situations where the request cannot be processed in part or in whole, or where there is other processing information to be returned in the operation response.
All scenarios described below communicate processing information using the operation’s outcome
parameter, which holds an OperationOutcome resource that gives the details of one or more processing aspects. This OperationOutcome contains:
OperationOutcome.issue.severity
field which must come from this FHIR value set.OperationOutcome.issue.code
element (e.g., incomplete
transient error, business-rule
processing error, etc.) which must come from this FHIR value set.OperationOutcome.diagnostics
propertyOperationOutcome.issue.details.coding.code
value to further define the processing conditionOperationOutcome.issue.details.coding.display
field.PDMP Responders are expected to utilize codes and descriptive text in the .diagnostics.issue.details
element that meet their existing conventions and/or jurisdictional requirements. One iteration of this element SHOULD contain a code from the PDMP Response Status Codes value set.
Below are expectations for returning processing information in common PDMP scenarios:
When a PDMP Responder system successfully completes processing of a PDMP request but has no PDMP history to return (e.g., if the requested patient is not found) it SHALL respond by returning an OperationOutcome resource within the outcome
operation parameter that describes the reason that no history was returned, as show in this example.
In this scenario, one iteration of issue.details.code
SHOULD be populated with the no-data
code from the response status value set
A pdmp-history-link
MAY also be populated in this scenario, referencing a human-readable report that states that the patient was not found.
The PDMP Requester populates the pre-stage-only
input parameter with true
to request that the PDMP Responder gather information for the submitted patient and stage it for retrieval via a subsequent pdmp-history
call. The PDMP Responder returns an operation response with the outcome
parameter populated to indicate that the request was accepted, as show in this example.
In this scenario, one iteration of issue.details.code
SHOULD be populated with the pre-stage-accepted
code from the response status value set
If the PDMP Responder encounters a non-fatal exception when executing a request that impacts the content of the response the system SHALL include an OperationOutcome within the operation’s outcome
parameter describing the issue and how the response content was impacted, as illustrated in this example.
In this scenario, one iteration of issue.details.code
SHOULD be populated with the error
code from the response status value set
When a PDMP Responder system encounters an error that prevents it from completing processing of a PDMP request, it SHALL respond by returning an OperationOutcome resource within the outcome
operation parameter that describes the nature of the failure, as show in this example.
In this scenario, one iteration of issue.details.code
SHOULD be populated with the error
code from the response status value set