NAV
Sample

Introduction

This document is intended to be used as a comprehensive overview of MedM DeviceKit data API. Every measurement is represented by an xml.

Measurements

Measurement Types

Measurement types are separated into two big classes - discrete and stream.

Discrete
Discrete are non-continuous measurement types with individual values like glucose or blood pressure measurement.
Streams
Streams are continuous measurement types like ECG measurement.

The tables below describe terms used in API requests for measurement type identification.

Discrete Measurements

Term Description
measurements-realtime-activity Realtime Activity
measurements-bloodpressure Blood Pressure measurements
measurements-glucose Glucose measurements
measurements-ketone Ketone measurements
measurements-lactate Lactate measurements
measurements-cholesterol Cholesterol measurements
measurements-uric-acid Uric Acid measurements
measurements-blood-coagulations Blood Coagulation measurements
measurements-realtime-spirometry Realtime Spirometry measurements
measurements-spirometry Spirometry measurements
measurements-weight Weight measurements
measurements-note Note measurements

Stream Measurements

Term Description
measurements-activity-stream Activity tracking
measurements-ecg-stream Electrocardiogram measurements
measurements-fetal-doppler-stream Fetal Doppler measurements
measurements-heartrate-stream Heart Rate measurements
measurements-oxygen-stream Oxygen Saturation measurements
measurements-sleep-stream Sleep tracking
measurements-temperature-stream Temperature measurements
measurements-respiration-rate-stream Respiration Rate measurements

Common Attributes

Discrete measurement example

<?xml version="1.0" encoding="UTF-8"?>
<measurements-bloodpressure>
  <id>c402e177-95c9-493b-b12f-7b4ef42d0add</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-08-11T14:21:00.000000000+00:00</measured-at>
  <measured-at-local>2019-08-11T07:21:00.000000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-08-11T14:21:03.098145000+00:00</client-received-at>
  <client-received-at-local>2019-08-11T07:21:03.098145000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <systolic>113</systolic>
  <diastolic>77</diastolic>
  <pulse>81</pulse>
  <predefined-tags-str>measured_arm_left, body_position_sitting</predefined-tags-str>
  <is-low-battery>false</is-low-battery>
  <battery-percentage>67</battery-percentage>
  <sensor>
    <name>com.taidoc.taidocbus.bp</name>
    <serial>3128213440001333</serial>
    <address>8C:DE:52:30:55:94</address>
    <manufacturer>TaiDoc</manufacturer>
    <model>3128</model>
    <device-db-title>TD-3128</device-db-title>
    <device-db-id>95</device-db-id>
  </sensor>
</measurements-bloodpressure>

Attribute Type Values Description
id string UUID version 4 according to RFC 4122 Unique measurement identifier
instance-id string UUID version 4 according to RFC 4122 Unique instance identifier, configured via medm.json, or generated
measured-at string RFC3339 Timestamp Datetime measurement was performed in server timezone. Medical Device source.
measured-at-local string RFC3339 Timestamp Datetime measurement was performed in patient’s timezone. Medical Device source.
measured-at-utc-offset integer measured-at-local utc offset in seconds. Medical Device source.
client-received-at string RFC3339 Timestamp Optional Datetime measurement was performed in server timezone. Mobile Device source.
client-received-at-local string RFC3339 Timestamp Optional Datetime measurement was performed in patient’s timezone. Mobile Device source.
client-received-at-utc-offset integer Optional client-received-at-local utc offset in seconds. Mobile Device source.
note string Optional Measurement notes.
predefined-tags-str string Comma separated string Optional Predefined tags applied to the measurement.
is-low-battery boolean Optional true if low battery on Medical Device on the moment this measurement was received.
battery-percentage integer 0..100 Medical Device battery charge percentage on the moment this measurement was received.
sensor-user-id string User profile id on the medical device if supported.
sensor Sensor Optional. Data source. See Sensor API.

Stream measurement common attributes:

Stream measurement example

<?xml version="1.0" encoding="UTF-8"?>
<measurements-oxygen-stream>
  <id>86735ebc-d752-4110-89f6-e06d5519e9d2</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-08-09T16:10:09.751000000+00:00</measured-at>
  <measured-at-local>2019-08-09T11:10:09.751000000-05:00</measured-at-local>
  <measured-at-utc-offset>-18000</measured-at-utc-offset>
  <client-received-at>2019-08-09T16:10:09.751000000+00:00</client-received-at>
  <client-received-at-local>2019-08-09T11:10:09.751000000-05:00</client-received-at-local>
  <client-received-at-utc-offset>-18000</client-received-at-utc-offset>
  <measurement-duration>20001</measurement-duration>
  <spo2-min>95</spo2-min>
  <spo2-max>98</spo2-max>
  <spo2-last>96</spo2-last>
  <spo2-average>95.35</spo2-average>
  <pulse-min>96</pulse-min>
  <pulse-max>102</pulse-max>
  <pulse-last>98</pulse-last>
  <pulse-average>100.1</pulse-average>
  <is-low-battery>false</is-low-battery>
  <battery-percentage>67</battery-percentage>
  <chunks>
    <chunk>
      <id>d43f3553-3732-4145-a8ec-f5e05c95a019</id>
      <position>0</position>
      <start>0</start>
      <end>20001</end>
      <oxygen>{"regular":{"waveform":{"values":[]}},"irregular":{"spo2":[96,56,95,1059,96,2060,96,3044,96,4045,96,5047,95,6072,95,7047,95,8047,95,9048,95,10046,95,11046,95,12058,96,13046,95,14061,95,15047,95,16047,95,17048,95,18056,96,19058],"pulse":[101,56,100,1059,100,2060,100,3044,101,4045,101,5047,102,6069,102,7047,102,8046,101,9047,100,10045,100,11045,99,12058,99,13046,99,14060,99,15046,99,16046,99,17048,99,18056,99,19058],"pulse_quality":[255,56,255,1059,255,2060,255,3044,255,4045,255,5047,255,6069,255,7047,255,8046,255,9047,255,10045,255,11045,255,12058,255,13046,255,14060,255,15046,255,16046,255,17048,255,18056,255,19058],"spo2_quality":[255,56,255,1059,255,2060,255,3044,255,4045,255,5047,255,6072,255,7047,255,8047,255,9048,255,10046,255,11046,255,12058,255,13046,255,14061,255,15047,255,16047,255,17048,255,18056,255,19058]}}</oxygen>
    </chunk>
  </chunks>
</measurements-oxygen-stream>

Attribute Type Description
measurement-duration integer Time in milliseconds from the start of the measurement (measured_at) - whole measurement duration
chunks array[Chunk] Array of chunks ordered by position attribute ascending.

Chunk attributes:

Attribute Type Values Description
id string UUID version 4 according to RFC 4122 Unique chunk identifier
position integer >= 0 Each chunk has position from 0 to infinity - index number of chunk inside the measurement. Unique in scope of one measurement.
start integer >= 0 Time in milliseconds from the start of the measurement (measured_at) when this chunk was started.
end integer >= 0 Time in milliseconds from the start of the measurement (measured_at) when this chunk was ended.
is-low-battery boolean true if low battery on Medical Device during this chunk was received.
battery-percentage integer 0..100 Medical Device battery charge percentage during this chunk was received.

Sensor API

With each measurement medical device / sensor information can be sent to describe data source.

<?xml version="1.0" encoding="UTF-8"?>
<sensor>
  <name>A&amp;D_UA-651BLE_7C195D</name>
  <serial>5140500310</serial>
  <address>20:CD:39:7C:19:5D</address>
  <manufacturer>A&amp;D Medical</manufacturer>
  <model>UA-651BLE</model>
  <firmware>BLP008_d016</firmware>
  <hardware>0.00</hardware>
  <device-db-title>UA-651BLE</device-db-title>
  <device-db-id>144</device-db-id>
</sensor>

All attributes are optional strings without any strict formatting.

Attribute Type Description
name string Medical Device name
serial string Serial number of the Medical Device
address string Bluetooth/MAC address of the Medical Device
manufacturer string Medical Device manufacturer
model string Medical Device model
firmware string Firmware version
hardware string Hardware version
device-db-title string Title according client database
device-db-id string Class device id according client database

Activity Tracking

Stream Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-activity-stream>
  <id>0d786650-7971-4c78-9c46-80bef4c764a7</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-07-13T07:00:00.000000000+00:00</measured-at>
  <measured-at-local>2019-07-13T00:00:00.000000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-07-13T07:02:03.098145000+00:00</client-received-at>
  <client-received-at-local>2019-07-13T00:02:03.098145000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <measurement-duration>44760327</measurement-duration>
  <active-time>1860326</active-time>
  <steps>3568</steps>
  <climb>0</climb>
  <distance>2511</distance>
  <calories>4289</calories>
  <walking-burnt-calories>2670</walking-burnt-calories>
  <daily-body-burnt-calories>1619</daily-body-burnt-calories>
  <chunks>
    <chunk>
      <id>69a1f362-4342-4a5f-a571-0aeb3ac8bf54</id>
      <position>29340001</position>
      <start>29340001</start>
      <end>29400001</end>
      <activity>{"irregular":{"climbs":[],"steps":[0,0,50,59999]}}</activity>
    </chunk>
    <chunk>
      <id>ba45d24b-a719-4342-8305-12e7119953fe</id>
      <position>29640001</position>
      <start>29640001</start>
      <end>29700001</end>
      <activity>{"irregular":{"climbs":[],"steps":[0,0,40,59999]}}</activity>
    </chunk>
    <chunk>
      <id>ea963486-5ee1-4540-a254-7e1ae0240faa</id>
      <position>33060001</position>
      <start>33060001</start>
      <end>33300001</end>
      <activity>{"irregular":{"climbs":[],"steps":[0,0,473,239999]}}</activity>
    </chunk>
    <chunk>
      <id>2d7a334c-aeb5-4b90-8223-476f1e0a0706</id>
      <position>44580001</position>
      <start>44580001</start>
      <end>44760327</end>
      <activity>{"irregular":{"climbs":[],"steps":[0,0,313,119999,44,180325]}}</activity>
    </chunk>
  </chunks>
</measurements-activity-stream>

See Common Attributes

Attribute Type Values Description
active-time integer >=0 Activity duration in milliseconds
steps integer >=0 Number of steps
climb integer >=0 Total climb height in meters
distance integer >=0 Total distance in meters
calories integer >=0 Total Calories Burned (kcal)
walking-burnt-calories integer >=0 Calories Burned by walking (tracked with fitness tracker or accelerometer) (kcal)
daily-body-burnt-calories integer >=0 Calories Burned by the body itself (kcal)

Each chunk includes activity container with data in the internal format (JSON compatible).

{
  "irregular": {
    "climbs": [

    ],
    "steps": [
      0,
      0,
      50,
      59999
    ]
  }
}

Activity stream does not have stable data rate, so it is considered irregular data.

climbs and steps arrays consist of flatten value/time pairs: even items are values and odd ones are times in milliseconds from the start of the chunk: [v0, t0, v1, t1, ... , vn, tn]

There is special summary kind of activity streams that has no chunks tag. Summary activity corresponds to the values currently shown on the device, like today's steps, calories and so on. The exact steps values in chunks will be reported after the device agrregates hem to the history.

Blood Coagulation

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-blood-coagulation>
  <id>6c5071e0-c136-4e20-976a-f873e3d36408</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2021-09-21T11:05:18.079000000+00:00</measured-at>
  <measured-at-local>2021-09-21T18:05:18.079000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2021-09-21T11:05:03.098145000+00:00</client-received-at>
  <client-received-at-local>2021-09-21T18:05:03.098145000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <pt>11.0</pt>
  <inr>0.9</inr>
</measurements-blood-coagulation>

See Common Attributes

Attribute Type Values Description
pt float 0..30 Original PT received
inr float 0..10 Original INR received

Blood Pressure

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-bloodpressure>
  <id>c402e177-95c9-493b-b12f-7b4ef42d0add</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-08-11T14:21:00.000000000+00:00</measured-at>
  <measured-at-local>2019-08-11T07:21:00.000000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-08-11T14:21:03.098145000+00:00</client-received-at>
  <client-received-at-local>2019-08-11T07:21:03.098145000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <systolic>113</systolic>
  <diastolic>77</diastolic>
  <pulse>81</pulse>
  <predefined-tags-str>measured_arm_left, body_position_sitting</predefined-tags-str>
  <is-low-battery>false</is-low-battery>
  <battery-percentage>67</battery-percentage>
  <sensor>
    <name>com.taidoc.taidocbus.bp</name>
    <serial>3128213440001333</serial>
    <address>8C:DE:52:30:55:94</address>
    <manufacturer>TaiDoc</manufacturer>
    <model>3128</model>
    <device-db-title>TD-3128</device-db-title>
    <device-db-id>95</device-db-id>
  </sensor>
</measurements-bloodpressure>

See Common Attributes

Attribute Type Values Description
systolic integer 0..300 Systolic Blood Pressure
diastolic integer 0..300 Diastolic Blood Pressure
pulse integer 0..300 Pulse
predefined-tags-str string feeling_good, feeling_normal, feeling_bad, body_position_sitting, body_position_standing, body_position_supine, measured_arm_left, measured_arm_right, cuff_position_upper_arm, cuff_position_wrist Comma-separated list of predefined tags

Cholesterol

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-cholesterol>
  <id>6c5071e0-c136-4e20-976a-f873e3d36408</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2020-05-21T15:05:18.079000000+00:00</measured-at>
  <measured-at-local>2020-05-21T08:05:18.079000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2020-05-21T15:05:25.079000000+00:00</client-received-at>
  <client-received-at-local>2020-05-21T08:05:25.074000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <value>1.0</value>
  <units>mmol</units>
  <value-in-mg>39</value-in-mg>
  <value-in-mmol>1.0</value-in-mmol>
  <hematocrit>nil</hematocrit>
  <sensor>
    <name>TAIDOC TD4289</name>
    <serial>45393831313536000000</serial>
    <address>C0:26:DA:03:5C:E2</address>
    <manufacturer>TaiDoc/FORA</manufacturer>
    <firmware>V1.2.29</firmware>
    <device-db-title>TD-4289</device-db-title>
    <device-db-id>520</device-db-id>
  </sensor>
</measurements-cholesterol>

See Common Attributes

Attribute Type Values Description
value float Original or converted value
units string mg, mmol Original or converted units
value-in-mg float Blood cholesterol value in mg/dL
value-in-mmol float Blood cholesterol value in mmol/L
hematocrit float Hematocrit value percentage

Electrocardiogram (ECG)

Stream Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-ecg-stream>
  <id>f3b376dc-95ea-4ae4-b0da-3223b59b175c</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-08-07T03:31:50.487000000+00:00</measured-at>
  <measured-at-local>2019-08-06T20:31:50.487000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-08-07T03:31:03.098145000+00:00</client-received-at>
  <client-received-at-local>2019-08-06T20:31:03.098145000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <measurement-duration>1520</measurement-duration>
  <channels>
    <channel>I</channel>
    <channel>II</channel>
    <channel>III</channel>
    <channel>V</channel>
  </channels>
  <chunks>
    <chunk>
      <id>6f1ada73-4535-4f40-93df-8508572e722d</id>
      <position>0</position>
      <start>0</start>
      <end>1520</end>
      <ecg>{"regular":{"meta":{"channels":["I","II","III","V"],"voltage_min":-3300,"value_min":0,"frequency":100,"voltage_max":3300,"value_max":4095},"leads":[{"values":[2040,2042,2048,2047,2058,2063,2066,2066,2066,2071,2070,2074,2069,2074,2073,2051,2026,2027,2037,2039,2045,2077,2118,2117,2095,2081,2060,2033,1927,1724,1606,1765,2058,2205,2212,2185,2186,2175,2150,2131,2110,2083,2070,2076,2086,2083,2064,2043,2029,2035,2043,2042,2039,2025,2016,2006,2016,2036,2061,2068,2042,2018,2025,2035,2041,2042,2053,2060,2057,2047,2043,2038,2047,2060,2065,2073,2066,2045,2029,2018,2016,2046,2070,2086,2094,2101,2091,2084,2092,2070,1927,1684,1569,1757,2057,2220,2250,2233,2205,2165,2144,2142,2132,2118,2101,2097,2089,2075,2067,2079,2081,2061,2047,2035,2039,2045,2055,2051,2043,2040,2017,2005,2025,2054,2062,2052,2034,2031,2028,2021,2039,2064,2060,2057,2065,2061,2059,2058,2056,2045,2037,2029,2032,2047,2069,2081,2108,2119,2094,2082,2064,1990]},{"values":[2440,2442,2448,2447,2458,2463,2466,2466,2466,2471,2470,2474,2469,2474,2473,2451,2426,2427,2437,2439,2445,2477,2518,2517,2495,2481,2460,2433,2327,2124,2006,2165,2458,2605,2612,2585,2586,2575,2550,2531,2510,2483,2470,2476,2486,2483,2464,2443,2429,2435,2443,2442,2439,2425,2416,2406,2416,2436,2461,2468,2442,2418,2425,2435,2441,2442,2453,2460,2457,2447,2443,2438,2447,2460,2465,2473,2466,2445,2429,2418,2416,2446,2470,2486,2494,2501,2491,2484,2492,2470,2327,2084,1969,2157,2457,2620,2650,2633,2605,2565,2544,2542,2532,2518,2501,2497,2489,2475,2467,2479,2481,2461,2447,2435,2439,2445,2455,2451,2443,2440,2417,2405,2425,2454,2462,2452,2434,2431,2428,2421,2439,2464,2460,2457,2465,2461,2459,2458,2456,2445,2437,2429,2432,2447,2469,2481,2508,2519,2494,2482,2464,2390]},{"values":[1960,1958,1952,1953,1942,1937,1934,1934,1934,1929,1930,1926,1931,1926,1927,1949,1974,1973,1963,1961,1955,1923,1882,1883,1905,1919,1940,1967,2073,2276,2394,2235,1942,1795,1788,1815,1814,1825,1850,1869,1890,1917,1930,1924,1914,1917,1936,1957,1971,1965,1957,1958,1961,1975,1984,1994,1984,1964,1939,1932,1958,1982,1975,1965,1959,1958,1947,1940,1943,1953,1957,1962,1953,1940,1935,1927,1934,1955,1971,1982,1984,1954,1930,1914,1906,1899,1909,1916,1908,1930,2073,2316,2431,2243,1943,1780,1750,1767,1795,1835,1856,1858,1868,1882,1899,1903,1911,1925,1933,1921,1919,1939,1953,1965,1961,1955,1945,1949,1957,1960,1983,1995,1975,1946,1938,1948,1966,1969,1972,1979,1961,1936,1940,1943,1935,1939,1941,1942,1944,1955,1963,1971,1968,1953,1931,1919,1892,1881,1906,1918,1936,2010]},{"values":[1740,1742,1748,1747,1758,1763,1766,1766,1766,1771,1770,1774,1769,1774,1773,1751,1726,1727,1737,1739,1745,1777,1818,1817,1795,1781,1760,1733,1627,1424,1306,1465,1758,1905,1912,1885,1886,1875,1850,1831,1810,1783,1770,1776,1786,1783,1764,1743,1729,1735,1743,1742,1739,1725,1716,1706,1716,1736,1761,1768,1742,1718,1725,1735,1741,1742,1753,1760,1757,1747,1743,1738,1747,1760,1765,1773,1766,1745,1729,1718,1716,1746,1770,1786,1794,1801,1791,1784,1792,1770,1627,1384,1269,1457,1757,1920,1950,1933,1905,1865,1844,1842,1832,1818,1801,1797,1789,1775,1767,1779,1781,1761,1747,1735,1739,1745,1755,1751,1743,1740,1717,1705,1725,1754,1762,1752,1734,1731,1728,1721,1739,1764,1760,1757,1765,1761,1759,1758,1756,1745,1737,1729,1732,1747,1769,1781,1808,1819,1794,1782,1764,1690]}]}}</ecg>
    </chunk>
  </chunks>
</measurements-ecg-stream>

See Common Attributes

Attribute Type Description
channels array[string] Array of available ECG channels in this measurement

Each chunk includes ecg container with data in the internal format (JSON compatible).

ecg container within a chunk

{
  "regular": {
    "meta": {
      "channels": ["I","II","III","AVR","AVL","AVF","V1","V2","V3","V4","V5","V6"],
      "voltage_min": -1500,
      "value_min": -4095,
      "frequency": 500,
      "voltage_max": 1500,
      "value_max": 5978
    },
    "leads": [
      {"values": [4647,4914,4250,2985,1655,<...>,1696,413,1,0,2197,2857,2861,2857,2857]},
      {"values": [5978,5978,5978,1775,103,<...>,392,0,0,0,1960,5628,5978,5978,5978,3658]},
      {"values": [912,729,1184,-829,-1063,<...>,-221,0,0,1068,1553,897,712,1160,-838]},
      {"values": [3639,3730,3503,1630,602,<...>,110,0,0,2085,3318,3646,3739,3515,1661]},
      {"values": [1136,1319,864,1437,1099,<...>,221,0,0,242,495,1151,1336,888,1459,1130]},
      {"values": [2504,2412,2640,194,-496,<...>,1844,2824,2496,2404,2628,202,-509,-217]},
      {"values": [1669,1608,1760,46,-336,<...>,1883,1664,1603,1752,52,-344,-145,-48,-219]},
      {"values": [-472,-531,-382,861,1542,<...>,1883,1957,1956,566,-253,-467,-524,-378]},
      {"values": [-1294,-1353,-1205,43,726,<...>,51,742,1061,1132,1138,-249,-1070,-1296]},
      {"values": [-1042,-1115,-967,288,968,<...>,1303,1366,1370,-17,-844,-1075,-1125]},
      {"values": [-2425,-2486,-2334,-1086,<...>,-2463,-2318,-1083,-389,-72,1,1,-1389]},
      {"values": [-2426,-2487,-2335,-1087,<...>,-2319,-1084,-390,-73,0,0,-1390,-2212]}
    ]
  }
}

As ecg stream has constant frequency, it is considered regular data.

Meta Attributes

Attribute Type Description
channels array[string] Array of available ECG channels in this chunk
voltage_min integer Minimal voltage value, mV
value_min integer Minimal allowed value inside each ECG lead
frequency integer ECG points per second
voltage_max integer Maximum voltage value, mV
value_max integer Maximum allowed value inside each ECG lead

leads is an array of ECG leads ordered the same way as meta's channels, and its each item contains the values array - ECG points of the lead.

Fetal Doppler

Stream Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-fetal-doppler-stream>
  <id>2ef5b268-81ae-4bf4-bfea-77e5d0aeebd3</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-04-23T03:04:04.146000000+00:00</measured-at>
  <measured-at-local>2019-04-22T20:04:04.146000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-04-23T03:04:04.146000000+00:00</client-received-at>
  <client-received-at-local>2019-04-22T20:04:04.146000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <measurement-duration>6000</measurement-duration>
  <pulse-last>130</pulse-last>
  <pulse-min>105</pulse-min>
  <pulse-max>157</pulse-max>
  <pulse-average>134.5</pulse-average>
  <chunks>
    <chunk>
      <id>70b0928e-0421-40f7-8ac4-6112af000938</id>
      <position>0</position>
      <start>0</start>
      <end>3000</end>
      <heartrate>{"irregular":{"pulse":[113,990,147,1990,157,2990],"pulse_quality":[255,990,255,1990,255,2990]}}</heartrate>
    </chunk>
    <chunk>
      <id>343eb010-9ebe-4ceb-a76f-9a8d020e4128</id>
      <position>1</position>
      <start>3000</start>
      <end>6000</end>
      <heartrate>{"irregular":{"pulse":[105,1015,155,1989,130,2989],"pulse_quality":[255,1015,255,1989,255,2989]}}</heartrate>
    </chunk>
  </chunks>
</measurements-fetal-doppler-stream>

See Common Attributes

Attribute Type Values Description
pulse-last integer 0..300 Pulse rate (beats per minute) at the end of the measurement
pulse-min integer 0..300 Minimum pulse rate (beats per minute) during the measurement
pulse-max integer 0..300 Maximum pulse rate (beats per minute) during the measurement
pulse-average float 0..300 Average pulse rate (beats per minute) during the measurement

Each chunk includes heartrate container with data in the internal format (JSON compatible):

{
  "irregular": {
    "pulse": [
      105,
      1015,
      155,
      1989,
      130,
      2989
    ],
    "pulse_quality": [
      255,
      1015,
      255,
      1989,
      255,
      2989
    ]
  }
}

Fetal doppler has no stable data rate, so data is considered irregular.

pulse is an array of flatten value/time pairs: even items are pulse values and odd ones are times in milliseconds from the start of the chunk: [v0, t0, v1, t1, ... , vn, tn]

pulse_quality is an additional quality stream. It's an array of value/time pairs that corresponds by length and times to the pulse array:

Glucose

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-glucose>
  <id>6c5071e0-c136-4e20-976a-f873e3d36408</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-07-22T01:05:18.079000000+00:00</measured-at>
  <measured-at-local>2019-07-21T18:05:18.079000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-07-22T01:05:03.098145000+00:00</client-received-at>
  <client-received-at-local>2019-07-21T18:05:03.098145000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <value>96.0</value>
  <units>mg</units>
  <value-in-mg>96</value-in-mg>
  <value-in-mmol>5.3</value-in-mmol>
  <state>unknown</state>
  <sensor>
    <name>H3GMA_BAYER_2.6_1017F3</name>
    <serial>45393831313536000000</serial>
    <address>00:80:25:10:17:F3</address>
    <manufacturer>H3 System Co., Ltd.</manufacturer>
    <firmware>Ver 2.6</firmware>
    <device-db-title>BA-110 for Bayer</device-db-title>
    <device-db-id>153</device-db-id>
  </sensor>
</measurements-glucose>

See Common Attributes

Attribute Type Values Description
value float Original or converted value
units string mg, mmol Original or converted units
value-in-mg float Blood glucose value in mg/dL
value-in-mmol float Blood glucose value in mmol/L
state string unknown, before_meals, after_meals, fasting, bedtime, snacks Meal state (before, after, fasting)

Heart Rate

Stream Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-heartrate-stream>
  <id>c451a714-b233-45e1-ab56-df212d4bce8c</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-07-14T23:16:40.404000000+00:00</measured-at>
  <measured-at-local>2019-07-14T16:16:40.404000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-07-14T23:16:40.404000000+00:00</client-received-at>
  <client-received-at-local>2019-07-14T16:16:40.404000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <measurement-duration>6002</measurement-duration>
  <pulse-last>102</pulse-last>
  <pulse-min>102</pulse-min>
  <pulse-max>102</pulse-max>
  <pulse-average>102</pulse-average>
  <chunks>
    <chunk>
      <id>652bb758-cd2b-434e-838d-e8756d7e68ca</id>
      <position>0</position>
      <start>0</start>
      <end>3003</end>
      <heartrate>{"irregular":{"pulse":[102,2076],"pulse_quality":[255,2076]}}</heartrate>
    </chunk>
    <chunk>
      <id>d39e139a-01d1-454e-b2f4-c1f7020899e6</id>
      <position>1</position>
      <start>3003</start>
      <end>6002</end>
      <heartrate>{"irregular":{"pulse":[102,48,102,1057,102,2083],"pulse_quality":[255,48,255,1057,255,2083]}}</heartrate>
    </chunk>
  </chunks>
</measurements-heartrate-stream>

See Common Attributes

Attribute Type Values Description
pulse-last integer 0..300 Pulse rate (beats per minute) at the end of the measurement
pulse-min integer 0..300 Minimum pulse rate (beats per minute) during the measurement
pulse-max integer 0..300 Maximum pulse rate (beats per minute) during the measurement
pulse-average float 0..300 Average pulse rate (beats per minute) during the measurement

Each chunk includes heartrate container with data in the internal format (JSON compatible):

{
  "irregular": {
    "pulse": [
      102,
      48,
      102,
      1057,
      102,
      2083
    ],
    "pulse_quality": [
      255,
      48,
      255,
      1057,
      255,
      2083
    ]
  }
}

heartrate container within a chunk

{
  "irregular": {
    "pulse": [      102,      48,      102,      1057,      102,      2083    ],
    "pulse_quality": [      255,      48,      255,      1057,      255,      2083    ]
  }
}

Heart Rate monitors have no constant data rate so data is considered irregular.

pulse is an array of flattened value/time pairs: even items are pulse values and odd ones are times in milliseconds from the start of the chunk: [v0, t0, v1, t1, ... , vn, tn]

pulse_quality is an additional quality stream (optional). It's an array of value/time pairs that corresponds by length and times to the pulse array:

Ketone

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-ketone>
  <id>6c5071e0-c136-4e20-976a-f873e3d36408</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2020-05-21T15:05:18.079000000+00:00</measured-at>
  <measured-at-local>2020-05-21T08:05:18.079000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2020-05-21T15:05:25.079000000+00:00</client-received-at>
  <client-received-at-local>2020-05-21T08:05:25.074000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <value>0.1</value>
  <units>mmol</units>
  <value-in-mmol>0.1</value-in-mmol>
  <hematocrit>22</hematocrit>
  <sensor>
    <name>TAIDOC TD4289</name>
    <serial>45393831313536000000</serial>
    <address>C0:26:DA:03:5C:E2</address>
    <manufacturer>TaiDoc/FORA</manufacturer>
    <firmware>V1.2.29</firmware>
    <device-db-title>TD-4289</device-db-title>
    <device-db-id>520</device-db-id>
  </sensor>
</measurements-ketone>

See Common Attributes

Attribute Type Values Description
value float Original or converted value
units string mmol Original or converted units
value-in-mmol float Blood ketone value in mmol/L
hematocrit float Hematocrit value percentage

Lactate

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-lactate>
  <id>6c5071e0-c136-4e20-976a-f873e3d36408</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2020-05-21T15:05:18.079000000+00:00</measured-at>
  <measured-at-local>2020-05-21T08:05:18.079000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2020-05-21T15:05:25.079000000+00:00</client-received-at>
  <client-received-at-local>2020-05-21T08:05:25.074000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <value>0.1</value>
  <units>mmol</units>
  <value-in-mmol>0.1</value-in-mmol>
  <hematocrit>22</hematocrit>
  <sensor>
    <name>TAIDOC TD4289</name>
    <serial>45393831313536000000</serial>
    <address>C0:26:DA:03:5C:E2</address>
    <manufacturer>TaiDoc/FORA</manufacturer>
    <firmware>V1.2.29</firmware>
    <device-db-title>TD-4289</device-db-title>
    <device-db-id>520</device-db-id>
  </sensor>
</measurements-lactate>

See Common Attributes

Attribute Type Values Description
value float Original or converted value
units string mmol Original or converted units
value-in-mmol float Blood lactate value in mmol/L
hematocrit float Hematocrit value percentage

Note

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-note>
  <id>51af6035-4779-4e84-b854-a05566e3e713</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-07-22T01:05:18.079000000+00:00</measured-at>
  <measured-at-local>2019-07-21T18:05:18.079000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-07-22T01:05:03.098145000+00:00</client-received-at>
  <client-received-at-local>2019-07-21T18:05:03.098145000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <sensor>
    <name>generic glucose</name>
    <address>00:80:25:10:17:F3</address>
    <device-db-id>67</device-db-id>
    <device-db-title>Generic Glucose Meter Smart</device-db-title>
    <manufacturer>Unknown Manufacturer</manufacturer>
  </sensor>
  <predefined-tags-str>scope_glucose,glucose_qc</predefined-tags-str>
  <body>14.4 mmol/L</body>
</measurements-note>

See Common Attributes

Attribute Type Values Description
body string Arbitrary text Text content of the note

Note measurement could be result of some non-medical data received from the device, like Quality Control of glucose.

Oxygen Saturation

Stream Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-oxygen-stream>
  <id>86735ebc-d752-4110-89f6-e06d5519e9d2</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-08-09T16:10:09.751000000+00:00</measured-at>
  <measured-at-local>2019-08-09T11:10:09.751000000-05:00</measured-at-local>
  <measured-at-utc-offset>-18000</measured-at-utc-offset>
  <client-received-at>2019-08-09T16:10:09.751000000+00:00</client-received-at>
  <client-received-at-local>2019-08-09T11:10:09.751000000-05:00</client-received-at-local>
  <client-received-at-utc-offset>-18000</client-received-at-utc-offset>
  <measurement-duration>20001</measurement-duration>
  <spo2-min>95</spo2-min>
  <spo2-max>98</spo2-max>
  <spo2-last>96</spo2-last>
  <spo2-average>95.35</spo2-average>
  <pulse-min>96</pulse-min>
  <pulse-max>102</pulse-max>
  <pulse-last>98</pulse-last>
  <pulse-average>100.1</pulse-average>
  <is-low-battery>false</is-low-battery>
  <battery-percentage>67</battery-percentage>
  <chunks>
    <chunk>
      <id>d43f3553-3732-4145-a8ec-f5e05c95a019</id>
      <position>0</position>
      <start>0</start>
      <end>20001</end>
      <oxygen>{"regular":{"waveform":{"values":[]}},"irregular":{"spo2":[96,56,95,1059,96,2060,96,3044,96,4045,96,5047,95,6072,95,7047,95,8047,95,9048,95,10046,95,11046,95,12058,96,13046,95,14061,95,15047,95,16047,95,17048,95,18056,96,19058],"pulse":[101,56,100,1059,100,2060,100,3044,101,4045,101,5047,102,6069,102,7047,102,8046,101,9047,100,10045,100,11045,99,12058,99,13046,99,14060,99,15046,99,16046,99,17048,99,18056,99,19058],"pulse_quality":[255,56,255,1059,255,2060,255,3044,255,4045,255,5047,255,6069,255,7047,255,8046,255,9047,255,10045,255,11045,255,12058,255,13046,255,14060,255,15046,255,16046,255,17048,255,18056,255,19058],"spo2_quality":[255,56,255,1059,255,2060,255,3044,255,4045,255,5047,255,6072,255,7047,255,8047,255,9048,255,10046,255,11046,255,12058,255,13046,255,14061,255,15047,255,16047,255,17048,255,18056,255,19058]}}</oxygen>
    </chunk>
  </chunks>
</measurements-oxygen-stream>

See Common Attributes

Attribute Type Values Description
spo2-min integer 0..100 Minimum oxygen saturation value (%) during the measurement
spo2-max integer 0..100 Maximum oxygen saturation value (%) during the measurement
spo2-last integer 0..100 Oxygen saturation value (%) at the end of the measurement
spo2-average float 0..300 Average oxygen saturation value (%) during the measurement
pulse-min integer 0..300 Minimum pulse value (bpm) during the measurement
pulse-max integer 0..300 Maximum pulse value (bpm) during the measurement
pulse-last integer 0..300 Pulse value (bpm) at the end of the measurement
pulse-average float 0..300 Average pulse rate (beats per minute) during the measurement

Each chunk includes oxygen container with data in the internal format (JSON compatible):

oxygen container within a chunk

{
  "regular": {
    "waveform": {
      "meta": {
        "value_min": 0, "offset": 0, "frequency": 75, "value_max": 65535
      },
      "values": [
        48242,51721,54736,57127,58882,60002,60378,59977,58945,57540,55927,54186,52309,50262,47991,45515,42954,40485,38288,
        36483,35085,34044,33289,32736,32308,25852,25921,25981,26014,26012,25996,25991,26021,26115,26324,26724,27398,28406,
        <...>
        47911,52265,55473,57315,57862,57338,56034,54267,52283,50242,48224,46246,44293,42364,40511,38827,37420,36367,35692,
        35355,35278,35392,35648,35999,36377,36699,36877,36829,36495,35865,34972,33880,32672,31427,30200,29014,27877,26786
      ]
    }
  },
  "irregular": {
    "spo2": [
      97,333,97,666,97,1000,97,1333,97,1666,97,2000,97,2333,97,2666,97,3000,97,3333,98,3666,98,4000,98,4333,98,4666,98,5000,
      98,5333,98,5666,98,6000,98,6333,98,6666,98,7000,98,7333,98,7666,98,8000,98,8333,97,8666,97,9000,97,9333,97,9666,97,
      10000,97,10333,97,10666,97,11000,97,11333,97,11666,97,12000,97,12333,97,12666
    ],
    "pulse": [
      83,333,83,666,83,1000,83,1333,83,1666,83,2000,83,2333,81,2666,81,3000,81,3333,80,3666,80,4000,80,4333,80,4666,80,5000,
      80,5333,80,5666,80,6000,80,6333,80,6666,79,7000,79,7333,79,7666,79,8000,79,8333,79,8666,79,9000,79,9333,79,9666,78,
      10000,78,10333,78,10666,77,11000,77,11333,77,11666,76,12000,76,12333,74,12666
    ],
    "pulse_quality": [
      255,333,255,666,255,1000,255,1333,255,1666,255,2000,255,2333,255,2666,255,3000,255,3333,255,3666,255,4000,255,4333,255,
      4666,255,5000,255,5333,255,5666,255,6000,255,6333,255,6666,255,7000,255,7333,255,7666,255,8000,255,8333,255,8666,255,
      9000,255,9333,255,9666,255,10000,255,10333,255,10666,255,11000,255,11333,255,11666,255,12000,255,12333,255,12666
    ],
    "spo2_quality": [
      255,333,255,666,255,1000,255,1333,255,1666,255,2000,255,2333,255,2666,255,3000,255,3333,255,3666,255,4000,255,4333,255,
      4666,255,5000,255,5333,255,5666,255,6000,255,6333,255,6666,255,7000,255,7333,255,7666,255,8000,255,8333,255,8666,255,
      9000,255,9333,255,9666,255,10000,255,10333,255,10666,255,11000,255,11333,255,11666,255,12000,255,12333,255,12666
    ]
  }
}

Oxygen saturation stream taken from pulse oximeter always has two irregular data types - spo2 and pulse - and may have a regular one - waveform. As for waveform stream, it has stable frequency, min and max values in its meta but the exact meaning and interpretation of waveform data varies across different medical devices and is generally device vendor-specific.

spo2 and pulse arrays consist of flattened value/time pairs: even items are values and odd ones are times in milliseconds from the start of the chunk: [v0, t0, v1, t1, ... , vn, tn]

spo2_quality and pulse_quality are additional quality streams, some devices (for example, Nonin oximeters) can assign quality to pulse and oxygen saturation data. These streams are arrays of value/time pairs that corresponds by length and times to the according spo2 and pulse arrays:

Realtime Activity

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-realtime-activity>
  <id>0d786650-7971-4c78-9c46-80bef4c764a7</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-07-13T07:00:00.000000000+00:00</measured-at>
  <measured-at-local>2019-07-13T00:00:00.000000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-07-13T07:02:03.098145000+00:00</client-received-at>
  <client-received-at-local>2019-07-13T00:02:03.098145000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <measurement-duration>44760327</measurement-duration>
  <active-time>1860326</active-time>
  <steps>3568</steps>
  <climb>0</climb>
  <distance>2511</distance>
  <calories>4289</calories>
  <walking-burnt-calories>2670</walking-burnt-calories>
  <daily-body-burnt-calories>1619</daily-body-burnt-calories>
</measurements-realtime-activity>

See Common Attributes

Attribute Type Values Description
active-time integer >=0 Activity duration in milliseconds
steps integer >=0 Number of steps
climb integer >=0 Total climb height in meters
distance integer >=0 Total distance in meters
calories integer >=0 Total Calories Burned (kcal)
walking-burnt-calories integer >=0 Calories Burned by walking (tracked with fitness tracker or accelerometer) (kcal)
daily-body-burnt-calories integer >=0 Calories Burned by the body itself (kcal)

Realtime activity corresponds to the values currently shown on the device.

Realtime Spirometry

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-realtime-spirometry>
  <id>2bd5addb-2baf-234a-b33a-af6430b300cd</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2018-04-29T17:10:27.040000000+00:00</measured-at>
  <measured-at-local>2018-04-29T10:10:27.040000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2018-04-29T17:10:27.040000000+00:00</client-received-at>
  <client-received-at-local>2018-04-29T10:10:27.040000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <spirometry>{"FEV6p":{"value":95.2,"units":"%"},"FEF25":{"value":474,"units":"cl/s"},"VTChart":{"Loops":{"Units":{"volume":"cl","time":"msec"},"Points":[[0,1,100,14,200,32,300,49,400,64,500,75,600,84,700,91,800,96,900,100,1000,102,1100,104,1200,105,1300,107,1400,107]]}},"MV":{"value":0,"units":"cl/m"},"FVC":{"value":271,"units":"cl"},"FEF75":{"value":214,"units":"cl/s"},"MVV":{"value":0,"units":"cl"},"FVCChart":{"Loops":{"Units":{"volume":"ml","flow":"cl/s"},"Points":[[2250,-49,2220,-71,2190,-87,2160,-103,2130,-118,2100,-131,2070,-143,2040,-154,2010,-163,1980,-168,1950,-174,1920,-180,1890,-186,1860,-191,1830,-195,1800,-198,1770,-201,1740,-203,1710,-205,1680,-206,1650,-207,1620,-207,1590,-206,1560,-203,1530,-201,1500,-201,1470,-203,1440,-204,1410,-204,1380,-203,1350,-202,1320,-201,1290,-203,1260,-206,1230,-208,1200,-209,1170,-209,1140,-210,1110,-213,1080,-216,1050,-218,1020,-219,990,-220,960,-220,930,-221,900,-224,870,-224,840,-226,810,-228,780,-229,750,-231,720,-232,690,-231,660,-230,630,-229,600,-229,570,-228,540,-228,510,-225,480,-223,450,-220,420,-218,390,-214,360,-210,330,-205,300,-199,270,-192,240,-185,210,-178,180,-170,150,-164,120,-156,90,-146,60,-134,30,-108,0,-85,30,51,60,171,90,257,120,291,150,320,180,348,210,361,240,376,270,391,300,405,330,413,360,426,390,439,420,442,450,450,480,462,510,464,540,461,570,467,600,462,630,465,660,468,690,474,720,475,750,467,780,463,810,465,840,449,870,446,900,446,930,438,960,434,990,431,1020,423,1050,416,1080,413,1110,410,1140,403,1170,397,1200,390,1230,384,1260,380,1290,371,1320,367,1350,363,1380,363,1410,358,1440,351,1470,342,1500,338,1530,330,1560,328,1590,326,1620,319,1650,313,1680,306,1710,299,1740,291,1770,282,1800,276,1830,264,1860,259,1890,253,1920,245,1950,238,1980,232,2010,222,2040,214,2070,208,2100,200,2130,195,2160,188,2190,181,2220,174,2250,162,2280,156,2310,148,2340,135,2370,127,2400,120,2430,110,2460,103,2490,90,2520,81,2550,69,2580,62,2610,56,2640,46,2670,40,2700,30],[2670,-29,2640,-36,2610,-59,2580,-89,2550,-113,2520,-132,2490,-144,2460,-151,2430,-156,2400,-159,2370,-161,2340,-165,2310,-167,2280,-170,2250,-172,2220,-175,2190,-177,2160,-180,2130,-183,2100,-184,2070,-183,2040,-181,2010,-180,1980,-179,1950,-178,1920,-176,1890,-175,1860,-175,1830,-175,1800,-175,1770,-175,1740,-176,1710,-177,1680,-177,1650,-177,1620,-177,1590,-177,1560,-176,1530,-176,1500,-176,1470,-176,1440,-175,1410,-174,1380,-173,1350,-172,1320,-170,1290,-169,1260,-169,1230,-169,1200,-170,1170,-172,1140,-172,1110,-173,1080,-173,1050,-173,1020,-171,990,-168,960,-167,930,-163,900,-159,870,-156,840,-152,810,-149,780,-147,750,-145,720,-141,690,-137,660,-133,630,-127,600,-122,570,-115,540,-99,510,-85,540,113,570,199,600,226,630,247,660,276,690,294,720,316,750,332,780,343,810,347,840,354,870,362,900,371,930,375,960,380,990,383,1020,386,1050,383,1080,379,1110,378,1140,377,1170,380,1200,382,1230,373,1260,363,1290,360,1320,355,1350,351,1380,345,1410,340,1440,336,1470,340,1500,331,1530,328,1560,326,1590,324,1620,326,1650,321,1680,311,1710,303,1740,302,1770,294,1800,286,1830,284,1860,279,1890,270,1920,258,1950,252,1980,247,2010,236,2040,234,2070,229,2100,225,2130,212,2160,201,2190,195,2220,186,2250,179,2280,169,2310,158,2340,150,2370,145,2400,136,2430,128,2460,121,2490,109,2520,102,2550,89,2580,79,2610,65,2640,57,2670,46,2700,40,2730,32,2760,27,2790,19,2820,7],[2790,-27,2760,-46,2730,-61,2700,-71,2670,-77,2640,-82,2610,-86,2580,-91,2550,-98,2520,-109,2490,-121,2460,-128,2430,-135,2400,-139,2370,-143,2340,-144,2310,-146,2280,-147,2250,-149,2220,-150,2190,-152,2160,-151,2130,-150,2100,-148,2070,-147,2040,-146,2010,-146,1980,-146,1950,-145,1920,-145,1890,-146,1860,-147,1830,-146,1800,-146,1770,-146,1740,-146,1710,-146,1680,-145,1650,-145,1620,-145,1590,-144,1560,-142,1530,-140,1500,-139,1470,-138,1440,-138,1410,-138,1380,-138,1350,-138,1320,-138,1290,-138,1260,-139,1230,-139,1200,-139,1170,-138,1140,-135,1110,-130,1080,-123,1050,-112,1020,-93,1050,55,1080,171,1110,243,1140,265,1170,287,1200,307,1230,327,1260,334,1290,342,1320,352,1350,355,1380,359,1410,366,1440,377,1470,384,1500,384,1530,389,1560,393,1590,397,1620,405,1650,397,1680,400,1710,399,1740,402,1770,394,1800,397,1830,392,1860,388,1890,391,1920,387,1950,386,1980,389,2010,384,2040,384,2070,378,2100,371,2130,366,2160,361,2190,354,2220,346,2250,340,2280,338,2310,331,2340,322,2370,318,2400,312,2430,307,2460,297,2490,294,2520,289,2550,280,2580,275,2610,272,2640,265,2670,258,2700,255,2730,247,2760,243,2790,232,2820,228,2850,221,2880,216,2910,211,2940,206,2970,198,3000,185,3030,176,3060,166,3090,158,3120,147,3150,138,3180,133,3210,128,3240,122,3270,113,3300,105,3330,96,3360,90,3390,85,3420,78,3450,73,3480,67,3510,61,3540,56,3570,39],[3540,-6]]},"BestLoop":{"Units":{"volume":"ml","flow":"cl/s"},"Points":[[0,81,50,250,100,319,150,344,200,369,250,401,300,407,350,438,400,445,450,457,500,457,550,457,600,463,650,470,700,463,750,457,800,445,850,445,900,432,950,426,1000,413,1050,407,1100,401,1150,388,1200,382,1250,369,1300,357,1350,357,1400,344,1450,332,1500,326,1550,319,1600,307,1650,300,1700,288,1750,275,1800,263,1850,250,1900,231,1950,231,2000,213,2050,194,2100,194,2150,175,2200,156,2250,150,2300,131,2350,119,2400,106,2450,87,2500,68,2550,56,2600,43,2550,0,2500,-12,2450,-31,2400,-87,2350,-112,2300,-137,2250,-150,2200,-156,2150,-163,2100,-169,2050,-169,2000,-175,1950,-181,1900,-181,1850,-175,1800,-175,1750,-175,1700,-169,1650,-169,1600,-169,1550,-175,1500,-175,1450,-175,1400,-175,1350,-175,1300,-175,1250,-169,1200,-169,1150,-169,1100,-163,1050,-163,1000,-169,950,-169,900,-169,850,-169,800,-163,750,-156,700,-156,650,-150,600,-144,550,-144,500,-131,450,-125,400,-119,350,-94,300,0]]}},"VCC":{"value":0,"units":"cl"},"TE":{"value":0,"units":"msec"},"FEV3p":{"value":100,"units":"%"},"PEFF":{"value":0,"units":"cl/s"},"IC":{"value":0,"units":"cl"},"ERV":{"value":0,"units":"cl"},"FVV12":{"value":0,"units":"cl"},"FIV1":{"value":196,"units":"cl"},"IVC":{"value":0,"units":"cl"},"FIV1p":{"value":88.3,"units":"%"},"FEF2575":{"value":364,"units":"cl/s"},"FEF50":{"value":363,"units":"cl/s"},"FET":{"value":131,"units":"msec"},"PIF":{"value":184,"units":"cl/s"},"FEV1":{"value":258,"units":"cl"},"EVC":{"value":0,"units":"cl"},"FIVC":{"value":222,"units":"cl"},"FVV1":{"value":0,"units":"cl"},"PEF":{"value":475,"units":"cl/s"},"FVV62":{"value":0,"units":"cl/s"},"TV_TI":{"value":0,"units":"l/s"},"TI":{"value":0,"units":"msec"},"FEV6":{"value":271,"units":"cl"},"PEFF2":{"value":0,"units":"cl/s"},"FVVC2":{"value":0,"units":"cl"},"FVV6":{"value":0,"units":"cl/s"},"TV":{"value":0,"units":"cl"},"FEV1p":{"value":95.2,"units":"%"},"FVVC":{"value":0,"units":"cl"},"VEXT":{"value":80,"units":"ml"},"MVVcalc":{"value":903,"units":"cl"},"FEV3":{"value":271,"units":"cl"},"IT":{"value":0,"units":"cl"},"VCC2":{"value":0,"units":"cl"}}</spirometry>
  <drugs>pre</drugs>
  <test-type>fvc</test-type>
  <protocol>generic_spirometry</protocol>
</measurements-realtime-spirometry>

See Common Attributes

Realtime spirometry corresponds to all the data that is currently received by the SDK. The format is the same as Spirometry.

Respiration Rate

Stream Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-respiration-rate-stream>
  <id>93ed959e-1503-4320-ae19-8a114c2a24ba</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-09-17T10:47:38.060000000+00:00</measured-at>
  <measured-at-local>2019-09-17T03:47:38.060000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-09-17T10:47:40.060000000+00:00</client-received-at>
  <client-received-at-local>2019-09-17T03:47:40.060000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <measurement-duration>0</measurement-duration>
  <units>breaths_per_minute</units>
  <respiration-rates-min>16</respiration-rates-min>
  <respiration-rates-max>16</respiration-rates-max>
  <respiration-rates-last>16</respiration-rates-last>
  <respiration-rates-amount>1</respiration-rates-amount>
  <respiration-rates-average>16.0</respiration-rates-average>
  <chunks>
    <chunk>
      <id>84233f9e-6826-40df-a209-490055e1d554</id>
      <position>0</position>
      <start>0</start>
      <end>0</end>
      <is-low-battery>false</is-low-battery>
      <battery-percentage>76</battery-percentage>
      <respiration-rate>{"irregular": {"respiration_rates": [16, 0], "respiration_rates_quality": [255, 0]}}</respiration-rate>
      <respiration-rates-min>16</respiration-rates-min>
      <respiration-rates-max>16</respiration-rates-max>
      <respiration-rates-last>16</respiration-rates-last>
      <respiration-rates-amount>16</respiration-rates-amount>
      <respiration-rates-average>16.0</respiration-rates-average>
    </chunk>
  </chunks>
</measurements-respiration-rate-stream>

See Common Attributes

Attribute Type Values Description
units string breaths_per_minute Original units received
respiration-rates-min integer Minimum respiration rate of the stream
respiration-rates-max integer Maximum respiration rate of the stream
respiration-rates-last integer Last respiration rate value of the stream
respiration-rates-amount integer The number of respiration rate points of the stream
respiration-rates-average float Average respiration rate value of the stream

Each chunk includes respiration_rate container with data in the internal format (JSON compatible):

{
  "irregular": {
    "respiration_rates": [
      12,
      0,
      13,
      53
    ],
    "respiration_rates_quality": [
      255,
      0,
      255,
      53
    ]
  }
}

respiration rate container within a chunk

{
  "irregular": {
    "respiration_rates": [      12,      0,      13,      53    ],
    "respiration_rates_quality": [      255,      0,      255,      53    ]
  }
}

Respiration rate monitors have no constant data rate so data is considered irregular.

respiration_rates is an array of flattened value/time pairs: even items are respiration rate values and odd ones are times in milliseconds from the start of the chunk: [v0, t0, v1, t1, ... , vn, tn]

respiration_rates_quality is an additional quality stream (optional). It's an array of value/time pairs that corresponds by length and times to the respiration_rates array:

Sleep Tracking

Stream Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-sleep-stream>
  <id>06bd76a6-b276-4fa4-be64-98a9b22a0a2b</id>
  <instance-id>a49c07ac-c8e9-455c-9ee7-a816485f2851</instance-id>
  <measured-at>2019-09-24T06:55:00+00:00</measured-at>
  <measured-at-local>2019-09-23T23:55:00-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-09-24T19:47:48+00:00</client-received-at>
  <client-received-at-local>2019-09-24T12:47:48-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <measurement-duration>33900001</measurement-duration>
  <movements>1108</movements>
  <total-time>33900000</total-time>
  <sleep-time>33000000</sleep-time>
  <awakening-time>900000</awakening-time>
  <sleep-efficiency>0.973451</sleep-efficiency>
  <times-awakened>2</times-awakened>
  <awakening-threshold>40</awakening-threshold>
  <light-sleep-threshold>10</light-sleep-threshold>
  <point-resolution>300000</point-resolution>
  <is-final>true</is-final>
  <chunks>
    <chunk>
      <chunk>
        <id>5299644f-80da-41f0-9b3d-62522c6646ef</id>
        <position>0</position>
        <start>0</start>
        <end>33900001</end>
        <activity>{"irregular":{"movements":[12,300000,13,900000,4,1200000,15,1500000,1,2700000,26,3000000,28,3300000,9,3600000,14,3900000,17,4200000,8,4500000,6,4800000,12,5100000,25,5700000,10,6000000,5,6900000,49,7500000,5,7800000,12,8100000,15,9000000,31,9900000,5,10200000,25,11700000,5,12000000,14,12300000,2,12900000,20,14400000,5,15000000,23,15600000,10,16200000,2,17100000,25,17400000,10,17700000,15,18600000,2,18900000,30,19500000,13,19800000,17,20100000,13,20400000,4,21000000,12,21300000,6,21600000,30,22200000,23,22800000,19,23100000,19,23400000,16,23700000,8,24000000,1,24600000,1,25800000,28,26700000,21,27000000,8,27300000,25,28800000,22,29100000,17,29700000,24,30300000,8,30600000,8,30900000,22,31500000,16,31800000,10,32100000,12,32400000,22,32700000,70,33000000,82,33300000,18,33600000,3,33900000]}}</activity>
      </chunk>
    </chunk>
  </chunks>
  <sensor>
    <name>LSBand2S</name>
    <serial>D409FD3F0C22</serial>
    <address>D4:09:FD:3F:0C:22</address>
    <manufacturer>Transtek</manufacturer>
    <model>418B2</model>
    <firmware>T059</firmware>
    <hardware>68</hardware>
    <device-db-title>Mambo 2</device-db-title>
    <device-db-id>428</device-db-id>
  </sensor>
</measurements-sleep-stream>

See Common Attributes

Attribute Type Values Description
movements integer >= 0 Total movements count during the sleep measurement
sleep-time integer >= 0 Time in milliseconds user was sleeping
awakening-time integer >= 0 Time in milliseconds user was awake
sleep-efficiency float 0..1 The ratio between the total sleep time and the total recording time (sleep-time / measurement-duration)
times-awakened integer >= 0 Number of periods in sleep time with movements, gap between periods must be > 1.5 min
awakening-threshold integer >= 0 Number of movements
light-sleep-threshold integer >= 0 Optional Number of movements
point-resolution integer > 0 Minimal period of time between points, milliseconds.
is-final boolean true if this is final or only part of the sleep stream. Otherwise, the sleep stream could be continued.

Each chunk includes activity container with data in the internal format (JSON compatible).

{
  "irregular": {
    "movements": [
      7,
      60000,
      2,
      120000,
      7,
      180000
    ]
  }
}

Sleep stream does not have stable frequency so it is considered irregular data.

movements array consists of flattened value/time pairs: even items are movements count and odd ones are times in milliseconds from the start of the chunk: [v0, t0, v1, t1, ... , vn, tn]

Spirometry

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-spirometry>
  <id>2bd5addb-2baf-234a-b33a-af6430b300cd</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2018-04-29T17:10:27.040000000+00:00</measured-at>
  <measured-at-local>2018-04-29T10:10:27.040000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2018-04-29T17:10:27.040000000+00:00</client-received-at>
  <client-received-at-local>2018-04-29T10:10:27.040000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <spirometry>{"FEV6p":{"value":95.2,"units":"%"},"FEF25":{"value":474,"units":"cl/s"},"VTChart":{"Loops":{"Units":{"volume":"cl","time":"msec"},"Points":[[0,1,100,14,200,32,300,49,400,64,500,75,600,84,700,91,800,96,900,100,1000,102,1100,104,1200,105,1300,107,1400,107]]}},"MV":{"value":0,"units":"cl/m"},"FVC":{"value":271,"units":"cl"},"FEF75":{"value":214,"units":"cl/s"},"MVV":{"value":0,"units":"cl"},"FVCChart":{"Loops":{"Units":{"volume":"ml","flow":"cl/s"},"Points":[[2250,-49,2220,-71,2190,-87,2160,-103,2130,-118,2100,-131,2070,-143,2040,-154,2010,-163,1980,-168,1950,-174,1920,-180,1890,-186,1860,-191,1830,-195,1800,-198,1770,-201,1740,-203,1710,-205,1680,-206,1650,-207,1620,-207,1590,-206,1560,-203,1530,-201,1500,-201,1470,-203,1440,-204,1410,-204,1380,-203,1350,-202,1320,-201,1290,-203,1260,-206,1230,-208,1200,-209,1170,-209,1140,-210,1110,-213,1080,-216,1050,-218,1020,-219,990,-220,960,-220,930,-221,900,-224,870,-224,840,-226,810,-228,780,-229,750,-231,720,-232,690,-231,660,-230,630,-229,600,-229,570,-228,540,-228,510,-225,480,-223,450,-220,420,-218,390,-214,360,-210,330,-205,300,-199,270,-192,240,-185,210,-178,180,-170,150,-164,120,-156,90,-146,60,-134,30,-108,0,-85,30,51,60,171,90,257,120,291,150,320,180,348,210,361,240,376,270,391,300,405,330,413,360,426,390,439,420,442,450,450,480,462,510,464,540,461,570,467,600,462,630,465,660,468,690,474,720,475,750,467,780,463,810,465,840,449,870,446,900,446,930,438,960,434,990,431,1020,423,1050,416,1080,413,1110,410,1140,403,1170,397,1200,390,1230,384,1260,380,1290,371,1320,367,1350,363,1380,363,1410,358,1440,351,1470,342,1500,338,1530,330,1560,328,1590,326,1620,319,1650,313,1680,306,1710,299,1740,291,1770,282,1800,276,1830,264,1860,259,1890,253,1920,245,1950,238,1980,232,2010,222,2040,214,2070,208,2100,200,2130,195,2160,188,2190,181,2220,174,2250,162,2280,156,2310,148,2340,135,2370,127,2400,120,2430,110,2460,103,2490,90,2520,81,2550,69,2580,62,2610,56,2640,46,2670,40,2700,30],[2670,-29,2640,-36,2610,-59,2580,-89,2550,-113,2520,-132,2490,-144,2460,-151,2430,-156,2400,-159,2370,-161,2340,-165,2310,-167,2280,-170,2250,-172,2220,-175,2190,-177,2160,-180,2130,-183,2100,-184,2070,-183,2040,-181,2010,-180,1980,-179,1950,-178,1920,-176,1890,-175,1860,-175,1830,-175,1800,-175,1770,-175,1740,-176,1710,-177,1680,-177,1650,-177,1620,-177,1590,-177,1560,-176,1530,-176,1500,-176,1470,-176,1440,-175,1410,-174,1380,-173,1350,-172,1320,-170,1290,-169,1260,-169,1230,-169,1200,-170,1170,-172,1140,-172,1110,-173,1080,-173,1050,-173,1020,-171,990,-168,960,-167,930,-163,900,-159,870,-156,840,-152,810,-149,780,-147,750,-145,720,-141,690,-137,660,-133,630,-127,600,-122,570,-115,540,-99,510,-85,540,113,570,199,600,226,630,247,660,276,690,294,720,316,750,332,780,343,810,347,840,354,870,362,900,371,930,375,960,380,990,383,1020,386,1050,383,1080,379,1110,378,1140,377,1170,380,1200,382,1230,373,1260,363,1290,360,1320,355,1350,351,1380,345,1410,340,1440,336,1470,340,1500,331,1530,328,1560,326,1590,324,1620,326,1650,321,1680,311,1710,303,1740,302,1770,294,1800,286,1830,284,1860,279,1890,270,1920,258,1950,252,1980,247,2010,236,2040,234,2070,229,2100,225,2130,212,2160,201,2190,195,2220,186,2250,179,2280,169,2310,158,2340,150,2370,145,2400,136,2430,128,2460,121,2490,109,2520,102,2550,89,2580,79,2610,65,2640,57,2670,46,2700,40,2730,32,2760,27,2790,19,2820,7],[2790,-27,2760,-46,2730,-61,2700,-71,2670,-77,2640,-82,2610,-86,2580,-91,2550,-98,2520,-109,2490,-121,2460,-128,2430,-135,2400,-139,2370,-143,2340,-144,2310,-146,2280,-147,2250,-149,2220,-150,2190,-152,2160,-151,2130,-150,2100,-148,2070,-147,2040,-146,2010,-146,1980,-146,1950,-145,1920,-145,1890,-146,1860,-147,1830,-146,1800,-146,1770,-146,1740,-146,1710,-146,1680,-145,1650,-145,1620,-145,1590,-144,1560,-142,1530,-140,1500,-139,1470,-138,1440,-138,1410,-138,1380,-138,1350,-138,1320,-138,1290,-138,1260,-139,1230,-139,1200,-139,1170,-138,1140,-135,1110,-130,1080,-123,1050,-112,1020,-93,1050,55,1080,171,1110,243,1140,265,1170,287,1200,307,1230,327,1260,334,1290,342,1320,352,1350,355,1380,359,1410,366,1440,377,1470,384,1500,384,1530,389,1560,393,1590,397,1620,405,1650,397,1680,400,1710,399,1740,402,1770,394,1800,397,1830,392,1860,388,1890,391,1920,387,1950,386,1980,389,2010,384,2040,384,2070,378,2100,371,2130,366,2160,361,2190,354,2220,346,2250,340,2280,338,2310,331,2340,322,2370,318,2400,312,2430,307,2460,297,2490,294,2520,289,2550,280,2580,275,2610,272,2640,265,2670,258,2700,255,2730,247,2760,243,2790,232,2820,228,2850,221,2880,216,2910,211,2940,206,2970,198,3000,185,3030,176,3060,166,3090,158,3120,147,3150,138,3180,133,3210,128,3240,122,3270,113,3300,105,3330,96,3360,90,3390,85,3420,78,3450,73,3480,67,3510,61,3540,56,3570,39],[3540,-6]]},"BestLoop":{"Units":{"volume":"ml","flow":"cl/s"},"Points":[[0,81,50,250,100,319,150,344,200,369,250,401,300,407,350,438,400,445,450,457,500,457,550,457,600,463,650,470,700,463,750,457,800,445,850,445,900,432,950,426,1000,413,1050,407,1100,401,1150,388,1200,382,1250,369,1300,357,1350,357,1400,344,1450,332,1500,326,1550,319,1600,307,1650,300,1700,288,1750,275,1800,263,1850,250,1900,231,1950,231,2000,213,2050,194,2100,194,2150,175,2200,156,2250,150,2300,131,2350,119,2400,106,2450,87,2500,68,2550,56,2600,43,2550,0,2500,-12,2450,-31,2400,-87,2350,-112,2300,-137,2250,-150,2200,-156,2150,-163,2100,-169,2050,-169,2000,-175,1950,-181,1900,-181,1850,-175,1800,-175,1750,-175,1700,-169,1650,-169,1600,-169,1550,-175,1500,-175,1450,-175,1400,-175,1350,-175,1300,-175,1250,-169,1200,-169,1150,-169,1100,-163,1050,-163,1000,-169,950,-169,900,-169,850,-169,800,-163,750,-156,700,-156,650,-150,600,-144,550,-144,500,-131,450,-125,400,-119,350,-94,300,0]]}},"VCC":{"value":0,"units":"cl"},"TE":{"value":0,"units":"msec"},"FEV3p":{"value":100,"units":"%"},"PEFF":{"value":0,"units":"cl/s"},"IC":{"value":0,"units":"cl"},"ERV":{"value":0,"units":"cl"},"FVV12":{"value":0,"units":"cl"},"FIV1":{"value":196,"units":"cl"},"IVC":{"value":0,"units":"cl"},"FIV1p":{"value":88.3,"units":"%"},"FEF2575":{"value":364,"units":"cl/s"},"FEF50":{"value":363,"units":"cl/s"},"FET":{"value":131,"units":"msec"},"PIF":{"value":184,"units":"cl/s"},"FEV1":{"value":258,"units":"cl"},"EVC":{"value":0,"units":"cl"},"FIVC":{"value":222,"units":"cl"},"FVV1":{"value":0,"units":"cl"},"PEF":{"value":475,"units":"cl/s"},"FVV62":{"value":0,"units":"cl/s"},"TV_TI":{"value":0,"units":"l/s"},"TI":{"value":0,"units":"msec"},"FEV6":{"value":271,"units":"cl"},"PEFF2":{"value":0,"units":"cl/s"},"FVVC2":{"value":0,"units":"cl"},"FVV6":{"value":0,"units":"cl/s"},"TV":{"value":0,"units":"cl"},"FEV1p":{"value":95.2,"units":"%"},"FVVC":{"value":0,"units":"cl"},"VEXT":{"value":80,"units":"ml"},"MVVcalc":{"value":903,"units":"cl"},"FEV3":{"value":271,"units":"cl"},"IT":{"value":0,"units":"cl"},"VCC2":{"value":0,"units":"cl"}}</spirometry>
  <drugs>pre</drugs>
  <test-type>fvc</test-type>
  <protocol>generic_spirometry</protocol>
</measurements-spirometry>

See Common Attributes

Attribute Type Values Description
spirometry string Serialized data in JSON format Measurement data
drugs string pre, post Pre- or Post-Bronchodilator spirometry testing
test-type string fvc, mvv, vc, pef, vt Test Type: Maximum Voluntary Ventilation (MVV), Vital Capacity (VC), Forced Vital Capacity (FVC), Oximetry (OXY), Peak Expiratory Flow (PEF), Tidal Volume (VT)
protocol string generic_spirometry Serialization protocol

Sample spirometry container within a spirometry attribute

{
    "FEV6p": {
        "value": 95.2,
        "units": "%"
    },
    "FEF25": {
        "value": 474,
        "units": "cl/s"
    },
    "VTChart": {
        "Loops": {
            "Units": {
                "volume": "cl",
                "time": "msec"
            },
            "Points": [[0,1,<...>,1400,107]]
        }
    },
    "MV": {
        "value": 0,
        "units": "cl/m"
    },
    "FVC": {
        "value": 271,
        "units": "cl"
    },
    "FEF75": {
        "value": 214,
        "units": "cl/s"
    },
    "MVV": {
        "value": 0,
        "units": "cl"
    },
    "FVCChart": {
        "Loops": {
            "Units": {
                "volume": "ml",
                "flow": "cl/s"
            },
            "Points": [[2250,-49,<...>,3570,39],[3540,-6]]
        },
        "BestLoop": {
            "Units": {
                "volume": "ml",
                "flow": "cl/s"
            },
            "Points": [[0,81,<...>,300,0]]
        }
    },
    "VCC": {
        "value": 0,
        "units": "cl"
    },
    "TE": {
        "value": 0,
        "units": "msec"
    },
    "FEV3p": {
        "value": 100,
        "units": "%"
    },
    "PEFF": {
        "value": 0,
        "units": "cl/s"
    },
    "IC": {
        "value": 0,
        "units": "cl"
    },
    "ERV": {
        "value": 0,
        "units": "cl"
    },
    "FVV12": {
        "value": 0,
        "units": "cl"
    },
    "FIV1": {
        "value": 196,
        "units": "cl"
    },
    "IVC": {
        "value": 0,
        "units": "cl"
    },
    "FIV1p": {
        "value": 88.3,
        "units": "%"
    },
    "FEF2575": {
        "value": 364,
        "units": "cl/s"
    },
    "FEF50": {
        "value": 363,
        "units": "cl/s"
    },
    "FET": {
        "value": 131,
        "units": "msec"
    },
    "PIF": {
        "value": 184,
        "units": "cl/s"
    },
    "FEV1": {
        "value": 258,
        "units": "cl"
    },
    "EVC": {
        "value": 0,
        "units": "cl"
    },
    "FIVC": {
        "value": 222,
        "units": "cl"
    },
    "FVV1": {
        "value": 0,
        "units": "cl"
    },
    "PEF": {
        "value": 475,
        "units": "cl/s"
    },
    "FVV62": {
        "value": 0,
        "units": "cl/s"
    },
    "TV_TI": {
        "value": 0,
        "units": "l/s"
    },
    "TI": {
        "value": 0,
        "units": "msec"
    },
    "FEV6": {
        "value": 271,
        "units": "cl"
    },
    "PEFF2": {
        "value": 0,
        "units": "cl/s"
    },
    "FVVC2": {
        "value": 0,
        "units": "cl"
    },
    "FVV6": {
        "value": 0,
        "units": "cl/s"
    },
    "TV": {
        "value": 0,
        "units": "cl"
    },
    "FEV1p": {
        "value": 95.2,
        "units": "%"
    },
    "FVVC": {
        "value": 0,
        "units": "cl"
    },
    "VEXT": {
        "value": 80,
        "units": "ml"
    },
    "MVVcalc": {
        "value": 903,
        "units": "cl"
    },
    "FEV3": {
        "value": 271,
        "units": "cl"
    },
    "IT": {
        "value": 0,
        "units": "cl"
    },
    "VCC2": {
        "value": 0,
        "units": "cl"
    }
}

Spirometry Attributes

Attribute Description
FVC Expiratory forced vital capacity (the volume of air that can forcibly be blown out after full inspiration)
FEV05, FEV075 Forced expiratory volume in 0.5 or 0.75 seconds (the volume of air that can forcibly be blown out in one second, after full inspiration)
FEV1, FEV2, FEV3, FEV6, FEV10 Forced expiratory volume in 1, 2, 3, 6 or 10 seconds (the volume of air that can forcibly be blown out in 1, 2, 3, 6 or 10 seconds, after full inspiration)
PEF Peak expiratory flow (the maximal flow or speed achieved during the maximally forced expiration initiated at full inspiration)
FEF25, FEF50, FEF75 Forced expiratory flow (the flow or speed of air coming out of the lung during the 25%, 50% or 75% portion of a forced expiration)
FEF2575 Forced expiratory flow (the flow or speed of air coming out of the lung during the 25%
FET Forced Expiratory Time (the length of the expiration in seconds)
PEFF Best PEF
FVVC Best FVC
FVV1 Best FEV1
FEV05p FEV05/FVC * 100%
FEV075p FEV075/FVC * 100%
FEV1p FEV1/FVC * 100%
FEV2p FEV2/FVC * 100%
FEV3p FEV3/FVC * 100%
FEV6p FEV6/FVC * 100%
VEXT Extrapolated volume of lungs
FIVC Forced inspiratory vital capacity (the maximum volume of air inhaled from the point of maximum expiration)
FIV1 Forced inspiratory volume in 1 second (the volume of air inspired in one second, after full expiration)
FIV1p FIV1/FVC * 100%
PIF Peak inspiratory flow (the maximal flow or speed achieved during the inspiration after full expiration)
IT FEV1/VC
ELA Estimated lungs age
FVVC2 Second best FVC
FVV12 Second best FEV1
PEFF2 Second best PEF
FVV6 Best FEV6
FVV62 Second best FEV6
VCC2 Second best VC
MVVcalc Calculated maximum voluntary ventilation (volume of air expired in a specified period during repetitive maximal effort)
VC Vital capacity (maximum amount of air a person can expel from the lungs after a maximum inhalation)
EVC Expiratory vital capacity (the maximum volume of air exhaled from the point of maximum inhalation)
IVC Inspiratory vital capacity (the maximum volume of air inhaled from the point of maximum expiration)
TV Tidal volume (the volume of air moved into or out of the lungs during quiet breathing)
IRV Inspiratory reserve volume (the maximal volume that can be inhaled from the end-inspiratory level)
IC Inspiratory capacity (the sum of IRV and TV)
VCC max between EVC and IVC
ERV Expiratory reserve volume (the additional amount of air that can be expired from the lungs by determined effort after normal expiration)
MV Minute ventilation (the volume of air inhaled or exhaled per minute)
RR Respiratory rate
TI Inspiratory time
TE Expiratory time
MET2575 Mid expiratory time (time taken between 25% and 75% of the forced expired volume)
TE_TI TE/TI
MVV Maximal voluntary ventilation (volume of air expired in a specified period during repetitive maximal effort)
DTPEF Time from exhalation start to the time when PEF is reached
FEF7585 Forced expiratory flow (the flow or speed of air coming out of the lung between the 75% and 85% portion of a forced expiration)
FIF25, FIF50, FIF75 Forced inspiratory flow (the flow or speed of air coming in the lung during the 25%, 50% or 75% portion of a forced inspiration)
TV_TI TV/TI
TV_TIp TV / TI * 100%
TI_TTOT TI / (TI + TE)
FEV1_FEV6p FEV1/FEV6
FEV1PB Personal Best FEV1
PEFPB Personal Best PEF
FEV1PBp FEV1/ FEV1PB * 100%
PEFPBp PEF/PEFPB * 100
FEV1_FEV10p FEV1/FEV10
FEV075_VCp FEV075 / VC * 100%
FEV1_VCp FEV1 / VC * 100%
FEV3_VCp FEV3 / VC * 100%
FEV075_FEV6p FEV075 / FEV6 * 100%
FEF50_VCp FEF50 / VC * 100%
FEF50_FVCp FEF50 / FVC * 100%
FEF2575_FVCp FEF2575 / FVC * 100%
FIV1_FIVCp FIV1 / FIVC * 100%
TI_TTOTp TI_TTOT * 100%
TV_TIp TV / TI * 100%
BREATHS_PER_MIN number of breaths per minute
FVCChart / VCChart / MVVChart / VTChart Chart structure, see below

Spirometry Chart structure

{
    "Loops": {
        "Units": {
            "volume": "ml",
            "flow": "cl/s"
        },
        "Points": [[2250,-49,<...>,3570,39],[2150,-59,<...>,3580,49]]
    },
    "BestLoop": {
        "Units": {
            "volume": "ml",
            "flow": "cl/s"
        },
        "Points": [[2150,-59,<...>,3580,49]]
    }
}

Points array consists of flattened abscissa/value pairs: even items are abscissa and odd ones are value: [x0, v0, x1, v1, ... , xn, vn]

Test type abscissa value
FVC volume flow
MVV time volume
VC time volume
VT time volume

Temperature

Stream Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-temperature-stream>
  <id>654b7356-7a0c-4afa-838b-179be9807c66</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-08-26T23:27:00.000000000+00:00</measured-at>
  <measured-at-local>2019-08-26T16:27:00.000000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-08-26T23:27:00.000000000+00:00</client-received-at>
  <client-received-at-local>2019-08-26T16:27:00.000000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <units>C</units>
  <temperatures-min>36.6</temperatures-min>
  <temperatures-max>37.1</temperatures-max>
  <temperatures-last>37.1</temperatures-last>
  <sensor>
    <name>FORA IR20</name>
    <serial>1261315180000321</serial>
    <address>c026df000357</address>
    <manufacturer>FORA</manufacturer>
    <model>1261</model>
    <device-db-title>IR20b Bluetooth Smart</device-db-title>
    <device-db-id>169</device-db-id>
  </sensor>
  <chunks>
    <chunk>
      <id>4521fc43-0da8-4c42-b3f6-c42cd16a4286</id>
      <position>0</position>
      <start>0</start>
      <end>60000</end>
      <is-low-battery>false</is-low-battery>
      <battery-percentage>67</battery-percentage>
      <temperature>{"irregular":{"temperatures":[36.6, 0, 36.8, 30000]}}</temperature>
    </chunk>
    <chunk>
      <id>3a9edc7b-35fc-44af-b915-791311e6b979</id>
      <position>1</position>
      <start>60000</start>
      <end>120000</end>
      <is-low-battery>false</is-low-battery>
      <battery-percentage>43</battery-percentage>
      <temperature>{"irregular":{"temperatures":[37.0, 0, 37.1, 30000]}}</temperature>
    </chunk>
  </chunks>
</measurements-temperature-stream>

See Common Attributes

Attribute Type Values Description
units string C, F Temperature units
temperatures-min float Minimum temperature of the stream
temperatures-max float Maximum temperature of the stream
temperatures-last float Last temperature value of the stream
temperatures-average float Average temperature value of the stream

Each chunk includes temperature container with data in the internal format (JSON compatible):

{
  "irregular": {
    "temperatures": [
      36.6,
      0,
      36.9,
      60000,
      37.1,
      120000
    ]
  }
}

Thermometers have no constant data rate so data is considered irregular.

temperatures is an array of flattened value/time pairs: even items are temperature values and odd ones are times in milliseconds from the start of the chunk: [v0, t0, v1, t1, ... , vn, tn]

temperatures_quality is an additional quality stream (optional). It's an array of value/time pairs that corresponds by length and times to the temperatures array:

Uric Acid

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-uric-acid>
  <id>6c5071e0-c136-4e20-976a-f873e3d36408</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2020-05-21T15:05:18.079000000+00:00</measured-at>
  <measured-at-local>2020-05-21T08:05:18.079000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2020-05-21T15:05:25.079000000+00:00</client-received-at>
  <client-received-at-local>2020-05-21T08:05:25.074000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <value>506.0</value>
  <units>umol</units>
  <value-in-mg>8.5</value-in-mg>
  <value-in-umol>506.0</value-in-umol>
  <hematocrit>nil</hematocrit>
  <sensor>
    <name>TAIDOC TD4289</name>
    <serial>45393831313536000000</serial>
    <address>C0:26:DA:03:5C:E2</address>
    <manufacturer>TaiDoc/FORA</manufacturer>
    <firmware>V1.2.29</firmware>
    <device-db-title>TD-4289</device-db-title>
    <device-db-id>520</device-db-id>
  </sensor>
</measurements-uric-acid>

See Common Attributes

Attribute Type Values Description
value float Original or converted value
units string mg, umol Original or converted units
value-in-mg float Blood uric acid value in mg/dL
value-in-umol float Blood uric acid value in μmol/L
hematocrit float Hematocrit value percentage

Weight

Discrete Measurement Type

Model

<?xml version="1.0" encoding="UTF-8"?>
<measurements-weight>
  <id>1553d4d9-76b1-48ba-8051-d9699aaab882</id>
  <instance-id>ae770afe-2e21-4f31-b410-2c2f5006b5b1</instance-id>
  <measured-at>2019-08-14T14:38:16.000000000+00:00</measured-at>
  <measured-at-local>2019-08-14T07:38:16.000000000-07:00</measured-at-local>
  <measured-at-utc-offset>-25200</measured-at-utc-offset>
  <client-received-at>2019-08-14T14:38:18.000000000+00:00</client-received-at>
  <client-received-at-local>2019-08-14T07:38:18.000000000-07:00</client-received-at-local>
  <client-received-at-utc-offset>-25200</client-received-at-utc-offset>
  <value>78.6</value>
  <units>kg</units>
  <value-in-metric>78.6</value-in-metric>
  <value-in-us>173.3</value-in-us>
  <bc-fat-percent>18.8</bc-fat-percent>
  <bc-muscle-weight>60.7</bc-muscle-weight>
  <bc-water-percent>57.8</bc-water-percent>
  <bc-bones-weight>3.2</bc-bones-weight>
  <bc-amr>2883</bc-amr>
  <bc-metabolic-age>31</bc-metabolic-age>
  <bc-overall-rating>5</bc-overall-rating>
  <bcp-user-number>1</bcp-user-number>
  <bcp-height-in-mm>1700</bcp-height-in-mm>
  <bcp-age>34</bcp-age>
  <bcp-activity-level>1</bcp-activity-level>
  <bcp-gender>male</bcp-gender>
</measurements-weight>

See Common Attributes

Attribute Type Values Description
value float Original or converted value
units string kg, lb Original or converted units
value-in-metric float Weight in metric system (Kilograms)
value-in-us float Weight in US system (Pounds)

Body Composition Attributes

Attribute Type Values Description
bc-bmi float Body Mass Index
bc-fat-percent float Fat percent
bc-muscle-percent float Muscles percent
bc-muscle-weight float Muscles weight
bc-water-percent float Water percent
bc-bones-percent float Bones percent
bc-bones-weight float Bones weight
bc-visceral-fat-level integer Visceral Fat Level
bc-visceral-fat-percent float Visceral Fat percent
bc-visceral-fat-weight float Visceral Fat weight
bc-bmr integer Basal Metabolic Rate
bc-amr integer Active Metabolic Rate
bc-metabolic-age integer Metabolic Age
bc-overall-rating integer Overall Rating
bcp-user-number integer User number
bcp-height-in-mm integer Height of the person in millimeters
bcp-age integer Age of the person
bcp-activity-level integer Activity Level
bcp-gender string male, female, other, unknown Gender of the person