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:
@@ -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';
|
||||
Reference in New Issue
Block a user