<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="http://ontariohealth.ca/fhir/mi/StructureDefinition/ca-on-mi-profile-provenance" />
  <version value="1.0.0" />
  <name value="Provenance" />
  <status value="active" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Provenance" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Provenance" />
  <derivation value="constraint" />
  <differential>
    <element id="Provenance.meta">
      <path value="Provenance.meta" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.meta.tag">
      <path value="Provenance.meta.tag" />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <description value="Codes representing data domains within Ontario Health Clinical Data Foundation" />
        <valueSet value="http://ontariohealth.ca/fhir/ehr/ValueSet/cdf-data-domain" />
      </binding>
    </element>
    <element id="Provenance.meta.tag.system">
      <path value="Provenance.meta.tag.system" />
      <min value="1" />
      <fixedUri value="http://ontariohealth.ca/fhir/CodeSystem/cdf-data-domains" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.meta.tag.code">
      <path value="Provenance.meta.tag.code" />
      <min value="1" />
      <fixedCode value="mi" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.meta.tag.display">
      <path value="Provenance.meta.tag.display" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.target">
      <path value="Provenance.target" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.target.identifier">
      <path value="Provenance.target.identifier" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.target.identifier.system">
      <path value="Provenance.target.identifier.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.target.identifier.value">
      <path value="Provenance.target.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.recorded">
      <path value="Provenance.recorded" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.policy">
      <path value="Provenance.policy" />
      <min value="1" />
      <max value="1" />
      <fixedUri value="http://ontariohealth.ca/fhir/provenance-policy/ocinet" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.activity">
      <path value="Provenance.activity" />
      <min value="1" />
      <fixedCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/iso-21089-lifecycle" />
          <code value="transform" />
          <display value="Transform/Translate Record Lifecycle Event" />
        </coding>
      </fixedCodeableConcept>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ontariohealth.ca/fhir/ehr/ValueSet/provenance-activity-type" />
      </binding>
    </element>
    <element id="Provenance.activity.coding">
      <path value="Provenance.activity.coding" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.activity.coding.system">
      <path value="Provenance.activity.coding.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.activity.coding.code">
      <path value="Provenance.activity.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.activity.coding.display">
      <path value="Provenance.activity.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent">
      <path value="Provenance.agent" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="type.coding" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-composer">
      <path value="Provenance.agent" />
      <sliceName value="sliceAgent-composer" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-composer.type">
      <path value="Provenance.agent.type" />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ontariohealth.ca/fhir/ehr/ValueSet/provenance-agent-type" />
      </binding>
    </element>
    <element id="Provenance.agent:sliceAgent-composer.type.coding">
      <path value="Provenance.agent.type.coding" />
      <min value="1" />
      <max value="1" />
      <patternCoding>
        <system value="http://terminology.hl7.org/CodeSystem/provenance-participant-type" />
        <code value="composer" />
        <display value="Composer" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-composer.type.coding.system">
      <path value="Provenance.agent.type.coding.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-composer.type.coding.code">
      <path value="Provenance.agent.type.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-composer.type.coding.display">
      <path value="Provenance.agent.type.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-composer.who">
      <path value="Provenance.agent.who" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-composer.who.identifier">
      <path value="Provenance.agent.who.identifier" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-composer.who.identifier.system">
      <path value="Provenance.agent.who.identifier.system" />
      <min value="1" />
      <fixedUri value="http://ehealthontario.ca/fhir/NamingSystem/id-oneid-clientid" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-composer.who.identifier.value">
      <path value="Provenance.agent.who.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-transformer">
      <path value="Provenance.agent" />
      <sliceName value="sliceAgent-transformer" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-transformer.type">
      <path value="Provenance.agent.type" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-transformer.type.coding">
      <path value="Provenance.agent.type.coding" />
      <min value="1" />
      <max value="1" />
      <patternCoding>
        <system value="http://terminology.hl7.org/CodeSystem/provenance-participant-type" />
        <code value="transformer" />
        <display value="Transformer" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-transformer.type.coding.system">
      <path value="Provenance.agent.type.coding.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-transformer.type.coding.code">
      <path value="Provenance.agent.type.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-transformer.type.coding.display">
      <path value="Provenance.agent.type.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-transformer.who">
      <path value="Provenance.agent.who" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-transformer.who.display">
      <path value="Provenance.agent.who.display" />
      <min value="1" />
      <fixedString value="OCINet HL7v2 to FHIR Translation Engine" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-sendingOrganization">
      <path value="Provenance.agent" />
      <sliceName value="sliceAgent-sendingOrganization" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-sendingOrganization.type">
      <path value="Provenance.agent.type" />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ontariohealth.ca/fhir/ehr/ValueSet/provenance-agent-type" />
      </binding>
    </element>
    <element id="Provenance.agent:sliceAgent-sendingOrganization.type.coding">
      <path value="Provenance.agent.type.coding" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-sendingOrganization.who">
      <path value="Provenance.agent.who" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.agent:sliceAgent-sendingOrganization.who.identifier">
      <path value="Provenance.agent.who.identifier" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.entity">
      <path value="Provenance.entity" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.entity.role">
      <path value="Provenance.entity.role" />
      <fixedCode value="derivation" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.entity.what">
      <path value="Provenance.entity.what" />
      <mustSupport value="true" />
    </element>
    <element id="Provenance.entity.what.identifier">
      <path value="Provenance.entity.what.identifier" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>