import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { NullableDateTimeFieldUpdateOperationsInputObjectSchema as NullableDateTimeFieldUpdateOperationsInputObjectSchema } from './NullableDateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { PatientStatusSchema } from '../enums/PatientStatus.schema';
import { EnumPatientStatusFieldUpdateOperationsInputObjectSchema as EnumPatientStatusFieldUpdateOperationsInputObjectSchema } from './EnumPatientStatusFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { UserUpdateOneRequiredWithoutPatientsNestedInputObjectSchema as UserUpdateOneRequiredWithoutPatientsNestedInputObjectSchema } from './UserUpdateOneRequiredWithoutPatientsNestedInput.schema';
import { AppointmentUpdateManyWithoutPatientNestedInputObjectSchema as AppointmentUpdateManyWithoutPatientNestedInputObjectSchema } from './AppointmentUpdateManyWithoutPatientNestedInput.schema';
import { ClaimUpdateManyWithoutPatientNestedInputObjectSchema as ClaimUpdateManyWithoutPatientNestedInputObjectSchema } from './ClaimUpdateManyWithoutPatientNestedInput.schema';
import { PdfGroupUpdateManyWithoutPatientNestedInputObjectSchema as PdfGroupUpdateManyWithoutPatientNestedInputObjectSchema } from './PdfGroupUpdateManyWithoutPatientNestedInput.schema';
import { PaymentUpdateManyWithoutPatientNestedInputObjectSchema as PaymentUpdateManyWithoutPatientNestedInputObjectSchema } from './PaymentUpdateManyWithoutPatientNestedInput.schema';
import { CommunicationUpdateManyWithoutPatientNestedInputObjectSchema as CommunicationUpdateManyWithoutPatientNestedInputObjectSchema } from './CommunicationUpdateManyWithoutPatientNestedInput.schema';
import { PatientDocumentUpdateManyWithoutPatientNestedInputObjectSchema as PatientDocumentUpdateManyWithoutPatientNestedInputObjectSchema } from './PatientDocumentUpdateManyWithoutPatientNestedInput.schema';
import { PatientConversationUpdateOneWithoutPatientNestedInputObjectSchema as PatientConversationUpdateOneWithoutPatientNestedInputObjectSchema } from './PatientConversationUpdateOneWithoutPatientNestedInput.schema';
import { CloudFolderUpdateManyWithoutPatientNestedInputObjectSchema as CloudFolderUpdateManyWithoutPatientNestedInputObjectSchema } from './CloudFolderUpdateManyWithoutPatientNestedInput.schema'

const makeSchema = () => z.object({
  firstName: z.union([z.string(), z.lazy(() => StringFieldUpdateOperationsInputObjectSchema)]).optional(),
  lastName: z.union([z.string(), z.lazy(() => StringFieldUpdateOperationsInputObjectSchema)]).optional(),
  dateOfBirth: z.union([z.coerce.date(), z.lazy(() => NullableDateTimeFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  gender: z.union([z.string(), z.lazy(() => StringFieldUpdateOperationsInputObjectSchema)]).optional(),
  phone: z.union([z.string(), z.lazy(() => StringFieldUpdateOperationsInputObjectSchema)]).optional(),
  email: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  address: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  city: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  zipCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  insuranceProvider: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  insuranceId: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  groupNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  policyHolder: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  allergies: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  medicalConditions: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  preferredLanguage: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  status: z.union([PatientStatusSchema, z.lazy(() => EnumPatientStatusFieldUpdateOperationsInputObjectSchema)]).optional(),
  createdAt: z.union([z.coerce.date(), z.lazy(() => DateTimeFieldUpdateOperationsInputObjectSchema)]).optional(),
  updatedAt: z.union([z.coerce.date(), z.lazy(() => DateTimeFieldUpdateOperationsInputObjectSchema)]).optional(),
  user: z.lazy(() => UserUpdateOneRequiredWithoutPatientsNestedInputObjectSchema).optional(),
  appointments: z.lazy(() => AppointmentUpdateManyWithoutPatientNestedInputObjectSchema).optional(),
  claims: z.lazy(() => ClaimUpdateManyWithoutPatientNestedInputObjectSchema).optional(),
  groups: z.lazy(() => PdfGroupUpdateManyWithoutPatientNestedInputObjectSchema).optional(),
  payment: z.lazy(() => PaymentUpdateManyWithoutPatientNestedInputObjectSchema).optional(),
  communications: z.lazy(() => CommunicationUpdateManyWithoutPatientNestedInputObjectSchema).optional(),
  documents: z.lazy(() => PatientDocumentUpdateManyWithoutPatientNestedInputObjectSchema).optional(),
  conversation: z.lazy(() => PatientConversationUpdateOneWithoutPatientNestedInputObjectSchema).optional(),
  cloudFolders: z.lazy(() => CloudFolderUpdateManyWithoutPatientNestedInputObjectSchema).optional()
}).strict();
export const PatientUpdateWithoutProceduresInputObjectSchema: z.ZodType<Prisma.PatientUpdateWithoutProceduresInput> = makeSchema() as unknown as z.ZodType<Prisma.PatientUpdateWithoutProceduresInput>;
export const PatientUpdateWithoutProceduresInputObjectZodSchema = makeSchema();
