- 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>
26 lines
825 B
TypeScript
26 lines
825 B
TypeScript
import { prisma as db } from "@repo/db/client";
|
|
|
|
export const insuranceContactStorage = {
|
|
async getInsuranceContactsByUser(userId: number) {
|
|
return db.insuranceContact.findMany({
|
|
where: { userId },
|
|
orderBy: { name: "asc" },
|
|
});
|
|
},
|
|
|
|
async createInsuranceContact(data: { userId: number; name: string; phoneNumber?: string }) {
|
|
return db.insuranceContact.create({ data });
|
|
},
|
|
|
|
async updateInsuranceContact(id: number, data: { name?: string; phoneNumber?: string }) {
|
|
return db.insuranceContact.update({ where: { id }, data });
|
|
},
|
|
|
|
async deleteInsuranceContact(userId: number, id: number) {
|
|
const record = await db.insuranceContact.findFirst({ where: { id, userId } });
|
|
if (!record) return false;
|
|
await db.insuranceContact.delete({ where: { id } });
|
|
return true;
|
|
},
|
|
};
|