Medicines Data Repository Implementation Guide
0.2.0 - draft

Medicines Data Repository Implementation Guide - Local Development build (v0.2.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Resource Profile: NzepsMedicationRequest - Detailed Descriptions

Draft as of 2025-01-30

Definitions for the NzepsMedicationRequest resource profile.

Guidance on how to interpret the contents of this table can be found here

0. MedicationRequest
Definition

An order or request for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called "MedicationRequest" rather than "MedicationPrescription" or "MedicationOrder" to generalize the use across inpatient and outpatient settings, including care plans, etc., and to harmonize with workflow patterns.

ShortOrdering of medication for patient or group
Control0..*
Is Modifierfalse
Summaryfalse
Alternate NamesPrescription, Order
Invariantsdom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources (contained.contained.empty())
dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource (contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty())
dom-4: If 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-5: If a resource is contained in another resource, it SHALL NOT have a security label (contained.meta.security.empty())
dom-6: A resource should have narrative for robust management (text.`div`.exists())
2. MedicationRequest.implicitRules
Definition

A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc.

ShortA set of rules under which this content was created
Comments

Asserting this rule set restricts the content to be only understood by a limited set of trading partners. This inherently limits the usefulness of the data in the long term. However, the existing health eco-system is highly fractured, and not yet ready to define, collect, and exchange data in a generally computable sense. Wherever possible, implementers and/or specification writers should avoid using this element. Often, when used, the URL is a reference to an implementation guide that defines these special rules as part of it's narrative along with other profiles, value sets, etc.

Control0..1
Typeuri
Is Modifiertrue because This element is labeled as a modifier because the implicit rules may provide additional knowledge about the resource that modifies it's meaning or interpretation
Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
Summarytrue
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
4. MedicationRequest.extension
Definition

An Extension


May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

ShortExtensionAdditional content defined by implementations
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

Control100..*
TypeExtension
Is Modifierfalse
Summaryfalse
Alternate Namesextensions, user content
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
SlicingThis element introduces a set of slices on MedicationRequest.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
  • value @ url
  • 6. MedicationRequest.extension:nzeps-long-term-medication
    Slice Namenzeps-long-term-medication
    Definition

    NZePS Long Term Medication Indicator

    ShortNZePS Long Term Medication Indicator
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Long Term Medication Indicator) (Extension Type: boolean)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    8. MedicationRequest.extension:nzeps-supply-period-reason
    Slice Namenzeps-supply-period-reason
    Definition

    The reason for a non-standard Supply Period.

    ShortNZePS Supply Period Reason
    Control0..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Supply Period Reason) (Extension Type: string)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    10. MedicationRequest.extension:nzeps-unusual-dose-quantity
    Slice Namenzeps-unusual-dose-quantity
    Definition

    NZePS Unusual Dose Quantity Indicator

    ShortNZePS Unusual Dose Quantity Indicator
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Unusual Dose Quantity Indicator) (Extension Type: boolean)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    12. MedicationRequest.extension:nzeps-endorsement
    Slice Namenzeps-endorsement
    Definition

    NZ ePrescription (NZePS) Endorsements

    ShortNZePS Endorsement
    Control0..*
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Endorsement) (Complex Extension)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    14. MedicationRequest.extension:nzeps-status-type
    Slice Namenzeps-status-type
    Definition

    Status Type of a NZ ePrescription (NZePS)

    ShortNZePS Status Type
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Status Type) (Extension Type: code)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    16. MedicationRequest.extension:nzeps-medication-action
    Slice Namenzeps-medication-action
    Definition

    Medcation action denoting the relationship of a NZ ePrescription (NZePS) Item within a patient's overall medication regime.

    ShortNZePS Medication Action Type
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Medication Action Type) (Extension Type: code)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    18. MedicationRequest.extension:nzeps-instructions-modified
    Slice Namenzeps-instructions-modified
    Definition

    NZePS Patients Instructions modification indicator

    ShortNZePS Patient Instructions Modification Indicator
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Patient Instructions Modification Indicator) (Extension Type: boolean)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    20. MedicationRequest.extension:nzeps-medication-modified
    Slice Namenzeps-medication-modified
    Definition

    NZePS medication modification indicator

    ShortNZePS Patient Medication Modification Indicator
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Patient Medication Modification Indicator) (Extension Type: boolean)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    22. MedicationRequest.extension:nzeps-unsigned-rejection-reason
    Slice Namenzeps-unsigned-rejection-reason
    Definition

    Reason(s) why an unsigned prescription has been rejected.

    ShortNZePS Unsigned Rejection Reason
    Control0..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Unsigned Rejection Reason) (Extension Type: string)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    24. MedicationRequest.extension:nzeps-trial-period-reason
    Slice Namenzeps-trial-period-reason
    Definition

    The reason for any trial period.

    ShortNZePS Trial Period Reason
    Control0..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Trial Period Reason) (Extension Type: string)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    26. MedicationRequest.extension:nzeps-funding-category
    Slice Namenzeps-funding-category
    Definition

    NZ Funding Category Code - e.g. A1, A3, etc.

    ShortNZePS Funding Category
    Control0..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Funding Category) (Extension Type: string)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    28. MedicationRequest.extension:nzeps-medication-claimable
    Slice Namenzeps-medication-claimable
    Definition

    NZePS Medication Claimable indicator

    ShortNZePS Medication Claimable Indicator
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Medication Claimable Indicator) (Extension Type: boolean)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    30. MedicationRequest.extension:nzeps-private-item
    Slice Namenzeps-private-item
    Definition

    NZePS Private Item Indicator

    ShortNZePS Private Item Indicator
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Private Item Indicator) (Extension Type: boolean)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    32. MedicationRequest.extension:nzeps-force-notification
    Slice Namenzeps-force-notification
    Definition

    NZePS Force Notification Indicator

    ShortNZePS Force Notification Indicator
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Force Notification Indicator) (Extension Type: boolean)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    34. MedicationRequest.extension:nzeps-notify
    Slice Namenzeps-notify
    Definition

    NZePS Active Notification Indicator

    ShortNZePS Active Notification Indicator
    Control1..1
    This element is affected by the following invariants: ele-1
    TypeExtension(NZePS Active Notification Indicator) (Extension Type: boolean)
    Is Modifierfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    36. MedicationRequest.modifierExtension
    Definition

    May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

    Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

    ShortExtensions that cannot be ignored
    Comments

    There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

    Control0..*
    TypeExtension
    Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the resource that contains them
    Summaryfalse
    Requirements

    Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

    Alternate Namesextensions, user content
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    38. MedicationRequest.status
    Definition

    A code specifying the current state of the order. Generally, this will be active or completed state.

    Shortactive | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown
    Comments

    This element is labeled as a modifier because the status contains codes that mark the resource as not currently valid.

    Control1..1
    BindingThe codes SHALL be taken from medicationrequest Statushttp://hl7.org/fhir/ValueSet/medicationrequest-status|4.0.1
    (required to http://hl7.org/fhir/ValueSet/medicationrequest-status|4.0.1)

    A coded concept specifying the state of the prescribing event. Describes the lifecycle of the prescription.

    Typecode
    Is Modifiertrue because This element is labeled as a modifier because it is a status element that contains status entered-in-error which means that the resource should not be treated as valid
    Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
    Summarytrue
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    40. MedicationRequest.intent
    Definition

    Whether the request is a proposal, plan, or an original order.

    Shortproposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
    Comments

    It is expected that the type of requester will be restricted for different stages of a MedicationRequest. For example, Proposals can be created by a patient, relatedPerson, Practitioner or Device. Plans can be created by Practitioners, Patients, RelatedPersons and Devices. Original orders can be created by a Practitioner only.

    An instance-order is an instantiation of a request or order and may be used to populate Medication Administration Record.

    This element is labeled as a modifier because the intent alters when and how the resource is actually applicable.

    Control1..1
    BindingThe codes SHALL be taken from medicationRequest Intenthttp://hl7.org/fhir/ValueSet/medicationrequest-intent|4.0.1
    (required to http://hl7.org/fhir/ValueSet/medicationrequest-intent|4.0.1)

    The kind of medication order.

    Typecode
    Is Modifiertrue because This element changes the interpretation of all descriptive attributes. For example "the time the request is recommended to occur" vs. "the time the request is authorized to occur" or "who is recommended to perform the request" vs. "who is authorized to perform the request
    Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
    Summarytrue
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    42. MedicationRequest.doNotPerform
    Definition

    If true indicates that the provider is asking for the medication request not to occur.

    ShortTrue if request is prohibiting action
    Comments

    If do not perform is not specified, the request is a positive request e.g. "do perform".

    Control0..1
    Typeboolean
    Is Modifiertrue because This element is labeled as a modifier because this element negates the request to occur (ie, this is a request for the medication not to be ordered or prescribed, etc)
    Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
    Summarytrue
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    44. MedicationRequest.medication[x]
    Definition

    Identifies the medication being requested. This is a link to a resource that represents the medication which may be the details of the medication or simply an attribute carrying a code that identifies the medication from a known list of medications.

    ShortMedication to be taken
    Comments

    If only a code is specified, then it needs to be a code for a specific product. If more information is required, then the use of the Medication resource is recommended. For example, if you require form or lot number or if the medication is compounded or extemporaneously prepared, then you must reference the Medication resource.

    Control1..1
    BindingThe codes SHOULD be taken from For example codes, see http://nzmt.org.nz/vshttp://hl7.org/fhir/ValueSet/medication-codes
    (preferred to http://nzmt.org.nz/vs)
    TypeCodeableConcept, Reference(Medication)
    [x] NoteSeeChoice of Data Typesfor further information about how to use [x]
    Is Modifierfalse
    Summarytrue
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    46. MedicationRequest.subject
    Definition

    A link to a resource representing the person or set of individuals to whom the medication will be given.

    ShortWho or group medication request is for
    Comments

    The subject on a medication request is mandatory. For the secondary use case where the actual subject is not provided, there still must be an anonymized subject specified.

    Control1..1
    TypeReference(Patient, Group)
    Is Modifierfalse
    Summarytrue
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))