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
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 8.1, above,
The stakeholders that participated in the development of this Implementation Guide agreed that mappings between FHIR, PMIX/NIEM, and NCPDP SCRIPT RxHistory may be beneficial for users of this Implementation Guide.
Specific mapping from each FHIR resource in this Implementation Guide to PMIX/NIEM and NCPDP SCRIPT RxHistory is included in the description of each resource. Specific links follow. Generally, On the resource page (e.g., PDMP MedicationDispense), click on the ‘Mappings’ tab and then scroll to the bottom of the page to find the PMIX/NIEM and NCPDP SCRIPT RxHistory mapping.
Links to the mappings
The following tables consolidate the mappings for request and response scenarios.
This section includes the minimal mapping for the request from an EHR to a state PDMP using NCPDP SCRIPT 2017071 RxHistoryRequest.
Request Data Element | NCPDP Data Element | FHIR Data Element | |
Request | Requester | Prescriber/NonVeterinarian/Name | Practitioner.name |
Requester Role | RequestorRole | PractitionerRole.code | |
Request ID | Message/Header/MessageID | MessageHeader.id | |
Request date/ timestamp | Message/Header/SentTime | MessageHeader.extension (StructureDefinition-header-timestamp-extension) | |
Requester Identifier | NPI Number* | Prescriber/NonVeterinarian/Identification/NPI | Practitioner.identifier |
DEA Number* | Prescriber/NonVeterinarian/Identification/DEANumber | Practitioner.identifier | |
Requesting Facility ID | DEA Number* | Facility/Identification/DEANumber | Organization.identifier |
NCPDP Number* | Facility/Identification/NCPDPID | Organization.identifier | |
NPI* | Facility/Identification/NPI | Organization.identifier | |
Requesting Facility | Facility Name | Facility/FacilityName | Organization.name |
State code of Requesting Facility | Facility/Address/StateProvince | Organization.address.state | |
Patient | First Name | Patient/HumanPatient/Name/FirstName | MedicationDispense.subject(Patient) --> Patient.name.given |
Last Name | Patient/HumanPatient/Name/LastName | MedicationDispense.subject(Patient) --> Patient.name.family | |
Date of Birth | Patient/HumanPatient/DateOfBirth | MedicationDispense.subject(Patient) --> Patient.birthdate | |
Request Prescription Date Range | Start Date | RequestedDates/StartDate | MedicationDispense.authorizingPrescription.dispenseRequest.validityPeriod |
End Date | RequestedDates/EndDate; | MedicationDispense.authorizingPrescription.dispenseRequest.validityPeriod | |
* Conditionally required data elements have asterisks (*), meaning at least one data element is required within this category. For example, under Requesting Facility ID, one of the three data elements (DEA Number, NCPDP Number or NPI) is required. |
This section includes the minimal mapping for the response from a state to an EHR using NCPDP SCRIPT 2017071 RxHistoryResponse.
Response Data Element | NCPDP Data Element | FHIR Data Element | |
Routing Information | |||
Response Date/Timestamp | Message/Header/SentTime | MessageHeader.extension (StructureDefinition-header-timestamp-extension) | |
Response Prescription Date Range (Start Date) | RequestedDates/StartDate | MessageHeader.extension (StructureDefinition-response-prescription-period-extension - Period.start) | |
Response Prescription Date Range (End date) | RequestedDates/EndDate | MessageHeader.extension (StructureDefinition-response-prescription-period-extension - Period.end) | |
Request ID | Message/Header/RelatesToMessageID | MessageHeader.response.identifier | |
Message Body | |||
Patient | Patient First Name | Patient/HumanPatient/Name/FirstName | Patient.name.given |
Patient Last Name | Patient/HumanPatient/Name/LastName | Patient.name.family | Patient Date of Birth | Patient/HumanPatient/DateOfBirth | Patient.birthdate | </tr>
Patient Gender | Patient/HumanPatient/Gender | Patient.gender | |
Patient Street Address 1 | Patient/HumanPatient/Address/AddressLine1 | Patient.address.line[0] | |
Patient Street Address 2 | Patient/HumanPatient/Address/AddressLine2 | Patient.address.line[1] | |
Patient City Address | Patient/HumanPatient/Address/City | Patient.address.city | |
Patient State Code | Patient/HumanPatient/Address/StateProvince | Patient.address.state | |
Patient Zip Code | Patient/HumanPatient/Address/PostalCode | Patient.address.postalCode | |
SSN* | Patient/HumanPatient/Identification/SocialSecurity | Patient.identifier | |
Prescription | Prescription Filled Date | MedicationDispensed/LastFillDate | MedicationDispense.whenPrepared |
Prescription Written Date | MedicationDispensed/WrittenDate | MedicationDispense.authorizingPrescription.authoredOn | |
Prescription Number | MedicationDispensed/HistorySource/SourceReference | MedicationDispense.Identifier | |
Drug Name[1] | MedicationDispensed/DrugDescription | MedicationDispense.medicationReference.text | |
Drug Strength[1] | MedicationDispensed/DrugCoded/Strength | MedicationDispense.medicationReference.ingredient.strength | |
Dosage Form[2] | MedicationDispensed/Quantity/QuantityUnitOfMeasure | MedicationDispense.medicationReference.form | |
Drug Quantity | MedicationDispensed/Quantity/Value | MedicationDispense.quantity | |
Days of Supply | MedicationDispensed/DaysSupply | MedicationDispense.daysSupply | |
Refill Number | MedicationDispensed/HistorySource/FillNumber | MedicationDispense.type | |
Refills Authorized | not directly represented in RxHistoryResponse | MedicationDispense.authorizingPrescription.dispenseRequest.numberOfRepeatsAllowed | |
Partial Fill Indicator | not supported in RxHistoryResponse | MedicationDispense.type | |
Method of Payment | MedicationDispensed/HistorySource/PaymentType | are we including this in our response? SCRIPT uses code list PaymentType | |
Drug | Product ID Qualifier | MedicationDispensed/DrugCoded/ProductCode/Qualifier | MedicationDispense.medicationReference.code.coding.system |
Product ID | MedicationDispensed/DrugCoded/ProductCode/Code | MedicationDispense.medicationReference.code.coding.code | |
Dispenser Organization | Dispenser Organization Name (Facility) | MedicationDispensed/Pharmacy/BusinessName | Organization.name |
Dispenser Organization Street Address | MedicationDispensed/Pharmacy/Address/AddressLine1 MedicationDispensed/Pharmacy/Address/AddressLine2 |
Organization.address.line | |
Dispenser Organization City Address | MedicationDispensed/Pharmacy/Address/City | Organization.address.city | |
Dispenser Organization State Code | MedicationDispensed/Pharmacy/Address/StateProvince | Organization.address.state | |
Dispenser Organization Zip Code | MedicationDispensed/Pharmacy/Address/PostalCode | Organization.address.postalCode | |
Dispenser Organization Phone Number | MedicationDispensed/Pharmacy/CommunicationNumbers/PrimaryTelephone | Organization.telecom | |
Dispenser Organization (Pharmacy identifier) | DEA Number* | MedicationDispensed/Pharmacy/Identification/DEANumber | Organization.identifier |
NCPDP Number* | MedicationDispensed/Pharmacy/Identification/NCPDPID | Organization.identifier | |
NPI Number* | MedicationDispensed/Pharmacy/Identification/NPI | Organization.identifier | |
Prescriber | Prescriber First Name | MedicationDispensed/Prescriber/NonVeterinarian/Name/FirstName | Practitioner.name.given |
Prescriber Last Name | MedicationDispensed/Prescriber/NonVeterinarian/Name/LastName | Practitioner.name.family | |
Prescriber Street Address | MedicationDispensed/Prescriber/NonVeterinarian/Address/AddressLine1 MedicationDispensed/Prescriber/NonVeterinarian/Address/AddressLine2 |
Practitioner.address.line | |
Prescriber City Address | MedicationDispensed/Prescriber/NonVeterinarian/Address/City | Practitioner.address.city | |
Prescriber State Code | MedicationDispensed/Prescriber/NonVeterinarian/Address/StateProvince | Practitioner.address.state | |
Prescriber Zip Code | MedicationDispensed/Prescriber/NonVeterinarian/Address/PostalCode | Practitioner.address.postalCode | |
Prescriber Identifier | DEA Number* | MedicationDispensed/Prescriber/NonVeterinarian/Identification/DEANumber | Practitioner.identifier |
NPI Number* | MedicationDispensed/Prescriber/NonVeterinarian/Identification/DEANumb… | Practitioner.identifier | |
State License* Identifier | MedicationDispensed/Prescriber/NonVeterinarian/Identification/StateLicenseNumber | Practitioner.identifier | |
State of License* | NA | Practitioner.identifier | |
* Conditionally required data elements have asterisks (*), meaning at least one data element is required within this category. For example, under Requesting Facility ID, one of the three data elements (DEA Number, NCPDP Number or NPI) is required. |
This section includes the minimal mapping for the request from an EHR to a state using PMIX.
Request Data Element | PMIX Data Element | FHIR Data Element | |
Routing Information | |||
Request | Requester | pmix:Requester | Practitioner.name |
Requester Role | pmix:RequesterRole | PractitionerRole.code | |
Request ID | pmix:RequestID | MessageHeader.id | |
Request date/ timestamp | n/a | MessageHeader.extension (StructureDefinition-header-timestamp-extension) | |
Requester Identifier | NPI Number* | nc:IdentificationID | Practitioner.identifier |
DEA Number* | nc:IdentificationID | Practitioner.identifier | |
Requesting Facility ID | DEA Number* | nc:IdentificationID | Organization.identifier |
NCPDP Number* | nc:IdentificationID | Organization.identifier | |
NPI* | nc:IdentificationID | Organization.identifier | |
Requesting Facility | Facility Name | nc:OrganizationDoingBusinessAsName | Organization.name |
State code of Requesting Facility | nc:LocationStateUSPostalServiceCode | Organization.address.state | |
Message Body | |||
Patient | First Name | nc:PersonGivenName | MedicationDispense.subject(Patient) --> Patient.name.given |
Last Name | nc:PersonSurName | MedicationDispense.subject(Patient) --> Patient.name.family | |
Date of Birth | nc:Date | MedicationDispense.subject(Patient) --> Patient.birthdate | |
Request Prescription Date Range | Start Date | pmp:RequestPrescriptionDateRangeBegin | MedicationDispense.authorizingPrescription.dispenseRequest.validityPeriod |
End Date | pmp:RequestPrescriptionDateRangeEnd | MedicationDispense.authorizingPrescription.dispenseRequest.validityPeriod | |
* Conditionally required data elements have asterisks (*), meaning at least one data element is required within this category. For example, under Requesting Facility ID, one of the three data elements (DEA Number, NCPDP Number or NPI) is required. |
This section includes the minimal mapping for the response from a state to an EHR using PMIX.
Response Data Element | PMIX Data Element | FHIR Data Element | |
Routing Information | |||
Response Date/Timestamp | pmp:ReportExecutionDate pmp:ReportExecutionTime | MessageHeader.extension (StructureDefinition-header-timestamp-extension) | |
Response Prescription Date Range (Start Date) | pmp:ReportDateRangeBegin | MessageHeader.extension (StructureDefinition-response-prescription-period-extension - Period.start) | |
Response Prescription Date Range (End date) | pmp:ReportDateRangeEnd | MessageHeader.extension (StructureDefinition-response-prescription-period-extension - Period.end) | |
Request ID | n/a | MessageHeader.response.identifier | |
Message Body | |||
Patient | Patient First Name | nc:PersonGivenName | Patient.name.given |
Patient Last Name | nc:PersonSurName | Patient.name.family | |
Patient Date of Birth | nc:Date | Patient.birthdate | |
Patient Gender | PersonSexCode | Patient.gender | |
Patient Street Address | StreetFullText | Patient.address.line | |
Patient City Address | nc:LocationCityName | Patient.address.city | |
Patient State Code | nc:LocationStateUSPostalServiceCode | Patient.address.state | |
Patient Zip Code | nc:LocationPostalExtensionCod | Patient.address.postalCode | |
SSN* | nc:IdentificationID | Patient.identifier | |
Prescription | Prescription Filled Date | pmp:PrescriptionFilledDate | MedicationDispense.whenPrepared |
Prescription Written Date | nc:Date | MedicationDispense.authorizingPrescription.authoredOn | |
Prescription Number | pmp:PrescriptionNumberText | MedicationDispense.Identifier | |
Drug Name[1] | pmp:DrugProductNameText | MedicationDispense.medicationReference.code.coding.code.display | |
Drug Strength[1] | pmp:DrugStrengthText | MedicationDispense.medicationReference.ingredient.strength | |
Dosage Form[2] | pmp:DrugUnitOfMeasureText | MedicationDispense.medicationReference.form | |
Drug Quantity | pmp:DispensedQuantity | MedicationDispense.quantity | |
Days of Supply | pmp:DaysSupplyCount | MedicationDispense.daysSupply | |
Refill Number | pmp:DrugRefillNumberCount | MedicationDispense.extension - (StructureDefinition-refill-number-extension) | |
Refills Authorized | pmp:RefillsAuthorizedCount | MedicationDispense.authorizingPrescription.dispenseRequest.numberOfRepeatsAllowed | |
Partial Fill Indicator | pmp:PartialFillIndicator | MedicationDispense.type | |
Method of Payment | pmp:MethodOfPaymentCode | MedicationDispense.note | |
Drug | Product ID Qualifier | pmp:DrugNDCProductIdentifier | MedicationDispense.medicationReference.code.coding.system |
Product ID | IdentificationID | MedicationDispense.medicationReference.code.coding.code | |
Dispenser Organization | Dispenser Organization Name (Facility) | nc:OrganizationDoingBusinessAsName | Organization.name |
Dispenser Organization Street Address | nc:StreetFullText | Organization.address.line | |
Dispenser Organization City Address | nc:LocationCityName | Organization.address.city | |
Dispenser Organization State Code | nc:LocationStateUSPostalServiceCode | Organization.address.state | |
Dispenser Organization Zip Code | nc:LocationPostalCode | Organization.address.postalCode | |
Dispenser Organization Phone Number | nc:TelephoneNumberFullID | Organization.telecom | |
Dispenser Organization (Pharmacy identifier) | DEA Number* | nc:IdentificationID | Organization.identifier |
NCPDP Number* | nc:IdentificationID | Organization.identifier | |
NPI Number* | nc:IdentificationID | Organization.identifier | |
Prescriber | Prescriber First Name | nc:PersonGivenName | Practitioner.name.given |
Prescriber Last Name | nc:PersonSurName | Practitioner.name.family | |
Prescriber Street Address | nc:StreetFullText | Practitioner.address.line | |
Prescriber City Address | nc:LocationCityName | Practitioner.address.city | |
Prescriber State Code | nc:LocationStateUSPostalServiceCode | Practitioner.address.state | |
Prescriber Zip Code | LocationPostalCode | Practitioner.address.postalCode | |
Prescriber Identifier | DEA Number* | IdentificationID | Practitioner.identifier |
NPI Number* | IdentificationID | Practitioner.identifier | |
State License* Identifier | IdentificationID | Practitioner.identifier | |
State of License* | IdentificationID | Practitioner.identifier | |
* Conditionally required data elements have asterisks (*), meaning at least one data element is required within this category. For example, under Requesting Facility ID, one of the three data elements (DEA Number, NCPDP Number or NPI) is required. Similarly for Patient Identifier, either SSN or MedicareNumber should be used as allowed by law. Additional occurrences of Patient Identifier may use PatientAccountNumber of MedicalRecordIdentificationNumberEHR per the NCPDP Script implementation guide. |