<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="https://fhir.synapxe.sg/StructureDefinition/profile-device" />
  <name value="Device" />
  <status value="active" />
  <fhirVersion value="5.0.0" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Device" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Device" />
  <derivation value="constraint" />
  <differential>
    <element id="Device.identifier">
      <path value="Device.identifier" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <type>
        <code value="Identifier" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-identifier" />
      </type>
    </element>
    <element id="Device.identifier:deviceIdentifier">
      <path value="Device.identifier" />
      <sliceName value="deviceIdentifier" />
      <short value="Instance identifier" />
      <definition value="Unique instance identifiers assigned to a device by manufacturers other organizations or owners." />
      <comment value="Certain attributes, like serial number and UDI Carrier (the HRF or AIDC barcode string) are not device instance identifiers as they are not consistently able to uniquely identify the instance of a device, thus are not appropriate to be used to value Device.identifier. The barcode string from a barcode present on a device label or package may identify the instance, include names given to the device in local usage, or may identify the type of device. If the identifier identifies the type of device, Device.type element should be used. The identifier is typically valued if the serialNumber or lotNumber is not valued and represents a different type of identifier.  However, it is permissible to still include those identifiers in DeviceDefinition.identifier with the appropriate identifier.type." />
      <max value="1" />
      <type>
        <code value="Identifier" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-identifier" />
      </type>
    </element>
    <element id="Device.identifier:deviceIdentifier.system">
      <path value="Device.identifier.system" />
      <fixedUri value="https://fhir.synapxe.sg/NamingSystem/device-id" />
    </element>
    <element id="Device.identifier:sequenceNo">
      <path value="Device.identifier" />
      <sliceName value="sequenceNo" />
      <short value="Instance identifier" />
      <definition value="Unique instance identifiers assigned to a device by manufacturers other organizations or owners." />
      <comment value="Certain attributes, like serial number and UDI Carrier (the HRF or AIDC barcode string) are not device instance identifiers as they are not consistently able to uniquely identify the instance of a device, thus are not appropriate to be used to value Device.identifier. The barcode string from a barcode present on a device label or package may identify the instance, include names given to the device in local usage, or may identify the type of device. If the identifier identifies the type of device, Device.type element should be used. The identifier is typically valued if the serialNumber or lotNumber is not valued and represents a different type of identifier.  However, it is permissible to still include those identifiers in DeviceDefinition.identifier with the appropriate identifier.type." />
      <max value="1" />
      <type>
        <code value="Identifier" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-identifier" />
      </type>
    </element>
    <element id="Device.identifier:sequenceNo.system">
      <path value="Device.identifier.system" />
      <fixedUri value="https://fhir.synapxe.sg/NamingSystem/sequence-no" />
    </element>
    <element id="Device.displayName">
      <path value="Device.displayName" />
      <max value="0" />
    </element>
    <element id="Device.definition">
      <path value="Device.definition" />
      <max value="0" />
    </element>
    <element id="Device.udiCarrier">
      <path value="Device.udiCarrier" />
      <max value="1" />
    </element>
    <element id="Device.udiCarrier.id">
      <path value="Device.udiCarrier.id" />
      <max value="0" />
    </element>
    <element id="Device.udiCarrier.extension">
      <path value="Device.udiCarrier.extension" />
      <max value="0" />
    </element>
    <element id="Device.udiCarrier.modifierExtension">
      <path value="Device.udiCarrier.modifierExtension" />
      <max value="0" />
    </element>
    <element id="Device.availabilityStatus">
      <path value="Device.availabilityStatus" />
      <max value="0" />
    </element>
    <element id="Device.biologicalSourceEvent">
      <path value="Device.biologicalSourceEvent" />
      <max value="0" />
    </element>
    <element id="Device.name">
      <path value="Device.name" />
      <max value="0" />
    </element>
    <element id="Device.partNumber">
      <path value="Device.partNumber" />
      <max value="0" />
    </element>
    <element id="Device.category">
      <path value="Device.category" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="CodeableConcept" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-codeableconcept" />
      </type>
      <binding>
        <strength value="required" />
        <valueSet value="https://fhir.synapxe.sg/ValueSet/device-category" />
      </binding>
    </element>
    <element id="Device.category.coding.system">
      <path value="Device.category.coding.system" />
      <fixedUri value="http://hl7.org/fhir/device-category" />
    </element>
    <element id="Device.type">
      <path value="Device.type" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="CodeableConcept" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-codeableconcept" />
      </type>
    </element>
    <element id="Device.version">
      <path value="Device.version" />
      <max value="1" />
    </element>
    <element id="Device.version.id">
      <path value="Device.version.id" />
      <max value="0" />
    </element>
    <element id="Device.version.extension">
      <path value="Device.version.extension" />
      <max value="0" />
    </element>
    <element id="Device.version.modifierExtension">
      <path value="Device.version.modifierExtension" />
      <max value="0" />
    </element>
    <element id="Device.version.type">
      <path value="Device.version.type" />
      <max value="0" />
    </element>
    <element id="Device.version.component">
      <path value="Device.version.component" />
      <max value="0" />
    </element>
    <element id="Device.version.installDate">
      <path value="Device.version.installDate" />
      <max value="0" />
    </element>
    <element id="Device.conformsTo">
      <path value="Device.conformsTo" />
      <max value="0" />
    </element>
    <element id="Device.property">
      <path value="Device.property" />
      <max value="0" />
    </element>
    <element id="Device.mode">
      <path value="Device.mode" />
      <max value="0" />
    </element>
    <element id="Device.cycle">
      <path value="Device.cycle" />
      <max value="0" />
    </element>
    <element id="Device.duration">
      <path value="Device.duration" />
      <max value="0" />
    </element>
    <element id="Device.owner">
      <path value="Device.owner" />
      <max value="0" />
    </element>
    <element id="Device.contact">
      <path value="Device.contact" />
      <max value="0" />
    </element>
    <element id="Device.location">
      <path value="Device.location" />
      <max value="0" />
    </element>
    <element id="Device.url">
      <path value="Device.url" />
      <max value="0" />
    </element>
    <element id="Device.endpoint">
      <path value="Device.endpoint" />
      <max value="0" />
    </element>
    <element id="Device.gateway">
      <path value="Device.gateway" />
      <max value="0" />
    </element>
    <element id="Device.note">
      <path value="Device.note" />
      <max value="1" />
      <type>
        <code value="Annotation" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-annotation" />
      </type>
    </element>
    <element id="Device.safety">
      <path value="Device.safety" />
      <max value="0" />
    </element>
    <element id="Device.parent">
      <path value="Device.parent" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>