Argonaut Data Query Implementation Guide Version 1.0.0

This page is part of the Argonaut Data Query Implementation Guide (v1.0.0: Release) based on FHIR R2. This is the current published version in it's permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions

D.4.1 StructureDefinition-argo-medicationorder

Both the MedicationOrder 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 domains’s boundaries section. This profile sets minimum expectations for the MedicationOrder 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 Argonaut MedicationOrder profile:

  • Query for medications that have been prescribed to a particular patient
  • Record medications that have been prescribed to a particular patient
Mandatory Data Elements and Terminology

The following data-elements are mandatory (i.e data MUST be present). These 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 MedicationOrder must have:

  1. a date for when written
  2. a status
  3. a patient
  4. a prescriber
  5. a medication

Profile specific implementation guidance:

  • The MedicationStatement and MedicationRequest resources can represent a medication, using either a code or refer to a Medication resource.
    • When referencing a Medication resource, the resource may be contained or an external resource.
    • The server application can choose any one way or more than one method, but if the an external reference to Medication is used, the server SHALL support the include parameter for searching this element.
    • The client application must support both methods.
    • Additional guidance is provided below in the Search section and in the conformance resource for this profile

Examples

D.4.1.1 Formal Views of Profile Content

The official URL for this profile is:

http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationorder

This profile builds on MedicationOrder.

This profile was published on Tue Oct 18 00:00:00 AEDT 2016 as a draft by Argonaut Project.

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

Complete Summary of the Mandatory Requirements

  1. One date in MedicationOrder.dateWritten
  2. One status in MedicationOrder.status which has an required binding to:
  3. One patient reference in MedicationOrder.patient
  4. One practitioner in MedicationOrder.prescriber
  5. One medication via MedicationOrder.medicationCodeableConcept or MedicationOrder.medicationReference
NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationOrder 0..*Argonaut MedicationOrder Profile
... 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: IETF BCP-47 (required)
... text I0..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 identifier
... dateWritten S1..1dateTimeWhen prescription was authorized
... status ?!S1..1codeactive | on-hold | completed | entered-in-error | stopped | draft
Binding: MedicationOrderStatus (required)
... dateEnded Σ0..1dateTimeWhen prescription was stopped
... reasonEnded Σ0..1CodeableConceptWhy prescription was stopped
Binding: (unbound) (example)
... patient S1..1Reference(Argonaut Patient Profile)Who prescription is for
... prescriber S1..1Reference(Practitioner)Who ordered the medication(s)
... encounter Σ0..1Reference(Encounter)Created during encounter/admission/stay
... reason[x] Σ0..1CodeableConcept, Reference(Condition)Reason or indication for writing the prescription
Binding: Condition/Problem/Diagnosis Codes (example)
... note Σ0..1stringInformation about the prescription
... medication[x] S1..1CodeableConcept, Reference(Argonaut Medication Profile)Medication to be taken
Binding: Medication Clinical Drug (RxNorm) (extensible)
... dosageInstruction Σ0..*BackboneElementHow medication should be taken
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... text Σ0..1stringDosage instructions expressed as text
.... additionalInstructions Σ0..1CodeableConceptSupplemental instructions - e.g. "with meals"
Binding: (unbound) (example)
.... timing Σ0..1TimingWhen medication should be administered
.... asNeeded[x] Σ0..1boolean, CodeableConceptTake "as needed" (for x)
Binding: (unbound) (example)
.... site[x] Σ0..1CodeableConcept, Reference(BodySite)Body site to administer to
Binding: SNOMED CT Anatomical Structure for Administration Site Codes (example)
.... route Σ0..1CodeableConceptHow drug should enter body
Binding: SNOMED CT Route Codes (example)
.... method Σ0..1CodeableConceptTechnique for administering medication
Binding: (unbound) (example)
.... dose[x] Σ0..1Range, SimpleQuantityAmount of medication per dose
.... rate[x] Σ0..1Ratio, RangeAmount of medication per unit of time
.... maxDosePerPeriod Σ0..1RatioUpper limit on medication per unit of time
... dispenseRequest Σ0..1BackboneElementMedication supply authorization
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... medication[x] Σ0..1CodeableConcept, Reference(Medication)Product to be supplied
.... 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
... substitution Σ0..1BackboneElementAny restrictions on medication substitution
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... type Σ1..1CodeableConceptgeneric | formulary +
Binding: ActSubstanceAdminSubstitutionCode (example)
.... reason Σ0..1CodeableConceptWhy should (not) substitution be made
Binding: SubstanceAdminSubstitutionReason (example)
... priorPrescription Σ0..1Reference(MedicationOrder)An order/prescription that this supersedes

doco Documentation for this format

Complete Summary of the Mandatory Requirements

  1. One date in MedicationOrder.dateWritten
  2. One status in MedicationOrder.status which has an required binding to:
  3. One patient reference in MedicationOrder.patient
  4. One practitioner in MedicationOrder.prescriber
  5. One medication via MedicationOrder.medicationCodeableConcept or MedicationOrder.medicationReference

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationOrder 0..*Argonaut MedicationOrder Profile
... 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: IETF BCP-47 (required)
... text I0..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 identifier
... dateWritten S1..1dateTimeWhen prescription was authorized
... status ?!S1..1codeactive | on-hold | completed | entered-in-error | stopped | draft
Binding: MedicationOrderStatus (required)
... dateEnded Σ0..1dateTimeWhen prescription was stopped
... reasonEnded Σ0..1CodeableConceptWhy prescription was stopped
Binding: (unbound) (example)
... patient S1..1Reference(Argonaut Patient Profile)Who prescription is for
... prescriber S1..1Reference(Practitioner)Who ordered the medication(s)
... encounter Σ0..1Reference(Encounter)Created during encounter/admission/stay
... reason[x] Σ0..1CodeableConcept, Reference(Condition)Reason or indication for writing the prescription
Binding: Condition/Problem/Diagnosis Codes (example)
... note Σ0..1stringInformation about the prescription
... medication[x] S1..1CodeableConcept, Reference(Argonaut Medication Profile)Medication to be taken
Binding: Medication Clinical Drug (RxNorm) (extensible)
... dosageInstruction Σ0..*BackboneElementHow medication should be taken
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... text Σ0..1stringDosage instructions expressed as text
.... additionalInstructions Σ0..1CodeableConceptSupplemental instructions - e.g. "with meals"
Binding: (unbound) (example)
.... timing Σ0..1TimingWhen medication should be administered
.... asNeeded[x] Σ0..1boolean, CodeableConceptTake "as needed" (for x)
Binding: (unbound) (example)
.... site[x] Σ0..1CodeableConcept, Reference(BodySite)Body site to administer to
Binding: SNOMED CT Anatomical Structure for Administration Site Codes (example)
.... route Σ0..1CodeableConceptHow drug should enter body
Binding: SNOMED CT Route Codes (example)
.... method Σ0..1CodeableConceptTechnique for administering medication
Binding: (unbound) (example)
.... dose[x] Σ0..1Range, SimpleQuantityAmount of medication per dose
.... rate[x] Σ0..1Ratio, RangeAmount of medication per unit of time
.... maxDosePerPeriod Σ0..1RatioUpper limit on medication per unit of time
... dispenseRequest Σ0..1BackboneElementMedication supply authorization
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... medication[x] Σ0..1CodeableConcept, Reference(Medication)Product to be supplied
.... 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
... substitution Σ0..1BackboneElementAny restrictions on medication substitution
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... type Σ1..1CodeableConceptgeneric | formulary +
Binding: ActSubstanceAdminSubstitutionCode (example)
.... reason Σ0..1CodeableConceptWhy should (not) substitution be made
Binding: SubstanceAdminSubstitutionReason (example)
... priorPrescription Σ0..1Reference(MedicationOrder)An order/prescription that this supersedes

doco Documentation for this format

Downloads: StructureDefinition: (XML, JSON, CSV), Schema: XML Schematron

 

D.4.1.2 Quick Start

Below is an overview of the required search and read operations for this profile. See the Conformance requirements for the Argonaut Data Query implementation guide server for a complete list of supported RESTful operations and search parameters for this IG.


GET /MedicationOrder?patient={id}

Example:

GET https://fhir-open-api-dstu2.smarthealthit.org/MedicationOrder?patient=1137192

Implementation Notes: Search for all MedicationOrder resources for a patient. Fetches a bundle of all MedicationOrder resources for the specified patient (how to search by reference).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

GET /MedicationOrder?patient={id}&_include=MedicationOrder:medication Example:

GET http://fhirtest.uhn.ca/baseDstu2/MedicationOrder?patient=1137192&_include=MedicationOrder:medication

Support: Mandatory for client to support search by patient using the include parameter. Optional for server to support.

Implementation Notes: Used when the server application represents the medication with an external reference to a Medication resource. This searches for all MedicationOrder resources for a patient and returns a Bundle of all MedicationOrder and Medication resources for the specified patient. (how to search by reference).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope