{
  "resourceType": "StructureDefinition",
  "meta": {
    "lastUpdated": "2017-10-16T09:10:49.894+00:00"
  },
  "extension": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
      "valueCode": "dev"
    }
  ],
  "url": "http://pchalliance.org/phdfhir/StructureDefinition/PhgDeviceComponent",
  "name": "PhgDeviceComponent",
  "status": "draft",
  "date": "2017-07-07T15:39:51.3383228+00:00",
  "description": "Base StructureDefinition for the DeviceComponent Resource for a PHG",
  "purpose": "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": "3.0.0",
  "kind": "resource",
  "abstract": false,
  "type": "DeviceComponent",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/DeviceComponent",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "DeviceComponent",
        "path": "DeviceComponent",
        "definition": "The characteristics, operational status and capabilities of the PHG.",
        "comment": "Unlike the PHD, there is only a single resource representing the PHG. This resource is referenced by the phdParentDeviceComponent."
      },
      {
        "id": "DeviceComponent.meta",
        "path": "DeviceComponent.meta",
        "min": 1
      },
      {
        "id": "DeviceComponent.meta.profile",
        "path": "DeviceComponent.meta.profile",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "PhgDeviceComponent"
            }
          ],
          "rules": "open"
        },
        "min": 1
      },
      {
        "id": "DeviceComponent.meta.profile:phgProfile",
        "path": "DeviceComponent.meta.profile",
        "sliceName": "phgProfile",
        "min": 1,
        "max": "1",
        "fixedUri": "PhgDeviceComponent"
      },
      {
        "path": "DeviceComponent.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "rules": "open"
        }
      },
      {
        "id": "DeviceComponent.extension:MyExtension",
        "path": "DeviceComponent.extension",
        "sliceName": "MyExtension",
        "type": [
          {
            "code": "Extension"
          }
        ]
      },
      {
        "id": "DeviceComponent.identifier",
        "path": "DeviceComponent.identifier",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "system"
            }
          ],
          "ordered": true,
          "rules": "open"
        },
        "short": "Information that uniquely describes the PHG",
        "definition": "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": "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": "*"
      },
      {
        "id": "DeviceComponent.identifier:systemIdIdentifier",
        "path": "DeviceComponent.identifier",
        "sliceName": "systemIdIdentifier",
        "short": "IEEE EUI-64 identifier",
        "definition": "This entry contains the IEEE EUI-64. If absent set to all zeros.",
        "min": 1
      },
      {
        "id": "DeviceComponent.identifier.system",
        "path": "DeviceComponent.identifier.system",
        "short": "IEEE EUI-64 identifier",
        "definition": "Identifies the system as an IEEE EUI.",
        "min": 1,
        "fixedUri": "urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680"
      },
      {
        "id": "DeviceComponent.identifier.value",
        "path": "DeviceComponent.identifier.value",
        "definition": "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": "The formatting is specified in the IEEE document Guidelines for 64-bit Global Identifier.\r\n\r\nTo 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": 1
      },
      {
        "id": "DeviceComponent.identifier:transportAddressIdentifier",
        "path": "DeviceComponent.identifier",
        "sliceName": "transportAddressIdentifier",
        "short": "Transport address identifier",
        "definition": "This entry contains the transport address, for example the Bluetooth, ZigBee, USB, or mac address.",
        "comment": "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."
      },
      {
        "id": "DeviceComponent.identifier.system",
        "path": "DeviceComponent.identifier.system",
        "min": 1
      },
      {
        "id": "DeviceComponent.identifier.value",
        "path": "DeviceComponent.identifier.value",
        "definition": "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": "Transport addresses are supposed to be unique for a given device.",
        "min": 1
      },
      {
        "id": "DeviceComponent.type",
        "path": "DeviceComponent.type",
        "definition": "States that this is a Personal Health Gateway (PHG) formally known as an AHD",
        "comment": "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."
      },
      {
        "id": "DeviceComponent.type.coding",
        "path": "DeviceComponent.type.coding",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "system"
            }
          ],
          "ordered": true,
          "rules": "open"
        },
        "min": 1
      },
      {
        "id": "DeviceComponent.type.coding:11073Type",
        "path": "DeviceComponent.type.coding",
        "sliceName": "11073Type",
        "definition": "The 11073 10101 code for the PHD specialization.",
        "comment": "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": 1,
        "max": "1"
      },
      {
        "id": "DeviceComponent.type.coding.system",
        "path": "DeviceComponent.type.coding.system",
        "short": "Identifies IEEE 11073 10101",
        "definition": "This value identifies the IEEE 11073 10101 coding system",
        "min": 1,
        "fixedUri": "urn:iso:std:iso:11073:10101"
      },
      {
        "id": "DeviceComponent.type.coding.code",
        "path": "DeviceComponent.type.coding.code",
        "short": "PHG code",
        "definition": "The code indicating the entity is a PHG",
        "comment": "The reference id for this code is MDC_MOC_VMS_MDS_AHD",
        "requirements": "There is only one possible entry as there is only a single type of PHG",
        "min": 1,
        "fixedCode": "531981"
      },
      {
        "id": "DeviceComponent.type.coding.display",
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/elementdefinition-translatable",
            "valueBoolean": true
          }
        ],
        "path": "DeviceComponent.type.coding.display",
        "definition": "A human readable display descrbing the meaning of the code.",
        "comment": "This element should contain the reference identfier for the reported specialization code."
      },
      {
        "id": "DeviceComponent.lastSystemChange",
        "path": "DeviceComponent.lastSystemChange",
        "definition": "The timestamp for the most recent system change which includes device configuration or setting change. The PHG is static.",
        "comment": "A PHG is static and does not change. The absence of this element indicates a static unit.",
        "max": "0"
      },
      {
        "id": "DeviceComponent.source",
        "path": "DeviceComponent.source",
        "comment": "PHGs are a gateway for PHD data and are not a subset of any further entity by protocol.",
        "max": "0"
      },
      {
        "id": "DeviceComponent.parent",
        "path": "DeviceComponent.parent",
        "definition": "The PHG is at the top and has no parent.",
        "comment": "This element shall not be present.",
        "requirements": "The PHG serves as a gateway for the PHD data. It has no parent in the sense of a PoCD hierarchy.",
        "max": "0"
      },
      {
        "id": "DeviceComponent.operationalStatus",
        "path": "DeviceComponent.operationalStatus",
        "comment": "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"
      },
      {
        "id": "DeviceComponent.parameterGroup",
        "path": "DeviceComponent.parameterGroup",
        "comment": "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.\r\n\r\nThis information is not available by protocol from the PHD and its use is up to the application."
      },
      {
        "id": "DeviceComponent.measurementPrinciple",
        "path": "DeviceComponent.measurementPrinciple",
        "comment": "This information is not available fron PHD devices by protocol. Its use is up to the implementation."
      },
      {
        "id": "DeviceComponent.productionSpecification",
        "path": "DeviceComponent.productionSpecification",
        "definition": "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": "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."
      },
      {
        "id": "DeviceComponent.productionSpecification.specType",
        "path": "DeviceComponent.productionSpecification.specType",
        "min": 1
      },
      {
        "id": "DeviceComponent.productionSpecification.specType.coding",
        "path": "DeviceComponent.productionSpecification.specType.coding",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "system"
            }
          ],
          "ordered": true,
          "rules": "open"
        },
        "min": 1
      },
      {
        "id": "DeviceComponent.productionSpecification.specType.coding:11073Type",
        "path": "DeviceComponent.productionSpecification.specType.coding",
        "sliceName": "11073Type",
        "short": "The 11073-10101 code",
        "definition": "The 11073-10101 code defining what the productionSpec is",
        "comment": "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": 1,
        "max": "1"
      },
      {
        "id": "DeviceComponent.productionSpecification.specType.coding.system",
        "path": "DeviceComponent.productionSpecification.specType.coding.system",
        "short": "Specifies IEEE 11073 10101",
        "definition": "Identifies the IEEE 11073 10101 coding system",
        "comment": "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": 1,
        "fixedUri": "urn:iso:std:iso:11073:10101"
      },
      {
        "id": "DeviceComponent.productionSpecification.specType.coding.code",
        "path": "DeviceComponent.productionSpecification.specType.coding.code",
        "short": "actual code",
        "definition": "The 32 bit code identifying what the string in the DeviceComponent.productionSpecification.productionSpec element is.",
        "comment": "The currently defined codes used in this element are as follows:\r\n\r\nFIELD                                 CODE                  reference identifier\r\n------------------------------------------------------------------------------------\r\nModel number                 531969            MDC_ID_MODEL_NUMBER\r\nManufacturer name         531970            MDC_ID_MODEL_MANUFACTURER\r\n                  The above come from the 'pretend' System-Model attribute\r\n\r\nUnspecified                      531971            MDC_ID_PROD_SPEC_UNSPECIFIED\r\nSerial number                  531972            MDC_ID_PROD_SPEC_SERIAL\r\nPart number                     531973            MDC_ID_PROD_SPEC_PART\r\nHardware revision            531974            MDC_ID_PROD_SPEC_HW\r\nSoftware revision             531975            MDC_ID_PROD_SPEC_SW\r\nFirmware revision            531976            MDC_ID_PROD_SPEC_FW\r\nProtocol                           531977            MDC_ID_PROD_SPEC_PROTOCOL\r\nGlobal Medical Device\r\nNomenclature (GMDN)    531978           MDC_ID_PROD_SPEC_GMDN\r\n                   The above come from the 'pretend' Production-Specification attribute\r\n\r\nContinua version              532352           MDC_REG_CERT_DATA_CONTINUA_VERSION\r\n                    The above comes from the 'pretend' Continua Reg-Cert-Data-List attribute\r\n\r\nThere may be more fields added in future versions of the 10101 specification.",
        "requirements": "Need to identify what the reported string value represents",
        "min": 1
      },
      {
        "id": "DeviceComponent.productionSpecification.specType.coding.display",
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/elementdefinition-translatable",
            "valueBoolean": true
          }
        ],
        "path": "DeviceComponent.productionSpecification.specType.coding.display",
        "definition": "A human readable display descrbing the meaning of the code.",
        "comment": "This element should contain the reference identfier for the reported code."
      },
      {
        "id": "DeviceComponent.productionSpecification.specType.coding:fhirCoding",
        "path": "DeviceComponent.productionSpecification.specType.coding",
        "sliceName": "fhirCoding",
        "short": "The IEEE concept in the DeviceSpecificationSpecType coding system",
        "definition": "THe IEEE concept defined in the 11073Type coding element expressed in the DeviceSpecificationSpecType coding system.",
        "comment": "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": "1"
      },
      {
        "id": "DeviceComponent.productionSpecification.specType.coding:fhirCoding.system",
        "path": "DeviceComponent.productionSpecification.specType.coding.system",
        "min": 1,
        "fixedUri": "http://hl7.org/fhir/specification-type"
      },
      {
        "id": "DeviceComponent.productionSpecification.specType.coding:fhirCoding.code",
        "path": "DeviceComponent.productionSpecification.specType.coding.code",
        "definition": "A symbol in the syntax defined by the DeviceSpecificationSpecType system.",
        "comment": "FHIR requires this code if the specType being coded is a member of this value set.",
        "min": 1
      },
      {
        "id": "DeviceComponent.productionSpecification.productionSpec",
        "path": "DeviceComponent.productionSpecification.productionSpec",
        "min": 1
      },
      {
        "id": "DeviceComponent.languageCode",
        "path": "DeviceComponent.languageCode",
        "comment": "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.\r\nThis infomration is not available by protocol from the PHD and its use is up to the application"
      }
    ]
  }
}