Show the dose-count denominator on the compliance bars

Two identical compliance percentages with no context read as a stuck
display, even when the math is correct (a rolling weekly med on cadence is
~100% on every window by construction; a daily med with full adherence
rounds to ~100% on both 7d and 30d). Render the taken-of-expected count
after each rate (e.g. 100% with 4 / 4 and 100% with 52 / 52) so the two rows
stay distinguishable and trustworthy. Falls back to the bare expected count
when only the denominator is on the wire, and to nothing when neither count
is available.

Thread a per-window taken count onto ComplianceDisplay (short.taken /
long.taken) alongside the existing expectedShort / expectedLong, wire both
through to the shared bars component, and regen the OpenAPI schema.

Add unit tests asserting the windows do not structurally collapse to one
value: a daily med with misses outside the 7-day window scores 7d above 30d,
and a rolling weekly med with a partial-adherence history yields a short rate
above the long rate. Add card-part tests for the count / fallback / no-count
render branches.
This commit is contained in:
Marc-André Bombeck committed 2026-06-07 01:06:17 +02:00
1 parent a3410efb5c
commit 61c35740fc
7 files changed
+261 -9

No files matched your search

+10
View File
@@ -8456,12 +8456,17 @@ components:
type: integer
minimum: 0
maximum: 100
taken:
type: integer
minimum: 0
maximum: 9007199254740991
streak:
type: integer
minimum: 0
maximum: 9007199254740991
required:
- rate
- taken
- streak
additionalProperties: false
long:
@@ -8471,8 +8476,13 @@ components:
type: integer
minimum: 0
maximum: 100
taken:
type: integer
minimum: 0
maximum: 9007199254740991
required:
- rate
- taken
additionalProperties: false
currentCycle:
type: object