<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="immunization-ca-core" />
  <url value="http://fhir.infoway-inforoute.ca/ca-core/StructureDefinition/immunization-ca-core" />
  <name value="ImmunizationCACore" />
  <title value="Immunization (CA-Core)" />
  <status value="draft" />
  <experimental value="false" />
  <description value="This profile represents the constraints applied to the Immunization resource by the CA Core+ project to represent the minimum expectations for the Immunization resource when used to promote capacity building for functionality found across Canadian FHIR implementations. It is informed by the constraints of shared across CIHI pCHDCF data sets and has also undergone analysis to assert alignment with the [Canadian Baseline Immunization Profile](http://build.fhir.org/ig/HL7-Canada/ca-baseline/branches/master/StructureDefinition-profile-immunization.html)" />
  <copyright value="Copyright © 2024+ Canada Health Infoway. All rights reserved. [Terms of Use and License Agreements](https://ic.infoway-inforoute.ca/en/about/tou). [Privacy Policy](https://www.infoway-inforoute.ca/en/legal/privacy-policy)." />
  <fhirVersion value="4.0.1" />
  <mapping>
    <identity value="pCHDCF" />
    <name value="Pan-Canadian Health Data Content Framework" />
  </mapping>
  <kind value="resource" />
  <abstract value="false" />
  <type value="Immunization" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Immunization" />
  <derivation value="constraint" />
  <differential>
    <element id="Immunization.status">
      <path value="Immunization.status" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Status" />
      </mapping>
    </element>
    <element id="Immunization.statusReason">
      <path value="Immunization.statusReason" />
      <binding>
        <strength value="preferred" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/actnoimmunizationreason" />
      </binding>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reason Not Performed" />
      </mapping>
    </element>
    <element id="Immunization.vaccineCode">
      <path value="Immunization.vaccineCode" />
      <comment value="The additionalBinding extension will be used to express the valueSet for additional negation/exclusion codes for reporting the known absence of immunizations. At the time of this release, the publisher of the current ValueSet for absence codes (IPS) is developing a SNOMED ValueSet that will replace the current http://hl7.org/fhir/uv/ips/ValueSet/absent-or-unknown-immunizations-uv-ips" />
      <binding>
        <extension url="http://hl7.org/fhir/tools/StructureDefinition/additional-binding">
          <extension url="purpose">
            <valueCode value="candidate" />
          </extension>
          <extension url="valueSet">
            <valueCanonical value="https://fhir.infoway-inforoute.ca/ValueSet/vaccinehistoricalnamecode" />
          </extension>
          <extension url="documentation">
            <valueMarkdown value="Recommended for use when conveying vaccine generic names for scenarios when brand name is not known or does not exist (e.g., immunization history where provider does not have detail of the trade name, the product has been discontinued and/or never licensed in Canada)." />
          </extension>
        </extension>
        <extension url="http://hl7.org/fhir/tools/StructureDefinition/additional-binding">
          <extension url="purpose">
            <valueCode value="candidate" />
          </extension>
          <extension url="valueSet">
            <valueCanonical value="https://fhir.infoway-inforoute.ca/ValueSet/passiveadministeredimmunizingagentcode" />
          </extension>
          <extension url="documentation">
            <valueMarkdown value="per pCHDCF: Alternate value sets can be used when passive immunization products are used" />
          </extension>
        </extension>
        <extension url="http://hl7.org/fhir/tools/StructureDefinition/additional-binding">
          <extension url="purpose">
            <valueCode value="candidate" />
          </extension>
          <extension url="valueSet">
            <valueCanonical value="https://fhir.infoway-inforoute.ca/ValueSet/passivehistoricalimmunizingagentcode" />
          </extension>
          <extension url="documentation">
            <valueMarkdown value="per pCHDCF: Alternate value sets can be used when passive immunization products are used" />
          </extension>
        </extension>
        <strength value="preferred" />
        <description value="Codes from the National Vaccine Catalogue Vaccine Administered Trade Name Code ValueSet." />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/vaccineadministeredtradenamecode" />
      </binding>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Name" />
      </mapping>
    </element>
    <element id="Immunization.patient">
      <path value="Immunization.patient" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://fhir.infoway-inforoute.ca/ca-core/StructureDefinition/patient-ca-core" />
      </type>
    </element>
    <element id="Immunization.occurrence[x]">
      <path value="Immunization.occurrence[x]" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Date*" />
        <comment value="*Mapping of this concept could apply to both the dateTime and string data types, however dateTime is the primary mapping and preferred dataType to support to promote the capabilities to capture structured data" />
      </mapping>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reason Not Performed Date*" />
        <comment value="*Mapping applies when the status is 'not-done'. Mapping of this concept could apply to both the dateTime and string data types, however dateTime is the primary mapping and preferred dataType to support to promote the capabilities to capture structured data" />
      </mapping>
    </element>
    <element id="Immunization.occurrence[x]:occurrenceDateTime">
      <path value="Immunization.occurrence[x]" />
      <sliceName value="occurrenceDateTime" />
      <type>
        <code value="dateTime" />
      </type>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Date" />
      </mapping>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reason Not Performed Date" />
        <comment value="Mapping applies when the status is 'not-done'" />
      </mapping>
    </element>
    <element id="Immunization.occurrence[x]:occurrenceString">
      <path value="Immunization.occurrence[x]" />
      <sliceName value="occurrenceString" />
      <type>
        <code value="string" />
      </type>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Date*" />
        <comment value="*Mapping of this concept could apply to both the dateTime and string data types, however dateTime is the primary mapping and preferred dataType to support to promote the capabilities to capture structured data" />
      </mapping>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reason Not Performed Date*" />
        <comment value="*Mapping applies when the status is 'not-done'. Mapping of this concept could apply to both the dateTime and string data types, however dateTime is the primary mapping and preferred dataType to support to promote the capabilities to capture structured data" />
      </mapping>
    </element>
    <element id="Immunization.manufacturer">
      <path value="Immunization.manufacturer" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://fhir.infoway-inforoute.ca/ca-core/StructureDefinition/organization-ca-core" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
      </type>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Manufacturer" />
      </mapping>
    </element>
    <element id="Immunization.lotNumber">
      <path value="Immunization.lotNumber" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Lot Number" />
      </mapping>
    </element>
    <element id="Immunization.expirationDate">
      <path value="Immunization.expirationDate" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Expiration Date" />
      </mapping>
    </element>
    <element id="Immunization.site">
      <path value="Immunization.site" />
      <comment value="The preferred binding for this element is forthcoming in pCHDCF" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Site" />
      </mapping>
    </element>
    <element id="Immunization.route">
      <path value="Immunization.route" />
      <comment value="The preferred binding for this element is forthcoming in pCHDCF" />
      <min value="1" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Route of Administration" />
      </mapping>
    </element>
    <element id="Immunization.route.extension">
      <path value="Immunization.route.extesion" />
      <comment value="The preferred binding for this element is forthcoming in pCHDCF" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Route of Administration" />
      </mapping>
    </element>
    <element id="Immunization.route.extension:data-absent-reason">
      <path value="Immunization.route.extension" />
      <sliceName value="data-absent-reason" />
      <short value="route absence reason" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://hl7.org/fhir/StructureDefinition/data-absent-reason" />
      </type>
    </element>
    <element id="Immunization.doseQuantity">
      <path value="Immunization.doseQuantity" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Dose Volume" />
        <comment value="Use of volume in concept may imply that further dataType sub-elements may be required (e.g., coded units to express volume). Further mapping may be applied as this concept is refined in the pCHDCF" />
      </mapping>
    </element>
    <element id="Immunization.performer">
      <path value="Immunization.performer" />
    </element>
    <element id="Immunization.performer.function">
      <path value="Immunization.performer.function" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reaction Reporter*" />
        <comment value="*The current definition for this concept implies that the performer is understood with a given function (reporter). The mapping is also based on the assumption that the reaction is captured within the record of the immunization event (instead of as an AdverseEvent or AllergyIntolerance). To fully provide meaning to performer under this definition, the Immunization.performer.function element must also be used. The mapping proposed is based on similar structures in national base implementation guides for other roles (e.g., approvers). Reviewers are encouraged to provide feedback on the mapping for this element compared to other alternatives (e.g. extensions, representation in AdverseEvent)." />
      </mapping>
    </element>
    <element id="Immunization.performer.actor">
      <path value="Immunization.performer.actor" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://fhir.infoway-inforoute.ca/ca-core/StructureDefinition/practitioner-ca-core" />
        <targetProfile value="http://fhir.infoway-inforoute.ca/ca-core/StructureDefinition/practitionerRole-ca-core" />
        <targetProfile value="http://fhir.infoway-inforoute.ca/ca-core/StructureDefinition/organization-ca-core" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/PractitionerRole" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
      </type>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reaction Reporter*" />
        <comment value="*The current definition for this concept implies that the performer is understood with a given function (reporter). The mapping is also based on the assumption that the reaction is captured within the record of the immunization event (instead of as an AdverseEvent or AllergyIntolerance). To fully provide meaning to performer under this definition, the Immunization.performer.function element must also be used. The mapping proposed is based on similar structures in national base implementation guides for other roles (e.g., approvers). Reviewers are encouraged to provide feedback on the mapping for this element compared to other alternatives (e.g. extensions, representation in AdverseEvent)." />
      </mapping>
    </element>
    <element id="Immunization.reasonCode">
      <path value="Immunization.reasonCode" />
      <binding>
        <strength value="preferred" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/actimmunizationreason" />
      </binding>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reason" />
      </mapping>
    </element>
    <element id="Immunization.subpotentReason">
      <path value="Immunization.subpotentReason" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Subpotent Reason" />
      </mapping>
    </element>
    <element id="Immunization.education">
      <path value="Immunization.education" />
      <comment value="While the FHIR R4 Immunization resource has the education element, it was removed in later releases of FHIR and replaced with guidance to convey details on the education provided to the person using the Communication resource. To maximize compatibility with future versions of FHIR, Communication is recommended over Immunization.education" />
    </element>
    <element id="Immunization.reaction">
      <path value="Immunization.reaction" />
      <comment value="The FHIR Base Specification advises that if Immunization.reaction is deemed to be an indication of an allergy or intolerance, a separate AllergyIntolerance resource instance should be created to indicate it, as most systems will not query against past Immunization.reaction" />
    </element>
    <element id="Immunization.reaction.date">
      <path value="Immunization.reaction.date" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reaction Date" />
      </mapping>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reaction Time" />
      </mapping>
    </element>
    <element id="Immunization.reaction.detail">
      <path value="Immunization.reaction.detail" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Reaction*" />
        <comment value="*This mapping is inexact and the pCHDCF concept definition may need to be further refined to determine if the details are more appropriately housed in the AllergyIntolerance or AdverseEvent resources. Reviewers are encouraged to provide feedback on how this concept is currently captured in their systems today" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied">
      <path value="Immunization.protocolApplied" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Protocol" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied.series">
      <path value="Immunization.protocolApplied.series" />
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Protocol Series" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied.authority">
      <path value="Immunization.protocolApplied.authority" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://fhir.infoway-inforoute.ca/ca-core/StructureDefinition/organization-ca-core" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
      </type>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Protocol Authority" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied.targetDisease">
      <path value="Immunization.protocolApplied.targetDisease" />
      <binding>
        <strength value="preferred" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/vaccinepreventablediseasecode" />
      </binding>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Protocol Target Disease" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied.doseNumber[x]">
      <path value="Immunization.protocolApplied.doseNumber[x]" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Dose Number*" />
        <comment value="*Mapping of this concept could apply to both the positiveInt and string data types, however string is the primary mapping and preferred dataType to support in order to maximize compatibility with future versions of FHIR (later versions of FHIR removing the positiveInt dataType from this element)" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied.doseNumber[x]:doseNumberPositiveInt">
      <path value="Immunization.protocolApplied.doseNumber[x]" />
      <sliceName value="doseNumberPositiveInt" />
      <type>
        <code value="positiveInt" />
      </type>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Dose Number*" />
        <comment value="*Mapping of this concept could apply to both the positiveInt and string data types, however string is the primary mapping and preferred dataType to support in order to maximize compatibility with future versions of FHIR (later versions of FHIR removing the positiveInt dataType from this element)" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied.doseNumber[x]:doseNumberString">
      <path value="Immunization.protocolApplied.doseNumber[x]" />
      <sliceName value="doseNumberString" />
      <type>
        <code value="string" />
      </type>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Dose Number" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied.seriesDoses[x]">
      <path value="Immunization.protocolApplied.seriesDoses[x]" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Series Doses*" />
        <comment value="*Mapping of this concept could apply to both the positiveInt and string data types, however string is the primary mapping and preferred dataType to support in order to maximize compatibility with future versions of FHIR (later versions of FHIR removing the positiveInt dataType from this element)" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied.seriesDoses[x]:seriesDosesPositiveInt">
      <path value="Immunization.protocolApplied.seriesDoses[x]" />
      <sliceName value="seriesDosesPositiveInt" />
      <type>
        <code value="positiveInt" />
      </type>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Series Doses*" />
        <comment value="*Mapping of this concept could apply to both the positiveInt and string data types, however string is the primary mapping and preferred dataType to support in order to maximize compatibility with future versions of FHIR (later versions of FHIR removing the positiveInt dataType from this element)" />
      </mapping>
    </element>
    <element id="Immunization.protocolApplied.seriesDoses[x]:seriesDosesString">
      <path value="Immunization.protocolApplied.seriesDoses[x]" />
      <sliceName value="seriesDosesString" />
      <type>
        <code value="string" />
      </type>
      <mapping>
        <identity value="pCHDCF" />
        <map value="Immunization Series Doses" />
      </mapping>
    </element>
  </differential>
</StructureDefinition>