Opioid Prescribing Support Implementation Guide, published by Centers for Disease Control and Prevention (CDC). This is not an authorized publication; it is the continuous build for version 1.2.3). This version is based on the current content of https://github.com/cqframework/opioid-cds/ and changes regularly. See the Directory of published versions

D.4.1 StructureDefinition: cdc-medicationrequest

D.4.1.1 Formal Views of Profile Content

The official URL for this profile is:

http://fhir.org/guides/cdc/opioid-cds/StructureDefinition/cdc-medicationrequest

Profile of MedicationRequest for use with CDC Opioid Prescribing Guidelines

This profile builds on MedicationRequest.

This profile was published on 2017-04-21 as a draft by Centers for Disease Control and Prevention.

Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

This structure is derived from MedicationRequest

Summary

Mandatory: 7 elements
Must-Support: 8 elements

This structure is derived from MedicationRequest

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationRequest 0..*MedicationRequestOrdering of medication for patient or group
... medication[x] S1..1CodeableConceptMedication to be taken
... dosageInstruction S1..1DosageHow the medication should be taken
.... timing S1..1TimingWhen medication should be administered
..... repeat S1..1ElementWhen the event is to occur
...... frequency S1..1integerEvent occurs frequency times per period
...... period S1..1decimalEvent occurs frequency times per period
...... periodUnit S1..1codes | min | h | d | wk | mo | a - unit of time (UCUM)
.... asNeeded[x] S0..1booleanTake "as needed" (for x)

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationRequest 0..*MedicationRequestOrdering of medication for patient or group
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: Common Languages (extensible): A human language.

Additional BindingsPurpose
All LanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional Content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier 0..*IdentifierExternal ids for this request
... definition Σ0..*Reference(ActivityDefinition | PlanDefinition)Protocol or definition
... basedOn Σ0..*Reference(CarePlan | MedicationRequest | ProcedureRequest | ReferralRequest)What request fulfills
... groupIdentifier Σ0..1IdentifierComposite request this is part of
... status ?!Σ0..1codeactive | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown
Binding: MedicationRequestStatus (required): A coded concept specifying the state of the prescribing event. Describes the lifecycle of the prescription

... intent ?!Σ1..1codeproposal | plan | order | instance-order
Binding: MedicationRequestIntent (required): The kind of medication order

... category 0..1CodeableConceptType of medication usage
Binding: MedicationRequestCategory (preferred): A coded concept identifying where the medication ordered is expected to be consumed or administered

... priority Σ0..1coderoutine | urgent | stat | asap
Binding: MedicationRequestPriority (required): Identifies the level of importance to be assigned to actioning the request

... medication[x] SΣ1..1CodeableConceptMedication to be taken
Binding: SNOMED CT Medication Codes (example): A coded concept identifying substance or product that can be ordered.

... subject Σ1..1Reference(Patient | Group)Who or group medication request is for
... context 0..1Reference(Encounter | EpisodeOfCare)Created during encounter/admission/stay
... supportingInformation 0..*Reference(Resource)Information to support ordering of the medication
... authoredOn Σ0..1dateTimeWhen request was initially authored
... requester ΣI0..1BackboneElementWho/What requested the Request
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... agent Σ1..1Reference(Practitioner | Organization | Patient | RelatedPerson | Device)Who ordered the initial medication(s)
.... onBehalfOf ΣI0..1Reference(Organization)Organization agent is acting for
... recorder 0..1Reference(Practitioner)Person who entered the request
... reasonCode 0..*CodeableConceptReason or indication for writing the prescription
Binding: Condition/Problem/Diagnosis Codes (example): A coded concept indicating why the medication was ordered.


... reasonReference 0..*Reference(Condition | Observation)Condition or Observation that supports why the prescription is being written
... note 0..*AnnotationInformation about the prescription
... dosageInstruction S1..1DosageHow the medication should be taken
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
.... sequence Σ0..1integerThe order of the dosage instructions
.... text Σ0..1stringFree text dosage instructions e.g. SIG
.... additionalInstruction Σ0..*CodeableConceptSupplemental instruction - e.g. "with meals"
Binding: SNOMED CT Additional Dosage Instructions (example): A coded concept identifying additional instructions such as "take with water" or "avoid operating heavy machinery".


.... patientInstruction Σ0..1stringPatient or consumer oriented instructions
.... timing SΣ1..1TimingWhen medication should be administered
..... id 0..1stringxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
..... event Σ0..*dateTimeWhen the event occurs
..... repeat SΣI1..1ElementWhen the event is to occur
...... id 0..1stringxml:id (or equivalent in JSON)
...... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
...... bounds[x] Σ0..1Length/Range of lengths, or (Start and/or end) limits
....... boundsDurationDuration
....... boundsRangeRange
....... boundsPeriodPeriod
...... count Σ0..1integerNumber of times to repeat
...... countMax Σ0..1integerMaximum number of times to repeat
...... duration Σ0..1decimalHow long when it happens
...... durationMax Σ0..1decimalHow long when it happens (Max)
...... durationUnit Σ0..1codes | min | h | d | wk | mo | a - unit of time (UCUM)
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

...... frequency SΣ1..1integerEvent occurs frequency times per period
...... frequencyMax Σ0..1integerEvent occurs up to frequencyMax times per period
...... period SΣ1..1decimalEvent occurs frequency times per period
...... periodMax Σ0..1decimalUpper limit of period (3-4 hours)
...... periodUnit SΣ1..1codes | min | h | d | wk | mo | a - unit of time (UCUM)
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

...... dayOfWeek Σ0..*codemon | tue | wed | thu | fri | sat | sun
Binding: DaysOfWeek (required)
...... timeOfDay Σ0..*timeTime of day for action
...... when Σ0..*codeRegular life events the event is tied to
Binding: EventTiming (required): Real world event relating to the schedule.


...... offset Σ0..1unsignedIntMinutes from event (before or after)
..... code Σ0..1CodeableConceptBID | TID | QID | AM | PM | QD | QOD | Q4H | Q6H +
Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern.

.... asNeeded[x] SΣ0..1booleanTake "as needed" (for x)
.... site Σ0..1CodeableConceptBody site to administer to
Binding: SNOMED CT Anatomical Structure for Administration Site Codes (example): A coded concept describing the site location the medicine enters into or onto the body.

.... route Σ0..1CodeableConceptHow drug should enter body
Binding: SNOMED CT Route Codes (example): A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.

.... method Σ0..1CodeableConceptTechnique for administering medication
Binding: SNOMED CT Administration Method Codes (example): A coded concept describing the technique by which the medicine is administered.

.... dose[x] Σ0..1Amount of medication per dose
..... doseRangeRange
..... doseQuantityQuantity(SimpleQuantity)
.... maxDosePerPeriod Σ0..1RatioUpper limit on medication per unit of time
.... maxDosePerAdministration Σ0..1SimpleQuantityUpper limit on medication per administration
.... maxDosePerLifetime Σ0..1SimpleQuantityUpper limit on medication per lifetime of the patient
.... rate[x] Σ0..1Amount of medication per unit of time
..... rateRatioRatio
..... rateRangeRange
..... rateQuantityQuantity(SimpleQuantity)
... dispenseRequest 0..1BackboneElementMedication supply authorization
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... validityPeriod 0..1PeriodTime period supply is authorized for
.... numberOfRepeatsAllowed 0..1positiveIntNumber of refills authorized
.... quantity 0..1SimpleQuantityAmount of medication to supply per dispense
.... expectedSupplyDuration 0..1DurationNumber of days supply per dispense
.... performer 0..1Reference(Organization)Intended dispenser
... substitution 0..1BackboneElementAny restrictions on medication substitution
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... allowed ?!1..1booleanWhether substitution is allowed or not
.... reason 0..1CodeableConceptWhy should (not) substitution be made
Binding: SubstanceAdminSubstitutionReason (example): A coded concept describing the reason that a different medication should (or should not) be substituted from what was prescribed.

... priorPrescription 0..1Reference(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

doco Documentation for this format

This structure is derived from http://hl7.org/fhir/STU3/medicationrequest.html.

Summary

Mandatory: 7 elements
Must-Support: 8 elements

Differential View

This structure is derived from http://hl7.org/fhir/STU3/medicationrequest.html.

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationRequest 0..*MedicationRequestOrdering of medication for patient or group
... medication[x] S1..1CodeableConceptMedication to be taken
... dosageInstruction S1..1DosageHow the medication should be taken
.... timing S1..1TimingWhen medication should be administered
..... repeat S1..1ElementWhen the event is to occur
...... frequency S1..1integerEvent occurs frequency times per period
...... period S1..1decimalEvent occurs frequency times per period
...... periodUnit S1..1codes | min | h | d | wk | mo | a - unit of time (UCUM)
.... asNeeded[x] S0..1booleanTake "as needed" (for x)

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationRequest 0..*MedicationRequestOrdering of medication for patient or group
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: Common Languages (extensible): A human language.

Additional BindingsPurpose
All LanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional Content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier 0..*IdentifierExternal ids for this request
... definition Σ0..*Reference(ActivityDefinition | PlanDefinition)Protocol or definition
... basedOn Σ0..*Reference(CarePlan | MedicationRequest | ProcedureRequest | ReferralRequest)What request fulfills
... groupIdentifier Σ0..1IdentifierComposite request this is part of
... status ?!Σ0..1codeactive | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown
Binding: MedicationRequestStatus (required): A coded concept specifying the state of the prescribing event. Describes the lifecycle of the prescription

... intent ?!Σ1..1codeproposal | plan | order | instance-order
Binding: MedicationRequestIntent (required): The kind of medication order

... category 0..1CodeableConceptType of medication usage
Binding: MedicationRequestCategory (preferred): A coded concept identifying where the medication ordered is expected to be consumed or administered

... priority Σ0..1coderoutine | urgent | stat | asap
Binding: MedicationRequestPriority (required): Identifies the level of importance to be assigned to actioning the request

... medication[x] SΣ1..1CodeableConceptMedication to be taken
Binding: SNOMED CT Medication Codes (example): A coded concept identifying substance or product that can be ordered.

... subject Σ1..1Reference(Patient | Group)Who or group medication request is for
... context 0..1Reference(Encounter | EpisodeOfCare)Created during encounter/admission/stay
... supportingInformation 0..*Reference(Resource)Information to support ordering of the medication
... authoredOn Σ0..1dateTimeWhen request was initially authored
... requester ΣI0..1BackboneElementWho/What requested the Request
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... agent Σ1..1Reference(Practitioner | Organization | Patient | RelatedPerson | Device)Who ordered the initial medication(s)
.... onBehalfOf ΣI0..1Reference(Organization)Organization agent is acting for
... recorder 0..1Reference(Practitioner)Person who entered the request
... reasonCode 0..*CodeableConceptReason or indication for writing the prescription
Binding: Condition/Problem/Diagnosis Codes (example): A coded concept indicating why the medication was ordered.


... reasonReference 0..*Reference(Condition | Observation)Condition or Observation that supports why the prescription is being written
... note 0..*AnnotationInformation about the prescription
... dosageInstruction S1..1DosageHow the medication should be taken
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
.... sequence Σ0..1integerThe order of the dosage instructions
.... text Σ0..1stringFree text dosage instructions e.g. SIG
.... additionalInstruction Σ0..*CodeableConceptSupplemental instruction - e.g. "with meals"
Binding: SNOMED CT Additional Dosage Instructions (example): A coded concept identifying additional instructions such as "take with water" or "avoid operating heavy machinery".


.... patientInstruction Σ0..1stringPatient or consumer oriented instructions
.... timing SΣ1..1TimingWhen medication should be administered
..... id 0..1stringxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
..... event Σ0..*dateTimeWhen the event occurs
..... repeat SΣI1..1ElementWhen the event is to occur
...... id 0..1stringxml:id (or equivalent in JSON)
...... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
...... bounds[x] Σ0..1Length/Range of lengths, or (Start and/or end) limits
....... boundsDurationDuration
....... boundsRangeRange
....... boundsPeriodPeriod
...... count Σ0..1integerNumber of times to repeat
...... countMax Σ0..1integerMaximum number of times to repeat
...... duration Σ0..1decimalHow long when it happens
...... durationMax Σ0..1decimalHow long when it happens (Max)
...... durationUnit Σ0..1codes | min | h | d | wk | mo | a - unit of time (UCUM)
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

...... frequency SΣ1..1integerEvent occurs frequency times per period
...... frequencyMax Σ0..1integerEvent occurs up to frequencyMax times per period
...... period SΣ1..1decimalEvent occurs frequency times per period
...... periodMax Σ0..1decimalUpper limit of period (3-4 hours)
...... periodUnit SΣ1..1codes | min | h | d | wk | mo | a - unit of time (UCUM)
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

...... dayOfWeek Σ0..*codemon | tue | wed | thu | fri | sat | sun
Binding: DaysOfWeek (required)
...... timeOfDay Σ0..*timeTime of day for action
...... when Σ0..*codeRegular life events the event is tied to
Binding: EventTiming (required): Real world event relating to the schedule.


...... offset Σ0..1unsignedIntMinutes from event (before or after)
..... code Σ0..1CodeableConceptBID | TID | QID | AM | PM | QD | QOD | Q4H | Q6H +
Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern.

.... asNeeded[x] SΣ0..1booleanTake "as needed" (for x)
.... site Σ0..1CodeableConceptBody site to administer to
Binding: SNOMED CT Anatomical Structure for Administration Site Codes (example): A coded concept describing the site location the medicine enters into or onto the body.

.... route Σ0..1CodeableConceptHow drug should enter body
Binding: SNOMED CT Route Codes (example): A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.

.... method Σ0..1CodeableConceptTechnique for administering medication
Binding: SNOMED CT Administration Method Codes (example): A coded concept describing the technique by which the medicine is administered.

.... dose[x] Σ0..1Amount of medication per dose
..... doseRangeRange
..... doseQuantityQuantity(SimpleQuantity)
.... maxDosePerPeriod Σ0..1RatioUpper limit on medication per unit of time
.... maxDosePerAdministration Σ0..1SimpleQuantityUpper limit on medication per administration
.... maxDosePerLifetime Σ0..1SimpleQuantityUpper limit on medication per lifetime of the patient
.... rate[x] Σ0..1Amount of medication per unit of time
..... rateRatioRatio
..... rateRangeRange
..... rateQuantityQuantity(SimpleQuantity)
... dispenseRequest 0..1BackboneElementMedication supply authorization
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... validityPeriod 0..1PeriodTime period supply is authorized for
.... numberOfRepeatsAllowed 0..1positiveIntNumber of refills authorized
.... quantity 0..1SimpleQuantityAmount of medication to supply per dispense
.... expectedSupplyDuration 0..1DurationNumber of days supply per dispense
.... performer 0..1Reference(Organization)Intended dispenser
... substitution 0..1BackboneElementAny restrictions on medication substitution
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... allowed ?!1..1booleanWhether substitution is allowed or not
.... reason 0..1CodeableConceptWhy should (not) substitution be made
Binding: SubstanceAdminSubstitutionReason (example): A coded concept describing the reason that a different medication should (or should not) be substituted from what was prescribed.

... priorPrescription 0..1Reference(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

doco Documentation for this format

 

D.4.1.2 Terminology Bindings

Terminology Bindings

PathConformanceValueSet
MedicationRequest.languageextensibleCommon Languages
Max Binding: All Languages
MedicationRequest.statusrequiredMedicationRequestStatus
MedicationRequest.intentrequiredMedicationRequestIntent
MedicationRequest.categorypreferredMedicationRequestCategory
MedicationRequest.priorityrequiredMedicationRequestPriority
MedicationRequest.medication[x]exampleSNOMED CT Medication Codes
MedicationRequest.reasonCodeexampleCondition/Problem/Diagnosis Codes
MedicationRequest.dosageInstruction.additionalInstructionexampleSNOMED CT Additional Dosage Instructions
MedicationRequest.dosageInstruction.timing.repeat.durationUnitrequiredUnitsOfTime
MedicationRequest.dosageInstruction.timing.repeat.periodUnitrequiredUnitsOfTime
MedicationRequest.dosageInstruction.timing.repeat.dayOfWeekrequiredDaysOfWeek
MedicationRequest.dosageInstruction.timing.repeat.whenrequiredEventTiming
MedicationRequest.dosageInstruction.timing.codepreferredTimingAbbreviation
MedicationRequest.dosageInstruction.siteexampleSNOMED CT Anatomical Structure for Administration Site Codes
MedicationRequest.dosageInstruction.routeexampleSNOMED CT Route Codes
MedicationRequest.dosageInstruction.methodexampleSNOMED CT Administration Method Codes
MedicationRequest.substitution.reasonexampleSubstanceAdminSubstitutionReason

D.4.1.3 Constraints

Constraints

IdGradePathDetailsRequirements
dom-2errorMedicationRequestIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-1errorMedicationRequestIf the resource is contained in another resource, it SHALL NOT contain any narrative
: contained.text.empty()
dom-4errorMedicationRequestIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-3errorMedicationRequestIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource
: contained.where(('#'+id in %resource.descendants().reference).not()).empty()
ele-1errorMedicationRequest.requesterAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
mps-1errorMedicationRequest.requesteronBehalfOf can only be specified if agent is practitioner or device
: (agent.resolve().empty()) or (agent.resolve() is Device) or (agent.resolve() is Practitioner) or onBehalfOf.exists().not()
ele-1errorMedicationRequest.dosageInstruction.timing.repeatAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
tim-9errorMedicationRequest.dosageInstruction.timing.repeatIf there's an offset, there must be a when (and not C, CM, CD, CV)
: offset.empty() or (when.exists() and ((when in ('C' | 'CM' | 'CD' | 'CV')).not()))
tim-5errorMedicationRequest.dosageInstruction.timing.repeatperiod SHALL be a non-negative value
: period.exists() implies period >= 0
tim-6errorMedicationRequest.dosageInstruction.timing.repeatIf there's a periodMax, there must be a period
: periodMax.empty() or period.exists()
tim-7errorMedicationRequest.dosageInstruction.timing.repeatIf there's a durationMax, there must be a duration
: durationMax.empty() or duration.exists()
tim-8errorMedicationRequest.dosageInstruction.timing.repeatIf there's a countMax, there must be a count
: countMax.empty() or count.exists()
tim-1errorMedicationRequest.dosageInstruction.timing.repeatif there's a duration, there needs to be duration units
: duration.empty() or durationUnit.exists()
tim-10errorMedicationRequest.dosageInstruction.timing.repeatIf there's a timeOfDay, there cannot be be a when, or vice versa
: timeOfDay.empty() or when.empty()
tim-2errorMedicationRequest.dosageInstruction.timing.repeatif there's a period, there needs to be period units
: period.empty() or periodUnit.exists()
tim-4errorMedicationRequest.dosageInstruction.timing.repeatduration SHALL be a non-negative value
: duration.exists() implies duration >= 0
ele-1errorMedicationRequest.dispenseRequestAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1errorMedicationRequest.substitutionAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
.

s