mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-11 05:42:19 +00:00
feat(documents): review and extract lab values on the document itself
The server chain existed end to end (extract stages PENDING facts, per-fact
edit clears the low-confidence gate, confirm is the only write into the
structured stores) but the document detail offered no control over any of
it: it counted observation facts and linked to Labs. A user whose automatic
staging run was skipped had to re-upload the same PDF through Labs > Scan a
report.
- The detail sheet gains a staged-facts block with honest states: pending
facts open an inline review (approve/reject per fact; a low-confidence
fact is checked and saved first via the existing per-fact edit); a
lab-filed, already-read document with nothing staged offers "Extract lab
values" over its stored text; otherwise nothing renders.
- The extract route gains { mode: "stored" }: the same text-structuring
pass the automatic worker runs, over the document's own content index.
No re-upload, no second read of the original; full gauntlet including
the shared document-AI bucket with charge-at-dispatch honesty; 422
notIndexed when no stored text exists.
- A manual "Read with AI" / "Read again" now continues into the same
lab auto-staging the background worker performs; the response reports
labFactsStaged and the toast names the values waiting for review.
- Unchecked values are rejected and the copy says so; an unverified
low-confidence fact receives no decision and stays pending rather than
being silently discarded. Confirmation remains the only write into
Labs, conditions, and medications; approved facts carry the
committedRecordId link back to the source document (existing model, no
schema change).
- The "lab values from this document" link now counts APPROVED facts
only — it claims values that actually exist in Labs.
- Copy in all six locales; OpenAPI regenerated for the new extract mode
and the index response field.
This commit is contained in:
1 parent
8e16df6894
commit
fd104dd0ac
20 files changed
+1681
-64
No files matched your search
@@ -488,6 +488,22 @@ export const inboundTextExtractSchema = z.object({
|
||||
|
||||
export type InboundTextExtractInput = z.infer<typeof inboundTextExtractSchema>;
|
||||
|
||||
/**
|
||||
* The stored-text extract body: structure the document's OWN stored extracted
|
||||
* text (the content index the read/index step already produced) into staged
|
||||
* facts — no re-upload, no second read of the original. The document detail's
|
||||
* "Extract lab values" action posts this when an automatic staging run was
|
||||
* skipped or failed; the server refuses with `documents.inbound.notIndexed`
|
||||
* when there is no stored text to structure.
|
||||
*/
|
||||
export const inboundStoredExtractSchema = z.object({
|
||||
mode: z.literal("stored"),
|
||||
});
|
||||
|
||||
export type InboundStoredExtractInput = z.infer<
|
||||
typeof inboundStoredExtractSchema
|
||||
>;
|
||||
|
||||
// ─── Library: store / edit / list ──────────────────────────────────────────
|
||||
|
||||
/** A bare YYYY-MM-DD date string (no time component). */
|
||||
|
||||
Reference in new issue
Block a user