<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="ncr-diagnosis-bundle" />
  <url value="http://fhir.iknl.nl/fhir/iknl-ncr-ehr-r4/StructureDefinition/ncr-diagnosis-bundle" />
  <name value="NcrDiagnosisBundle" />
  <status value="draft" />
  <date value="2024-03-21T16:43:59.6734344+00:00" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Bundle" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Bundle" />
  <derivation value="constraint" />
  <differential>
    <element id="Bundle">
      <path value="Bundle" />
      <constraint>
        <key value="ncrdiag-0" />
        <severity value="error" />
        <human value="A Patient in this bundle conforms to NcrEhrPatient" />
        <expression value="entry.resource.ofType(Patient).conformsTo('http://fhir.iknl.nl/fhir/iknl-ncr-ehr-r4/StructureDefinition/ncr-ehr-patient').allTrue()" />
      </constraint>
      <constraint>
        <key value="ncrdiag-1" />
        <severity value="error" />
        <human value="A EpisodeOfCare in this bundle conforms to NcrEhrEpisodeOfCare" />
        <expression value="entry.resource.ofType(EpisodeOfCare).conformsTo('http://fhir.iknl.nl/fhir/iknl-ncr-ehr-r4/StructureDefinition/ncr-ehr-episode-of-care').allTrue()" />
      </constraint>
      <constraint>
        <key value="ncrdiag-2" />
        <severity value="error" />
        <human value="When the bundle contains no episode of care resource, Patient.active must be false." />
        <expression value="entry.resource.ofType(EpisodeOfCare).exists() or entry.resource.ofType(Patient).active.allFalse()" />
      </constraint>
    </element>
    <element id="Bundle.meta">
      <path value="Bundle.meta" />
      <min value="1" />
    </element>
    <element id="Bundle.meta.tag">
      <path value="Bundle.meta.tag" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Bundle.meta.tag:processing-target">
      <path value="Bundle.meta.tag" />
      <sliceName value="processing-target" />
      <min value="1" />
      <max value="1" />
      <patternCoding>
        <system value="http://fhir.iknl.nl/fhir/iknl-ncr-ehr-r4/NamingSystem/processing-target" />
        <code value="NKR_ODIA" />
      </patternCoding>
    </element>
    <element id="Bundle.entry">
      <path value="Bundle.entry" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="resolve()" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Bundle.entry:patient">
      <path value="Bundle.entry" />
      <sliceName value="patient" />
      <max value="1" />
    </element>
    <element id="Bundle.entry:patient.resource">
      <path value="Bundle.entry.resource" />
      <min value="1" />
      <type>
        <code value="Resource" />
        <profile value="http://fhir.iknl.nl/fhir/iknl-ncr-ehr-r4/StructureDefinition/ncr-ehr-patient" />
      </type>
    </element>
    <element id="Bundle.entry:patient.resource.identifier">
      <path value="Bundle.entry.resource.identifier" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Bundle.entry:patient.resource.name">
      <path value="Bundle.entry.resource.name" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="use" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Bundle.entry:patient.resource.telecom">
      <path value="Bundle.entry.resource.telecom" />
      <slicing>
        <discriminator>
          <type value="profile" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Bundle.entry:patient.resource.address.country.extension:countryCode">
      <path value="Bundle.entry.resource.address.country.extension" />
      <sliceName value="countryCode" />
    </element>
    <element id="Bundle.entry:patient.resource.address.country.extension:countryCode.value[x].coding">
      <path value="Bundle.entry.resource.address.country.extension.value[x].coding" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Bundle.entry:patient.resource.contact.relationship">
      <path value="Bundle.entry.resource.contact.relationship" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Bundle.entry:patient.resource.contact.telecom">
      <path value="Bundle.entry.resource.contact.telecom" />
      <slicing>
        <discriminator>
          <type value="profile" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Bundle.entry:episode-of-care">
      <path value="Bundle.entry" />
      <sliceName value="episode-of-care" />
      <max value="1" />
    </element>
    <element id="Bundle.entry:episode-of-care.resource">
      <path value="Bundle.entry.resource" />
      <min value="1" />
      <type>
        <code value="Resource" />
        <profile value="http://fhir.iknl.nl/fhir/iknl-ncr-ehr-r4/StructureDefinition/ncr-ehr-episode-of-care" />
      </type>
    </element>
  </differential>
</StructureDefinition>