feat: add Lab RX feature with template management and auto-seed defaults

- New lab_rx_template table with sortOrder and Prisma migrations
- Backend CRUD + reorder routes at /api/lab-rx/templates
- Auto-seeds 3 Highland Dental Studio defaults on first use per user
- LabRxModal: template picker, inline rename, up/down reorder, full
  template form with sections (Template Name / Lab Info / Case Details)
- RX popup: Tooth Number, Shade, Due Date, Doctor (from NPI providers),
  Instructions pre-filled with "Please make / Thank you!", print output
- lab-rx-templates.ts config file for future git-managed additions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-02 23:20:44 -04:00
co-authored by Claude Sonnet 4.6
parent ac4d8c4c74
commit abb2a0ac96
908 changed files with 4858 additions and 14271 deletions
@@ -1,22 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const AiSettingsInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
apiKey: z.string(),
aiEnabled: z.boolean(),
openAiKey: z.string(),
openAiEnabled: z.boolean(),
claudeAiKey: z.string(),
claudeAiEnabled: z.boolean(),
claudeAiModel: z.string(),
openAiModel: z.string(),
googleAiModel: z.string(),
dentalMgmtKey: z.string(),
dentalMgmtEnabled: z.boolean(),
afterHoursEnabled: z.boolean(),
openPhoneReply: z.boolean(),
user: z.unknown()
}).strict();
export type AiSettingsInputType = z.infer<typeof AiSettingsInputSchema>;
@@ -1,29 +0,0 @@
import * as z from 'zod';
import { PatientStatusSchema } from '../../enums/PatientStatus.schema';
// prettier-ignore
export const AppointmentInputSchema = z.object({
id: z.number().int(),
patientId: z.number().int(),
userId: z.number().int(),
staffId: z.number().int(),
title: z.string(),
date: z.date(),
startTime: z.string(),
endTime: z.string(),
type: z.string(),
typeLocked: z.boolean(),
notes: z.string().optional().nullable(),
procedureCodeNotes: z.string().optional().nullable(),
status: z.string(),
movedByAi: z.boolean(),
createdAt: z.date(),
eligibilityStatus: PatientStatusSchema,
patient: z.unknown(),
user: z.unknown(),
staff: z.unknown().optional().nullable(),
procedures: z.array(z.unknown()),
claims: z.array(z.unknown()),
files: z.array(z.unknown())
}).strict();
export type AppointmentInputType = z.infer<typeof AppointmentInputSchema>;
@@ -1,12 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const AppointmentFileInputSchema = z.object({
id: z.number().int(),
appointmentId: z.number().int(),
filename: z.string(),
mimeType: z.string().optional().nullable(),
filePath: z.string().optional().nullable(),
appointment: z.unknown()
}).strict();
export type AppointmentFileInputType = z.infer<typeof AppointmentFileInputSchema>;
@@ -1,24 +0,0 @@
import * as z from 'zod';
import { ProcedureSourceSchema } from '../../enums/ProcedureSource.schema';
// prettier-ignore
export const AppointmentProcedureInputSchema = z.object({
id: z.number().int(),
appointmentId: z.number().int(),
patientId: z.number().int(),
npiProviderId: z.number().int().optional().nullable(),
procedureCode: z.string(),
procedureLabel: z.string().optional().nullable(),
fee: z.number().optional().nullable(),
category: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
oralCavityArea: z.string().optional().nullable(),
source: ProcedureSourceSchema,
comboKey: z.string().optional().nullable(),
createdAt: z.date(),
appointment: z.unknown(),
patient: z.unknown(),
npiProvider: z.unknown().optional().nullable()
}).strict();
export type AppointmentProcedureInputType = z.infer<typeof AppointmentProcedureInputSchema>;
@@ -1,12 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const BackupDestinationInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
path: z.string(),
isActive: z.boolean(),
createdAt: z.date(),
user: z.unknown()
}).strict();
export type BackupDestinationInputType = z.infer<typeof BackupDestinationInputSchema>;
@@ -1,35 +0,0 @@
import * as z from 'zod';
import { MissingTeethStatusSchema } from '../../enums/MissingTeethStatus.schema';
import { ClaimStatusSchema } from '../../enums/ClaimStatus.schema';
// prettier-ignore
export const ClaimInputSchema = z.object({
id: z.number().int(),
patientId: z.number().int(),
appointmentId: z.number().int().int().optional().nullable(),
userId: z.number().int(),
staffId: z.number().int(),
patientName: z.string(),
memberId: z.string(),
dateOfBirth: z.date(),
remarks: z.string(),
missingTeethStatus: MissingTeethStatusSchema,
missingTeeth: z.unknown().optional().nullable(),
serviceDate: z.date(),
insuranceProvider: z.string(),
createdAt: z.date(),
updatedAt: z.date(),
status: ClaimStatusSchema,
claimNumber: z.string().optional().nullable(),
preAuthNumber: z.string().optional().nullable(),
npiProviderId: z.number().int().optional().nullable(),
patient: z.unknown(),
appointment: z.unknown().optional().nullable(),
user: z.unknown().optional().nullable(),
staff: z.unknown().optional().nullable(),
npiProvider: z.unknown().optional().nullable(),
serviceLines: z.array(z.unknown()),
claimFiles: z.array(z.unknown()),
payment: z.unknown().optional().nullable()
}).strict();
export type ClaimInputType = z.infer<typeof ClaimInputSchema>;
@@ -1,12 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const ClaimFileInputSchema = z.object({
id: z.number().int(),
claimId: z.number().int(),
filename: z.string(),
mimeType: z.string(),
filePath: z.string().optional().nullable(),
claim: z.unknown()
}).strict();
export type ClaimFileInputType = z.infer<typeof ClaimFileInputSchema>;
@@ -1,20 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const CloudFileInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
name: z.string(),
mimeType: z.string().optional().nullable(),
fileSize: z.bigint(),
folderId: z.number().int().optional().nullable(),
isComplete: z.boolean(),
totalChunks: z.number().int().optional().nullable(),
diskPath: z.string().optional().nullable(),
createdAt: z.date(),
updatedAt: z.date(),
user: z.unknown(),
folder: z.unknown().optional().nullable(),
chunks: z.array(z.unknown())
}).strict();
export type CloudFileInputType = z.infer<typeof CloudFileInputSchema>;
@@ -1,12 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const CloudFileChunkInputSchema = z.object({
id: z.number().int(),
fileId: z.number().int(),
seq: z.number().int(),
data: z.instanceof(Uint8Array),
createdAt: z.date(),
file: z.unknown()
}).strict();
export type CloudFileChunkInputType = z.infer<typeof CloudFileChunkInputSchema>;
@@ -1,18 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const CloudFolderInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
name: z.string(),
parentId: z.number().int().optional().nullable(),
patientId: z.number().int().optional().nullable(),
parent: z.unknown().optional().nullable(),
children: z.array(z.unknown()),
user: z.unknown(),
patient: z.unknown().optional().nullable(),
files: z.array(z.unknown()),
createdAt: z.date(),
updatedAt: z.date()
}).strict();
export type CloudFolderInputType = z.infer<typeof CloudFolderInputSchema>;
@@ -1,14 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const CommissionBatchInputSchema = z.object({
id: z.number().int(),
npiProviderId: z.number().int(),
totalCollection: z.number(),
commissionAmount: z.number(),
notes: z.string().optional().nullable(),
createdAt: z.date(),
npiProvider: z.unknown(),
items: z.array(z.unknown())
}).strict();
export type CommissionBatchInputType = z.infer<typeof CommissionBatchInputSchema>;
@@ -1,12 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const CommissionBatchItemInputSchema = z.object({
id: z.number().int(),
commissionBatchId: z.number().int(),
paymentId: z.number().int(),
collectionAmount: z.number(),
commissionBatch: z.unknown(),
payment: z.unknown()
}).strict();
export type CommissionBatchItemInputType = z.infer<typeof CommissionBatchItemInputSchema>;
@@ -1,21 +0,0 @@
import * as z from 'zod';
import { CommunicationChannelSchema } from '../../enums/CommunicationChannel.schema';
import { CommunicationDirectionSchema } from '../../enums/CommunicationDirection.schema';
import { CommunicationStatusSchema } from '../../enums/CommunicationStatus.schema';
// prettier-ignore
export const CommunicationInputSchema = z.object({
id: z.number().int(),
patientId: z.number().int(),
userId: z.number().int().optional().nullable(),
channel: CommunicationChannelSchema,
direction: CommunicationDirectionSchema,
status: CommunicationStatusSchema,
body: z.string().optional().nullable(),
callDuration: z.number().int().optional().nullable(),
twilioSid: z.string().optional().nullable(),
createdAt: z.date(),
patient: z.unknown(),
user: z.unknown().optional().nullable()
}).strict();
export type CommunicationInputType = z.infer<typeof CommunicationInputSchema>;
@@ -1,13 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const CronJobLogInputSchema = z.object({
id: z.number().int(),
jobName: z.string(),
status: z.string(),
startedAt: z.date(),
completedAt: z.date().optional().nullable(),
durationMs: z.number().int().optional().nullable(),
errorMessage: z.string().optional().nullable()
}).strict();
export type CronJobLogInputType = z.infer<typeof CronJobLogInputSchema>;
@@ -1,10 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const DatabaseBackupInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
createdAt: z.date(),
user: z.unknown()
}).strict();
export type DatabaseBackupInputType = z.infer<typeof DatabaseBackupInputSchema>;
@@ -1,12 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const InsuranceContactInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
name: z.string(),
phoneNumber: z.string().optional().nullable(),
createdAt: z.date(),
user: z.unknown()
}).strict();
export type InsuranceContactInputType = z.infer<typeof InsuranceContactInputSchema>;
@@ -1,12 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const InsuranceCredentialInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
siteKey: z.string(),
username: z.string(),
password: z.string(),
user: z.unknown()
}).strict();
export type InsuranceCredentialInputType = z.infer<typeof InsuranceCredentialInputSchema>;
@@ -1,14 +0,0 @@
import * as z from 'zod';
import { NotificationTypesSchema } from '../../enums/NotificationTypes.schema';
// prettier-ignore
export const NotificationInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
type: NotificationTypesSchema,
message: z.string(),
createdAt: z.date(),
read: z.boolean(),
user: z.unknown()
}).strict();
export type NotificationInputType = z.infer<typeof NotificationInputSchema>;
@@ -1,17 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const NpiProviderInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
npiNumber: z.string(),
providerName: z.string(),
sortOrder: z.number().int(),
createdAt: z.date(),
user: z.unknown(),
claims: z.array(z.unknown()),
payments: z.array(z.unknown()),
commissionBatches: z.array(z.unknown()),
appointmentProcedures: z.array(z.unknown())
}).strict();
export type NpiProviderInputType = z.infer<typeof NpiProviderInputSchema>;
@@ -1,19 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const OfficeContactInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
officeName: z.string().optional().nullable(),
receptionistName: z.string().optional().nullable(),
dentistName: z.string().optional().nullable(),
phoneNumber: z.string().optional().nullable(),
email: z.string().optional().nullable(),
fax: z.string().optional().nullable(),
streetAddress: z.string().optional().nullable(),
city: z.string().optional().nullable(),
state: z.string().optional().nullable(),
zipCode: z.string().optional().nullable(),
user: z.unknown()
}).strict();
export type OfficeContactInputType = z.infer<typeof OfficeContactInputSchema>;
@@ -1,10 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const OfficeHoursInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
data: z.unknown(),
user: z.unknown()
}).strict();
export type OfficeHoursInputType = z.infer<typeof OfficeHoursInputSchema>;
@@ -1,38 +0,0 @@
import * as z from 'zod';
import { PatientStatusSchema } from '../../enums/PatientStatus.schema';
// prettier-ignore
export const PatientInputSchema = z.object({
id: z.number().int(),
firstName: z.string(),
lastName: z.string(),
dateOfBirth: z.date().optional().nullable(),
gender: z.string(),
phone: z.string(),
email: z.string().optional().nullable(),
address: z.string().optional().nullable(),
city: z.string().optional().nullable(),
zipCode: z.string().optional().nullable(),
insuranceProvider: z.string().optional().nullable(),
insuranceId: z.string().optional().nullable(),
groupNumber: z.string().optional().nullable(),
policyHolder: z.string().optional().nullable(),
allergies: z.string().optional().nullable(),
medicalConditions: z.string().optional().nullable(),
preferredLanguage: z.string().optional().nullable(),
status: PatientStatusSchema,
userId: z.number().int(),
createdAt: z.date(),
updatedAt: z.date(),
user: z.unknown(),
appointments: z.array(z.unknown()),
procedures: z.array(z.unknown()),
claims: z.array(z.unknown()),
groups: z.array(z.unknown()),
payment: z.array(z.unknown()),
communications: z.array(z.unknown()),
documents: z.array(z.unknown()),
conversation: z.unknown().optional().nullable(),
cloudFolders: z.array(z.unknown())
}).strict();
export type PatientInputType = z.infer<typeof PatientInputSchema>;
@@ -1,14 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const PatientConversationInputSchema = z.object({
id: z.number().int(),
patientId: z.number().int(),
userId: z.number().int(),
stage: z.string(),
aiHandoff: z.boolean(),
updatedAt: z.date(),
patient: z.unknown(),
user: z.unknown()
}).strict();
export type PatientConversationInputType = z.infer<typeof PatientConversationInputSchema>;
@@ -1,16 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const PatientDocumentInputSchema = z.object({
id: z.number().int(),
patientId: z.number().int(),
filename: z.string(),
originalName: z.string(),
mimeType: z.string(),
fileSize: z.bigint(),
filePath: z.string(),
uploadedAt: z.date(),
updatedAt: z.date(),
patient: z.unknown()
}).strict();
export type PatientDocumentInputType = z.infer<typeof PatientDocumentInputSchema>;
@@ -1,32 +0,0 @@
import * as z from 'zod';
import { PaymentStatusSchema } from '../../enums/PaymentStatus.schema';
// prettier-ignore
export const PaymentInputSchema = z.object({
id: z.number().int(),
claimId: z.number().int().optional().nullable(),
patientId: z.number().int(),
userId: z.number().int(),
updatedById: z.number().int().optional().nullable(),
npiProviderId: z.number().int().optional().nullable(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
totalDue: z.number(),
mhPaidAmount: z.number().optional().nullable(),
copayment: z.number(),
adjustment: z.number(),
status: PaymentStatusSchema,
notes: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
createdAt: z.date(),
updatedAt: z.date(),
claim: z.unknown().optional().nullable(),
patient: z.unknown(),
updatedBy: z.unknown().optional().nullable(),
npiProvider: z.unknown().optional().nullable(),
serviceLineTransactions: z.array(z.unknown()),
serviceLines: z.array(z.unknown()),
commissionBatchItems: z.array(z.unknown())
}).strict();
export type PaymentInputType = z.infer<typeof PaymentInputSchema>;
@@ -1,12 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const PdfFileInputSchema = z.object({
id: z.number().int(),
filename: z.string(),
pdfData: z.instanceof(Uint8Array),
uploadedAt: z.date(),
groupId: z.number().int(),
group: z.unknown()
}).strict();
export type PdfFileInputType = z.infer<typeof PdfFileInputSchema>;
@@ -1,14 +0,0 @@
import * as z from 'zod';
import { PdfTitleKeySchema } from '../../enums/PdfTitleKey.schema';
// prettier-ignore
export const PdfGroupInputSchema = z.object({
id: z.number().int(),
title: z.string(),
titleKey: PdfTitleKeySchema,
createdAt: z.date(),
patientId: z.number().int(),
patient: z.unknown(),
pdfs: z.array(z.unknown())
}).strict();
export type PdfGroupInputType = z.infer<typeof PdfGroupInputSchema>;
@@ -1,10 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const ProcedureTimeslotInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
data: z.unknown(),
user: z.unknown()
}).strict();
export type ProcedureTimeslotInputType = z.infer<typeof ProcedureTimeslotInputSchema>;
@@ -1,27 +0,0 @@
import * as z from 'zod';
import { ServiceLineStatusSchema } from '../../enums/ServiceLineStatus.schema';
// prettier-ignore
export const ServiceLineInputSchema = z.object({
id: z.number().int(),
claimId: z.number().int().optional().nullable(),
paymentId: z.number().int().optional().nullable(),
procedureCode: z.string(),
procedureDate: z.date(),
quad: z.string().optional().nullable(),
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.number().optional().nullable(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
totalDue: z.number(),
status: ServiceLineStatusSchema,
claim: z.unknown().optional().nullable(),
payment: z.unknown().optional().nullable(),
serviceLineTransactions: z.array(z.unknown())
}).strict();
export type ServiceLineInputType = z.infer<typeof ServiceLineInputSchema>;
@@ -1,20 +0,0 @@
import * as z from 'zod';
import { PaymentMethodSchema } from '../../enums/PaymentMethod.schema';
// prettier-ignore
export const ServiceLineTransactionInputSchema = z.object({
id: z.number().int(),
paymentId: z.number().int(),
serviceLineId: z.number().int(),
transactionId: z.string().optional().nullable(),
paidAmount: z.number(),
adjustedAmount: z.number(),
method: PaymentMethodSchema,
receivedDate: z.date(),
payerName: z.string().optional().nullable(),
notes: z.string().optional().nullable(),
createdAt: z.date(),
payment: z.unknown(),
serviceLine: z.unknown()
}).strict();
export type ServiceLineTransactionInputType = z.infer<typeof ServiceLineTransactionInputSchema>;
@@ -1,13 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const ShoppingVendorInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
vendorName: z.string(),
websiteUrl: z.string(),
loginUsername: z.string(),
loginPassword: z.string(),
user: z.unknown()
}).strict();
export type ShoppingVendorInputType = z.infer<typeof ShoppingVendorInputSchema>;
@@ -1,16 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const StaffInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
name: z.string(),
email: z.string().optional().nullable(),
role: z.string(),
phone: z.string().optional().nullable(),
createdAt: z.date(),
user: z.unknown().optional().nullable(),
appointments: z.array(z.unknown()),
claims: z.array(z.unknown())
}).strict();
export type StaffInputType = z.infer<typeof StaffInputSchema>;
@@ -1,14 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const TwilioSettingsInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
accountSid: z.string(),
authToken: z.string(),
phoneNumber: z.string(),
greetingMessage: z.string().optional().nullable(),
templates: z.unknown().optional().nullable(),
user: z.unknown()
}).strict();
export type TwilioSettingsInputType = z.infer<typeof TwilioSettingsInputSchema>;
@@ -1,37 +0,0 @@
import * as z from 'zod';
// prettier-ignore
export const UserInputSchema = z.object({
id: z.number().int(),
username: z.string(),
password: z.string(),
autoBackupEnabled: z.boolean(),
autoBackupHour: z.number().int(),
usbBackupEnabled: z.boolean(),
usbBackupHour: z.number().int(),
autoMhCheckEnabled: z.boolean(),
autoMhCheckDayOfWeek: z.number().int(),
autoMhCheckHour: z.number().int(),
patients: z.array(z.unknown()),
appointments: z.array(z.unknown()),
staff: z.array(z.unknown()),
npiProviders: z.array(z.unknown()),
claims: z.array(z.unknown()),
insuranceCredentials: z.array(z.unknown()),
shoppingVendors: z.array(z.unknown()),
updatedPayments: z.array(z.unknown()),
backups: z.array(z.unknown()),
backupDestinations: z.array(z.unknown()),
notifications: z.array(z.unknown()),
cloudFolders: z.array(z.unknown()),
cloudFiles: z.array(z.unknown()),
communications: z.array(z.unknown()),
twilioSettings: z.unknown().optional().nullable(),
aiSettings: z.unknown().optional().nullable(),
officeHours: z.unknown().optional().nullable(),
officeContact: z.unknown().optional().nullable(),
procedureTimeslot: z.unknown().optional().nullable(),
insuranceContacts: z.array(z.unknown()),
patientConversations: z.array(z.unknown())
}).strict();
export type UserInputType = z.infer<typeof UserInputSchema>;
@@ -1,39 +0,0 @@
/**
* Input Variant Schemas
* Auto-generated - do not edit manually
*/
export { UserInputSchema } from './User.input';
export { PatientInputSchema } from './Patient.input';
export { AppointmentInputSchema } from './Appointment.input';
export { AppointmentFileInputSchema } from './AppointmentFile.input';
export { StaffInputSchema } from './Staff.input';
export { NpiProviderInputSchema } from './NpiProvider.input';
export { AppointmentProcedureInputSchema } from './AppointmentProcedure.input';
export { ClaimInputSchema } from './Claim.input';
export { ServiceLineInputSchema } from './ServiceLine.input';
export { ClaimFileInputSchema } from './ClaimFile.input';
export { InsuranceCredentialInputSchema } from './InsuranceCredential.input';
export { ShoppingVendorInputSchema } from './ShoppingVendor.input';
export { PdfGroupInputSchema } from './PdfGroup.input';
export { PdfFileInputSchema } from './PdfFile.input';
export { PaymentInputSchema } from './Payment.input';
export { ServiceLineTransactionInputSchema } from './ServiceLineTransaction.input';
export { DatabaseBackupInputSchema } from './DatabaseBackup.input';
export { BackupDestinationInputSchema } from './BackupDestination.input';
export { NotificationInputSchema } from './Notification.input';
export { CronJobLogInputSchema } from './CronJobLog.input';
export { CloudFolderInputSchema } from './CloudFolder.input';
export { CloudFileInputSchema } from './CloudFile.input';
export { CloudFileChunkInputSchema } from './CloudFileChunk.input';
export { CommunicationInputSchema } from './Communication.input';
export { PatientDocumentInputSchema } from './PatientDocument.input';
export { TwilioSettingsInputSchema } from './TwilioSettings.input';
export { AiSettingsInputSchema } from './AiSettings.input';
export { OfficeHoursInputSchema } from './OfficeHours.input';
export { OfficeContactInputSchema } from './OfficeContact.input';
export { InsuranceContactInputSchema } from './InsuranceContact.input';
export { ProcedureTimeslotInputSchema } from './ProcedureTimeslot.input';
export { PatientConversationInputSchema } from './PatientConversation.input';
export { CommissionBatchInputSchema } from './CommissionBatch.input';
export { CommissionBatchItemInputSchema } from './CommissionBatchItem.input';