feat(labs): draft review, confirm with normalization, discard

- Add ConfirmDraftBody schema to shared types
- Implement GET /api/labs/drafts/:id (retrieves draft with extracted data)
- Implement POST /api/labs/drafts/:id/confirm (normalizes markers, inserts lab draw + biomarkers in transaction, marks draft confirmed)
- Implement POST /api/labs/drafts/:id/discard (marks draft discarded)
- Add comprehensive test suite with 3 new tests

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
marcuspaico
2026-08-17 15:46:10 -07:00
parent 8e9f3d5894
commit 038c92af45
3 changed files with 141 additions and 1 deletions

View File

@@ -37,3 +37,10 @@ export const ExtractedDraft = z.object({
markers: z.array(ExtractedMarker).default([]),
});
export type ExtractedDraft = z.infer<typeof ExtractedDraft>;
export const ConfirmDraftBody = z.object({
collectedDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
labName: z.string().nullable().default(null),
markers: z.array(ExtractedMarker).min(1),
});
export type ConfirmDraftBody = z.infer<typeof ConfirmDraftBody>;