mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 13:01:00 +00:00
Add an opt-in in-browser OCR path so a user whose provider cannot read images (ChatGPT-OAuth/Codex, a text-only model) can still scan a lab report. The capability probe gains a `mode` field: `vision` when the provider reads the image directly, `text` when local OCR is enabled and any provider is configured, or null. The extract route grows a text branch that accepts the in-browser-OCR'd text as JSON and structures it through the existing schema + review/commit flow; the raw image never reaches the server in text mode. New `labsLocalOcrEnabled` user column (migration 0184, default off) gates it, with a dedicated PATCH endpoint.
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
/**
|
|
* v1.17.1 — TanStack Query keys for the structured lab-result store.
|
|
*
|
|
* `labResultsList` bakes the filter + pagination shape into the key so a
|
|
* filter change refetches without a same-key cache collision (the project's
|
|
* queryKey-factory invariant).
|
|
*/
|
|
export const labKeys = {
|
|
labResults: () => ["lab-results"] as const,
|
|
|
|
labResultsList: (params: {
|
|
biomarkerId?: string | undefined;
|
|
analyte: string | undefined;
|
|
panel: string | undefined;
|
|
from: string | undefined;
|
|
to: string | undefined;
|
|
page: number;
|
|
sortDir: string;
|
|
}) =>
|
|
[
|
|
"lab-results",
|
|
"list",
|
|
params.biomarkerId ?? null,
|
|
params.analyte ?? null,
|
|
params.panel ?? null,
|
|
params.from ?? null,
|
|
params.to ?? null,
|
|
params.page,
|
|
params.sortDir,
|
|
] as const,
|
|
|
|
// v1.18.1 — user-scoped Biomarker catalog. The list feeds the picker and
|
|
// the manager; both invalidate `biomarkers()` after a mutation.
|
|
biomarkers: () => ["biomarkers"] as const,
|
|
biomarkerDetail: (id: string) => ["biomarkers", "detail", id] as const,
|
|
|
|
// v1.18.9 — Lab-OCR capability probe (drives whether the "Scan a report"
|
|
// affordance shows). Cheap GET; the dialog refetches it on open.
|
|
ocrCapability: () => ["lab-ocr", "capability"] as const,
|
|
|
|
// v1.18.10 — local (in-browser) OCR opt-in flag for text-only providers.
|
|
labsLocalOcr: () => ["labs", "local-ocr"] as const,
|
|
};
|