feat: chat window, preferred language, insurance contact, and AI call eligibility

- Schedule: right-click Chat option opens floating SMS chat window
- Chat window: SMS template selector with appointment date/time pre-filled
- Chat window: office name and phone pulled from Settings > Office Contact
- Chat window: Preferred Language selector (English, Spanish, Portuguese,
  Mandarin, Cantonese, Arabic, Haitian Creole) with fully translated templates
  and locale-aware date/time formatting
- Patient form: Preferred Language field (add/edit), default English
- Settings > Office Contact: added Dental Office Name field
- Settings > Advanced: Insurance Contact page (CRUD — company name + phone)
- Prisma schema: preferredLanguage on Patient, officeName on OfficeContact,
  new InsuranceContact model
- Patient management: Upload Patient Document moved below Patient Records
- Insurance Eligibility: AI Call Insurance collapsible section; insurance
  company and phone auto-populated from saved Insurance Contacts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gitead
2026-05-07 16:42:37 -04:00
parent dd0df4a435
commit 16429320fa
16 changed files with 977 additions and 115 deletions

View File

@@ -86,6 +86,7 @@ export const PatientForm = forwardRef<PatientFormRef, PatientFormProps>(
policyHolder: "",
allergies: "",
medicalConditions: "",
preferredLanguage: "English",
status: "UNKNOWN",
userId: user?.id,
};
@@ -208,6 +209,36 @@ export const PatientForm = forwardRef<PatientFormRef, PatientFormProps>(
</FormItem>
)}
/>
<FormField
control={form.control}
name="preferredLanguage"
render={({ field }) => (
<FormItem>
<FormLabel>Preferred Language</FormLabel>
<Select
onValueChange={field.onChange}
value={(field.value as string) || "English"}
>
<FormControl>
<SelectTrigger>
<SelectValue placeholder="Select language" />
</SelectTrigger>
</FormControl>
<SelectContent>
<SelectItem value="English">English</SelectItem>
<SelectItem value="Spanish">Spanish</SelectItem>
<SelectItem value="Portuguese">Portuguese</SelectItem>
<SelectItem value="Mandarin">Mandarin</SelectItem>
<SelectItem value="Cantonese">Cantonese</SelectItem>
<SelectItem value="Arabic">Arabic</SelectItem>
<SelectItem value="Haitian Creole">Haitian Creole</SelectItem>
</SelectContent>
</Select>
<FormMessage />
</FormItem>
)}
/>
</div>
</div>