PHDC Overview
Data Characteristics
Personal healthcare devices, due to their nature, may need to send data in 3 different ways:
- Episodic: data is sent sporadically each time the user accomplishes a specific action.
- Store and forward: data is collected and stored on the device while it is not connected. The data is then forwarded to the host once it is connected.
- Continuous: data is sent continuously to the host for continuous monitoring.
Considering these needs, data transfers will be defined in terms of latency and reliability. PHDC defines three levels of reliability and four levels of latency:
- Reliability: Good, better and best.
- Latency: Very-high, high, medium and low.
For example, a device that sends continuous data for monitoring will send them as low latency and good reliability.
PHDC does not support all latency/reliability combinations. Here is a list of supported combinations:
- Low latency, good reliability.
- Medium latency, good reliability.
- Medium latency, better reliability.
- Medium latency, best reliability.
- High latency, best reliability.
- Very high latency, best reliability.
These combinations are called quality of service (QoS).
QoS (Latency/reliability) | Latency | Raw info rate | Transfer direction(s) | Typical use |
---|---|---|---|---|
Low / good | < 20ms | 50 bits/sec to 1.2M bits/sec | IN | Real-time monitoring, with fast analog sampling rate. |
Medium / good | < 200ms | 50 bits/sec to 1.2M bits/s | IN | |
Medium / better | < 200ms | 10s of byte range | IN | Data from measured parameter collected off-line and replayed or sent real-time. |
Medium / best | < 200ms | 10s of byte range | IN, OUT | Events, notifications, request, control and status of physiological and equipment functionality. |
High / best | < 2s | 10s of byte range | IN, OUT | Physiological and equipment alarms. |
Very high / best | < 20s | 10s of byte range to gigabytes of data | IN, OUT | Transfer reports, histories or off-line collection of data. |
Transfers from a PHDC device will also contain a preamble, in which there is the possibility to include opaque data. Opaque data is data that should not be treated as actual data, but instead acts as a header, allowing the receiving host application to know what type of data it receives, for example. See Table - Metadata Preamble for more details about the content of a preamble.
Operational Model
The requirements for data transfer QoS in personal healthcare devices can be accomplished by PHDC using bulk endpoints and, optionally, an interrupt endpoint. Table - Endpoint - QoS Mapping and Figure - QoS - Endpoint Mapping show the mapping between QoS and endpoint types.
Endpoint | Usage |
---|---|
Bulk OUT | All QoS host to device data transfers. |
Bulk IN | Very high, high and medium latency device to host data transfers. |
Interrupt IN | Low latency device to host data transfers. |
PHDC does not define a protocol for data and messaging. It is only intended to be used as a communication layer. Developers can use either data and messaging protocol defined in ISO/IEEE 11073-20601 base protocol or a vendor-defined protocol. Figure - Personal Healthcare Device Software Layers shows the different software layers needed in a personal healthcare device.
Since transfers having different QoS will have to share a single bulk endpoint, host and device need a way to inform each other what is the QoS of the current transfer. A metadata message preamble will then be sent before a single or a group of regular data transfers. This preamble will contain the information listed in Table - Metadata Preamble.
Offset | Field | Size (bytes) | Description |
---|---|---|---|
0 | aSignature | 16 | Constant used to verify preamble validity. Always set to “PhdcQoSSignature” string. |
16 | bNumTransfers | 1 | Count of following transfers to which QoS setting applies. |
17 | bQoSEncodingVersion | 1 | QoS information encoding version. Should be 0x01. |
18 | bmLatencyReliability | 1 | Bitmap that refers to latency / reliability bin for data. |
19 | bOpaqueDataSize | 1 | Length, in bytes, of opaque data. |
20 | bOpaqueData | [0 .. MaxPacketSize - 21] | Optional data usually application specific that is opaque to the class. |