import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { PatientArgsObjectSchema as PatientArgsObjectSchema } from './PatientArgs.schema';
import { UserArgsObjectSchema as UserArgsObjectSchema } from './UserArgs.schema';
import { StaffArgsObjectSchema as StaffArgsObjectSchema } from './StaffArgs.schema';
import { AppointmentProcedureFindManySchema as AppointmentProcedureFindManySchema } from '../findManyAppointmentProcedure.schema';
import { ClaimFindManySchema as ClaimFindManySchema } from '../findManyClaim.schema';
import { AppointmentFileFindManySchema as AppointmentFileFindManySchema } from '../findManyAppointmentFile.schema';
import { AppointmentCountOutputTypeArgsObjectSchema as AppointmentCountOutputTypeArgsObjectSchema } from './AppointmentCountOutputTypeArgs.schema'

const makeSchema = () => z.object({
  id: z.boolean().optional(),
  patientId: z.boolean().optional(),
  userId: z.boolean().optional(),
  staffId: z.boolean().optional(),
  title: z.boolean().optional(),
  date: z.boolean().optional(),
  startTime: z.boolean().optional(),
  endTime: z.boolean().optional(),
  type: z.boolean().optional(),
  typeLocked: z.boolean().optional(),
  notes: z.boolean().optional(),
  procedureCodeNotes: z.boolean().optional(),
  status: z.boolean().optional(),
  movedByAi: z.boolean().optional(),
  createdAt: z.boolean().optional(),
  eligibilityStatus: z.boolean().optional(),
  patient: z.union([z.boolean(), z.lazy(() => PatientArgsObjectSchema)]).optional(),
  user: z.union([z.boolean(), z.lazy(() => UserArgsObjectSchema)]).optional(),
  staff: z.union([z.boolean(), z.lazy(() => StaffArgsObjectSchema)]).optional(),
  procedures: z.union([z.boolean(), z.lazy(() => AppointmentProcedureFindManySchema)]).optional(),
  claims: z.union([z.boolean(), z.lazy(() => ClaimFindManySchema)]).optional(),
  files: z.union([z.boolean(), z.lazy(() => AppointmentFileFindManySchema)]).optional(),
  _count: z.union([z.boolean(), z.lazy(() => AppointmentCountOutputTypeArgsObjectSchema)]).optional()
}).strict();
export const AppointmentSelectObjectSchema: z.ZodType<Prisma.AppointmentSelect> = makeSchema() as unknown as z.ZodType<Prisma.AppointmentSelect>;
export const AppointmentSelectObjectZodSchema = makeSchema();
