import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { SortOrderSchema } from '../enums/SortOrder.schema';
import { SortOrderInputObjectSchema as SortOrderInputObjectSchema } from './SortOrderInput.schema';
import { UserOrderByWithRelationInputObjectSchema as UserOrderByWithRelationInputObjectSchema } from './UserOrderByWithRelationInput.schema';
import { AppointmentOrderByRelationAggregateInputObjectSchema as AppointmentOrderByRelationAggregateInputObjectSchema } from './AppointmentOrderByRelationAggregateInput.schema';
import { AppointmentProcedureOrderByRelationAggregateInputObjectSchema as AppointmentProcedureOrderByRelationAggregateInputObjectSchema } from './AppointmentProcedureOrderByRelationAggregateInput.schema';
import { ClaimOrderByRelationAggregateInputObjectSchema as ClaimOrderByRelationAggregateInputObjectSchema } from './ClaimOrderByRelationAggregateInput.schema';
import { PdfGroupOrderByRelationAggregateInputObjectSchema as PdfGroupOrderByRelationAggregateInputObjectSchema } from './PdfGroupOrderByRelationAggregateInput.schema';
import { PaymentOrderByRelationAggregateInputObjectSchema as PaymentOrderByRelationAggregateInputObjectSchema } from './PaymentOrderByRelationAggregateInput.schema';
import { CommunicationOrderByRelationAggregateInputObjectSchema as CommunicationOrderByRelationAggregateInputObjectSchema } from './CommunicationOrderByRelationAggregateInput.schema';
import { PatientDocumentOrderByRelationAggregateInputObjectSchema as PatientDocumentOrderByRelationAggregateInputObjectSchema } from './PatientDocumentOrderByRelationAggregateInput.schema';
import { PatientConversationOrderByWithRelationInputObjectSchema as PatientConversationOrderByWithRelationInputObjectSchema } from './PatientConversationOrderByWithRelationInput.schema';
import { CloudFolderOrderByRelationAggregateInputObjectSchema as CloudFolderOrderByRelationAggregateInputObjectSchema } from './CloudFolderOrderByRelationAggregateInput.schema'

const makeSchema = () => z.object({
  id: SortOrderSchema.optional(),
  firstName: SortOrderSchema.optional(),
  lastName: SortOrderSchema.optional(),
  dateOfBirth: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  gender: SortOrderSchema.optional(),
  phone: SortOrderSchema.optional(),
  email: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  address: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  city: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  zipCode: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  insuranceProvider: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  insuranceId: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  groupNumber: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  policyHolder: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  allergies: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  medicalConditions: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  preferredLanguage: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
  status: SortOrderSchema.optional(),
  userId: SortOrderSchema.optional(),
  createdAt: SortOrderSchema.optional(),
  updatedAt: SortOrderSchema.optional(),
  user: z.lazy(() => UserOrderByWithRelationInputObjectSchema).optional(),
  appointments: z.lazy(() => AppointmentOrderByRelationAggregateInputObjectSchema).optional(),
  procedures: z.lazy(() => AppointmentProcedureOrderByRelationAggregateInputObjectSchema).optional(),
  claims: z.lazy(() => ClaimOrderByRelationAggregateInputObjectSchema).optional(),
  groups: z.lazy(() => PdfGroupOrderByRelationAggregateInputObjectSchema).optional(),
  payment: z.lazy(() => PaymentOrderByRelationAggregateInputObjectSchema).optional(),
  communications: z.lazy(() => CommunicationOrderByRelationAggregateInputObjectSchema).optional(),
  documents: z.lazy(() => PatientDocumentOrderByRelationAggregateInputObjectSchema).optional(),
  conversation: z.lazy(() => PatientConversationOrderByWithRelationInputObjectSchema).optional(),
  cloudFolders: z.lazy(() => CloudFolderOrderByRelationAggregateInputObjectSchema).optional()
}).strict();
export const PatientOrderByWithRelationInputObjectSchema: z.ZodType<Prisma.PatientOrderByWithRelationInput> = makeSchema() as unknown as z.ZodType<Prisma.PatientOrderByWithRelationInput>;
export const PatientOrderByWithRelationInputObjectZodSchema = makeSchema();
