Marc-André Bombeck
f75337e6f2
feat(measurements): record blood ketones and show the glucose-ketone index ( #1367 )
...
Ketones had to live in a custom metric, with the glucose-ketone index typed
in by hand beside it, where it drifted from the readings it came from.
- Type: BLOOD_KETONES (beta-hydroxybutyrate, mmol/L, migration 0496),
plausible from 0 to 10: the blood ketone meters read 0.0 to 8.0 and print
HI above it, and a venous value off a lab sheet fits under 10. Zero is a
real reading. No band, no direction, no personal record, off the Coach
snapshot and the correlations; readable over MCP and owned by the glucose
module like glucose.
- Entry: choosing blood ketones in the measurement form also takes the
glucose from the same fingerstick, in the account's glucose unit. Both
rows go through the array arm of POST /api/measurements with one
timestamp, so they land in one transaction or not at all.
- Index: glucose (mg/dL / 18.0182, the tree's one factor) over ketones,
computed at read time and never stored. Each ketone reading above zero
pairs with the glucose reading at the same instant, else the nearest one
within 15 minutes either side; a tie goes to the same source, then to the
earlier reading. Nothing pairs across a wider gap.
- Surfaces: GET /api/measurements/series takes kind=ketones and
kind=glucoseKetoneIndex (each point names the paired readings), and the
day carries glucoseKetoneIndex when both reading types are visible. The
new Ketones page charts the readings with the index beneath; the day view
shows the index beside the value tiles; the doctor report, its PDF and the
clinician share print it in the glucose group when both leaves are chosen,
since beside the ketones it gives the glucose back.
- FHIR: ketone readings export under LOINC 104816-4 (Beta hydroxybutyrate
[Moles/volume] in Blood). The index is left out: it has no LOINC term,
and both readings it is built from are in the bundle.
- The measurement form's action row moved into its own component to keep
the form inside its size budget.
OpenAPI regenerated; all ten locales; the import unit table lists the type.
2026-11-10 19:28:57 +01:00
..
2026-11-10 19:28:57 +01:00
2026-11-10 19:28:57 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 22:30:50 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 21:35:57 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-21 16:25:25 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-23 19:28:05 +02:00
2026-10-22 09:09:44 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-20 03:34:51 +02:00
2026-11-03 20:32:35 +01:00
2026-10-01 11:17:44 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-23 00:28:38 +02:00
2026-10-25 02:42:09 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 22:30:50 +01:00
2026-11-03 20:32:35 +01:00
2026-10-04 22:17:27 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-22 19:04:20 +02:00
2026-09-26 19:22:03 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-10-23 21:43:55 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-04 23:45:55 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-06 17:53:56 +01:00
2026-11-04 21:24:12 +01:00
2026-11-10 19:28:57 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-20 09:08:40 +02:00
2026-11-03 20:32:35 +01:00
2026-10-25 07:16:44 +01:00
2026-11-04 00:12:49 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-25 05:46:08 +01:00
2026-10-25 07:16:44 +01:00
2026-10-20 09:08:40 +02:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-22 05:48:05 +02:00
2026-11-03 20:49:31 +01:00
2026-10-11 13:09:12 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-05 12:53:40 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-22 18:22:36 +02:00
2026-11-03 20:32:35 +01:00
2026-10-06 21:49:27 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-10-25 11:42:37 +01:00
2026-10-05 12:40:55 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-21 19:24:21 +02:00
2026-10-08 08:41:25 +02:00
2026-11-04 22:07:34 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-09 10:59:18 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-10-04 08:17:34 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-22 07:18:57 +02:00
2026-11-03 20:32:35 +01:00
2026-11-10 18:30:25 +01:00
2026-11-03 20:32:35 +01:00
2026-10-04 11:33:42 +02:00
2026-11-03 20:32:35 +01:00
2026-10-04 22:14:14 +02:00
2026-11-03 23:31:37 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-10-09 01:03:02 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-02 20:06:15 +01:00
2026-11-03 20:32:35 +01:00
2026-10-24 12:14:33 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-08 13:03:37 +02:00
2026-11-03 20:32:35 +01:00
2026-10-08 13:03:37 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-04 15:56:56 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 23:24:49 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-16 03:57:46 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-05 14:12:09 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-05 13:07:22 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-08 10:02:39 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-22 18:59:07 +02:00
2026-10-04 11:33:45 +02:00
2026-10-21 21:56:16 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-22 01:19:01 +02:00
2026-11-03 20:32:35 +01:00
2026-11-07 01:04:12 +01:00
2026-11-04 22:02:48 +01:00
2026-11-03 21:35:57 +01:00
2026-10-25 11:18:14 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 22:30:50 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-29 23:13:43 +01:00
2026-10-15 12:23:09 +02:00
2026-10-23 13:30:10 +02:00
2026-10-04 11:33:45 +02:00
2026-11-03 20:32:35 +01:00
2026-10-16 01:34:17 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 21:35:57 +01:00
2026-11-03 20:32:35 +01:00
2026-10-20 10:52:54 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 22:30:50 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-20 13:07:24 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-20 09:47:20 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:49:31 +01:00
2026-10-25 03:19:54 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 21:35:57 +01:00
2026-10-23 22:41:36 +02:00
2026-11-03 21:35:57 +01:00
2026-10-23 22:41:36 +02:00
2026-10-03 18:53:28 +02:00
2026-11-03 22:13:32 +01:00
2026-10-29 11:00:01 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 23:30:21 +01:00
2026-11-07 01:04:26 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-06 17:49:38 +01:00
2026-11-03 22:30:50 +01:00
2026-11-03 20:32:35 +01:00
2026-10-22 05:38:36 +02:00
2026-11-03 20:32:35 +01:00
2026-10-20 03:35:03 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-16 05:48:00 +02:00
2026-11-03 21:33:17 +01:00
2026-09-28 00:06:47 +02:00
2026-11-03 21:35:57 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-04 10:14:10 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-20 13:01:45 +02:00
2026-11-03 20:32:35 +01:00
2026-10-26 00:47:24 +01:00
2026-10-20 13:01:45 +02:00
2026-10-26 00:05:21 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-23 21:54:25 +02:00
2026-10-20 13:01:45 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-10-25 08:04:27 +01:00
2026-10-22 07:18:56 +02:00
2026-10-20 12:48:17 +02:00
2026-10-21 21:40:06 +02:00
2026-10-22 05:30:00 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-22 21:23:19 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-10-16 00:22:23 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-05 12:40:55 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-25 06:43:51 +01:00
2026-09-26 20:18:55 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-23 12:57:47 +02:00
2026-10-19 10:53:59 +02:00
2026-10-15 15:10:18 +02:00
2026-10-14 19:08:22 +02:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-10-25 02:14:17 +01:00
2026-10-15 15:12:57 +02:00
2026-10-25 06:27:44 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-15 21:48:57 +02:00
2026-11-03 20:32:35 +01:00
2026-10-23 13:12:23 +02:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-10-23 12:57:47 +02:00
2026-10-04 11:37:57 +02:00
2026-11-03 21:35:57 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-25 06:51:51 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 22:30:50 +01:00
2026-10-22 05:38:45 +02:00
2026-10-23 12:36:09 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 22:30:50 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-09-26 20:06:36 +02:00
2026-11-03 20:32:35 +01:00
2026-10-16 00:25:04 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 21:35:57 +01:00
2026-10-24 12:14:33 +02:00
2026-10-20 09:08:40 +02:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:49:31 +01:00
2026-10-25 17:26:40 +01:00
2026-10-29 21:50:34 +01:00
2026-10-20 16:06:10 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-29 11:05:43 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-26 07:46:50 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-20 10:56:55 +02:00
2026-09-26 22:34:21 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-06 17:44:38 +01:00
2026-11-06 17:44:38 +01:00
2026-10-22 05:30:00 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-06 18:03:37 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-23 11:02:10 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-10-08 22:57:47 +02:00
2026-10-24 23:06:00 +02:00
2026-11-03 20:32:35 +01:00
2026-10-23 13:30:10 +02:00
2026-10-15 22:49:00 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-07 01:33:19 +01:00
2026-11-03 20:32:35 +01:00
2026-10-25 00:35:10 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-29 10:58:04 +01:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:49:31 +01:00
2026-11-07 00:38:53 +01:00
2026-11-03 20:32:35 +01:00
2026-10-23 19:27:52 +02:00
2026-11-03 20:49:31 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-07 01:04:13 +01:00
2026-09-26 20:22:12 +02:00
2026-11-03 20:32:35 +01:00
2026-10-16 02:59:47 +02:00
2026-10-21 16:25:26 +02:00
2026-10-14 19:08:22 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-10-20 09:08:40 +02:00
2026-10-21 12:59:43 +02:00
2026-11-03 20:32:35 +01:00
2026-10-22 05:30:00 +02:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-03 20:32:35 +01:00
2026-11-05 16:04:08 +01:00
2026-11-03 20:32:35 +01:00
2026-10-03 17:53:36 +02:00
2026-11-03 20:32:35 +01:00
2026-10-21 20:51:13 +02:00
2026-11-03 20:32:35 +01:00