|
1 | 1 | ## Checklist for CGM Implementation |
2 | 2 |
|
3 | | -(Key: |
| 3 | +### CBG (Continous Blood Glucose value) |
4 | 4 |
|
5 | | - - `[x]` available in data protocol/documented in spec and implemented |
6 | | - - `[-]` available in data protocol/documented in spec but *not* yet implemented |
7 | | - - `[?]` unknown whether available in data protocol/documented in spec; *not* yet implemented |
8 | | - - `*[ ]` TODO: needs implementation! |
9 | | - - `[ ]` unavailable in data protocol and/or not documented in spec and not yet implemented) |
10 | | - |
11 | | -### Required if Present |
12 | | - |
13 | | -#### CBG |
14 | | - |
15 | | - - `[ ]` cbg values |
16 | | - - `[ ]` units of cbg values (read from device, not hard-coded) |
17 | | - - `[ ]` out-of-range values (LO or HI) |
18 | | - - `[ ]` out-of-range value thresholds (e.g., often 40 for low and 400 for high on CGMs) |
| 5 | + - [ ] cbg values |
| 6 | + - [ ] units of cbg values (read from device, not hard-coded) |
| 7 | + - [ ] out-of-range values (LO or HI) |
| 8 | + - [ ] out-of-range value thresholds (e.g., often 40 for low and 400 for high on CGMs) |
19 | 9 |
|
20 | 10 | Device-specific? (Add any device-specific notes/additions here.) |
21 | 11 |
|
22 | | -#### Device Events |
23 | | - - `[ ]` calibrations |
24 | | - - `[ ]` calibration value |
25 | | - - `[ ]` units of calibration value (read from device, not hard-coded) |
26 | | - - `[ ]` time changes (presence of which is also in the [BtUTC section](#bootstrapping-to-utc) below) |
27 | | - - `[ ]` device display time `from` (before change) and `to` (result of change) |
28 | | - - `[ ]` agent of change (`automatic` or `manual`) |
29 | | - - `[ ]` timezone |
30 | | - - `[ ]` reason for change (read from device) |
| 12 | +### Device Events |
| 13 | + |
| 14 | + - [ ] calibrations |
| 15 | + - [ ] calibration value |
| 16 | + - [ ] units of calibration value (read from device, not hard-coded) |
| 17 | + - [ ] time changes |
| 18 | + - [ ] device display time `from` (before change) and `to` (result of change) |
| 19 | + - [ ] agent of change (`automatic` or `manual`)[^1] |
| 20 | + - [ ] timezone |
| 21 | + - [ ] reason for change (read from device) |
31 | 22 |
|
32 | 23 | Device-specific? (Add any device-specific notes/additions here.) |
33 | 24 |
|
34 | | -#### Settings |
35 | | - |
36 | | - - `[ ]` units preference for BG display |
37 | | - - `[ ]` units of data being uploaded (will be mutated to mmol/L storage units if not mmol/L) |
38 | | - - `[ ]` transmitter ID |
39 | | - - `[ ]` low alert settings |
40 | | - - `[ ]` enabled |
41 | | - - `[ ]` level/threshold |
42 | | - - `[ ]` snooze threshold |
43 | | - - `[ ]` high alert settings |
44 | | - - `[ ]` enabled |
45 | | - - `[ ]` level/threshold |
46 | | - - `[ ]` snooze threshold |
47 | | - - `[ ]` rate-of-change alerts |
48 | | - - `[ ]` fall rate alert |
49 | | - - `[ ]` enabled |
50 | | - - `[ ]` rate threshold for alerting |
51 | | - - `[ ]` rise rate alert |
52 | | - - `[ ]` enabled |
53 | | - - `[ ]` rate threshold for alerting |
54 | | - - `[ ]` out-of-range alerts |
55 | | - - `[ ]` enabled |
56 | | - - `[ ]` snooze time between alerts |
57 | | - - `[ ]` predictive alerts |
58 | | - - `[ ]` low prediction |
59 | | - - `[ ]` enabled |
60 | | - - `[ ]` time sensitivity (minutes to predicted low for alerting) |
61 | | - - `[ ]` high prediction |
62 | | - - `[ ]` enabled |
63 | | - - `[ ]` time sensitivity (minutes to predicted high for alerting) |
64 | | - - `[ ]` calibration alerts/reminders |
65 | | - - `[ ]` pre-reminder |
66 | | - - `[ ]` overdue alert |
| 25 | +### CGM Settings |
| 26 | + |
| 27 | + - [ ] units preference for BG display |
| 28 | + - [ ] units of data being uploaded |
| 29 | + - [ ] transmitter ID (if used) |
| 30 | + - [ ] low alert settings |
| 31 | + - [ ] enabled |
| 32 | + - [ ] level/threshold |
| 33 | + - [ ] snooze threshold |
| 34 | + - [ ] high alert settings |
| 35 | + - [ ] enabled |
| 36 | + - [ ] level/threshold |
| 37 | + - [ ] snooze threshold |
| 38 | + - [ ] rate-of-change alerts |
| 39 | + - [ ] fall rate alert |
| 40 | + - [ ] enabled |
| 41 | + - [ ] rate threshold for alerting |
| 42 | + - [ ] rise rate alert |
| 43 | + - [ ] enabled |
| 44 | + - [ ] rate threshold for alerting |
| 45 | + - [ ] out-of-range alerts |
| 46 | + - [ ] enabled |
| 47 | + - [ ] snooze time between alerts |
| 48 | + - [ ] predictive alerts |
| 49 | + - [ ] low prediction |
| 50 | + - [ ] enabled |
| 51 | + - [ ] time sensitivity (minutes to predicted low for alerting) |
| 52 | + - [ ] high prediction |
| 53 | + - [ ] enabled |
| 54 | + - [ ] time sensitivity (minutes to predicted high for alerting) |
| 55 | + - [ ] calibration alerts/reminders |
| 56 | + - [ ] pre-reminder |
| 57 | + - [ ] overdue alert |
67 | 58 |
|
68 | 59 | Settings history: |
69 | 60 |
|
70 | | - - `[ ]` device stores all changes to settings OR |
71 | | - - `[ ]` device only returns current settings at time of upload |
| 61 | + - [ ] device stores all changes to settings (including previous settings) OR |
| 62 | + - [ ] device only returns current settings at time of upload |
| 63 | + |
| 64 | +No Tidepool data model (yet): |
72 | 65 |
|
73 | | -No Tidepool data model (yet): volume and/or vibrate mode of all alerts (can/should go in `payload`). |
| 66 | + - [ ] volume and/or vibrate mode of all alerts |
74 | 67 |
|
75 | 68 | Device-specific? (Add any device-specific notes/additions here.) |
76 | 69 |
|
77 | | -#### "Bootstrapping" to UTC |
| 70 | +### General |
78 | 71 |
|
79 | | - - `[ ]` index |
80 | | - - `[ ]` UTC timestamp (*Hey, one can dream!*) OR |
81 | | - - `[ ]` internal timestamp or persistent log index (across device communication sessions) to order all pump events (regardless of type), independent of device display time OR |
82 | | - - `[ ]` ephemeral log index (does not persist across device communication sessions) to order all pump events (regardless of type), independent of device display time |
83 | | - - `[ ]` date & time settings changes |
84 | | - - `[ ]` use `common.checkDeviceTime(currentDeviceTime, timezone, cb)` to check against server time |
| 72 | + - [ ] device time is in UTC, with records using UTC timestamps, OR |
| 73 | + - [ ] internal timestamp or persistent log index (across device communication sessions) to order all pump events (regardless of type), independent of device display time OR |
| 74 | + - [ ] ephemeral log index (does not persist across device communication sessions) to order all pump events (regardless of type), independent of device display time |
85 | 75 |
|
86 | 76 | Device-specific? (Add any device-specific notes/additions here.) |
87 | 77 |
|
88 | 78 | ### No Tidepool Data Model Yet |
89 | 79 |
|
90 | 80 | > **NB:** You can and should add to this section if there are other data types documented in the device's data protocol specification but not part of Tidepool's data model (yet). |
91 | 81 |
|
92 | | - - `[ ]` activity/exercise |
93 | | - - `[ ]` food (e.g., Dexcom allows logging carb events) |
94 | | - - `[ ]` notes/other events |
95 | | - |
96 | | -### Tidepool ingestion API |
97 | | - |
98 | | -Choose one of the following: |
99 | | - |
100 | | - - `[ ]` legacy "jellyfish" ingestion API |
101 | | - - `[ ]` platform ingestion API |
102 | | - |
103 | | -### Known implementation issues/TODOs |
| 82 | + - [ ] activity/exercise |
| 83 | + - [ ] food (e.g. carb events) |
| 84 | + - [ ] notes/other events |
104 | 85 |
|
105 | | -*Use this space to describe device-specific known issues or implementation TODOs **not** contained in the above datatype-specific sections.* |
| 86 | +[^1]: where `automatic` indicates an automated method (e.g. device) and `manual` indicates it was done manually (e.g. by a human) |
0 commit comments