import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { UserArgsObjectSchema as UserArgsObjectSchema } from './UserArgs.schema';
import { AppointmentFindManySchema as AppointmentFindManySchema } from '../findManyAppointment.schema';
import { AppointmentProcedureFindManySchema as AppointmentProcedureFindManySchema } from '../findManyAppointmentProcedure.schema';
import { ClaimFindManySchema as ClaimFindManySchema } from '../findManyClaim.schema';
import { PdfGroupFindManySchema as PdfGroupFindManySchema } from '../findManyPdfGroup.schema';
import { PaymentFindManySchema as PaymentFindManySchema } from '../findManyPayment.schema';
import { CommunicationFindManySchema as CommunicationFindManySchema } from '../findManyCommunication.schema';
import { PatientDocumentFindManySchema as PatientDocumentFindManySchema } from '../findManyPatientDocument.schema';
import { PatientConversationArgsObjectSchema as PatientConversationArgsObjectSchema } from './PatientConversationArgs.schema';
import { CloudFolderFindManySchema as CloudFolderFindManySchema } from '../findManyCloudFolder.schema';
import { PatientCountOutputTypeArgsObjectSchema as PatientCountOutputTypeArgsObjectSchema } from './PatientCountOutputTypeArgs.schema'

const makeSchema = () => z.object({
  id: z.boolean().optional(),
  firstName: z.boolean().optional(),
  lastName: z.boolean().optional(),
  dateOfBirth: z.boolean().optional(),
  gender: z.boolean().optional(),
  phone: z.boolean().optional(),
  email: z.boolean().optional(),
  address: z.boolean().optional(),
  city: z.boolean().optional(),
  zipCode: z.boolean().optional(),
  insuranceProvider: z.boolean().optional(),
  insuranceId: z.boolean().optional(),
  groupNumber: z.boolean().optional(),
  policyHolder: z.boolean().optional(),
  allergies: z.boolean().optional(),
  medicalConditions: z.boolean().optional(),
  preferredLanguage: z.boolean().optional(),
  status: z.boolean().optional(),
  userId: z.boolean().optional(),
  createdAt: z.boolean().optional(),
  updatedAt: z.boolean().optional(),
  user: z.union([z.boolean(), z.lazy(() => UserArgsObjectSchema)]).optional(),
  appointments: z.union([z.boolean(), z.lazy(() => AppointmentFindManySchema)]).optional(),
  procedures: z.union([z.boolean(), z.lazy(() => AppointmentProcedureFindManySchema)]).optional(),
  claims: z.union([z.boolean(), z.lazy(() => ClaimFindManySchema)]).optional(),
  groups: z.union([z.boolean(), z.lazy(() => PdfGroupFindManySchema)]).optional(),
  payment: z.union([z.boolean(), z.lazy(() => PaymentFindManySchema)]).optional(),
  communications: z.union([z.boolean(), z.lazy(() => CommunicationFindManySchema)]).optional(),
  documents: z.union([z.boolean(), z.lazy(() => PatientDocumentFindManySchema)]).optional(),
  conversation: z.union([z.boolean(), z.lazy(() => PatientConversationArgsObjectSchema)]).optional(),
  cloudFolders: z.union([z.boolean(), z.lazy(() => CloudFolderFindManySchema)]).optional(),
  _count: z.union([z.boolean(), z.lazy(() => PatientCountOutputTypeArgsObjectSchema)]).optional()
}).strict();
export const PatientSelectObjectSchema: z.ZodType<Prisma.PatientSelect> = makeSchema() as unknown as z.ZodType<Prisma.PatientSelect>;
export const PatientSelectObjectZodSchema = makeSchema();
