<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="EPLabDispenseBundle-ddcfa417-3b25-4d29-94fc-ccc5c5a69c2d" />
  <url value="https://www.esante.lu/fhir-spec/StructureDefinition/EPLabDispenseBundle" />
  <version value="1.2.0" />
  <name value="EPLabDispenseBundle" />
  <status value="active" />
  <fhirVersion value="4.0.1" />
  <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="cda" />
    <uri value="http://hl7.org/v3/cda" />
    <name value="CDA (R2)" />
  </mapping>
  <mapping>
    <identity value="w5" />
    <uri value="http://hl7.org/fhir/fivews" />
    <name value="FiveWs Pattern Mapping" />
  </mapping>
  <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" />
      <condition value="val-SameDateLabDisp" />
      <condition value="val-SameLaboLabDisp" />
      <constraint>
        <key value="val-SameDateLabDisp" />
        <severity value="error" />
        <human value="The dates on the prescription shall be coherent" />
        <expression value="Bundle.entry.resource.select(ofType(Task).authoredOn|ofType(Encounter).period.start|ofType(Encounter).period.end).distinct().count() = 1" />
        <source value="https://www.esante.lu/fhir-spec/StructureDefinition/EPLabDispenseBundle" />
      </constraint>
      <constraint>
        <key value="val-SameLaboLabDisp" />
        <severity value="error" />
        <human value="Labo SHALL be the same" />
        <expression value="Bundle.entry.resource.select(ofType(Task).owner.reference|ofType(Encounter).serviceProvider.reference).distinct().count()=1" />
        <source value="https://www.esante.lu/fhir-spec/StructureDefinition/EPLabDispenseBundle" />
      </constraint>
    </element>
    <element id="Bundle.id">
      <path value="Bundle.id" />
      <definition value="The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.&#xD;&#xA;Is assigned by the server, do not provide a value." />
    </element>
    <element id="Bundle.meta">
      <path value="Bundle.meta" />
      <min value="1" />
    </element>
    <element id="Bundle.meta.id">
      <path value="Bundle.meta.id" />
      <max value="0" />
    </element>
    <element id="Bundle.meta.versionId">
      <path value="Bundle.meta.versionId" />
      <max value="0" />
    </element>
    <element id="Bundle.meta.lastUpdated">
      <path value="Bundle.meta.lastUpdated" />
      <max value="0" />
    </element>
    <element id="Bundle.meta.source">
      <path value="Bundle.meta.source" />
      <max value="0" />
    </element>
    <element id="Bundle.meta.profile">
      <path value="Bundle.meta.profile" />
      <min value="1" />
      <max value="1" />
      <fixedCanonical value="https://www.esante.lu/fhir-spec/StructureDefinition/EPLabDispenseBundle" />
    </element>
    <element id="Bundle.meta.security">
      <path value="Bundle.meta.security" />
      <max value="0" />
    </element>
    <element id="Bundle.meta.tag">
      <path value="Bundle.meta.tag" />
      <max value="0" />
    </element>
    <element id="Bundle.implicitRules">
      <path value="Bundle.implicitRules" />
      <max value="0" />
    </element>
    <element id="Bundle.language">
      <path value="Bundle.language" />
      <max value="0" />
    </element>
    <element id="Bundle.identifier">
      <path value="Bundle.identifier" />
      <max value="0" />
    </element>
    <element id="Bundle.type">
      <path value="Bundle.type" />
      <definition value="Only transaction" />
      <fixedCode value="transaction" />
    </element>
    <element id="Bundle.timestamp">
      <path value="Bundle.timestamp" />
      <max value="0" />
    </element>
    <element id="Bundle.total">
      <path value="Bundle.total" />
      <max value="0" />
    </element>
    <element id="Bundle.link">
      <path value="Bundle.link" />
      <max value="0" />
    </element>
    <element id="Bundle.entry">
      <path value="Bundle.entry" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="resource.meta.profile" />
        </discriminator>
        <rules value="closed" />
      </slicing>
      <min value="3" />
    </element>
    <element id="Bundle.entry:dispensation">
      <path value="Bundle.entry" />
      <sliceName value="dispensation" />
      <short value="The dispensation" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Bundle.entry:dispensation.id">
      <path value="Bundle.entry.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensation.link">
      <path value="Bundle.entry.link" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensation.fullUrl">
      <path value="Bundle.entry.fullUrl" />
      <short value="UUID of the resource" />
      <definition value="This is a UUID to identify the element inside the Bundle.&#xD;&#xA;It SHALL start with urn:uuid: and then an UUID version 4 randomly generated. Its scope is only the Bundle, it is not linked outside from it and not saved." />
      <min value="1" />
      <example>
        <label value="Valid example" />
        <valueUri value="urn:uuid:d00069b7-1fc8-4397-bc7c-c9571319d890" />
      </example>
      <condition value="val-uuid" />
      <constraint>
        <key value="val-uuid" />
        <severity value="error" />
        <human value="SHALL be a v4 UUID prefixed by urn:uuid:" />
        <expression value="startsWith('urn:uuid:') and length()=45" />
        <source value="https://www.esante.lu/fhir-spec/StructureDefinition/EPLabDispenseBundle" />
      </constraint>
    </element>
    <element id="Bundle.entry:dispensation.resource">
      <path value="Bundle.entry.resource" />
      <short value="The dispensation" />
      <min value="1" />
      <type>
        <code value="Encounter" />
        <profile value="https://www.esante.lu/fhir-spec/StructureDefinition/EPLabDispense" />
      </type>
    </element>
    <element id="Bundle.entry:dispensation.search">
      <path value="Bundle.entry.search" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensation.request">
      <path value="Bundle.entry.request" />
      <min value="1" />
    </element>
    <element id="Bundle.entry:dispensation.request.id">
      <path value="Bundle.entry.request.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensation.request.method">
      <path value="Bundle.entry.request.method" />
      <definition value="Only POST" />
      <fixedCode value="POST" />
    </element>
    <element id="Bundle.entry:dispensation.request.url">
      <path value="Bundle.entry.request.url" />
      <short value="Fixed value" />
      <fixedUri value="Encounter" />
    </element>
    <element id="Bundle.entry:dispensation.request.ifNoneMatch">
      <path value="Bundle.entry.request.ifNoneMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensation.request.ifModifiedSince">
      <path value="Bundle.entry.request.ifModifiedSince" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensation.request.ifMatch">
      <path value="Bundle.entry.request.ifMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensation.request.ifNoneExist">
      <path value="Bundle.entry.request.ifNoneExist" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensation.response">
      <path value="Bundle.entry.response" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensationLine">
      <path value="Bundle.entry" />
      <sliceName value="dispensationLine" />
      <short value="Dispensation lines" />
      <min value="1" />
      <max value="*" />
    </element>
    <element id="Bundle.entry:dispensationLine.id">
      <path value="Bundle.entry.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensationLine.link">
      <path value="Bundle.entry.link" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensationLine.fullUrl">
      <path value="Bundle.entry.fullUrl" />
      <short value="UUID of the resource" />
      <definition value="This is a UUID to identify the element inside the Bundle.&#xD;&#xA;It SHALL start with urn:uuid: and then an UUID version 4 randomly generated. Its scope is only the Bundle, it is not linked outside from it and not saved." />
      <comment value="." />
      <min value="1" />
      <condition value="val-uuid" />
      <constraint>
        <key value="val-uuid" />
        <severity value="error" />
        <human value="SHALL be a v4 UUID prefixed by urn:uuid:" />
        <expression value="startsWith('urn:uuid:') and length()=45" />
        <source value="https://www.esante.lu/fhir-spec/StructureDefinition/EPLabDispenseBundle" />
      </constraint>
    </element>
    <element id="Bundle.entry:dispensationLine.resource">
      <path value="Bundle.entry.resource" />
      <short value="Dispensation line" />
      <min value="1" />
      <type>
        <code value="Task" />
        <profile value="https://www.esante.lu/fhir-spec/StructureDefinition/EPLabDispenseLine" />
      </type>
    </element>
    <element id="Bundle.entry:dispensationLine.search">
      <path value="Bundle.entry.search" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensationLine.request">
      <path value="Bundle.entry.request" />
      <min value="1" />
    </element>
    <element id="Bundle.entry:dispensationLine.request.id">
      <path value="Bundle.entry.request.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensationLine.request.method">
      <path value="Bundle.entry.request.method" />
      <definition value="Always POST" />
      <fixedCode value="POST" />
    </element>
    <element id="Bundle.entry:dispensationLine.request.url">
      <path value="Bundle.entry.request.url" />
      <short value="Fixed value" />
      <fixedUri value="Task" />
    </element>
    <element id="Bundle.entry:dispensationLine.request.ifNoneMatch">
      <path value="Bundle.entry.request.ifNoneMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensationLine.request.ifModifiedSince">
      <path value="Bundle.entry.request.ifModifiedSince" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensationLine.request.ifMatch">
      <path value="Bundle.entry.request.ifMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensationLine.request.ifNoneExist">
      <path value="Bundle.entry.request.ifNoneExist" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:dispensationLine.response">
      <path value="Bundle.entry.response" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:patient">
      <path value="Bundle.entry" />
      <sliceName value="patient" />
      <short value="The patient" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Bundle.entry:patient.id">
      <path value="Bundle.entry.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:patient.link">
      <path value="Bundle.entry.link" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:patient.fullUrl">
      <path value="Bundle.entry.fullUrl" />
      <short value="UUID of the resource" />
      <definition value="This is a UUID to identify the element inside the Bundle.&#xD;&#xA;It SHALL start with urn:uuid: and then an UUID version 4 randomly generated. Its scope is only the Bundle, it is not linked outside from it and not saved." />
      <min value="1" />
      <example>
        <label value="Valid example" />
        <valueUri value="urn:uuid:d00069b7-1fc8-4397-bc7c-c9571319d890" />
      </example>
      <condition value="val-uuid" />
      <constraint>
        <key value="val-uuid" />
        <severity value="error" />
        <human value="SHALL be a v4 UUID prefixed by urn:uuid:" />
        <expression value="startsWith('urn:uuid:') and length()=45" />
        <source value="https://www.esante.lu/fhir-spec/StructureDefinition/EPLabDispenseBundle" />
      </constraint>
    </element>
    <element id="Bundle.entry:patient.resource">
      <path value="Bundle.entry.resource" />
      <short value="The patient" />
      <min value="1" />
      <type>
        <code value="Patient" />
        <profile value="https://www.esante.lu/fhir-spec/StructureDefinition/EPPatient" />
      </type>
    </element>
    <element id="Bundle.entry:patient.search">
      <path value="Bundle.entry.search" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:patient.request">
      <path value="Bundle.entry.request" />
      <min value="1" />
    </element>
    <element id="Bundle.entry:patient.request.id">
      <path value="Bundle.entry.request.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:patient.request.method">
      <path value="Bundle.entry.request.method" />
      <definition value="Constant" />
      <fixedCode value="POST" />
    </element>
    <element id="Bundle.entry:patient.request.url">
      <path value="Bundle.entry.request.url" />
      <short value="Constant" />
      <fixedUri value="Patient" />
    </element>
    <element id="Bundle.entry:patient.request.ifNoneMatch">
      <path value="Bundle.entry.request.ifNoneMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:patient.request.ifModifiedSince">
      <path value="Bundle.entry.request.ifModifiedSince" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:patient.request.ifMatch">
      <path value="Bundle.entry.request.ifMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:patient.request.ifNoneExist">
      <path value="Bundle.entry.request.ifNoneExist" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:patient.response">
      <path value="Bundle.entry.response" />
      <max value="0" />
    </element>
    <element id="Bundle.signature">
      <path value="Bundle.signature" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>