This page is part of the US Core (v3.0.0: STU3) based on FHIR R4. The current version which supercedes this version is 5.0.1. For a full list of available versions, see the Directory of published versions
StructureDefinition-us-core-medicationrequest
Both the MedicationRequest and MedicationStatement resources can be used to record a patient’s medication. For more information about the context for their usages, refer to the medication domain boundaries section. This profile sets minimum expectations for the MedicationRequest resource to record, search and fetch medications associated with a patient. It identifies which core elements, extensions, vocabularies and value sets SHALL be present in the resource when using this profile.
Example Usage Scenarios:
The following are example usage scenarios for the US Core-MedicationRequest profile:
- Query for medications that have been prescribed to a particular patient
- Record medications that have been prescribed to a particular patient
Mandatory and Must Support Data Elements
The following data-elements are mandatory (i.e data MUST be present) or must be supported if the data is present in the sending system (Must Support definition). They are presented below in a simple human-readable explanation. Profile specific guidance and examples are provided as well. The Formal Profile Definition below provides the formal summary, definitions, and terminology requirements.
Each MedicationRequest must have:
- a status
- a medication
- a patient
- a date for when written
- a prescriber
Each MedicationRequest must support:
- the prescription Sig
Profile specific implementation guidance:
- The MedicationStatement and MedicationRequest resources can represent a medication using either a code, or reference a Medication resource.
- When referencing a Medication resource, the resource may be contained or an external resource.
- The server application MAY choose any combination of these methods, but if an external reference to Medication is used, the server SHALL support the include parameter for searching this element.
- The client application SHALL support all methods.
- Additional guidance is provided below in the Search section and in the CapabilityStatement section.
- Source EHR identifiers SHOULD be included to support deduplication across MedicationStatement and MedicationRequest resources. A patient medication may appear when a prescription is present as a MedicationRequest or MedicationStatement even though the EHR stores as a single instance. Exposing the EHR identifiers helps client applications identify duplicates.
Examples
- MedicationRequest-uscore-mo1 Inline medication code to represent the medication.
- MedicationRequest-uscore-mo2 Reference to a contained Medication resource.
- MedicationRequest-uscore-mo3 A search Bundle with a MedicationRequest and an included Medication resource in the Bundle.
Formal Views of Profile Content
Description of Profiles, Differentials, and Snapshots.
The official URL for this profile is:
http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest
Published on Tue May 21 00:00:00 EDT 2019 as active by the HL7 US Realm Steering Committee.
This profile builds on MedicationRequest
MedicationRequest
Summary of the Mandatory Requirements
- A code in
MedicationRequest.status
with a required binding to Medicationrequest status - A CodeableConcept in
MedicationRequest.medication[x]
with an extensible binding to US Core Medication Codes (RxNorm) - A Patient Reference in
MedicationRequest.subject
- A dateTime in
MedicationRequest.authoredOn
- A Requester Reference in
MedicationRequest.requester
Summary of the Must Support Requirements
- One or more Dosages in
MedicationRequest.dosageInstruction
- which should have a string value in
MedicationRequest.dosageInstruction.text
- which should have a string value in
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
MedicationRequest | I | 0..* | Ordering of medication for patient or group | |
id | Σ | 0..1 | id | Logical id of this artifact |
meta | Σ | 0..1 | Meta | Metadata about the resource |
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created |
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred) Max Binding: AllLanguages | |
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |
contained | 0..* | Resource | Contained, inline Resources | |
extension | 0..* | Extension | Additional content defined by implementations | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
identifier | 0..* | Identifier | External ids for this request | |
status | ?!SΣ | 1..1 | code | active | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown Binding: medicationrequest Status (required) |
statusReason | 0..1 | CodeableConcept | Reason for current status Binding: medicationRequest Status Reason Codes (example) | |
intent | ?!Σ | 1..1 | code | proposal | plan | order | original-order | instance-order | option Binding: medicationRequest Intent (required) |
category | 0..* | CodeableConcept | Type of medication usage Binding: medicationRequest Category Codes (example) | |
priority | Σ | 0..1 | code | routine | urgent | asap | stat Binding: RequestPriority (required) |
doNotPerform | ?!Σ | 0..1 | boolean | True if request is prohibiting action |
reported[x] | Σ | 0..1 | boolean, Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Organization) | Reported rather than primary record |
medication[x] | SΣ | 1..1 | CodeableConcept, Reference(US Core Medication Profile) | Medication to be taken Binding: US Core Medication Codes (RxNorm) (extensible) |
subject | SΣ | 1..1 | Reference(US Core Patient Profile) | Who or group medication request is for |
encounter | 0..1 | Reference(Encounter) | Encounter created as part of encounter/admission/stay | |
supportingInformation | 0..* | Reference(Resource) | Information to support ordering of the medication | |
authoredOn | SΣ | 1..1 | dateTime | When request was initially authored |
requester | SΣ | 1..1 | Reference(US Core Practitioner Profile) | Who/What requested the Request |
performer | 0..1 | Reference(Practitioner | PractitionerRole | Organization | Patient | Device | RelatedPerson | CareTeam) | Intended performer of administration | |
performerType | Σ | 0..1 | CodeableConcept | Desired kind of performer of the medication administration Binding: ProcedurePerformerRoleCodes (example) |
recorder | 0..1 | Reference(Practitioner | PractitionerRole) | Person who entered the request | |
reasonCode | 0..* | CodeableConcept | Reason or indication for ordering or not ordering the medication Binding: Condition/Problem/DiagnosisCodes (example) | |
reasonReference | 0..* | Reference(Condition | Observation) | Condition or observation that supports why the prescription is being written | |
instantiatesCanonical | Σ | 0..* | canonical() | Instantiates FHIR protocol or definition |
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition |
basedOn | Σ | 0..* | Reference(CarePlan | MedicationRequest | ServiceRequest | ImmunizationRecommendation) | What request fulfills |
groupIdentifier | Σ | 0..1 | Identifier | Composite request this is part of |
courseOfTherapyType | 0..1 | CodeableConcept | Overall pattern of medication administration Binding: medicationRequest Course of Therapy Codes (example) | |
insurance | 0..* | Reference(Coverage | ClaimResponse) | Associated insurance coverage | |
note | 0..* | Annotation | Information about the prescription | |
dosageInstruction | S | 0..* | Dosage | How the medication should be taken |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
sequence | Σ | 0..1 | integer | The order of the dosage instructions |
text | SΣ | 0..1 | string | Free text dosage instructions e.g. SIG |
additionalInstruction | Σ | 0..* | CodeableConcept | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness" Binding: SNOMEDCTAdditionalDosageInstructions (example) |
patientInstruction | Σ | 0..1 | string | Patient or consumer oriented instructions |
timing | Σ | 0..1 | Timing | When medication should be administered |
asNeeded[x] | Σ | 0..1 | boolean, CodeableConcept | Take "as needed" (for x) Binding: SNOMEDCTMedicationAsNeededReasonCodes (example) |
site | Σ | 0..1 | CodeableConcept | Body site to administer to Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example) |
route | Σ | 0..1 | CodeableConcept | How drug should enter body Binding: SNOMEDCTRouteCodes (example) |
method | Σ | 0..1 | CodeableConcept | Technique for administering medication Binding: SNOMEDCTAdministrationMethodCodes (example) |
doseAndRate | ΣI | 0..* | Element | Amount of medication administered |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
type | Σ | 0..1 | CodeableConcept | The kind of dose or rate specified Binding: DoseAndRateType (example) |
dose[x] | Σ | 0..1 | Range, SimpleQuantity | Amount of medication per dose |
rate[x] | Σ | 0..1 | Ratio, Range, SimpleQuantity | Amount of medication per unit of time |
maxDosePerPeriod | Σ | 0..1 | Ratio | Upper limit on medication per unit of time |
maxDosePerAdministration | Σ | 0..1 | SimpleQuantity | Upper limit on medication per administration |
maxDosePerLifetime | Σ | 0..1 | SimpleQuantity | Upper limit on medication per lifetime of the patient |
dispenseRequest | I | 0..1 | BackboneElement | Medication supply authorization |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
initialFill | I | 0..1 | BackboneElement | First fill details |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
quantity | 0..1 | SimpleQuantity | First fill quantity | |
duration | 0..1 | Duration | First fill duration | |
dispenseInterval | 0..1 | Duration | Minimum period of time between dispenses | |
validityPeriod | 0..1 | Period | Time period supply is authorized for | |
numberOfRepeatsAllowed | 0..1 | unsignedInt | Number of refills authorized | |
quantity | 0..1 | SimpleQuantity | Amount of medication to supply per dispense | |
expectedSupplyDuration | 0..1 | Duration | Number of days supply per dispense | |
performer | 0..1 | Reference(Organization) | Intended dispenser | |
substitution | I | 0..1 | BackboneElement | Any restrictions on medication substitution |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
allowed[x] | 1..1 | boolean, CodeableConcept | Whether substitution is allowed or not Binding: V3 Value SetActSubstanceAdminSubstitutionCode (example) | |
reason | 0..1 | CodeableConcept | Why should (not) substitution be made Binding: V3 Value SetSubstanceAdminSubstitutionReason (example) | |
priorPrescription | 0..1 | Reference(MedicationRequest) | An order/prescription that is being replaced | |
detectedIssue | 0..* | Reference(DetectedIssue) | Clinical Issue with action | |
eventHistory | 0..* | Reference(Provenance) | A list of events of interest in the lifecycle | |
Documentation for this format |
MedicationRequest
Summary of the Mandatory Requirements
- A code in
MedicationRequest.status
with a required binding to Medicationrequest status - A CodeableConcept in
MedicationRequest.medication[x]
with an extensible binding to US Core Medication Codes (RxNorm) - A Patient Reference in
MedicationRequest.subject
- A dateTime in
MedicationRequest.authoredOn
- A Requester Reference in
MedicationRequest.requester
Summary of the Must Support Requirements
- One or more Dosages in
MedicationRequest.dosageInstruction
- which should have a string value in
MedicationRequest.dosageInstruction.text
- which should have a string value in
Differential View
Snapshot View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
MedicationRequest | I | 0..* | Ordering of medication for patient or group | |
id | Σ | 0..1 | id | Logical id of this artifact |
meta | Σ | 0..1 | Meta | Metadata about the resource |
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created |
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred) Max Binding: AllLanguages | |
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |
contained | 0..* | Resource | Contained, inline Resources | |
extension | 0..* | Extension | Additional content defined by implementations | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
identifier | 0..* | Identifier | External ids for this request | |
status | ?!SΣ | 1..1 | code | active | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown Binding: medicationrequest Status (required) |
statusReason | 0..1 | CodeableConcept | Reason for current status Binding: medicationRequest Status Reason Codes (example) | |
intent | ?!Σ | 1..1 | code | proposal | plan | order | original-order | instance-order | option Binding: medicationRequest Intent (required) |
category | 0..* | CodeableConcept | Type of medication usage Binding: medicationRequest Category Codes (example) | |
priority | Σ | 0..1 | code | routine | urgent | asap | stat Binding: RequestPriority (required) |
doNotPerform | ?!Σ | 0..1 | boolean | True if request is prohibiting action |
reported[x] | Σ | 0..1 | boolean, Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Organization) | Reported rather than primary record |
medication[x] | SΣ | 1..1 | CodeableConcept, Reference(US Core Medication Profile) | Medication to be taken Binding: US Core Medication Codes (RxNorm) (extensible) |
subject | SΣ | 1..1 | Reference(US Core Patient Profile) | Who or group medication request is for |
encounter | 0..1 | Reference(Encounter) | Encounter created as part of encounter/admission/stay | |
supportingInformation | 0..* | Reference(Resource) | Information to support ordering of the medication | |
authoredOn | SΣ | 1..1 | dateTime | When request was initially authored |
requester | SΣ | 1..1 | Reference(US Core Practitioner Profile) | Who/What requested the Request |
performer | 0..1 | Reference(Practitioner | PractitionerRole | Organization | Patient | Device | RelatedPerson | CareTeam) | Intended performer of administration | |
performerType | Σ | 0..1 | CodeableConcept | Desired kind of performer of the medication administration Binding: ProcedurePerformerRoleCodes (example) |
recorder | 0..1 | Reference(Practitioner | PractitionerRole) | Person who entered the request | |
reasonCode | 0..* | CodeableConcept | Reason or indication for ordering or not ordering the medication Binding: Condition/Problem/DiagnosisCodes (example) | |
reasonReference | 0..* | Reference(Condition | Observation) | Condition or observation that supports why the prescription is being written | |
instantiatesCanonical | Σ | 0..* | canonical() | Instantiates FHIR protocol or definition |
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition |
basedOn | Σ | 0..* | Reference(CarePlan | MedicationRequest | ServiceRequest | ImmunizationRecommendation) | What request fulfills |
groupIdentifier | Σ | 0..1 | Identifier | Composite request this is part of |
courseOfTherapyType | 0..1 | CodeableConcept | Overall pattern of medication administration Binding: medicationRequest Course of Therapy Codes (example) | |
insurance | 0..* | Reference(Coverage | ClaimResponse) | Associated insurance coverage | |
note | 0..* | Annotation | Information about the prescription | |
dosageInstruction | S | 0..* | Dosage | How the medication should be taken |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
sequence | Σ | 0..1 | integer | The order of the dosage instructions |
text | SΣ | 0..1 | string | Free text dosage instructions e.g. SIG |
additionalInstruction | Σ | 0..* | CodeableConcept | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness" Binding: SNOMEDCTAdditionalDosageInstructions (example) |
patientInstruction | Σ | 0..1 | string | Patient or consumer oriented instructions |
timing | Σ | 0..1 | Timing | When medication should be administered |
asNeeded[x] | Σ | 0..1 | boolean, CodeableConcept | Take "as needed" (for x) Binding: SNOMEDCTMedicationAsNeededReasonCodes (example) |
site | Σ | 0..1 | CodeableConcept | Body site to administer to Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example) |
route | Σ | 0..1 | CodeableConcept | How drug should enter body Binding: SNOMEDCTRouteCodes (example) |
method | Σ | 0..1 | CodeableConcept | Technique for administering medication Binding: SNOMEDCTAdministrationMethodCodes (example) |
doseAndRate | ΣI | 0..* | Element | Amount of medication administered |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
type | Σ | 0..1 | CodeableConcept | The kind of dose or rate specified Binding: DoseAndRateType (example) |
dose[x] | Σ | 0..1 | Range, SimpleQuantity | Amount of medication per dose |
rate[x] | Σ | 0..1 | Ratio, Range, SimpleQuantity | Amount of medication per unit of time |
maxDosePerPeriod | Σ | 0..1 | Ratio | Upper limit on medication per unit of time |
maxDosePerAdministration | Σ | 0..1 | SimpleQuantity | Upper limit on medication per administration |
maxDosePerLifetime | Σ | 0..1 | SimpleQuantity | Upper limit on medication per lifetime of the patient |
dispenseRequest | I | 0..1 | BackboneElement | Medication supply authorization |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
initialFill | I | 0..1 | BackboneElement | First fill details |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
quantity | 0..1 | SimpleQuantity | First fill quantity | |
duration | 0..1 | Duration | First fill duration | |
dispenseInterval | 0..1 | Duration | Minimum period of time between dispenses | |
validityPeriod | 0..1 | Period | Time period supply is authorized for | |
numberOfRepeatsAllowed | 0..1 | unsignedInt | Number of refills authorized | |
quantity | 0..1 | SimpleQuantity | Amount of medication to supply per dispense | |
expectedSupplyDuration | 0..1 | Duration | Number of days supply per dispense | |
performer | 0..1 | Reference(Organization) | Intended dispenser | |
substitution | I | 0..1 | BackboneElement | Any restrictions on medication substitution |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
allowed[x] | 1..1 | boolean, CodeableConcept | Whether substitution is allowed or not Binding: V3 Value SetActSubstanceAdminSubstitutionCode (example) | |
reason | 0..1 | CodeableConcept | Why should (not) substitution be made Binding: V3 Value SetSubstanceAdminSubstitutionReason (example) | |
priorPrescription | 0..1 | Reference(MedicationRequest) | An order/prescription that is being replaced | |
detectedIssue | 0..* | Reference(DetectedIssue) | Clinical Issue with action | |
eventHistory | 0..* | Reference(Provenance) | A list of events of interest in the lifecycle | |
Documentation for this format |
Downloads: StructureDefinition: (XML, JSON), Schema: XML Schematron
Quick Start
Below is an overview of the required set of RESTful FHIR interactions - for example, search and read operations - for this profile. See the Conformance requirements for a complete list of supported RESTful interactions for this IG.
Mandatory Search Parameters:
The following search parameters, search parameter combinations and search parameter modifiers, comparators, chains and composites SHALL be supported. the modifiers, comparators, chains and composites that are listed as optional SHOULD be supported.:
-
SHALL support searching for all prescriptions for a patient. The server application represents the medication using either an inline code or a contained or external reference to the Medication resource. using the
patient
search parameter:- including optional support for these
_include
parameters:MedicationRequest:medication
GET [base]/MedicationRequest?patient=[reference]
Example:
- GET [base]/MedicationRequest?patient=14676
- GET [base]/MedicationRequest?patient=14676&_include=MedicationRequest:medication
Implementation Notes: Fetches a bundle of all MedicationRequest resources for the specified patient. Mandatory for client to support the _include parameter. Optional for server to support the _include parameter. (how to search by reference)
- including optional support for these
-
SHALL support searching using the combination of the
patient
andstatus
search parameters:- including optional support for these
_include
parameters:MedicationRequest:medication
GET [base]/MedicationRequest?patient=[reference]&status={[system]}|[code]
Example:
- GET [base]/MedicationRequest?patient=1137192&status=active
- GET [base]/MedicationRequest?patient=1137192&status=active&_include=MedicationRequest:medication
Implementation Notes: Fetches a bundle of all MedicationRequest resources for the specified patient and status (how to search by reference and how to search by token)
- including optional support for these
Optional Search Parameters:
The following search parameters, search parameter combinations and search parameter modifiers, comparators, chains and composites SHOULD be supported.
- SHOULD support searching using the combination of the
patient
andauthoredon
search parameters:- including optional support for these
_include
parameters:MedicationRequest:medication
- including support for these
authoredon
comparators:gt,lt,ge,le
- including optional support for composite AND search on
authoredon
(e.g.authoredon=[date]&authoredon=[date]]&...
)
GET [base]/MedicationRequest?patient=[reference]&authoredon={gt|lt|ge|le}[date]{&authoredon={gt|lt|ge|le}[date]&...}
Example:
- GET [base]/MedicationRequest?patient=1137192&effective=ge2019
- GET [base]/MedicationStatement?patient=1137192&effective=ge2019&_include=MedicationRequest:medication
Implementation Notes: Fetches a bundle of all MedicationRequest resources for the specified patient and date (how to search by reference and how to search by date)
- including optional support for these