Bolus subType: dual/square
Jump to...(notable fields on this type)
NB: All fields are required unless otherwise noted.
Jump to example JSON:
type
[ingestion, storage, client] The string bolus
.
QUICK SUMMARY
Required:
jellyfish: yes
platform: yes
subType
[ingestion, storage, client] The string dual/square
.
QUICK SUMMARY
Required:
jellyfish: yes
platform: yes
Changelog for subType
_schemaVersion
? (future): We plan to migrate from dual/square
to combo
in the future.
This is the sub-type of bolus
event that represents a bolus insulin dose programmed to deliver part of the dose using the immediate delivery strategy (a normal
bolus) and the remainder using the delivery spread evenly over a duration
strategy (a square
bolus). The data model is essentially just a combination of the models for normal
and square
boluses.
Most (and perhaps all) insulin pumps ask the user to divide the normal
and square
portions of a dual/square
bolus by percentage of the total insulin dose. We do not encode this programmed percentage directly, but it is recoverable (for surfacing in a client application's UI) through computation using the appropriate combination of values from the normal
, extended
, expectedNormal
, and expectedExtended
fields and/or the appropriate sum of these.
We plan to migrate all Tidepool data to use combo
as the value of this sub-type rather than dual/square
in order to improve the transparency of the data model and avoid /
in a subType
string.
normal
[ingestion, storage, client] A floating point value representing units of insulin.
QUICK SUMMARY
Required:
jellyfish: yes
platform: yes
Numerical type: Floating point value rounded to the appropriate significant figures for the device's precision.
Range:
min: >= 0.0
max: 100.0
See the explanation of this field in the documentation for normal
boluses.
Note that a 0 for normal
is allowable in more circumstances for a combo bolus than for a simple normal
bolus: as long as the extended
is non-zero for the combo bolus, normal
may have a value of 0 without the requirement that a non-zero expectedNormal
also be present.
expectedNormal
This field is optional.
[ingestion, storage, client] A floating point value representing units of insulin.
QUICK SUMMARY
Required:
jellyfish: no (optional)
platform: no (optional)
Numerical type: Floating point value rounded to the appropriate significant figures for the device's precision.
Range:
min: > `normal`
max: 100.0
See the explanation of this field in the documentation for normal
boluses.
Note that if a dual/square
bolus is interrupted or canceled during the normal
portion of delivery, by definition the extended
delivery should not yet have begun, so the value of extended
and duration
should be 0 and expectedExtended
and expectedDuration
should have values.
extended
[ingestion, storage, client] A floating point value representing units of insulin.
QUICK SUMMARY
Required:
jellyfish: yes
platform: yes
Numerical type: Floating point value rounded to the appropriate significant figures for the device's precision.
Range:
min: >= 0.0
max: 100.0
See the explanation of this field in the documentation for square
boluses.
expectedExtended
This field is optional.
[ingestion, storage, client] A floating point value representing units of insulin.
QUICK SUMMARY
Required:
jellyfish: no (optional)
platform: no (optional)
Numerical type: Floating point value rounded to the appropriate significant figures for the device's precision.
Range:
min: > `extended`
max: 100.0
See the explanation of this field in the documentation for square
boluses.
Note that if a dual/square
bolus is interrupted or canceled during the extended
portion of delivery, by definition the normal
delivery should have completed successfully, so the expectedNormal
field should not have a value. An example of this type of interruption appears below in the examples.
duration
[ingestion, storage, client] An integer value representing a duration of time in milliseconds.
QUICK SUMMARY
Required:
jellyfish: yes
platform: yes
Numerical type: Integer value representing milliseconds.
Range:
min: 0
max: 86400000
See the explanation of this field in the documentation for square
boluses.
As with square
boluses, the duration
is the elapsed time for the extended
portion of the bolus. While some insulin pumps that deliver normal
insulin doses at a slower rate (minutes rather than seconds) for user comfort do include the duration of the normal
delivery in the data, we do not currently include this information in our bolus data model(s). As with the square
boluses, it is in theory possible for a user to input 0 duration
for the extended
portion of a combo
bolus, effectively programming a normal
bolus in a total amount equal to the normal
and extended
insulin values added together.
expectedDuration
This field is optional.
[ingestion, storage, client] An integer value representing an original programmed duration of time in milliseconds when the programmed event did not complete due to interruption or user cancellation.
QUICK SUMMARY
Required:
jellyfish: no (optional)
platform: no (optional)
Numerical type: Integer value representing milliseconds.
Range:
min: >= `duration`
max: 86400000
See the explanation of this field in the documentation for square
boluses.
clockDriftOffset
See common fields.
conversionOffset
See common fields.
deviceId
See common fields.
deviceTime
See common fields.
time
See common fields.
timezoneOffset
See common fields.
uploadId
See common fields.
_active
See common fields.
_groupId
See common fields.
_schemaVersion
See common fields.
_version
See common fields.
createdTime
See common fields.
guid
See common fields.
id
See common fields.
example (client)
{
"type": "bolus",
"subType": "dual/square",
"normal": 6.25,
"extended": 5.75,
"expectedExtended": 8.625,
"duration": 23400000,
"expectedDuration": 35100000,
"clockDriftOffset": 0,
"conversionOffset": 0,
"deviceId": "DevId0987654321",
"deviceTime": "2018-05-14T18:17:07",
"guid": "dc114f19-74fe-4075-9676-38faec7cf0cc",
"id": "d184a41eaf984afcbe553071f80bcdec",
"time": "2018-05-14T08:17:07.035Z",
"timezoneOffset": 600,
"uploadId": "SampleUploadId"
}
example (ingestion)
{
"type": "bolus",
"subType": "dual/square",
"normal": 9.25,
"extended": 5.5,
"expectedExtended": 8.25,
"duration": 57600000,
"expectedDuration": 86400000,
"clockDriftOffset": 0,
"conversionOffset": 0,
"deviceId": "DevId0987654321",
"deviceTime": "2018-05-14T18:17:07",
"time": "2018-05-14T08:17:07.035Z",
"timezoneOffset": 600,
"uploadId": "SampleUploadId"
}
example (storage)
{
"type": "bolus",
"subType": "dual/square",
"normal": 2.25,
"extended": 9.5,
"expectedExtended": 14.25,
"duration": 48600000,
"expectedDuration": 72900000,
"_active": true,
"_groupId": "abcdef",
"_schemaVersion": 0,
"_version": 0,
"clockDriftOffset": 0,
"conversionOffset": 0,
"createdTime": "2018-05-14T08:17:12.035Z",
"deviceId": "DevId0987654321",
"deviceTime": "2018-05-14T18:17:07",
"guid": "cf850a7a-1f28-4bbc-8a56-36cbe0326f20",
"id": "4f8b8b133b22401aa1f281be9eb954ad",
"time": "2018-05-14T08:17:07.035Z",
"timezoneOffset": 600,
"uploadId": "SampleUploadId"
}