<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="Procedure-uv-ips" />
  <url value="http://hl7.org/fhir/uv/ips/StructureDefinition/Procedure-uv-ips" />
  <name value="ProcedureUvIps" />
  <title value="Procedure (IPS)" />
  <status value="active" />
  <description value="This profile represents the constraints applied to the Procedure resource by the IPS project, which specifies an entry of the History of Procedure for the international patient summary based on the FHIR standard R4." />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Procedure" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Procedure" />
  <derivation value="constraint" />
  <differential>
    <element id="Procedure">
      <path value="Procedure" />
    </element>
    <element id="Procedure.status">
      <path value="Procedure.status" />
    </element>
    <element id="Procedure.code">
      <path value="Procedure.code" />
      <definition value="Identification of the procedure or recording of &quot;absence of relevant procedures&quot; or of &quot;procedures unknown&quot;." />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="CodeableConcept" />
        <profile value="http://hl7.org/fhir/uv/ips/StructureDefinition/CodeableConcept-uv-ips" />
      </type>
      <mustSupport value="true" />
      <binding>
        <extension url="http://hl7.org/fhir/tools/StructureDefinition/additional-binding">
          <extension url="purpose">
            <valueCode value="candidate" />
          </extension>
          <extension url="valueSet">
            <valueCanonical value="http://hl7.org/fhir/uv/ips/ValueSet/procedures-snomed-ct-ips-free-set" />
          </extension>
          <extension url="documentation">
            <valueMarkdown value="Codes for procedures in SNOMED IPS Free Set" />
          </extension>
        </extension>
        <extension url="http://hl7.org/fhir/tools/StructureDefinition/additional-binding">
          <extension url="purpose">
            <valueCode value="candidate" />
          </extension>
          <extension url="valueSet">
            <valueCanonical value="http://hl7.org/fhir/uv/ips/ValueSet/absent-or-unknown-procedures-uv-ips" />
          </extension>
          <extension url="documentation">
            <valueMarkdown value="Codes for absent or unknown procedures" />
          </extension>
        </extension>
        <strength value="preferred" />
        <description value="SNOMED CT procedure code set or a code for absent/unknown procedure" />
        <valueSet value="http://hl7.org/fhir/uv/ips/ValueSet/procedures-snomed-absent-unknown-uv-ips" />
      </binding>
    </element>
    <element id="Procedure.subject">
      <path value="Procedure.subject" />
      <definition value="The person on which the procedure was performed." />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/uv/ips/StructureDefinition/Patient-uv-ips" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.subject.reference">
      <path value="Procedure.subject.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.performed[x]">
      <path value="Procedure.performed[x]" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.performed[x].extension:data-absent-reason">
      <path value="Procedure.performed[x].extension" />
      <sliceName value="data-absent-reason" />
      <short value="performed[x] absence reason" />
      <definition value="Provides a reason why the performed is missing." />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://hl7.org/fhir/StructureDefinition/data-absent-reason" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.asserter">
      <path value="Procedure.asserter" />
      <mustSupport value="false" />
    </element>
    <element id="Procedure.performer">
      <path value="Procedure.performer" />
      <mustSupport value="false" />
    </element>
    <element id="Procedure.performer.actor">
      <path value="Procedure.performer.actor" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/uv/ips/StructureDefinition/Patient-uv-ips" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/RelatedPerson" />
        <targetProfile value="http://hl7.org/fhir/uv/ips/StructureDefinition/Device-observer-uv-ips" />
        <targetProfile value="http://hl7.org/fhir/uv/ips/StructureDefinition/Practitioner-uv-ips" />
        <targetProfile value="http://hl7.org/fhir/uv/ips/StructureDefinition/PractitionerRole-uv-ips" />
        <targetProfile value="http://hl7.org/fhir/uv/ips/StructureDefinition/Organization-uv-ips" />
      </type>
      <mustSupport value="false" />
    </element>
    <element id="Procedure.performer.onBehalfOf">
      <path value="Procedure.performer.onBehalfOf" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/uv/ips/StructureDefinition/Organization-uv-ips" />
      </type>
      <mustSupport value="false" />
    </element>
    <element id="Procedure.bodySite">
      <path value="Procedure.bodySite" />
      <type>
        <code value="CodeableConcept" />
        <profile value="http://hl7.org/fhir/uv/ips/StructureDefinition/CodeableConcept-uv-ips" />
      </type>
      <binding>
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="BodySite" />
        </extension>
        <strength value="example" />
        <valueSet value="http://hl7.org/fhir/ValueSet/body-site" />
      </binding>
    </element>
  </differential>
</StructureDefinition>