This page is part of the Personal Health Device FHIR IG (v0.1.0: STU 1 Draft) based on FHIR R3. The current version which supercedes this version is 1.0.0. For a full list of available versions, see the Directory of published versions
The properties and specifications of the PHD are reported in the DeviceComponent. These are the static fields of the attributes reported in the PHD MDS object or Bluetooth Low Energy Device Information Service.
There are six MDS attributes that are reported. The Mds-Time-Info attribute has fields that are dynamic and static, and it is only the static entries which are considered. The following table summarizes these attributes and the DeviceComponent elements to which they are mapped:
MDS attribute | FHIR element |
---|---|
System-Id | DeviceComponent.identifier 1 |
transport address | DeviceComponent.identifier 2 |
System-Type-Spec-List | DeviceComponent.type |
Production-Specification System-Model Reg-Cert-Data-List.continua-version |
DeviceComponent.productionSpecification |
Reg-Cert-Data-List (all else) Mds-Time-Info |
DeviceComponent.property |
The transport address is not required unless the PHD does not report a System Id. It is still strongly recommended that the transport address is reported as it is often beneficial to consumers. Most PHD transports provide a means of obtaining a transport address or an equivalent identifier such as a USB VID and PID.
There are several CodeableConcept data types in this mapping where the Coding data type has a 'display' element. It is recommended to put the MDC reference identifier as part of the display element if known and when the system element indicates the MDC coding system "urn.iso.std.iso:11073:10101".
The structure definition for the Parent DeviceComponent Profile is shown below:
Name | Flags | Card. | Type | |
---|---|---|---|---|
DeviceComponent | DeviceComponent | Definition: The characteristics, operational status and capabilities of a medical-related component of a medical device. A PHD is JUST the medical-related component. For the initial scope, this DeviceComponent resource is only applicable to describe a single node in the containment tree that is produced by the context scanner in any medical device that implements or derives from the ISO/IEEE 11073 standard and that does not represent a metric. Examples for such a node are MDS, VMD, or Channel. With PHD medical units, there is no medical scanner and the unit is only a single node, a single 'simple' MDS, and it is static. Thus a PHD has no parent 'Device'. When a PHD supports multiple device specializations, the single unit description is still the case. A specialization is just an way to organize a set of metric objects that tend to be generated by a single sensor, but the device could expose metric objects from several specializations which usually means it has more than one sensor. In PHDs that is rare. Since FHIR does not have a means to list multiple types for the DeviceComponent resource, child DeviceComponents are used to expose these additional specializations should they occur. Child DeviceComponents can appear in two ways, a single specialization that supports one or more sub-profiles, or a hydra PHD that supports multiple specializations. | ||
meta | 1.. | |||
profile | 1.. | Sliced: Unordered, Open, by phdParentDeviceComponent(Value) | ||
phdProfile | 1..1 | Fixed Value | Fixed Value: phdParentDeviceComponent | |
identifier | ..* | Short description: Information that uniquely describes the device 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 PHDs the systemIdentifier is required and the transportAddressIdentifier is highly recommended as this is what most end users see and can obtain from the device itself or device packaging. 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. Ordered, Open, by system(Value) | ||
systemIdIdentifier | 1.. | Short description: IEEE EUI-64 identifier Definition:This entry contains the IEEE EUI-64. If absent (bad device) set to all zeros. | ||
system | 1.. | Fixed Value | Short description: IEEE EUI-64 identifier Definition:Identifies the system as an IEEE EUI. urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680 | |
value | 1.. | Definition: The System id from the System-Id attribute as an 8-byte HEX string where each byte is separated by dashes, for example FE-ED-AB-EE-DE-AD-77-C3. The formatting is specified in the IEEE document Guidelines for 64-bit Global Identifier. 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 | ||
transportAddressIdentifier | Short description: Transport address identifier Definition:This entry contains the transport address, for example the Bluetooth, ZigBee, USB, or mac address. 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. | |||
system | 1.. | |||
value | 1.. | 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 Transport addresses are supposed to be unique for a given device. | ||
type | Definition: The type or 'specialization' of the PHD. In most cases a PHD supports only a single specialization such as a Blood Pressure monitor and only one DeviceComponent is needed and that specialization is recorded in this element. Since there is no way to indicate additional supported specialziations with this element (it has cardinality 1..1), additional child DeviceComponents are needed when multiple specializations and/or sub-profiles are present. The value entered in this element comes from the System-Type-Spec-List attribute which is unique to the 11073 20601 specification; 11073-10201 does not have such an attribute. If there is more than one specialization, the special HYDRA specialization value is entered here and child DeviceComponent resources are used to map the specializations. If there is only a single specialization but one or more sub profiles., the specialization is entered here and the sub profiles are handled in child DeviceComponents. Note that sub-profiles are a packaging of objects within a specialization that serve a special use case. For example, the Cardiovascular specialization has numerous objects that can represent all kinds of physical activities from treadmills to skiing. One sub-profile is a minimum set of objects needed to describe a step counter. | |||
coding | 1.. | Sliced: Ordered, Open, by system(Value) | ||
11073Type | 1..1 | Definition: The 11073 10101 code for the PHD specialization. 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. | ||
system | 1.. | Fixed Value | Short description: Identifies IEEE 11073 10101 Definition:This value identifies the IEEE 11073 10101 coding system urn:iso:std:iso:11073:10101 | |
code | 1.. | Short description: Device specialization code Definition:The device specialization is obtained from the System-Type-Spec-List attribute if the attribute has only a single entry or only a single specialization with one or more sub profiles from that specialization. If it has multiple specializations, this value is fixed to 'hydra' and there will be child DeviceComponent resources handling the specializations. The attribute provides only the term code, the partition is always 'infra' which has value 8. Thus the code will be 8*2**16 + term code. When 'hydra' is used, the code is 528384 and the reference id is MDC_DEV_SPEC_PROFILE_HYDRA | ||
display | Definition: A human readable display descrbing the meaning of the code. This element should contain the reference identfier for the reported specialization code. | |||
lastSystemChange | ..0 | Definition: The timestamp for the most recent system change which includes device configuration or setting change. This field is not provided by PHD devices via standardized exchange protocols and is, therefore, not required in this profile. A PHD is static and does not change and the appropriate value for this entry would be its manufacture date. However, this information is not available by protocol and shall not be used. Its absence indicates a static unit. | ||
source | ..0 | Comments: PHDs are considered medical devices only and are not part of a device complex which PoCD devices might be. The DeviceComponent is considered to represent the medical device subset of a device complex and since that is all a PHD is, this element is not used. | ||
parent | Definition: The link to the DeviceComponent resource representing the Personal Health Gateway (PHG) that processed the sensor data and converted it to FHIR The PHG does limited correction of the received data; in particular, any errors in the time line and mapping the time line to local time plus UTC offset This element shall be present if a PHG is involved in generating the FHIR data. | |||
reference | 1.. | Definition: A reference to a location at which the PHG resource is found. The reference may be a relative reference, in which case it is relative to the service base URL, or an absolute URL that resolves to the location where the resource is found. The reference may be version specific or not. If the reference is not to a FHIR RESTful server, then it should be assumed to be version specific. Internal fragment references (start with '#') refer to contained resources. | ||
operationalStatus | Comments: 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 | |||
parameterGroup | Comments: 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. This information is not available by protocol from the PHD and its use is up to the application. | |||
measurementPrinciple | Comments: This information is not available fron PHD devices by protocol. Its use is up to the implementation. | |||
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. 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. | |||
specType | 1.. | |||
coding | 1.. | Sliced: Ordered, Open, by system(Value) | ||
11073Type | 1..1 | Short description: The 11073-10101 code Definition:The 11073-10101 code defining what the productionSpec is 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 PHD-related profiles and it helps accelerate the acceptance of the MDC coding system in HL7. | ||
system | 1.. | Fixed Value | Short description: Specifies IEEE 11073 10101 Definition:Identifies the IEEE 11073 10101 coding system These codes are not seen on the wire between the PHD and the PHG. They are seen on the wire in PCD-01 messages. urn:iso:std:iso:11073:10101 | |
code | 1.. | Short description: actual code Definition:The 32 bit code identifying what the string in the DeviceComponent.productionSpecification.productionSpec element is. Need to identify what the reported string value represents The currently defined codes used in this element are as follows: FIELD CODE reference identifierModel number 531969 MDC_ID_MODEL_NUMBER Manufacturer name 531970 MDC_ID_MODEL_MANUFACTURER The above come from the System-Model attribute Unspecified 531971 MDC_ID_PROD_SPEC_UNSPECIFIED Serial number 531972 MDC_ID_PROD_SPEC_SERIAL Part number 531973 MDC_ID_PROD_SPEC_PART Hardware revision 531974 MDC_ID_PROD_SPEC_HW Software revision 531975 MDC_ID_PROD_SPEC_SW Firmware revision 531976 MDC_ID_PROD_SPEC_FW Protocol 531977 MDC_ID_PROD_SPEC_PROTOCOL Global Medical Device Nomenclature (GMDN) 531978 MDC_ID_PROD_SPEC_GMDN The above come from the Production-Specification attribute Continua version 532352 MDC_REG_CERT_DATA_CONTINUA_VERSION The above comes from the Continua Reg-Cert-Data-List attribute There may be more fields added in future versions of the 10101 specification. | ||
display | Definition: A human readable display descrbing the meaning of the code. This element should contain the reference identfier for the reported code. | |||
fhirCoding | ..1 | Short description: The IEEE concept in the DeviceSpecificationSpecType coding system Definition:The IEEE concept defined in the 11073Type coding element expressed in the DeviceSpecificationSpecType coding system. Besides satisfying a system requirement, including these values supports searches for DeviceComponents based upon the DeviceSpecificationSpecType codes. Of course, as of 3.0.1 searches on the DeviceComponent.productionSpecification are not supported but this is to change in the future. 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. These codes and entries are as follows: Code Description unspecified Unspecified Production Specification serial-number Serial Number part-number Part Number hardware-revision Hardware Revision software-revision Software Revision firmware-revision Firmware Revision protocol-revision Protocol Revision gmdn Global Medical Device Nomencalture | ||
system | 1.. | Fixed Value | Fixed Value: http://hl7.org/fhir/specification-type | |
code | 1.. | Definition: A symbol in the syntax defined by the DeviceSpecificationSpecType system. FHIR requires this code if the specType being coded is a member of this value set. | ||
productionSpec | 1.. | |||
languageCode | Comments: 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. This infomration is not available by protocol from the PHD and its use is up to the application |
A JSON example is given in Phd Parent DeviceComponent JSON Example
This structure definition is missing the property element as it is based upon a tool that does not yet support version 3.2.0 of FHIR. The structure definition will be updated when support for 3.2.0 is available.
The uploader shall populate the DeviceComponent.meta.profile with http://pchalliance.org/phdfhir/StructureDefinition/PhdParentDeviceComponent indicating this resource was generated following the PHD Implementation Guide.
All 11073 20601 PHDs are required to have a system identifier. It is an EUI-64 consisting of 8 bytes. The system id is mapped to the DeviceComponent.identifier.value element as a sequence of 8 2-digit bytes as HEX separated by dashes without the '0x' prefix commonly used in programming languages. An example of such a string is FE-ED-AB-EE-DE-AD-77-C3. Though required for Continua compliance, it is not required in the Bluetooth Low Energy health device specifications. When a PHG encounters such a device it shall enter 00-00-00-00-00-00-00-00 and the uploader is required to provide a transport address as a means of uniquely identifying the PHD. The transport addresses are as follows:
transport | format | example |
---|---|---|
Bluetooth | EUI-48: ab-cd-ef-gh-ij-kl | 00-E5-DE-AD-77-C3 |
ZigBee | EUI-64: ab-cd-ef-gh-ij-kl-mn-op | 36-ED-9A-EE-DE-AD-77-C3 |
USB | vid.pid | 0043.F90D |
The System-Id entry shall be first and the transport entry, if present, shall be second.
The System-Type-Spec-List attribute contains a list of specializations as 16-bit MDC term codes supported by the PHD. The partition is assumed to be 'Infra' (8). In most cases there is just one entry. When there is just one entry, the 32-bit value is mapped to the DeviceComponent.type.coding.code element.
The table below gives a list of some of the most common specializations and their codes:
Specialization | MDC Code partition:term code | Reference Identifier |
---|---|---|
Pulse Oximeter | 8::4100 | MDC_DEV_SPEC_PROFILE_PULS_OXIM |
Electro cardiograph | 8::4102 | MDC_DEV_SPEC_PROFILE_MIN_ECG |
Blood Pressure Cuff | 8::4103 | MDC_DEV_SPEC_PROFILE_BP |
Thermometer | 8::4104 | MDC_DEV_SPEC_PROFILE_TEMP |
Respiration rate | 8::4109 | MDC_DEV_SPEC_PROFILE_RESP_RATE |
Weight Scale | 8::4111 | MDC_DEV_SPEC_PROFILE_SCALE |
Glucose Monitor | 8::4113 | MDC_DEV_SPEC_PROFILE_GLUCOSE |
Coagulation meter | 8::4114 | MDC_DEV_SPEC_PROFILE_COAG |
Insulin Pump | 8::4115 | MDC_DEV_SPEC_PROFILE_INSULIN_PUMP |
Body Composition Analyizer | 8::4116 | MDC_DEV_SPEC_PROFILE_BCA |
Peak Flow meter | 8::4117 | MDC_DEV_SPEC_PROFILE_PEAK_FLOW |
Sleep Apnea Breathing Equipment | 8::4120 | MDC_DEV_SPEC_PROFILE_SABTE |
Continuous Glucose Monitor | 8::4121 | MDC_DEV_SPEC_PROFILE_CGM |
Cardiovascular Device | 8::4137 | MDC_DEV_SPEC_PROFILE_HF_CARDIO |
Strength Equipment | 8::4138 | MDC_DEV_SPEC_PROFILE_HF_STRENGTH |
Independent Activity/Living Hub | 8::4167 | MDC_DEV_SPEC_PROFILE_AI_ACTIVITY_HUB |
Medication Monitor | 8::4168 | MDC_DEV_SPEC_PROFILE_AI_MED_MINDER |
TODO: using the proposed mapping is both non-extensible and complex as it reverses the 11073-10201 multiple VMDs to 11073-20601 System-Type-Spec-List. However, the PHG does not get VMD objects information from the PHD and thus must reconctruct VMDs from the single attribute. The PHG has no way to determine which PHD measurements are associated with this artificially created set of VMDs without having a pre-defined mapping. When future specializations emerge, the mapping will be unknown. - Will enter a comment to use a simple extension and report the extra specializations in the extension as is done in PCD-01. If an extension is used, there will be no need for a Child Device Component profile.
Note - it is hoped to eliminate this requirement and either use an extension (as in PCD-01) or make the DeviceComponent.type 1..*
The parent element is used to reference the PHG Device Component Profile.
The DeviceComponent.productionSpecification is natively designed to handle the eight currently-defined 11073 Production-Specification attribute entries;
These eight codes have been adopted by FHIR into a special value set DeviceSpecificationSpecType to define what the DeviceComponent.productionSpecification.productionSpec value is. Thus if
then
As an alternative, one could use the MDC coding system to report the same information
MDC codes have been defined for the Production-Specification, System-Model, and Reg-Cert-Data-List, and Mds-Time-Info attribute entries for use in HL7 V2 PCD-01 messages. These MDC codes are as follows:
11073 Attribute | description | MDC code | MDC reference identifier |
---|---|---|---|
System-Model | Model number | 531969 | MDC_ID_MODEL_NUMBER |
System-Model | Manufacturer name | 531970 | MDC_ID_MODEL_MANUFACTURER |
Production-Specification | Unspecified | 531971 | MDC_ID_PROD_SPEC_UNSPECIFIED |
Production-Specification | Serial number | 531972 | MDC_ID_PROD_SPEC_SERIAL |
Production-Specification | Part number | 531973 | MDC_ID_PROD_SPEC_PART |
Production-Specification | Hardware revision | 531974 | MDC_ID_PROD_SPEC_HW |
Production-Specification | Software revision | 531975 | MDC_ID_PROD_SPEC_SW |
Production-Specification | Firmware revision | 531976 | MDC_ID_PROD_SPEC_FW |
Production-Specification | Protocol revision | 531977 | MDC_ID_PROD_SPEC_PROTOCOL |
Production-Specification | Global Medical Device Nomenclature (GMDN) | 531978 | MDC_ID_PROD_SPEC_GMDN |
Reg-Cert-Data-List | Continua version | 532352 | MDC_REG_CERT_DATA_CONTINUA_VERSION |
Reg-Cert-Data-List | Continua Certified Device List | 532353 | MDC_REG_CERT_DATA_CONTINUA_CERT_DEV_LIST |
Reg-Cert-Data-List | Regulation status | 532354 | MDC_REG_CERT_DATA_CONTINUA_REG_STATUS |
PHG only | Continua Certified H&FS List | 532355 | MDC_REG_CERT_DATA_CONTINUA_AHD_CERT_LIST |
Mds-Time-Info | Synchronization method | 68220 | MDC_TIME_SYNC_PROTOCOL |
Mds-Time-Info | Time capabilities | 68219 | MDC_TIME_CAP_STATE |
Mds-Time-Info | High resolution relative time resolution | 68224 | MDC_TIME_RES_REL_HI_RES |
Mds-Time-Info | Relative time resolution | 68223 | MDC_TIME_RES_REL |
Mds-Time-Info | Absolute Time time resolution | 68222 | MDC_TIME_RES_ABS |
Mds-Time-Info | Base offset time resolution | 68226 | MDC_TIME_RES_BO |
Mds-Time-Info | Time synchronization accuracy | 68221 | MDC_TIME_SYNC_ACCURACY |
This profile requires that the MDC coding system is used. Since FHIR versions 3.0.1 and later added the requirement that the DeviceSpecificationSpecType value set be used when the value set has such a code, if a production specification value is being mapped using one of the eight original fields, a code entry for both the MDC and DeviceSpecificationSpecType is required.
When both coding systems are present, the MDC coding system entry shall be first.
The final mapping of MDS attributes to the DeviceComponent.productionSpecification element is as follows:
11073 Attribute element | FHIR element DeviceComponent.productionSpecification. |
---|---|
System-Model.model-number | specType.coding.code="531969" specType.coding.system="urn.iso.std.iso:11073:10101" productionSpec="model-number" |
System-Model.manufacturer-name | specType.coding.code="531970" specType.coding.system="urn.iso.std.iso:11073:10101" productionSpec="manufacturer-name" |
Production-Specification.specType=0 Production-Specification.prod-spec=unspecified |
specType.coding.code="531971" specType.coding.system="urn.iso.std.iso:11073:10101" specType.coding.code="unspecified" specType.coding.system="http://hl7.org/fhir/specification-type " productionSpec="unspecified" |
Production-Specification.specType=1 Production-Specification.prod-spec=serial-number |
specType.coding.code="531972" specType.coding.system="urn.iso.std.iso:11073:10101" specType.coding.code="serial-number" specType.coding.system="http://hl7.org/fhir/specification-type " productionSpec="serial-number" |
Production-Specification.specType=2 Production-Specification.prod-spec=part-number |
specType.coding.code="531973" specType.coding.system="urn.iso.std.iso:11073:10101" specType.coding.code="part-number" specType.coding.system="http://hl7.org/fhir/specification-type " productionSpec="part-number" |
Production-Specification.specType=3 Production-Specification.prod-spec=hardware-revision |
specType.coding.code="531974" specType.coding.system="urn.iso.std.iso:11073:10101" specType.coding.code="hardware-revision" specType.coding.system="http://hl7.org/fhir/specification-type " productionSpec="hardware-revision" |
Production-Specification.specType=4 Production-Specification.prod-spec=software-revision |
specType.coding.code="531975" specType.coding.system="urn.iso.std.iso:11073:10101" specType.coding.code="software-revision" specType.coding.system="http://hl7.org/fhir/specification-type " productionSpec="software-revision" |
Production-Specification.specType=5 Production-Specification.prod-spec=firmware-revision |
specType.coding.code="531976" specType.coding.system="urn.iso.std.iso:11073:10101" specType.coding.code="firmware-revision" specType.coding.system="http://hl7.org/fhir/specification-type " productionSpec="firmware-revision" |
Production-Specification.specType=6 Production-Specification.prod-spec=protocol-revision |
specType.coding.code="531977" specType.coding.system="urn.iso.std.iso:11073:10101" specType.coding.code="protocol-revision" specType.coding.system="http://hl7.org/fhir/specification-type " productionSpec="protocol-revision" |
Production-Specification.specType=7 Production-Specification.prod-spec=prod-spec-gmdn |
specType.coding.code="531978" specType.coding.system="urn.iso.std.iso:11073:10101" specType.coding.code="prod-spec-gmdn" specType.coding.system="http://hl7.org/fhir/specification-type " productionSpec="prod-spec-gmdn" |
Reg-Cert-Data-List.continua-version | specType.coding.code="532352" specType.coding.system="urn.iso.std.iso:11073:10101" productionSpec="continua-version" |
The property element is introduced in version 3.2.0 of FHIR. This element is used to report the regulation status, Continua certified PAN (Personal Area Network) interfaces, and the static time properties such as synchronization state, synchronization accuracy, type of time clock, and the resolution of the time clock. The sources of this information come from the Reg-Cert-Data-List and Mds-Time-Info attributes.
In addition to the Continua version reported in the DeviceComponent.productionSpecification, the Reg-Cert-Data-List attribute reports the list of Continua certified PAN interfaces and the regulation status. The certified PAN interfaces are reported as a list of Continua-specified codes and the regulation status element is a 16-bit ASN1 BITs 'state' value with only Mder bit 0 currently defined.
The Continua-specified certification codes are a combination of a transport 'Tcode' and a specialization code which is based on the 16-bit term code of the MDC code for the specialization. The reported code is generated by
The transport 'Tcodes' are as follows:
Tcode | Transport |
---|---|
0 | Continua version 1.0 |
1 | USB |
2 | Bluetooth HDP |
3 | ZigBee |
4 | Bluetooth Low Energy |
5 | NFC |
The special Tcode of 0 is for Continua version 1.0 when there was no transport component in the reported certified PAN interface codes.
The regulation status Mder bit-0 is defined 'backwards' in that the set value is unregulated and the cleared value is regulated. Given that this bit is a 'state' value, it is required to report both the cleared or set states.
The mapping of these Reg-Cert-Data-List attribute values to the DeviceComponent.property element is as follows:
Attribute value | FHIR mapping |
---|---|
Reg-Cert-Data-List.list-of-codesN | property.type.coding.code="532353" property.type.coding.system="urn.iso.std.iso:11073:10101" property.valueCodeableConceptN.coding.code="list-of-codesN" property.valueCodeableConceptN.coding.system="placeholder/fhir/reg-cert-codes" |
Reg-Cert-Data-List.regulation-status | property.type.coding.code="532354.0" property.type.coding.system="placeholder/fhir/IEEE.ASN1" property.valueCodeableConcept.coding.code="Y/N" property.valueCodeableConcept.coding.system="http://hl7.org/fhir/v2/0136 " property.valueCodeableConcept.coding.display="Y=unregulated N=regulated" |
Note that the cardinality of the property.valueCodeableConcept and property.valueQuantity element is 0 to many thus one is able to report a list of related properties (such as the list of certified PAN interfaces) with limited overhead.
The Mds-Time-Info attribute is required on PHDs that support a real time clock of some type and report time stamps in their measurements. In Bluetooth Low Energy devices these properties must be inferred from other information like the Current Time Service. If the PHD does NOT report a time stamp in any of its measurements, there is no need to report the static time information.
The Mds-Time-Info attribute has a 16-bit ASN1 BITs field for the time capabilities. They are mapped as follows:
Mder Bit position | IEEE.ASN1 Code | ASN.1 name | static | DeviceComponent. |
---|---|---|---|---|
0 | 68219.0 | mds-time-capab-real-time-clock | yes | property.type.coding.code="68219.0" |
1 | 68219.1 | mds-time-capab-set-clock | yes | property.type.coding.code="68219.1" |
2 | 68219.2 | mds-time-capab-relative-time | yes | property.type.coding.code="68219.2" |
3 | 68219.3 | mds-time-capab-high-res-relative-time | yes | property.type.coding.code="68219.3" |
4 | 68219.4 | mds-time-capab-sync-abs-time | yes | property.type.coding.code="68219.4" |
5 | 68219.5 | mds-time-capab-sync-rel-time | yes | property.type.coding.code="68219.5" |
6 | 68219.6 | mds-time-capab-sync-hi-res-relative-time | yes | property.type.coding.code="68219.6" |
7 | 68219.7 | mds-time-capab-bo-time | yes | property.type.coding.code="68219.7" |
8 | 68219.8 | mds-time-state-abs-time-synced | no | |
9 | 68219.9 | mds-time-state-rel-time-synced | no | |
10 | 68219.10 | mds-time-state-hi-res-relative-time-synced | no | |
11 | 68219.11 | mds-time-mgr-set-time | no | |
12 | 68219.12 | mds-time-capab-sync-bo-time | yes | property.type.coding.code="68219.12" |
13 | 68219.13 | mds-time-state-bo-time-synced | no | |
14 | 68219.14 | mds-time-state-bo-time-UTC-aligned | yes | property.type.coding.code="68219.14" |
15 | 68219.15 | mds-time-dst-rules-enabled | yes | property.type.coding.code="68219.15" |
The required remaining property elements in each reported case are as follows:
Only the static fields shall be reported and all the static fields are treated as events thus they only need to be reported if set. Reporting cleared static states is optional. Reporting dynamic values is not allowed.
The Mds-Time-Info.time-sync-protocol indicates the method of time synchronization which has one of the term code values in the following table:
32-bit code | Reference identifier | description | partition:term code |
---|---|---|---|
532224 | MDC_TIME_SYNC_NONE | An uncalibrated and unsynchronized local clock source | 8::7936 |
532234 | MDC_TIME_SYNC_EBWW | A manually set time, by ‘eyeball and wristwatch’ | 8::7946 |
532225 | MDC_TIME_SYNC_NTPV3 | Network Time Protocol Version 3.0 (RFC 1305) | 8::7937 |
532226 | MDC_TIME_SYNC_NTPV4 | Network Time Protocol Version 4.0 (under dev) | 8::7938 |
532227 | MDC_TIME_SYNC_SNTPV4 | Simple Network Time Protocol v4 (RFC 2030) | 8::7939 |
532228 | MDC_TIME_SYNC_SNTPV4330 | Simple Network Time Protocol v4 (RFC 4330) | 8::7940 |
532229 | MDC_TIME_SYNC_BTV1 | Bluetooth Medical Device Profile | 8::7941 |
532235 | MDC_TIME_SYNC_USB_SOF | Synced to the 1kHz USB "start-of-frame" clock | 8::7947 |
532230 | MDC_TIME_SYNC_RADIO | Atomic Clock synchronization through RF | 8::7942 |
532231 | MDC_TIME_SYNC_HL7_NCK | Synchronized via Health Level 7 NCK (network clock) | 8::7943 |
532232 | MDC_TIME_SYNC_CDMA CDMA | mobile telecommunications synchronization | 8::7944 |
532233 | MDC_TIME_SYNC_GSM | GSM - Network Identity and Time Zone (NITZ) | 8::7945 |
If the Mds-Time-Info.time-sync-protocol indicates some other value besides 7936 (no time synchronization) the uploader must look at the time capabilities bits 8, 9, 10, or 13 to see if the PHD actually is synchronized. If the time capabilities bits indicate that the PHD is synchronized, then the time synchronization method in Mds-Time-Info.time-sync-protocol is reported in the DeviceComponent.property element otherwise the uploader reports that the PHD is unsynchronized.
The uploader maps the state of synchronization to the DeviceComponent.property as follows:
To date there are no PHDs that support an external time synchronization. However, many PHDs have the PHG set its time and PHGs are required to support an external time synchronization. The IEEE PHD WG is working on providing some means to indicate synchronization by the PHG. In lieu of that, a consumer can only infer that the PHG probably set the time on the PHG if
The time synchronization accuracy is given by the Mds-Time-Info.time-sync-accuracy field. This value shall not be reported if the PHD reports a value of 0xFFFFFFFF which indicates unknown. Otherwise the value reported is in units of 1/8th millisecond. When reported in the DeviceComponent.property element it is scaled to microseconds. The mapping is as follows:
Then Mds-Time-Info attribute has fields that report the resolution of its time clocks.
The Mds-Time-Info.time-resolution-abs-time represents the resolution of the absolute-time clock when the sensor supports an absolute time clock. If the sensor supports a base-offset time clock it represents the resolution of the base-offset time clock. The sensor is not able to support both time clocks simultaneously. Which time clock is supported is indicated by the settings of the Mder 0 and 7 bits of the time capabilities (Mds-Time-Info.mds-time-caps-state).
The sensor may additionally support both relative time clocks or just the relative time clocks without any ‘wall time’ clock. In practice, support of more than one real time clock at the same time is rare.
If the respective time resolution has a value of 0, it indicates that the resolution is unknown and it shall not be reported. In all other cases, the resolutions may be reported.
When reported, all time resolutions values shall be scaled to units of microseconds. When supporting absolute time, the Mds-Time-Info.time-resolution-abs-time is in units of 1/100th of a second. When supporting base-offset time, the Mds-Time-Info.time-resolution-abs-time is in units of 1/65536th of a second. In the base-offset case, the special value of 0xFFFF means one second. The Mds-Time-Info.time-resolution-rel-time is in units of 1/8th millisecond and the Mds-Time-Info.time-resolution-hi-res-relative-time is in units of microseconds.
If the time resolutions are reported, each time resolution the application wishes to report shall be encoded as follows:
DeviceComponent.property element | value |
---|---|
DeviceComponent.property.type.coding.code | "68222" (absolute time) "68226" (base-offset time) "68223" (relative time) "68224" (hi-res relative time) |
DeviceComponent.property.type.coding.system | "urn.iso.std.iso:11073:10101" |
DeviceComponent.property.type.coding.display | "MDC_TIME_RES_ABS" "MDC_TIME_RES_BO" "MDC_TIME_RES_REL" "MDC_TIME_RES_REL_HI_RES" |
DeviceComponent.property.valueQuantity.value | "10000 x Mds-Time-Info.time-resolution-abs-time" "1000000 x Mds-Time-Info.time-resolution-abs-time/65536" "125 x Mds-Time-Info.time-resolution-rel-time" "Mds-Time-Info.time-resolution-hi-res-relative-time" |
DeviceComponent.property.valueQuantity.system | "urn.iso.std.iso:11073:10101" |
DeviceComponent.property.valueQuantity.code | "264339" (MDC code for microseconds) |
DeviceComponent.property.valueQuantity.units | "us" (Optional UCUM string) |
For the Consumer of this profile the following table gives a quick guide to the main features
item | Location |
---|---|
Type of Device | DeviceComponent.type.coding.code="MDC 32-bit code for device type" |
Manufacturer name | if DeviceComponent.productionSpecification.specType.coding.code="531970" then DeviceComponent.productionSpecification.productionSpec="manufacturer name" |
Model number | if DeviceComponent.productionSpecification.specType.coding.code="531969" then DeviceComponent.productionSpecification.productionSpec="model number" |
serial number | if DeviceComponent.productionSpecification.specType.coding.code="531972" then DeviceComponent.productionSpecification.productionSpec="serial number" |
system identifier | if DeviceComponent.identifier.system="urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680" then DeviceComponent.identifier.value="system id as 8 2-digit HEX values separated by dashes" |
time synchronization | if DeviceComponent.property.type.coding.code="68220" then DeviceComponent.property.valueCodeableConcept.coding.code="code for time synchronization" |
The following is an example of a Phd Parent DeviceComponent resource from a Blood Pressure Cuff. The resource is generated based upon FHIR version 3.2.0 and will not render until the tool is updated to support that version. In the mean time a raw pre-formatted example is displayed here.
"resource": { "resourceType": "DeviceComponent", "id": "SysId-01040302f0000000", // This resource is being uploaded as an Update "meta": { "profile": ["http://pchalliance.org/phdfhir/StructureDefinition/PhdParentDeviceComponent"] }, "identifier": [{ "system": "urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680", "value": "01-04-03-02-f0-00-00-00", "assigner": { // This element is optional "display": "EUI-64" } }, { "system": "urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680", "value": "12:34:56:78:9A:BC", "assigner": { // This element is optional "display": "EUI-48" } }], "type": { "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "528391", "display": "MDC_DEV_SPEC_PROFILE_BP" }] }, "parent": { "reference": "DeviceComponent/SysId-ecde3d4e58532d31" // Points to PHG DeviceComponent }, "productionSpecification": [{ // All display elements are optional but encouraged "specType": { "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "531970", "display": "MDC_ID_MODEL_MANUFACTURER: Manufacturer name" }] }, "productionSpec": "Renesas Electronics" }, { "specType": { "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "531969", "display": "MDC_ID_MODEL_NUMBER: Model number" }] }, "productionSpec": "Synergy-12345-Demo" }, { "specType": { "coding": [{ // MDC coding system first "system": "urn:iso:std:iso:11073:10101", "code": "531972", "display": "MDC_ID_PROD_SPEC_SERIAL: Serial number" }, { "system": "http://hl7.org/fhir/specification-type", "code": "serial-number", "display": "Serial number" }] }, "productionSpec": "13456-BPM-BTLE" }, { "specType": { "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "531976", "display": "MDC_ID_PROD_SPEC_FW: Firmware revision" }, { "system": "http://hl7.org/fhir/specification-type", "code": "firmware-revision", "display": "Firmware revision" }] }, "productionSpec": "1.0.0" }, { "specType": { "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "531975", "display": "MDC_ID_PROD_SPEC_SW: Software revision" }, { "system": "http://hl7.org/fhir/specification-type", "code": "software-revision", "display": "Software revision" }] }, "productionSpec": "1.0.0" }, { "specType": { "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "531974", "display": "MDC_ID_PROD_SPEC_HW: Hardware revision" }, { "system": "http://hl7.org/fhir/specification-type", "code": "hardware-revision", "display": "Hardware revision" }] }, "productionSpec": "1.0.0" }, { "specType": { "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "532352", "display": "MDC_REG_CERT_DATA_CONTINUA_VERSION: Continua version" }] }, "productionSpec": "6.1" }], "property": [{ "type": { "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "532353", "display": "MDC_REG_CERT_DATA_CONTINUA_CERT_DEV_LIST: certified device list as transport-specialization combo" }] }, "valueCode": [{ "coding": [{ "system": "http://pcha.org/phd/documents/reg-cert-codes", "code": "32775" // In HEX this is 0x8007 Tcode = 8 which is the code // for Bluetooth Low Energy and 4096 + 7 = 4103 which is the term code in partition // Infra for the Blood Pressure specialization }] }] }, { "type": { "coding": [{ "system": "http://hl7.org/fhir/IEEE.ASN1", "code": "532354.0", "display": "regulation-status" }] }, "valueCode": [{ "coding": [{ "system": "http://hl7.org/fhir/v2/0136", "code": "Y", "display": "Device is not regulated" }] }] }, { "type": { "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "68220", "display": "MDC_TIME_SYNC_PROTOCOL: Time synchronization protocol" }] }, "valueCode": [{ "coding": [{ "system": "urn:iso:std:iso:11073:10101", "code": "532224", "display": "MDC_TIME_SYNC_NONE: " }] }] }] },