This page is part of the US Prescription Drug Monitoring Program (PDMP) (v1.0.0: STU1) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version in its permanent home (it will always be available at this URL). 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…
and / or
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:
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:
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:
Submission endpoint and parameters
The request message is submitted using HTTP POST to the PDMP Responder using the standard FHIR $process-message operation…
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:
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
There is no requirement for PDMP Responders to accept pre-stage-only requests. Support for pre-stage requests is determined when the integration is being built between the PDMP Requestor (e.g., an EHR) and the PDMP Responder.
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