<StructureDefinition xmlns="http://hl7.org/fhir">
  <meta>
    <lastUpdated value="2017-10-16T05:10:49.894-04:00" />
  </meta>
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
    <valueCode value="dev" />
  </extension>
  <url value="http://pchalliance.org/phdfhir/StructureDefinition/PhgDeviceComponent" />
  <name value="PhgDeviceComponent" />
  <status value="draft" />
  <date value="2017-07-07T11:39:51.3383228-04:00" />
  <description value="Base StructureDefinition for the DeviceComponent Resource for a PHG" />
  <purpose value="This resource describes the primary features of the Personal Health Gateway (PHG). A PHG does not have any 11073 Objects or attributes though it is required to have an IEEE EUI-64 system identifier. However, for the purposes of reporting the information about the PHG entity, it is treated as if it has an MDS with attributes. For PCHA, the quantities that are required to be reported is the EUI-64 system identifier, the time synchronization method, the manufacturer and model number (of the software, not necessarily the hardware on which the application resides), the regulation status, and the PCHA certified interfaces." />
  <fhirVersion value="3.0.0" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="DeviceComponent" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/DeviceComponent" />
  <derivation value="constraint" />
  <differential>
    <element id="DeviceComponent">
      <path value="DeviceComponent" />
      <definition value="The characteristics, operational status and capabilities of the PHG." />
      <comment value="Unlike the PHD, there is only a single resource representing the PHG. This resource is referenced by the phdParentDeviceComponent." />
    </element>
    <element id="DeviceComponent.meta">
      <path value="DeviceComponent.meta" />
      <min value="1" />
    </element>
    <element id="DeviceComponent.meta.profile">
      <path value="DeviceComponent.meta.profile" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="PhgDeviceComponent" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="DeviceComponent.meta.profile:phgProfile">
      <path value="DeviceComponent.meta.profile" />
      <sliceName value="phgProfile" />
      <min value="1" />
      <max value="1" />
      <fixedUri value="PhgDeviceComponent" />
    </element>
    <element>
      <path value="DeviceComponent.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="DeviceComponent.extension:MyExtension">
      <path value="DeviceComponent.extension" />
      <sliceName value="MyExtension" />
      <type>
        <code value="Extension" />
      </type>
    </element>
    <element id="DeviceComponent.identifier">
      <path value="DeviceComponent.identifier" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <ordered value="true" />
        <rules value="open" />
      </slicing>
      <short value="Information that uniquely describes the PHG" />
      <definition value="The locally assigned unique identification of the device that is semantically meaningful outside of the FHIR resource context. An example would be the IEEE EUI-64 System-Id or transport address. For PHGs the systemIdentifier is required and the transportAddressIdentifier is highly recommended as this is what most end users see and can obtain from the PHG itself or PHG packaging." />
      <comment value="In future versions of FHIR the cardinality of this element will become [0..*] and this element will be used to report the system id and optionally the transport address." />
      <max value="*" />
    </element>
    <element id="DeviceComponent.identifier:systemIdIdentifier">
      <path value="DeviceComponent.identifier" />
      <sliceName value="systemIdIdentifier" />
      <short value="IEEE EUI-64 identifier" />
      <definition value="This entry contains the IEEE EUI-64. If absent set to all zeros." />
      <min value="1" />
    </element>
    <element id="DeviceComponent.identifier.system">
      <path value="DeviceComponent.identifier.system" />
      <short value="IEEE EUI-64 identifier" />
      <definition value="Identifies the system as an IEEE EUI." />
      <min value="1" />
      <fixedUri value="urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680" />
    </element>
    <element id="DeviceComponent.identifier.value">
      <path value="DeviceComponent.identifier.value" />
      <definition value="The System id as an 8-byte HEX string where each byte is separated by dashes, for example FE-ED-AB-EE-DE-AD-77-C3." />
      <comment value="The formatting is specified in the IEEE document Guidelines for 64-bit Global Identifier.&#xD;&#xA;&#xD;&#xA;To allow the mapping of naughty, non-compliant proprietary devices that do not provide a system id, the value is set to all zeros in the same format, 00-00-00-00-00-00-00-00" />
      <min value="1" />
    </element>
    <element id="DeviceComponent.identifier:transportAddressIdentifier">
      <path value="DeviceComponent.identifier" />
      <sliceName value="transportAddressIdentifier" />
      <short value="Transport address identifier" />
      <definition value="This entry contains the transport address, for example the Bluetooth, ZigBee, USB, or mac address." />
      <comment value="USB does not have an 'address' as it is a point to point wired protocol. However, it does have a Vendor identification and Production identification number which together uniquely define the unit. For USB transports, the VID.PID in HEX is used as the transport identifier." />
    </element>
    <element id="DeviceComponent.identifier.system">
      <path value="DeviceComponent.identifier.system" />
      <min value="1" />
    </element>
    <element id="DeviceComponent.identifier.value">
      <path value="DeviceComponent.identifier.value" />
      <definition value="The transport address. If Bluetooth, use an EUI-48 such as 00-E5-DE-AD-77-C3. If a USB device use the VID.PID as HEX such as 0043.F90D. If a ZigBee address use an EUI-64 as with the system id. If a TCP/IP address use the standard IP address format such as 192.168.127.4" />
      <comment value="Transport addresses are supposed to be unique for a given device." />
      <min value="1" />
    </element>
    <element id="DeviceComponent.type">
      <path value="DeviceComponent.type" />
      <definition value="States that this is a Personal Health Gateway (PHG) formally known as an AHD" />
      <comment value="There is a special 11073 code that indicates a PHG. It's reference id was made at the time PCHA (then Continua) called a PHG an AHD and since the id is in the system it cannot be changed." />
    </element>
    <element id="DeviceComponent.type.coding">
      <path value="DeviceComponent.type.coding" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <ordered value="true" />
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="DeviceComponent.type.coding:11073Type">
      <path value="DeviceComponent.type.coding" />
      <sliceName value="11073Type" />
      <definition value="The 11073 10101 code for the PHD specialization." />
      <comment value="This coding is provided by the System-Type-Spec-List attribute. Note that PoCDs do not have a System-Type-Spec-List but express specializations in different VMD objects." />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="DeviceComponent.type.coding.system">
      <path value="DeviceComponent.type.coding.system" />
      <short value="Identifies IEEE 11073 10101" />
      <definition value="This value identifies the IEEE 11073 10101 coding system" />
      <min value="1" />
      <fixedUri value="urn:iso:std:iso:11073:10101" />
    </element>
    <element id="DeviceComponent.type.coding.code">
      <path value="DeviceComponent.type.coding.code" />
      <short value="PHG code" />
      <definition value="The code indicating the entity is a PHG" />
      <comment value="The reference id for this code is MDC_MOC_VMS_MDS_AHD" />
      <requirements value="There is only one possible entry as there is only a single type of PHG" />
      <min value="1" />
      <fixedCode value="531981" />
    </element>
    <element id="DeviceComponent.type.coding.display">
      <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-translatable">
        <valueBoolean value="true" />
      </extension>
      <path value="DeviceComponent.type.coding.display" />
      <definition value="A human readable display descrbing the meaning of the code." />
      <comment value="This element should contain the reference identfier for the reported specialization code." />
    </element>
    <element id="DeviceComponent.lastSystemChange">
      <path value="DeviceComponent.lastSystemChange" />
      <definition value="The timestamp for the most recent system change which includes device configuration or setting change. The PHG is static." />
      <comment value="A PHG is static and does not change. The absence of this element indicates a static unit." />
      <max value="0" />
    </element>
    <element id="DeviceComponent.source">
      <path value="DeviceComponent.source" />
      <comment value="PHGs are a gateway for PHD data and are not a subset of any further entity by protocol." />
      <max value="0" />
    </element>
    <element id="DeviceComponent.parent">
      <path value="DeviceComponent.parent" />
      <definition value="The PHG is at the top and has no parent." />
      <comment value="This element shall not be present." />
      <requirements value="The PHG serves as a gateway for the PHD data. It has no parent in the sense of a PoCD hierarchy." />
      <max value="0" />
    </element>
    <element id="DeviceComponent.operationalStatus">
      <path value="DeviceComponent.operationalStatus" />
      <comment value="OperationalStatus for the MDS, VMD, or Channel will be bound to a specific ValueSet that is defined in its profile. If used, a PHD is considered to be always on" />
    </element>
    <element id="DeviceComponent.parameterGroup">
      <path value="DeviceComponent.parameterGroup" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;This information is not available by protocol from the PHD and its use is up to the application." />
    </element>
    <element id="DeviceComponent.measurementPrinciple">
      <path value="DeviceComponent.measurementPrinciple" />
      <comment value="This information is not available fron PHD devices by protocol. Its use is up to the implementation." />
    </element>
    <element id="DeviceComponent.productionSpecification">
      <path value="DeviceComponent.productionSpecification" />
      <definition value="The production specification such as component revision, serial number, etc. For the 11073 20601 Personal Health Device, the production specification entries come from the Production-Specification, System-Model, and Reg-Cert-Data-List attributes. There will be one productionSpecification entry for each item to be reported." />
      <comment value="All the PHD productionSpecification entries are strings and have IEEE 11073-10101 codes that define which production specification the string represents. Compliant PHDs will always have at least some entries for this element. If the PHD reports one or more such entries, they shall be recorded here. However, to allow the mapping of naughty proprietary devices, this element is made technically optional." />
    </element>
    <element id="DeviceComponent.productionSpecification.specType">
      <path value="DeviceComponent.productionSpecification.specType" />
      <min value="1" />
    </element>
    <element id="DeviceComponent.productionSpecification.specType.coding">
      <path value="DeviceComponent.productionSpecification.specType.coding" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <ordered value="true" />
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="DeviceComponent.productionSpecification.specType.coding:11073Type">
      <path value="DeviceComponent.productionSpecification.specType.coding" />
      <sliceName value="11073Type" />
      <short value="The 11073-10101 code" />
      <definition value="The 11073-10101 code defining what the productionSpec is" />
      <comment value="11073 10101 codes have been defined for the Production-Specification and System-Model sub entries for use in V2 messaging. Though FHIR has provided its own set of codes based upon the names of the 11073-* Production-Specification.spec-type entry, the 11073-10101 codes are used since they are ubiquitous in these PCHA-related profiles and it helps accelerate the acceptance of the MDC coding system in HL7." />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="DeviceComponent.productionSpecification.specType.coding.system">
      <path value="DeviceComponent.productionSpecification.specType.coding.system" />
      <short value="Specifies IEEE 11073 10101" />
      <definition value="Identifies the IEEE 11073 10101 coding system" />
      <comment value="These codes are not seen on the wire between the PHD and the PHG. They are seen on the wire in PCD-01 messages." />
      <min value="1" />
      <fixedUri value="urn:iso:std:iso:11073:10101" />
    </element>
    <element id="DeviceComponent.productionSpecification.specType.coding.code">
      <path value="DeviceComponent.productionSpecification.specType.coding.code" />
      <short value="actual code" />
      <definition value="The 32 bit code identifying what the string in the DeviceComponent.productionSpecification.productionSpec element is." />
      <comment value="The currently defined codes used in this element are as follows:&#xD;&#xA;&#xD;&#xA;FIELD                                 CODE                  reference identifier&#xD;&#xA;------------------------------------------------------------------------------------&#xD;&#xA;Model number                 531969            MDC_ID_MODEL_NUMBER&#xD;&#xA;Manufacturer name         531970            MDC_ID_MODEL_MANUFACTURER&#xD;&#xA;                  The above come from the 'pretend' System-Model attribute&#xD;&#xA;&#xD;&#xA;Unspecified                      531971            MDC_ID_PROD_SPEC_UNSPECIFIED&#xD;&#xA;Serial number                  531972            MDC_ID_PROD_SPEC_SERIAL&#xD;&#xA;Part number                     531973            MDC_ID_PROD_SPEC_PART&#xD;&#xA;Hardware revision            531974            MDC_ID_PROD_SPEC_HW&#xD;&#xA;Software revision             531975            MDC_ID_PROD_SPEC_SW&#xD;&#xA;Firmware revision            531976            MDC_ID_PROD_SPEC_FW&#xD;&#xA;Protocol                           531977            MDC_ID_PROD_SPEC_PROTOCOL&#xD;&#xA;Global Medical Device&#xD;&#xA;Nomenclature (GMDN)    531978           MDC_ID_PROD_SPEC_GMDN&#xD;&#xA;                   The above come from the 'pretend' Production-Specification attribute&#xD;&#xA;&#xD;&#xA;Continua version              532352           MDC_REG_CERT_DATA_CONTINUA_VERSION&#xD;&#xA;                    The above comes from the 'pretend' Continua Reg-Cert-Data-List attribute&#xD;&#xA;&#xD;&#xA;There may be more fields added in future versions of the 10101 specification." />
      <requirements value="Need to identify what the reported string value represents" />
      <min value="1" />
    </element>
    <element id="DeviceComponent.productionSpecification.specType.coding.display">
      <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-translatable">
        <valueBoolean value="true" />
      </extension>
      <path value="DeviceComponent.productionSpecification.specType.coding.display" />
      <definition value="A human readable display descrbing the meaning of the code." />
      <comment value="This element should contain the reference identfier for the reported code." />
    </element>
    <element id="DeviceComponent.productionSpecification.specType.coding:fhirCoding">
      <path value="DeviceComponent.productionSpecification.specType.coding" />
      <sliceName value="fhirCoding" />
      <short value="The IEEE concept in the DeviceSpecificationSpecType coding system" />
      <definition value="THe IEEE concept defined in the 11073Type coding element expressed in the DeviceSpecificationSpecType coding system." />
      <comment value="FHIR requires this element to be present IF the production specification being reported is included in the DeviceSpecificationSpecType value set. Currently that is all the possible entries defined in the IEEE 11073 ProductionSpecification attribute." />
      <max value="1" />
    </element>
    <element id="DeviceComponent.productionSpecification.specType.coding:fhirCoding.system">
      <path value="DeviceComponent.productionSpecification.specType.coding.system" />
      <min value="1" />
      <fixedUri value="http://hl7.org/fhir/specification-type" />
    </element>
    <element id="DeviceComponent.productionSpecification.specType.coding:fhirCoding.code">
      <path value="DeviceComponent.productionSpecification.specType.coding.code" />
      <definition value="A symbol in the syntax defined by the DeviceSpecificationSpecType system." />
      <comment value="FHIR requires this code if the specType being coded is a member of this value set." />
      <min value="1" />
    </element>
    <element id="DeviceComponent.productionSpecification.productionSpec">
      <path value="DeviceComponent.productionSpecification.productionSpec" />
      <min value="1" />
    </element>
    <element id="DeviceComponent.languageCode">
      <path value="DeviceComponent.languageCode" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;This infomration is not available by protocol from the PHD and its use is up to the application" />
    </element>
  </differential>
</StructureDefinition>