feat: batch eligibility, batch claim, and batch check+claim from AI chat

- Add batch_eligibility, batch_claim, and batch_check_and_claim intents
  to AI classifier so multiple patients can be processed one by one
- Add queue processing on insurance-status and claims pages to auto-start
  the next patient after each check/claim completes
- Make patient schema firstName, lastName, phone optional so patients can
  be created with just member ID + DOB from eligibility checks
- Cancel buttons now preserve chat history instead of clearing it
- Patient-found card shows Check Eligibility, Eligibility & Appointment
  Today, and Cancel buttons
- Claim service date asks user to pick between latest appointment and
  today when they differ
- Login page subtitle styled with animated gradient

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ff
2026-06-18 23:41:56 -04:00
parent a2e5c157ad
commit a52ff2d723
9 changed files with 710 additions and 66 deletions

View File

@@ -51,14 +51,14 @@ export const insertPatientSchema = (
createdAt: true,
})
.extend({
firstName: z.string().min(1, "First name is required"),
lastName: z.string().min(1, "Last name is required"),
firstName: z.string().optional().default(""),
lastName: z.string().optional().default(""),
dateOfBirth: z.preprocess(
(val) => (val === null || val === undefined || val === "" ? undefined : val),
z.coerce.date({ required_error: "Date of birth is required" })
),
gender: z.string().optional().nullable(),
phone: z.string().min(1, "Phone number is required"),
phone: z.string().optional().nullable(),
insuranceId: insuranceIdSchema,
});