<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="6e0b67aa-c931-456b-8efc-f8852571826a" />
  <meta>
    <versionId value="12" />
    <lastUpdated value="2017-05-07T11:21:18.748+02:00" />
  </meta>
  <text>
    <status value="additional" />
    <div xmlns="http://www.w3.org/1999/xhtml">
      <p>Note: this Bundle profile should actually slice the bundle entry by profile (entry.resource).

However the .NET validator currently does not yet support slicing by profile.

To get the example working, we hacked the example input and manually assigned unique id's to all the bundle entry elements.
Then we hacked the bundle profile to slice on the value of entry.id.
Now the validator can match the example bundle entries to the correct profile entry slicing constraints.

</p>
    </div>
  </text>
  <url value="http://example.org/fhir/StructureDefinition/PhysioMonitorDeviceBundle" />
  <name value="PhysioMonitorDeviceBundle" />
  <status value="draft" />
  <date value="2017-05-06T16:58:22.5342137+02:00" />
  <description value="StructureDefinition for Physio Monitoring Device Bundle Resource" />
  <fhirVersion value="3.0.0" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Bundle" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Bundle" />
  <derivation value="constraint" />
  <differential>
    <element>
      <path value="Bundle.entry" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="id" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Bundle.entry:Patient">
      <path value="Bundle.entry" />
      <sliceName value="Patient" />
      <min value="1" />
      <max value="1" />
    </element>
    <element>
      <path value="Bundle.entry.id" />
      <fixedString value="Patient" />
    </element>
    <element>
      <path value="Bundle.entry.resource" />
      <short value="A Patient resource" />
      <min value="1" />
      <type>
        <code value="Patient" />
      </type>
    </element>
    <element>
      <path value="Bundle.entry.request.method" />
      <short value="hGET | POST | PUT | DELETE" />
      <fixedCode value="POST" />
    </element>
    <element>
      <path value="Bundle.entry.request.url" />
      <fixedUri value="Patient" />
    </element>
    <element id="Bundle.entry:Device">
      <path value="Bundle.entry" />
      <sliceName value="Device" />
      <min value="1" />
      <max value="1" />
    </element>
    <element>
      <path value="Bundle.entry.id" />
      <fixedString value="Device" />
    </element>
    <element id="Bundle.entry:Device.resource">
      <path value="Bundle.entry.resource" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <short value="A device profile" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Device" />
        <profile value="http://example.org/fhir/StructureDefinition/PatientMonitorMultiParamDevice" />
      </type>
    </element>
    <element>
      <path value="Bundle.entry.request.method" />
      <fixedCode value="POST" />
    </element>
    <element>
      <path value="Bundle.entry.request.url" />
      <fixedUri value="Device" />
    </element>
    <element id="Bundle.entry:PhysioMonitorComponent">
      <path value="Bundle.entry" />
      <sliceName value="PhysioMonitorComponent" />
      <min value="1" />
      <max value="1" />
    </element>
    <element>
      <path value="Bundle.entry.id" />
      <fixedString value="DeviceComponent1" />
    </element>
    <element id="Bundle.entry:PhysioMonitorComponent.resource">
      <path value="Bundle.entry.resource" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <max value="1" />
      <type>
        <code value="DeviceComponent" />
        <profile value="http://example.org/fhir/StructureDefinition/PhysioMonitorComponent" />
      </type>
    </element>
    <element>
      <path value="Bundle.entry.request.method" />
      <fixedCode value="POST" />
    </element>
    <element>
      <path value="Bundle.entry.request.url" />
      <fixedUri value="DeviceComponent" />
    </element>
  </differential>
</StructureDefinition>