<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="FTBundle-eb4c68e8-0567-4042-9de6-da47cd8d3bd6" />
  <url value="https://www.esante.lu/fhir-spec/StructureDefinition/FTBundle" />
  <version value="0.0.1" />
  <name value="FTBundle" />
  <status value="draft" />
  <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-FTSameCommAsHP" />
      <constraint>
        <key value="val-FTSameCommAsHP" />
        <severity value="error" />
        <human value="There shall be as many Communication as Practitioners" />
        <expression value="Bundle.entry.resource.ofType(Communication).count()=Bundle.entry.resource.ofType(Practitioner).count()" />
        <source value="https://www.esante.lu/fhir-spec/StructureDefinition/FTBundle" />
      </constraint>
    </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/FTBundle" />
    </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="Constant value" />
      <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:FTResPDF">
      <path value="Bundle.entry" />
      <sliceName value="FTResPDF" />
      <short value="The result as PDF" />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Bundle.entry:FTResPDF.id">
      <path value="Bundle.entry.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTResPDF.link">
      <path value="Bundle.entry.link" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTResPDF.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/FTBundle" />
      </constraint>
    </element>
    <element id="Bundle.entry:FTResPDF.resource">
      <path value="Bundle.entry.resource" />
      <short value="The result as PDF" />
      <min value="1" />
      <type>
        <code value="DocumentReference" />
        <profile value="https://www.esante.lu/fhir-spec/StructureDefinition/FTResPDF" />
      </type>
    </element>
    <element id="Bundle.entry:FTResPDF.search">
      <path value="Bundle.entry.search" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTResPDF.request">
      <path value="Bundle.entry.request" />
      <min value="1" />
    </element>
    <element id="Bundle.entry:FTResPDF.request.id">
      <path value="Bundle.entry.request.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTResPDF.request.method">
      <path value="Bundle.entry.request.method" />
      <definition value="Constant" />
      <fixedCode value="POST" />
    </element>
    <element id="Bundle.entry:FTResPDF.request.url">
      <path value="Bundle.entry.request.url" />
      <short value="Constant" />
      <fixedUri value="DocumentReference" />
    </element>
    <element id="Bundle.entry:FTResPDF.request.ifNoneMatch">
      <path value="Bundle.entry.request.ifNoneMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTResPDF.request.ifModifiedSince">
      <path value="Bundle.entry.request.ifModifiedSince" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTResPDF.request.ifMatch">
      <path value="Bundle.entry.request.ifMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTResPDF.request.ifNoneExist">
      <path value="Bundle.entry.request.ifNoneExist" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTResPDF.response">
      <path value="Bundle.entry.response" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTCommunication">
      <path value="Bundle.entry" />
      <sliceName value="FTCommunication" />
      <short value="The Communication(s). One Communication is for 1 Health professional, however the XML and PDF DocumentReference can be reused inside the Communication object" />
      <min value="1" />
      <max value="*" />
    </element>
    <element id="Bundle.entry:FTCommunication.id">
      <path value="Bundle.entry.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTCommunication.link">
      <path value="Bundle.entry.link" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTCommunication.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" />
      <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/FTBundle" />
      </constraint>
    </element>
    <element id="Bundle.entry:FTCommunication.resource">
      <path value="Bundle.entry.resource" />
      <short value="The communications" />
      <min value="1" />
      <type>
        <code value="Communication" />
        <profile value="https://www.esante.lu/fhir-spec/StructureDefinition/FTCommunication" />
      </type>
    </element>
    <element id="Bundle.entry:FTCommunication.search">
      <path value="Bundle.entry.search" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTCommunication.request">
      <path value="Bundle.entry.request" />
      <min value="1" />
    </element>
    <element id="Bundle.entry:FTCommunication.request.id">
      <path value="Bundle.entry.request.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTCommunication.request.method">
      <path value="Bundle.entry.request.method" />
      <definition value="Constant" />
      <fixedCode value="POST" />
    </element>
    <element id="Bundle.entry:FTCommunication.request.url">
      <path value="Bundle.entry.request.url" />
      <definition value="Constant" />
      <fixedUri value="Communication" />
    </element>
    <element id="Bundle.entry:FTCommunication.request.ifNoneMatch">
      <path value="Bundle.entry.request.ifNoneMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTCommunication.request.ifModifiedSince">
      <path value="Bundle.entry.request.ifModifiedSince" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTCommunication.request.ifMatch">
      <path value="Bundle.entry.request.ifMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTCommunication.request.ifNoneExist">
      <path value="Bundle.entry.request.ifNoneExist" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTCommunication.response">
      <path value="Bundle.entry.response" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTDiagReport">
      <path value="Bundle.entry" />
      <sliceName value="FTDiagReport" />
      <short value="DiagnostivReport One Communication is for 1 Health professional, however the XML and PDF DocumentReference can be reused inside the Communication object" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Bundle.entry:FTDiagReport.id">
      <path value="Bundle.entry.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTDiagReport.link">
      <path value="Bundle.entry.link" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTDiagReport.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" />
      <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/FTBundle" />
      </constraint>
    </element>
    <element id="Bundle.entry:FTDiagReport.resource">
      <path value="Bundle.entry.resource" />
      <short value="The result envelope" />
      <min value="1" />
      <type>
        <code value="DiagnosticReport" />
        <profile value="https://www.esante.lu/fhir-spec/StructureDefinition/FTDiagReport" />
      </type>
    </element>
    <element id="Bundle.entry:FTDiagReport.search">
      <path value="Bundle.entry.search" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTDiagReport.request">
      <path value="Bundle.entry.request" />
      <min value="1" />
    </element>
    <element id="Bundle.entry:FTDiagReport.request.id">
      <path value="Bundle.entry.request.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTDiagReport.request.method">
      <path value="Bundle.entry.request.method" />
      <definition value="Constant" />
      <fixedCode value="POST" />
    </element>
    <element id="Bundle.entry:FTDiagReport.request.url">
      <path value="Bundle.entry.request.url" />
      <definition value="Constant" />
      <fixedUri value="DiagnosticReport" />
    </element>
    <element id="Bundle.entry:FTDiagReport.request.ifNoneMatch">
      <path value="Bundle.entry.request.ifNoneMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTDiagReport.request.ifModifiedSince">
      <path value="Bundle.entry.request.ifModifiedSince" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTDiagReport.request.ifMatch">
      <path value="Bundle.entry.request.ifMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTDiagReport.request.ifNoneExist">
      <path value="Bundle.entry.request.ifNoneExist" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTDiagReport.response">
      <path value="Bundle.entry.response" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTPractitioner">
      <path value="Bundle.entry" />
      <sliceName value="FTPractitioner" />
      <short value="The practitioners" />
      <min value="1" />
      <max value="*" />
    </element>
    <element id="Bundle.entry:FTPractitioner.id">
      <path value="Bundle.entry.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTPractitioner.link">
      <path value="Bundle.entry.link" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTPractitioner.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/FTBundle" />
      </constraint>
    </element>
    <element id="Bundle.entry:FTPractitioner.resource">
      <path value="Bundle.entry.resource" />
      <short value="The practitioners" />
      <min value="1" />
      <type>
        <code value="Practitioner" />
        <profile value="https://www.esante.lu/fhir-spec/StructureDefinition/FTPractitioner" />
      </type>
    </element>
    <element id="Bundle.entry:FTPractitioner.search">
      <path value="Bundle.entry.search" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTPractitioner.request">
      <path value="Bundle.entry.request" />
      <min value="1" />
    </element>
    <element id="Bundle.entry:FTPractitioner.request.id">
      <path value="Bundle.entry.request.id" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTPractitioner.request.method">
      <path value="Bundle.entry.request.method" />
      <definition value="Constant" />
      <fixedCode value="POST" />
    </element>
    <element id="Bundle.entry:FTPractitioner.request.url">
      <path value="Bundle.entry.request.url" />
      <fixedUri value="Practitioner" />
    </element>
    <element id="Bundle.entry:FTPractitioner.request.ifNoneMatch">
      <path value="Bundle.entry.request.ifNoneMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTPractitioner.request.ifModifiedSince">
      <path value="Bundle.entry.request.ifModifiedSince" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTPractitioner.request.ifMatch">
      <path value="Bundle.entry.request.ifMatch" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTPractitioner.request.ifNoneExist">
      <path value="Bundle.entry.request.ifNoneExist" />
      <max value="0" />
    </element>
    <element id="Bundle.entry:FTPractitioner.response">
      <path value="Bundle.entry.response" />
      <max value="0" />
    </element>
    <element id="Bundle.signature">
      <path value="Bundle.signature" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>