import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { PatientStatusSchema } from '../enums/PatientStatus.schema';
import { AppointmentUncheckedCreateNestedManyWithoutPatientInputObjectSchema as AppointmentUncheckedCreateNestedManyWithoutPatientInputObjectSchema } from './AppointmentUncheckedCreateNestedManyWithoutPatientInput.schema';
import { AppointmentProcedureUncheckedCreateNestedManyWithoutPatientInputObjectSchema as AppointmentProcedureUncheckedCreateNestedManyWithoutPatientInputObjectSchema } from './AppointmentProcedureUncheckedCreateNestedManyWithoutPatientInput.schema';
import { ClaimUncheckedCreateNestedManyWithoutPatientInputObjectSchema as ClaimUncheckedCreateNestedManyWithoutPatientInputObjectSchema } from './ClaimUncheckedCreateNestedManyWithoutPatientInput.schema';
import { PdfGroupUncheckedCreateNestedManyWithoutPatientInputObjectSchema as PdfGroupUncheckedCreateNestedManyWithoutPatientInputObjectSchema } from './PdfGroupUncheckedCreateNestedManyWithoutPatientInput.schema';
import { PaymentUncheckedCreateNestedManyWithoutPatientInputObjectSchema as PaymentUncheckedCreateNestedManyWithoutPatientInputObjectSchema } from './PaymentUncheckedCreateNestedManyWithoutPatientInput.schema';
import { CommunicationUncheckedCreateNestedManyWithoutPatientInputObjectSchema as CommunicationUncheckedCreateNestedManyWithoutPatientInputObjectSchema } from './CommunicationUncheckedCreateNestedManyWithoutPatientInput.schema';
import { PatientConversationUncheckedCreateNestedOneWithoutPatientInputObjectSchema as PatientConversationUncheckedCreateNestedOneWithoutPatientInputObjectSchema } from './PatientConversationUncheckedCreateNestedOneWithoutPatientInput.schema';
import { CloudFolderUncheckedCreateNestedManyWithoutPatientInputObjectSchema as CloudFolderUncheckedCreateNestedManyWithoutPatientInputObjectSchema } from './CloudFolderUncheckedCreateNestedManyWithoutPatientInput.schema'

const makeSchema = () => z.object({
  id: z.number().int().optional(),
  firstName: z.string(),
  lastName: z.string(),
  dateOfBirth: z.coerce.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.optional(),
  userId: z.number().int(),
  createdAt: z.coerce.date().optional(),
  updatedAt: z.coerce.date().optional(),
  appointments: z.lazy(() => AppointmentUncheckedCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  procedures: z.lazy(() => AppointmentProcedureUncheckedCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  claims: z.lazy(() => ClaimUncheckedCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  groups: z.lazy(() => PdfGroupUncheckedCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  payment: z.lazy(() => PaymentUncheckedCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  communications: z.lazy(() => CommunicationUncheckedCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  conversation: z.lazy(() => PatientConversationUncheckedCreateNestedOneWithoutPatientInputObjectSchema).optional(),
  cloudFolders: z.lazy(() => CloudFolderUncheckedCreateNestedManyWithoutPatientInputObjectSchema).optional()
}).strict();
export const PatientUncheckedCreateWithoutDocumentsInputObjectSchema: z.ZodType<Prisma.PatientUncheckedCreateWithoutDocumentsInput> = makeSchema() as unknown as z.ZodType<Prisma.PatientUncheckedCreateWithoutDocumentsInput>;
export const PatientUncheckedCreateWithoutDocumentsInputObjectZodSchema = makeSchema();
