Canadian Baseline
1.2.0 - CI Build Canada flag

Canadian Baseline, published by HL7 Canada - FHIR Implementation Work Group. This guide is not an authorized publication; it is the continuous build for version 1.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7-Canada/ca-baseline/ and changes regularly. See the Directory of published versions

Resource Profile: MedicationProfile - Detailed Descriptions

Draft as of 2024-12-27

Definitions for the profile-medication resource profile.

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

0. Medication
Definition

The Medication Profile is based upon the core FHIR Medication Resource


This resource is primarily used for the identification and definition of a medication for the purposes of prescribing, dispensing, and administering a medication as well as for making statements about medication use.

ShortMedication ProfileDefinition of a Medication
Control0..*
Is Modifierfalse
Summaryfalse
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. Medication.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. Medication.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.

Control0..*
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 Medication.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
  • value @ url
  • 6. Medication.extension:medicationstrength
    Slice Namemedicationstrength
    Definition

    Provides a textual description of the strength of the active ingredient(s) in the medication

    ShortSocialized Optional Extension: Medication Strength
    Control0..1
    TypeExtension(http://prescribeit.ca/fhir/StructureDefinition/ext-medication-strength-description)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    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())
    8. Medication.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())
    10. Medication.code
    Definition

    A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems.

    ShortCodes that identify this medication
    Comments

    Given the lack of an existing superset of Canadian codes and the complexity and variation in code systems used by of prescription ordering and medication & natural product dispensing systems - The Canadian Baseline has chosen to model the variety of coding systems expected in existing systems through an open slice on code.coding. When a super value set is developed, the CA Baseline will update the preferred binding strength that currently points to a placeholder to align to the new value set.


    Depending on the context of use, the code that was actually selected by the user (prescriber, dispenser, etc.) will have the coding.userSelected set to true. As described in the coding datatype: "A coding may be marked as a "userSelected" if a user selected the particular coded value in a user interface (e.g. the user selects an item in a pick-list). If a user selected coding exists, it is the preferred choice for performing translations etc. Other codes can only be literal translations to alternative code systems, or codes at a lower level of granularity (e.g. a generic code for a vendor-specific primary one).

    Control10..1
    BindingThe codes SHOULD be taken from For example codes, see https://fhir.infoway-inforoute.ca/ValueSet/prescriptionmedicinalproducthttp://hl7.org/fhir/ValueSet/medication-codes
    (preferred to https://fhir.infoway-inforoute.ca/ValueSet/prescriptionmedicinalproduct)

    TBD. This is a placeholder for a comprehensive valueset, consisting of all Manufactured Product (MP), Non-proprietary Therapeutic Product (NTP) and Therapeutic Moiety (TM) codes, which would be created and maintained by Canada Health Infoway. Medicinal products for prescribing and dispensing in Canada. The content of this subset only contains commonly used medicinal products that are available for prescribing and dispensing in Canada. This content will expand to include all human medicinal products over time.


    A coded concept that defines the type of a medication.

    TypeCodeableConcept
    Is Modifierfalse
    Must Supporttrue
    Summarytrue
    Example<br/><b>DIN</b>:{ "coding" : [{ "system" : "http://hl7.org/fhir/NamingSystem/ca-hc-din" }] } <br/><b>NPN</b>:{ "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/v3-hc-npn" }] } <br/><b>CCDD</b>:{ "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/hc-CCDD" }] } <br/><b>SNOMED CT (Medications) - IPS</b>:{ "coding" : [{ "system" : "http://snomed.info/sct" }] } <br/><b>WHO ATC IPS</b>:{ "coding" : [{ "system" : "http://www.whocc.no/atc" }] }
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    12. Medication.code.extension
    Definition

    An Extension


    May be used to represent additional information that is not part of the basic definition of the element. 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.

    Control0..*
    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 Medication.code.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
    • value @ url
    • 14. Medication.code.coding
      Definition

      A reference to a code defined by a terminology system.

      ShortCode defined by a terminology system
      Comments

      CA Baseline Usage Notes: either text or at least one coding or both have to be present


      Codes may be defined very casually in enumerations, or code lists, up to very formal definitions such as SNOMED CT - see the HL7 v3 Core Principles for more information. Ordering of codings is undefined and SHALL NOT be used to infer meaning. Generally, at most only one of the coding values will be labeled as UserSelected = true.

      Control0..*
      TypeCoding
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Requirements

      Allows for alternative encodings within a code system, and translations to other code systems.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      16. Medication.code.coding.extension:isRepresentative
      Slice NameisRepresentative
      Definition

      If set to true, indicates that the medication code sent was chosen as a representative code of a drug picked at a more general level. I.e. The user didn't actually choose this specific code. The intended constraints around what drug should be supplied are conveyed by the request's substitution rules.

      ShortSocialized Optional Extension: Code is Representative
      Control0..1
      TypeExtension(http://prescribeit.ca/fhir/StructureDefinition/ext-medication-code-representative)
      Is Modifierfalse
      Must Supportfalse
      Summaryfalse
      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())
      18. Medication.code.coding.system
      Definition

      The identification of the code system that defines the meaning of the symbol in the code.

      ShortIdentity of the terminology system
      Comments

      The URI may be an OID (urn:oid:...) or a UUID (urn:uuid:...). OIDs and UUIDs SHALL be references to the HL7 OID registry. Otherwise, the URI should come from HL7's list of FHIR defined special URIs or it should reference to some definition that establishes the system clearly and unambiguously.

      Control10..1
      Typeuri
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      Need to be unambiguous about the source of the definition of the symbol.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      20. Medication.code.coding.code
      Definition

      A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).

      ShortSymbol in syntax defined by the system
      Control10..1
      Typecode
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      Need to refer to a particular code in the system.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      22. Medication.code.text
      Definition

      A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user.

      ShortPlain text representation of the concept
      Comments

      CA Baseline Usage Notes: either text or at least one coding or both have to be present


      Very often the text is the same as a displayName of one of the codings.

      Control0..1
      Typestring
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      The codes from the terminologies do not always capture the correct meaning with all the nuances of the human using them, or sometimes there is no appropriate code at all. In these cases, the text is used to capture the full meaning of the source.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      24. Medication.status
      Definition

      A code to indicate if the medication is in active use.

      Shortactive | inactive | entered-in-error
      Comments

      This status is intended to identify if the medication in a local system is in active use within a drug database or inventory. For example, a pharmacy system may create a new drug file record for a compounded product "ABC Hospital Special Cream" with an active status. At some point in the future, it may be determined that the drug record was created with an error and the status is changed to "entered in error". This status is not intended to specify if a medication is part of a particular formulary. It is possible that the drug record may be referenced by multiple formularies or catalogues and each of those entries would have a separate status.

      Control0..1
      BindingThe codes SHALL be taken from Medication Status Codeshttp://hl7.org/fhir/ValueSet/medication-status|4.0.1
      (required to http://hl7.org/fhir/ValueSet/medication-status|4.0.1)

      A coded concept defining if the medication is in active use.

      Typecode
      Is Modifiertrue because This element changes the interpretation of all descriptive attributes.
      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()))
      26. Medication.manufacturer
      Definition

      Describes the details of the manufacturer of the medication product. This is not intended to represent the distributor of a medication product.

      ShortManufacturer of the item
      Comments

      CA Baseline Usage Notes: This is a reference to an organization that manufactures the medication. TBD: if there is a need to refernce a 'DPD Company', a new extension should be created and used. A 'DPD Company' name, as used in the Health Canada DPF, indicates the organisation (company) that holds the authorization to place the product on the market in Canada. This may not be the company that has manufactured the product, but it is the company that holds the legal responsibility for the use of the product in Canada and should be the same as the company named on the product label/packaging.

      Control0..1
      TypeReference(Organization Profile, Organization)
      Is Modifierfalse
      Summarytrue
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      28. Medication.form
      Definition

      Describes the form of the item. Powder; tablets; capsule.

      Shortpowder | tablets | capsule +
      Comments

      CA Core Usage Notes: The prescription drug form is required in some provinces in order to meet the prescribing standards set out by the College of Physicians and Surgeons.


      When Medication is referenced from MedicationRequest, this is the ordered form. When Medication is referenced within MedicationDispense, this is the dispensed form. When Medication is referenced within MedicationAdministration, this is administered form.

      Control0..1
      BindingFor example codes, see DispensableDrugForm .http://hl7.org/fhir/ValueSet/medication-form-codes
      (example to https://fhir.infoway-inforoute.ca/ValueSet/dispensabledrugform)

      TBD. This is a placeholder for a comprehensive valueset, which would be created and maintained by Canada Health Infoway. Currently seeking implementer feedback and input from pan-Canadian profiles to support updates to the nominated valueSet.


      A coded concept defining the form of a medication.

      TypeCodeableConcept
      Is Modifierfalse
      Summaryfalse
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))