diff --git a/src/components/medications/glp1-medication-card.tsx b/src/components/medications/glp1-medication-card.tsx
index 002b04117..3f270f4f1 100644
--- a/src/components/medications/glp1-medication-card.tsx
+++ b/src/components/medications/glp1-medication-card.tsx
@@ -23,6 +23,7 @@ import { apiGet, apiPost } from "@/lib/api/api-fetch";
import { formatDateTime, formatTime } from "@/lib/format";
import { getMedicationCategoryLabel } from "@/lib/medications/category-label";
import { formatDose } from "@/lib/medications/format-dose";
+import { formatUnitsPerDose } from "@/components/medications/units-per-dose";
import { getDayOfWeekInTz } from "@/lib/tz/local-day";
import { type InjectionSiteKey } from "@/lib/medications/injection-sites";
import { LogInjectionSiteDialog } from "@/components/medications/log-injection-site-dialog";
@@ -72,6 +73,8 @@ interface ScheduleLite {
/** Cadence fields the supply-runway estimate reads (v1.16.11). */
rrule?: string | null;
rollingIntervalDays?: number | null;
+ /** #219 — per-schedule units consumed per dose. NULL inherits the med level. */
+ unitsPerDose?: number | null;
}
interface DoseChangeLite {
@@ -483,6 +486,16 @@ export function Glp1MedicationCard({
— {formatDose(schedule.dose, t)}
)}
+ {typeof schedule?.unitsPerDose === "number" &&
+ schedule.unitsPerDose > 0 && (
+
+ {" "}
+ ·{" "}
+ {t("medications.perSlotUnits", {
+ units: formatUnitsPerDose(schedule.unitsPerDose),
+ })}
+
+ )}
>
)
) : null;
diff --git a/src/components/medications/medication-card.tsx b/src/components/medications/medication-card.tsx
index 6a43f03cb..afb30fd04 100644
--- a/src/components/medications/medication-card.tsx
+++ b/src/components/medications/medication-card.tsx
@@ -13,6 +13,7 @@ import { formatDateTime, formatTime } from "@/lib/format";
import { getDateTimeFormat } from "@/lib/intl/formatter-cache";
import { getMedicationCategoryLabel } from "@/lib/medications/category-label";
import { formatDose } from "@/lib/medications/format-dose";
+import { formatUnitsPerDose } from "@/components/medications/units-per-dose";
import { reduceCurrentWindowStatus } from "@/lib/medications/window-status";
import { resolveNextDueDayLabel } from "@/lib/medications/next-due-day-label";
import { resolveDisplayedSlotInstant } from "@/components/medications/card-parts/displayed-slot-instant";
@@ -52,6 +53,8 @@ interface Schedule {
/** Cadence fields the supply-runway estimate reads (v1.16.11). */
rrule?: string | null;
rollingIntervalDays?: number | null;
+ /** #219 — per-schedule units consumed per dose. NULL inherits the med level. */
+ unitsPerDose?: number | null;
}
interface Medication {
@@ -448,6 +451,15 @@ export function MedicationCard({
— {formatDose(s.dose, t)}
)}
+ {typeof s.unitsPerDose === "number" && s.unitsPerDose > 0 && (
+
+ {" "}
+ ·{" "}
+ {t("medications.perSlotUnits", {
+ units: formatUnitsPerDose(s.unitsPerDose),
+ })}
+
+ )}
>
);
})()