import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { PatientStatusSchema } from '../enums/PatientStatus.schema';
import { UserCreateNestedOneWithoutPatientsInputObjectSchema as UserCreateNestedOneWithoutPatientsInputObjectSchema } from './UserCreateNestedOneWithoutPatientsInput.schema';
import { AppointmentCreateNestedManyWithoutPatientInputObjectSchema as AppointmentCreateNestedManyWithoutPatientInputObjectSchema } from './AppointmentCreateNestedManyWithoutPatientInput.schema';
import { AppointmentProcedureCreateNestedManyWithoutPatientInputObjectSchema as AppointmentProcedureCreateNestedManyWithoutPatientInputObjectSchema } from './AppointmentProcedureCreateNestedManyWithoutPatientInput.schema';
import { ClaimCreateNestedManyWithoutPatientInputObjectSchema as ClaimCreateNestedManyWithoutPatientInputObjectSchema } from './ClaimCreateNestedManyWithoutPatientInput.schema';
import { PdfGroupCreateNestedManyWithoutPatientInputObjectSchema as PdfGroupCreateNestedManyWithoutPatientInputObjectSchema } from './PdfGroupCreateNestedManyWithoutPatientInput.schema';
import { CommunicationCreateNestedManyWithoutPatientInputObjectSchema as CommunicationCreateNestedManyWithoutPatientInputObjectSchema } from './CommunicationCreateNestedManyWithoutPatientInput.schema';
import { PatientDocumentCreateNestedManyWithoutPatientInputObjectSchema as PatientDocumentCreateNestedManyWithoutPatientInputObjectSchema } from './PatientDocumentCreateNestedManyWithoutPatientInput.schema';
import { PatientConversationCreateNestedOneWithoutPatientInputObjectSchema as PatientConversationCreateNestedOneWithoutPatientInputObjectSchema } from './PatientConversationCreateNestedOneWithoutPatientInput.schema';
import { CloudFolderCreateNestedManyWithoutPatientInputObjectSchema as CloudFolderCreateNestedManyWithoutPatientInputObjectSchema } from './CloudFolderCreateNestedManyWithoutPatientInput.schema'

const makeSchema = () => z.object({
  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(),
  createdAt: z.coerce.date().optional(),
  updatedAt: z.coerce.date().optional(),
  user: z.lazy(() => UserCreateNestedOneWithoutPatientsInputObjectSchema),
  appointments: z.lazy(() => AppointmentCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  procedures: z.lazy(() => AppointmentProcedureCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  claims: z.lazy(() => ClaimCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  groups: z.lazy(() => PdfGroupCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  communications: z.lazy(() => CommunicationCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  documents: z.lazy(() => PatientDocumentCreateNestedManyWithoutPatientInputObjectSchema).optional(),
  conversation: z.lazy(() => PatientConversationCreateNestedOneWithoutPatientInputObjectSchema).optional(),
  cloudFolders: z.lazy(() => CloudFolderCreateNestedManyWithoutPatientInputObjectSchema).optional()
}).strict();
export const PatientCreateWithoutPaymentInputObjectSchema: z.ZodType<Prisma.PatientCreateWithoutPaymentInput> = makeSchema() as unknown as z.ZodType<Prisma.PatientCreateWithoutPaymentInput>;
export const PatientCreateWithoutPaymentInputObjectZodSchema = makeSchema();
