mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 13:01:00 +00:00
merge: suppress-during-illness Rest Mode + FHIR Condition + doctor-report
This commit is contained in:
commit
b28fa4d4a5
37 files changed
+1352
-24
No files matched your search
@@ -41,13 +41,16 @@ function deviation(
|
||||
}
|
||||
|
||||
function ok(
|
||||
value: CoincidentDeviationValue,
|
||||
value: Omit<CoincidentDeviationValue, "illnessExplained"> &
|
||||
Partial<Pick<CoincidentDeviationValue, "illnessExplained">>,
|
||||
band: "high" | "medium" | "low" | "draft" = "high",
|
||||
): Resp {
|
||||
return {
|
||||
metric: "COINCIDENT_DEVIATION",
|
||||
status: "ok",
|
||||
value,
|
||||
// v1.18.1 P4 — default the Rest Mode reframe flag off so the existing
|
||||
// fixtures stay valid; the reframe test passes `illnessExplained: true`.
|
||||
value: { illnessExplained: false, ...value },
|
||||
coverage: {
|
||||
requiredInputs: 5,
|
||||
presentInputs: 5,
|
||||
@@ -202,6 +205,32 @@ describe("<CoincidentDeviationCard>", () => {
|
||||
expect(html).not.toContain('role="alert"');
|
||||
});
|
||||
|
||||
it("reframes a fired flag as illness-explained during Rest Mode (no extra alarm)", () => {
|
||||
mock(
|
||||
ok({
|
||||
fired: true,
|
||||
day: "2026-06-03",
|
||||
illnessExplained: true,
|
||||
vitals: [
|
||||
deviation("RESTING_HEART_RATE", true),
|
||||
deviation("RESPIRATORY_RATE", true),
|
||||
],
|
||||
contributing: [
|
||||
deviation("RESTING_HEART_RATE", true),
|
||||
deviation("RESPIRATORY_RATE", true),
|
||||
],
|
||||
}),
|
||||
);
|
||||
const html = render(<CoincidentDeviationCard />);
|
||||
expect(html).toContain('data-state="fired"');
|
||||
// The reframe line replaces the open-ended "possible factors" copy.
|
||||
expect(html).toContain("the condition you logged");
|
||||
expect(html).not.toContain("Possible factors — never a cause");
|
||||
// Annotate, don't escalate: no new destructive colour beyond the amber the
|
||||
// fired state already carries.
|
||||
expect(html).not.toContain("text-destructive");
|
||||
});
|
||||
|
||||
it("softens a fired flag to the watch tone when history is thin", () => {
|
||||
mock(
|
||||
ok(
|
||||
|
||||
@@ -278,7 +278,13 @@ export function CoincidentDeviationCard({
|
||||
className="text-muted-foreground text-xs leading-snug"
|
||||
data-slot="coincident-factors"
|
||||
>
|
||||
{t("insights.derived.coincident.factors")}
|
||||
{/* v1.18.1 P4 — Rest Mode reframe. When an illness episode is active
|
||||
the deviations have a known explanation, so the card states it
|
||||
plainly instead of leaving "possible factors" open. Neutral copy,
|
||||
no extra colour. */}
|
||||
{v.illnessExplained
|
||||
? t("insights.derived.coincident.illnessExplained")
|
||||
: t("insights.derived.coincident.factors")}
|
||||
</p>
|
||||
</CardShell>
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user