<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="structuredefinition-profile-immunization" />
  <meta>
    <lastUpdated value="2021-02-25T17:50:27.140+00:00" />
  </meta>
  <url value="https://fhir.infoway-inforoute.ca/StructureDefinition/profile-immunization" />
  <name value="PHIAccessImmunization" />
  <title value="PHI Access Immunization Profile" />
  <status value="draft" />
  <date value="2021-02-24T14:21:42.4488878Z" />
  <publisher value="Canada Health Infoway" />
  <description value="Proposed constraints and extensions on the Immunization Resource" />
  <jurisdiction>
    <coding>
      <system value="urn:iso:std:iso:3166" />
      <code value="CA" />
      <display value="Canada" />
    </coding>
  </jurisdiction>
  <fhirVersion value="4.0.1" />
  <mapping>
    <identity value="workflow" />
    <uri value="http://hl7.org/fhir/workflow" />
    <name value="Workflow Pattern" />
  </mapping>
  <mapping>
    <identity value="v2" />
    <uri value="http://hl7.org/v2" />
    <name value="HL7 v2 Mapping" />
  </mapping>
  <mapping>
    <identity value="rim" />
    <uri value="http://hl7.org/v3" />
    <name value="RIM Mapping" />
  </mapping>
  <mapping>
    <identity value="w5" />
    <uri value="http://hl7.org/fhir/fivews" />
    <name value="FiveWs Pattern Mapping" />
  </mapping>
  <mapping>
    <identity value="cda" />
    <uri value="http://hl7.org/v3/cda" />
    <name value="CDA (R2)" />
  </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.id">
      <path value="Immunization.id" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.meta">
      <path value="Immunization.meta" />
      <requirements value="Necessary for preventing collisions and duplication of resources." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.meta.versionId">
      <path value="Immunization.meta.versionId" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.meta.lastUpdated">
      <path value="Immunization.meta.lastUpdated" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.meta.source">
      <path value="Immunization.meta.source" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.text">
      <path value="Immunization.text" />
      <requirements value="Cardinality constrained to 1..1 as this element provides a meaningful human narrative to the immunization record and is expected to be generated by the FHIR Service/Data Connector based on the structured elements in the resource.." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.text.status">
      <path value="Immunization.text.status" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.text.div">
      <path value="Immunization.text.div" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.identifier">
      <path value="Immunization.identifier" />
      <requirements value="Usage Note: Given the cross-provinicial scope of the use cases, an immunization record identifier is considered critical to prevent a patient-facing application from unknowingly rendering duplicated results." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.identifier.system">
      <path value="Immunization.identifier.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.identifier.value">
      <path value="Immunization.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.status">
      <path value="Immunization.status" />
      <short value="completed | not-done" />
      <mustSupport value="true" />
      <isModifierReason value="This element is labeled as a modifier because it is a status element that contains the status &quot;not-done&quot; which means that the resource should not be treated as having the same conformance rules that a resource with &quot;completed&quot; status" />
      <binding>
        <strength value="required" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/PHIaccess-immunization-status" />
      </binding>
    </element>
    <element id="Immunization.statusReason">
      <path value="Immunization.statusReason" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/PHIaccess-immunization-status-reason" />
      </binding>
    </element>
    <element id="Immunization.statusReason.coding">
      <path value="Immunization.statusReason.coding" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <max value="2" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.statusReason.coding:StatusReason">
      <path value="Immunization.statusReason.coding" />
      <sliceName value="StatusReason" />
      <min value="1" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/PHIaccess-immunization-status-reason" />
      </binding>
    </element>
    <element id="Immunization.statusReason.coding:StatusReason.system">
      <path value="Immunization.statusReason.coding.system" />
      <min value="1" />
      <patternUri value="https://fhir.infoway-inforoute.ca/ValueSet/PHIaccess-immunization-status-reason" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.statusReason.coding:StatusReason.code">
      <path value="Immunization.statusReason.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.statusReason.coding:StatusReason.display">
      <path value="Immunization.statusReason.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.statusReason.coding:OtherDetails">
      <path value="Immunization.statusReason.coding" />
      <sliceName value="OtherDetails" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="extensible" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/PHIaccess-other-immunization-status-reason" />
      </binding>
    </element>
    <element id="Immunization.statusReason.coding:OtherDetails.system">
      <path value="Immunization.statusReason.coding.system" />
      <min value="1" />
      <patternUri value="https://fhir.infoway-inforoute.ca/ValueSet/PHIaccess-other-immunization-status-reason" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.statusReason.coding:OtherDetails.code">
      <path value="Immunization.statusReason.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.statusReason.coding:OtherDetails.display">
      <path value="Immunization.statusReason.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.statusReason.text">
      <path value="Immunization.statusReason.text" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode">
      <path value="Immunization.vaccineCode" />
      <comment value="Vaccination events that are recorded deferrals/refusals are still expected to communicate vaccineCode for the vaccine that was &quot;not-done&quot;. This is a constraint communicated through the base specification required cardinality (1..1)." />
      <requirements value="A vaccine codeable concept is expected to be present and also meaningful (flagged as must support). Multiple codings may be sent for the codeable concept sent in vaccineCode, however only one vaccineCode.text should be present to communicate the plain text representation of the codeable concept." />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding">
      <path value="Immunization.vaccineCode.coding" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="system" />
        </discriminator>
        <rules value="closed" />
      </slicing>
      <comment value="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.&#xD;&#xA;&#xD;&#xA;The slicing on this element is considered open, meaning that additional content is allowed anywhere in the list (unordered slices)." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:Antigen">
      <path value="Immunization.vaccineCode.coding" />
      <sliceName value="Antigen" />
      <requirements value="Allows for communicating multiple antigen codings for a codeable concept. This slice was included to ensure, that at a minimum, citizens would be able to search for an immunization record using a known value set antigens.&#xD;&#xA;&#xD;&#xA; Some jurisdictions, that have not not completed mapping to the Generic names in the Canadian Vaccine Catalogue (CVC), may use local generic/common naming conventions that can not be easily anticipated by the citizen. Antigen offers an alternative coding to search against in these scenarios." />
      <binding>
        <strength value="required" />
        <valueSet value="https://cvc.canimmunize.ca/v3/ValueSet/AntigenIgAntitoxin" />
      </binding>
    </element>
    <element id="Immunization.vaccineCode.coding:Antigen.system">
      <path value="Immunization.vaccineCode.coding.system" />
      <min value="1" />
      <patternUri value="https://cvc.canimmunize.ca/v3/ValueSet/AntigenIgAntitoxin" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:Antigen.code">
      <path value="Immunization.vaccineCode.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:Antigen.display">
      <path value="Immunization.vaccineCode.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:Generic">
      <path value="Immunization.vaccineCode.coding" />
      <sliceName value="Generic" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="https://cvc.canimmunize.ca/v3/ValueSet/Generic" />
      </binding>
    </element>
    <element id="Immunization.vaccineCode.coding:Generic.system">
      <path value="Immunization.vaccineCode.coding.system" />
      <min value="1" />
      <patternUri value="https://cvc.canimmunize.ca/v3/ValueSet/Generic" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:Generic.code">
      <path value="Immunization.vaccineCode.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:Generic.display">
      <path value="Immunization.vaccineCode.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:Tradename">
      <path value="Immunization.vaccineCode.coding" />
      <sliceName value="Tradename" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="https://cvc.canimmunize.ca/v3/ValueSet/Tradename" />
      </binding>
    </element>
    <element id="Immunization.vaccineCode.coding:Tradename.system">
      <path value="Immunization.vaccineCode.coding.system" />
      <min value="1" />
      <patternUri value="https://cvc.canimmunize.ca/v3/ValueSet/Tradename" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:Tradename.code">
      <path value="Immunization.vaccineCode.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:Tradename.display">
      <path value="Immunization.vaccineCode.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:DIN">
      <path value="Immunization.vaccineCode.coding" />
      <sliceName value="DIN" />
      <requirements value="Allows for alternative encodings for immunizations that are administered in pharmacies where DIN may be used instead of a code belonging to the CVC code system." />
      <binding>
        <strength value="required" />
        <description value="CA Health Canada Drug Identification Number" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/CA-HC-DIN" />
      </binding>
    </element>
    <element id="Immunization.vaccineCode.coding:DIN.system">
      <path value="Immunization.vaccineCode.coding.system" />
      <min value="1" />
      <patternUri value="http://hl7.org/fhir/sid/ca-hc-din" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:DIN.code">
      <path value="Immunization.vaccineCode.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:DIN.display">
      <path value="Immunization.vaccineCode.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:@default">
      <path value="Immunization.vaccineCode.coding" />
      <sliceName value="@default" />
      <comment value="In cases where a local code is sent for Immunization.code, the local code system will be provided in coding.system and the data will be conformant to the constraints outlined in the @default slice. Implementors should be aware that the Simplifier validator does not currently support validation against the @default slice." />
      <binding>
        <strength value="example" />
        <description value="PEI Common Vaccine Code" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/ca-pe-common-vaccineCode" />
      </binding>
    </element>
    <element id="Immunization.vaccineCode.coding:@default.system">
      <path value="Immunization.vaccineCode.coding.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:@default.code">
      <path value="Immunization.vaccineCode.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.coding:@default.display">
      <path value="Immunization.vaccineCode.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.vaccineCode.text">
      <path value="Immunization.vaccineCode.text" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Immunization.patient">
      <path value="Immunization.patient" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://fhir.infoway-inforoute.ca/StructureDefinition/profile-patient-DataConnector" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Immunization.occurrence[x]">
      <path value="Immunization.occurrence[x]" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mustSupport value="true" />
    </element>
    <element id="Immunization.occurrence[x]:occurrenceDateTime">
      <path value="Immunization.occurrence[x]" />
      <sliceName value="occurrenceDateTime" />
      <comment value="Per the CA Baseline: a combination of occurrenceDateTime (full or partial) with the 'estimated' extension should be used when an exact date is unknown. For example, if a patient recalls that she/he was immunized in June 1980, occurrenceDateTime will have a partial date '1980-06' with 'estimated'=true. Another example: if in 2020, a 55 y.o. patient recalls that she/he was immunized at the age of 5, occurrenceDateTime will have a partial date '1970' with 'estimated'=true" />
      <type>
        <code value="dateTime" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Immunization.occurrence[x]:occurrenceDateTime.extension">
      <path value="Immunization.occurrence[x].extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Immunization.occurrence[x]:occurrenceDateTime.extension:estimated">
      <path value="Immunization.occurrence[x].extension" />
      <sliceName value="estimated" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://hl7.org/fhir/ca/baseline/StructureDefinition/ext-dateestimated" />
      </type>
      <mustSupport value="false" />
    </element>
    <element id="Immunization.reportOrigin">
      <path value="Immunization.reportOrigin" />
      <binding>
        <strength value="preferred" />
        <valueSet value="https://cvc.canimmunize.ca/v3/ValueSet/RepSource" />
      </binding>
    </element>
    <element id="Immunization.manufacturer">
      <path value="Immunization.manufacturer" />
      <comment value="References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc.). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository. &#xD;&#xA;&#xD;&#xA;Manufacturer is a critical data element for clinical efficacy tracking (e.g., COVID vaccination) and recall use cases. These use cases emerged outside of the use cases and requirements for the first release that were prioritized by participating jurisdictions. Data connectors will support return of this element to FHIR where possible, however not all jurisdictions are expected to currently capture this information in their participating repositories or require their participating applications to support this data element. For those reasons this element has not been marked must support." />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/ca/baseline/StructureDefinition/profile-organization" />
      </type>
      <mustSupport value="false" />
    </element>
    <element id="Immunization.lotNumber">
      <path value="Immunization.lotNumber" />
      <comment value="Note that FHIR strings SHALL NOT exceed 1MB in size. &#xD;&#xA;&#xD;&#xA;lotNumber is a critical data element for clinical efficacy tracking (e.g., COVID vaccination) and recall use cases. These use cases emerged outside of the use cases and requirements for the first release that were prioritized by participating jurisdictions. Data connectors will support return of this element to FHIR where possible, however not all jurisdictions are expected to currently capture this information in their participating repositories or require their participating applications to support this data element. For those reasons this element has not been marked must support." />
      <mustSupport value="false" />
    </element>
    <element id="Immunization.doseQuantity">
      <path value="Immunization.doseQuantity" />
      <comment value="The context of use may frequently define what kind of quantity this is and therefore what kind of units can be used. &#xD;&#xA;&#xD;&#xA;The context of use may also restrict the values for the comparator. doseQuantity is a critical data element for clinical efficacy and dosage tracking (e.g., COVID vaccination) use cases. These use cases emerged outside of the use cases and requirements for the first release that were prioritized by participating jurisdictions. Data connectors will support return of this element to FHIR where possible, however not all jurisdictions are expected to currently capture this information in their participating repositories or require their participating applications to support this data element. For those reasons this element has not been marked must support." />
      <mustSupport value="false" />
    </element>
    <element id="Immunization.protocolApplied">
      <path value="Immunization.protocolApplied" />
      <comment value="doseNumber and seriesDoses within the protocolApplied element are considered a critical data element for clinical efficacy and dosage tracking (e.g., COVID vaccination) use cases. These use cases emerged outside of the use cases and requirements for the first release that were prioritized by participating jurisdictions. &#xD;&#xA;&#xD;&#xA;Data connectors will support return of this element to FHIR where possible, however not all jurisdictions are expected to currently capture this information in their participating repositories or require their participating applications to support this data element. For those reasons this element and child-elements have not been marked must support." />
      <mustSupport value="false" />
    </element>
  </differential>
</StructureDefinition>