US Prescription Drug Monitoring Program (PDMP), published by HL7 International / Pharmacy. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-pdmp/ and changes regularly. See the Directory of published versions
The broad PDMP ecosystem - from writing a prescription to reporting PDMP history - employs a combination of NCPDP, ASAP and PMIX/NIEM standards, as illustrated below:
In Figure 1, above,
In introducing FHIR as a methodology in connecting providers (prescribers and pharmacists) to the PDMPs, the Implementation Guide stakeholders agreed that mappings between FHIR, PMIX/NIEM, and NCPDP SCRIPT RxHistory may be beneficial for users of this Implementation Guide.
Mapping from each FHIR resource in this Implementation Guide to PMIX/NIEM and NCPDP SCRIPT RxHistory is included in the resource profile pages. On the resource page (e.g., PDMP MedicationDispense), click on the 'Mappings' tab and scroll to find the mapping of interest. The following tables consolidate the mappings for request and response scenarios by standard.
Resources which are not profiled in this Implementation Guide (e.g, US Core Prescriber) do not include mappings to PMIX/NIEM or NCPDP SCRIPT RxHistory. Mapping to these resources is included below, but is not included in the resource definitions (e.g., the mapping tab for US Core Prescriber does not include mapping to PMIX/NIEM)
Fully qualified element names in each standard can be very long. To reduce the text in each cell, the tables below provide "context" and "XPath" or "FHIRPath" for the mapped data elements. The context is a simplified representation of the XPath/FHIRPath referring to the major nodes in the XML Schema, or PDMP FHIR Bundles defined in this Implementation Guide. The XPath/FHIRPath are prefixes to the XPath or FHIRPath for each element in the table.
This section includes a representative field mapping from NCPDP SCRIPT 2017071 RxHistoryRequest to the FHIR elements in this Implementation Guide.
Element Group | Element Name | NCPDP Data Element | FHIR Data Element |
Request | context: Message XPath:/Message |
context: pdmp-bundle-request-message FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-request-message') |
|
Request ID | Header/MessageID | entry.resource.where(resourceType='MessageHeader').id | |
Request date/time | Header/SentTime | timestamp | |
Start Date | Body/RxHistoryRequest/RequestedDates/StartDate | not supported | |
End Date | Body/RxHistoryRequest/RequestedDates/EndDate; | not supported | |
Patient | context: Rx History Request / Patient XPath: /Message/Body/RxHistoryRequest/Patient/HumanPatient |
context: pdmp-bundle-request-message / pdmp-parameters-request / us-core-practitioner FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-request-message').entry.resource.where(resourceType='Parameters').parameter.resource.where(resourceType='Patient') |
|
First Name | Name/FirstName | name.given | |
Last Name | Name/LastName | name.family | |
Date of Birth | DateOfBirth | birthdate | |
Requester | context: Rx History Request / Prescriber XPath: /Message/Body/RxHistoryRequest/Prescriber/NonVeterinarian |
context: pdmp-bundle-request-message / pdmp-parameters-request / us-core-practitioner FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-request-message').entry.resource.where(resourceType='Parameters').parameter.resource.where(resourceType='Practitioner') |
|
Name | Name | name | NPI | Identification/NPI | identifier.where(system='http://hl7.org/fhir/sid/us-npi').value | </tr>
DEA | Identification/DEANumber | identifier.where(system='http://terminology.hl7.org/NamingSystem/usdeanumber)'.value | |
Requesting Facility | context: Rx History Request / Facility XPath: /Message/Body/RxHistoryRequest |
context: pdmp-bundle-request-message / pdmp-parameters-request / us-core-organization FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-request-message').entry.resource.where(resourceType='Parameters').parameter.resource.where(resourceType='Organization') |
|
Name | FacilityName | name | |
State | Address/StateProvince | address.state | |
DEA | Identification/DEANumber | identifier.where(system='http://terminology.hl7.org/NamingSystem/usdeanumber)'.value | |
NCPDP ID | Identification/NCPDPID | identifier.where(system='http://terminology.hl7.org/CodeSystem/NCPDPProviderIdentificationNumber').value | |
NPI | Identification/NPI | identifier.where(system='http://hl7.org/fhir/sid/us-npi').value |
This section includes a representative field mapping from NCPDP SCRIPT 2017071 RxHistoryResponse to the FHIR elements in this Implementation Guide.
Element Group | Element Name | NCPDP Data Element | FHIR Data Element |
Response Information | context: Message XPath: /Message |
context: pdmp-bundle-response-message FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(resourceType='MessageHeader') |
|
Request ID | Header/RelatesToMessageID | response.identifier | Response Date/Time | Header/SentTime | Parameters.extension.where(extension.url='phttp://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-header-timestamp-extension') | </tr>
Report Start Date | Body/RxHistoryResponse/RequestedDates/StartDate | Parameters.extension.where(extension.url='phttp://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-activity-period-extension').valuePeriod.start | |
Report End date | Body/RxHistoryResponse/RequestedDates/EndDate | Parameters.extension.where(extension.url='phttp://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-activity-period-extension').valuePeriod.end | |
Patient | context: Message / RxHistoryResponse / Patient /Message/Body/RxHistoryResponse/Patient/HumanPatient | context: pdmp-bundle-response-message / pdmp-parameters-response / pdmp-history-data / pdmp-patient FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(resourceType='Parameters').parameter.where(name='pdmp-history-data').resource.entry.resource.where(resourceType='Patient') |
|
First Name | Name/FirstName | name.given | |
Last Name | Name/LastName | name.family | Date of Birth | DateOfBirth | birthdate | </tr>
Gender | Gender | gender | |
Street Address 1 | Address/AddressLine1 | address.line[0] | |
Street Address 2 | Address/AddressLine2 | address.line[1] | |
City Address | Address/City | address.city | |
State Code | Address/StateProvince | address.state | |
Zip Code | Address/PostalCode | address.postalCode | |
SSN | Identification/SocialSecurity | identifier.where(system=http://hl7.org/fhir/sid/us-ssn) | |
Prescription | context: Message / RxHistoryResponse / MedicationDispensed /Message/Body/RxHistoryResponse/MedicationDispensed | context: pdmp-bundle-response-message / pdmp-parameters-response / pdmp-history-data / pdmp-patient FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(resourceType='Parameters').parameter.where(name='pdmp-history-data').resource.entry.resource.where(resourceType='MedicationDispense') |
|
Filled Date | LastFillDate | whenPrepared | |
Written Date | WrittenDate | authorizingPrescription.authoredOn | |
Number | HistorySource/SourceReference | identifier | |
Drug Name | DrugDescription | medicationCodeableConcept.text | |
Product ID Qualifier (NDC) | DrugCoded/ProductCode/Qualifier = 'ND' | medicationCodeableConcept.coding.system = 'http://hl7.org/fhir/sid/ndc' | |
Product ID (NDC) | DrugCoded/ProductCode/Code | medicationCodeableConcept.coding.where(system='http://hl7.org/fhir/sid/ndc').code | |
Drug Strength | DrugCoded/Strength | medicationCodeableConcept.ingredient.strength | |
Dosage Form | Quantity/QuantityUnitOfMeasure | medicationCodeableConcept.form | |
Drug Quantity | Quantity/Value | quantity | |
Days of Supply | DaysSupply | daysSupply | |
Refill Number | HistorySource/FillNumber | extension.where(url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-extension-rx-fill-number').valuePositiveInt | |
Refills Authorized | not directly represented in RxHistoryResponse | authorizingPrescription.dispenseRequest.numberOfRepeatsAllowed | |
Partial Fill Indicator | not supported in RxHistoryResponse | type | |
Method of Payment | HistorySource/PaymentType | extension.where(url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-extension-method-of-payment') | |
Opioid Treatment Code | not supported | extension.where(url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-extension-opioid-treatment-code').Coding.code | |
Transmission Method | not supported | extension.where(url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-extension-rx-transmission-method').Coding.code | |
Dispenser Organization | context: Message / RxHistoryResponse / MedicationDispensed / Pharmacy/Message/Body/RxHistoryResponse/MedicationDispensed/Pharmacy | context: pdmp-bundle-response-message / pdmp-parameters-response / pdmp-history-data / pdmp-patient FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(resourceType='Parameters').parameter.where(name='pdmp-history-data').resource.entry.resource.where(resourceType='Organization') |
|
Name (Facility) | BusinessName | name | |
Street Address line 1 | Address/AddressLine1 | address.line[0] | |
Street Address line 2 | Address/AddressLine2 | address.line[1] | |
City Address | Address/City | address.city | |
State Code | Address/StateProvince | address.state | |
Zip Code | Address/PostalCode | address.postalCode | |
Phone Number | CommunicationNumbers/PrimaryTelephone | telecom | |
DEA | Identification/DEANumber | identifier.where(system='http://terminology.hl7.org/NamingSystem/usdeanumber)'.value | |
NCPDP ID | Identification/NCPDPID | identifier.where(system='http://terminology.hl7.org/CodeSystem/NCPDPProviderIdentificationNumber').value | |
NPI | Identification/NPI | identifier.where(system='http://hl7.org/fhir/sid/us-npi').value | |
Prescriber | context: Message / RxHistoryResponse / MedicationDispensed / Prescriber /Message/Body/RxHistoryResponse/MedicationDispensed/Prescriber | context: pdmp-bundle-response-message / pdmp-parameters-response / pdmp-history-data / pdmp-patient FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(resourceType='Parameters').parameter.where(name='pdmp-history-data').resource.entry.resource.where(resourceType='Prescriber') |
|
First Name | NonVeterinarian/Name/FirstName | name.given | |
Last Name | NonVeterinarian/Name/LastName | name.family | |
Street Address Line 1 | NonVeterinarian/Address/AddressLine1 | address.line[0] | |
Street Address Line 2 | Prescriber/NonVeterinarian/Address/AddressLine2 | address.line[1] | |
City Address | NonVeterinarian/Address/City | Practitioner.address.city | |
State Code | NonVeterinarian/Address/StateProvince | Practitioner.address.state | |
Zip Code | NonVeterinarian/Address/PostalCode | address.postalCode | |
DEA Number | NonVeterinarian/Identification/DEANumber | identifier.where(system='http://terminology.hl7.org/NamingSystem/usdeanumber)'.value | |
NPI Number | NonVeterinarian/Identification/NPI | identifier.where(system='http://hl7.org/fhir/sid/us-npi').value | |
State License | NonVeterinarian/Identification/StateLicenseNumber | identifier | |
State of License | not supported | identifier.extension.where(url='http://hl7.org/fhir/us/core/StructureDefinition/us-core-jurisdiction') |
This section includes a representative field mapping from PMIX/NIEM 4.0 Request to the FHIR elements in this Implementation Guide.
Element Group | Element Name | PMIX Data Element | FHIR Data Element |
context: PMP Request XPath: pmix:PMPRequest |
context: pdmp-bundle-request-message / pdmp-parameters-request / pdmp-patient FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-request-message').entry.resource.where(resourceType='Parameters').parameter.where(name='patient') |
||
Request Date Range | Start Date | pmp:RequestPrescriptionDateRange/pmp:RequestPrescriptionDateRangeBegin | not supported |
End Date | pmp:RequestPrescriptionDateRange/pmp:RequestPrescriptionDateRangeEnd | not supported | |
context: pmix:PMPRequest | context: pdmp-bundle-request-message / pdmp-parameters-request / pdmp-patient FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-request-message').entry.resource.where(resourceType='Parameters').parameter.where(name='patient') |
||
Patient | First Name | pmp:RequestPatient/nc:PersonName/nc:PersonGivenName | Patient.name.given |
Last Name | pmp:RequestPatient/nc:PersonName/nc:PersonSurName | Patient.name.family | |
Date of Birth | pmp:RequestPatient/nc:PersonBirthDate/Date | Patient.birthdate |
This section includes a representative field mapping from PMIX/NIEM 4.0 Prescription Report to the FHIR elements in this Implementation Guide.
Element Group | Element Name | PMIX Data Element | FHIR Data Element |
Response Information | context: Response Report XPath:pmix:PMPPrescriptionReport/pmp:RequestResponsePrescriptionReport |
context: pdmp-bundle-response-message / pdmp-parameters-response FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-parameters-response').paramenter |
|
Report Date/Time | pmp:ReportExecutionDate pmp:ReportExecutionTime |
extension.where(extension.url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-header-timestamp-extension') | |
Report Start Date | pmp:ReportDateRange/pmp:ReportDateRangeBegin | extension.where(extension.url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-activity-period-extension').valuePeriod.start | |
Report End Date | pmp:ReportDateRange/pmp:ReportDateRangeEnd | extension.where(extension.url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-activity-period-extension').valuePeriod.end | |
Patient | context: Response Report / Prescription / Patient XPath: pmix:PMPPrescriptionReport/pmp:RequestResponsePrescriptionReport/pmp:Prescription/pmp:Patient |
context: pdmp-bundle-response-message / pdmp-parameters-response / pdmp-history-data / us-core-patient FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-parameters-response').parameter.resource.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-history-result').entry.resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient') |
|
First Name | nc:PersonName/nc:PersonGivenName | name.given | |
Last Name | nc:PersonName/nc:PersonSurName | name.family | |
Date of Birth | nc:PersonBirthDate/Date | birthdate | |
Gender | PersonSexCode | gender | |
Street Address | pmp:PersonPrimaryContactInformation/ContactMailingAddress/LocationStreet | address.line | |
City Address | pmp:PersonPrimaryContactInformation/ContactMailingAddress/nc:LocationCityName | address.city | |
State Code | pmp:PersonPrimaryContactInformation/ContactMailingAddress/LocationState | address.state | |
Zip Code | pmp:PersonPrimaryContactInformation/ContactMailingAddress/nc:LocationPostalCode | address.postalCode | |
SSN | PersonSocialSecurityNumberIdentifier | identifier.where(system=http://hl7.org/fhir/sid/us-ssn).value | |
Prescription | context: Response Report / Prescription XPath: pmix:PMPPrescriptionReport/pmp:RequestResponsePrescriptionReport/pmp:Prescription |
context: pdmp-bundle-response-message / pdmp-parameters-response / pdmp-history-data / pdmp-medicationdispense FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-parameters-response').parameter.resource.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-history-result').entry.resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/pdmp-medicationdispense') |
|
Filled Date | pmp:PrescriptionFilledDate | whenPrepared | |
Written Date | pmp:PrescriptionWrittenDate | authorizingPrescription.authoredOn | |
Number | pmp:PrescriptionNumberText | identifier.value | |
Drug Name | pmp:PrescriptionDrug/pmp:DrugProductNameText | medicationCodeableConcept.text | |
Product NDC | pmp:PrescriptionDrug/pmp:DrugNDCProductIdentifier | medicationCodeableConcept.coding.where(system='http://hl7.org/fhir/sid/ndc').code | |
Drug Strength | pmp:PrescriptionDrug/pmp:DrugStrengthText | medicationCodeableConcept.ingredient.strength | |
Dosage Form | pmp:PrescriptionDrug/pmp:DrugUnitOfMeasureText | medicationCodeableConcept.form | |
Drug Quantity | pmp:DispensedQuantity | quantity | |
Days of Supply | pmp:DaysSupplyCount | daysSupply | |
Refill Number | pmp:DrugRefillNumberCount | extension.where(url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-extension-rx-fill-number').valuePositiveInt | |
Refills Authorized | pmp:RefillsAuthorizedCount | authorizingPrescription.dispenseRequest.numberOfRepeatsAllowed | |
Partial Fill Indicator | pmp:PartialFillIndicator | type | |
Method of Payment | pmp:MethodOfPaymentCode | extension.where(url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-extension-method-of-payment').code | |
Opioid Treatment Code | pmp:OpioidTreatmentCategoryCode | extension.where(url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-extension-opioid-treatment-code').Coding.code | |
Transmission Method | pmp:TransmissionFormOfRxOriginCode | extension.where(url='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-extension-rx-transmission-method').Coding.code | |
Dispenser Organization | context: Response Report / Prescription / Dispenser XPath: pmix:PMPPrescriptionReport/pmp:RequestResponsePrescriptionReport/pmp:Prescription/pmp:Dispenser |
context: pdmp-bundle-response-message / pdmp-parameters-response / pdmp-history-data / pdmp-organization-pharmacy FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-parameters-response').parameter.resource.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-history-result').entry.resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/pdmp-organization-pharmacy') |
|
Name (Facility) | nc:OrganizationDoingBusinessAsName | name | |
Street Address | nc:OrganizationPrimaryContactInformation/nc:ContactMailingAddress/nc:LocationStreet/nc:StreetFullText | address.line | |
City Address | nc:OrganizationPrimaryContactInformation/nc:ContactMailingAddress/nc:LocationCityName | address.city | |
State Code | nc:OrganizationPrimaryContactInformation/nc:ContactMailingAddress/nc:LocationStateUSPostalServiceCode | address.state | |
Zip Code | nc:OrganizationPrimaryContactInformation/nc:ContactMailingAddress/nc:LocationPostalCode | address.postalCode | |
Phone Number | nc:OrganizationPrimaryContactInformation/nc:ContactTelephoneNumber/nc:FullTelephoneNumber | telecom | |
DEA | pmp:DEANumberIdentifier | identifier.where(system='http://terminology.hl7.org/NamingSystem/usdeanumber)'.value | |
NCPDP ID | pmp:NCPDPIdentifier | identifier.where(system='http://terminology.hl7.org/CodeSystem/NCPDPProviderIdentificationNumber').value | |
NPI | pmp:NPIIdentifier | identifier.where(system='http://hl7.org/fhir/sid/us-npi').value | |
Prescriber | context: Response Report / Prescription / Prescriber XPath: pmix:PMPPrescriptionReport/pmp:RequestResponsePrescriptionReport/pmp:Prescription/pmp:Prescriber |
context: pdmp-bundle-response-message / pdmp-parameters-response / pdmp-history-data / us-core-practitioner FHIRPath: Bundle.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-response-message').entry.resource.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-parameters-response').parameter.resource.where(meta.profile='http://hl7.org/fhir/us/pdmp/StructureDefinition/pdmp-bundle-history-result').entry.resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner') |
|
First Name | nc:PersonName/nc:PersonGivenName | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').name.given | |
Last Name | nc:PersonName/nc:PersonSurName | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').name.family | |
Street Address | pmp:PersonPrimaryContactInformation/nc:ContactMailingAddress/nc:LocationStreet/nc:StreetFullText | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').address.line | |
City Address | pmp:PersonPrimaryContactInformation/nc:ContactMailingAddress/nc:LocationCityName | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').address.city | |
State Code | pmp:PersonPrimaryContactInformation/nc:ContactMailingAddress/nc:LocationStateUSPostalServiceCode | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').address.state | |
Zip Code | pmp:PersonPrimaryContactInformation/nc:ContactMailingAddress/nc:LocationPostalCode | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').address.postalCode | |
DEA | pmp:DEANumberIdentifier/nc:IdentificationID | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').identifier | |
NPI | pmp:NPIIdentifier/nc:IdentificationID | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').identifier.where(coding.system'http://hl7.org/fhir/sid/us-npi') | |
State License | pmp:StateLicenseIdentifier:nc:IdentificationID | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').identifier | |
State of License | pmp:StateLicenseIdentifier:nc:IdentificationJurisdiction | resource.where(meta.profile='http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner').identifier |