import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { PatientStatusSchema } from '../enums/PatientStatus.schema';
import { PatientCreateNestedOneWithoutAppointmentsInputObjectSchema as PatientCreateNestedOneWithoutAppointmentsInputObjectSchema } from './PatientCreateNestedOneWithoutAppointmentsInput.schema';
import { UserCreateNestedOneWithoutAppointmentsInputObjectSchema as UserCreateNestedOneWithoutAppointmentsInputObjectSchema } from './UserCreateNestedOneWithoutAppointmentsInput.schema';
import { StaffCreateNestedOneWithoutAppointmentsInputObjectSchema as StaffCreateNestedOneWithoutAppointmentsInputObjectSchema } from './StaffCreateNestedOneWithoutAppointmentsInput.schema';
import { AppointmentProcedureCreateNestedManyWithoutAppointmentInputObjectSchema as AppointmentProcedureCreateNestedManyWithoutAppointmentInputObjectSchema } from './AppointmentProcedureCreateNestedManyWithoutAppointmentInput.schema';
import { ClaimCreateNestedManyWithoutAppointmentInputObjectSchema as ClaimCreateNestedManyWithoutAppointmentInputObjectSchema } from './ClaimCreateNestedManyWithoutAppointmentInput.schema'

const makeSchema = () => z.object({
  title: z.string(),
  date: z.coerce.date(),
  startTime: z.string(),
  endTime: z.string(),
  type: z.string(),
  typeLocked: z.boolean().optional(),
  notes: z.string().optional().nullable(),
  procedureCodeNotes: z.string().optional().nullable(),
  status: z.string().optional(),
  movedByAi: z.boolean().optional(),
  createdAt: z.coerce.date().optional(),
  eligibilityStatus: PatientStatusSchema.optional(),
  patient: z.lazy(() => PatientCreateNestedOneWithoutAppointmentsInputObjectSchema),
  user: z.lazy(() => UserCreateNestedOneWithoutAppointmentsInputObjectSchema),
  staff: z.lazy(() => StaffCreateNestedOneWithoutAppointmentsInputObjectSchema).optional(),
  procedures: z.lazy(() => AppointmentProcedureCreateNestedManyWithoutAppointmentInputObjectSchema).optional(),
  claims: z.lazy(() => ClaimCreateNestedManyWithoutAppointmentInputObjectSchema).optional()
}).strict();
export const AppointmentCreateWithoutFilesInputObjectSchema: z.ZodType<Prisma.AppointmentCreateWithoutFilesInput> = makeSchema() as unknown as z.ZodType<Prisma.AppointmentCreateWithoutFilesInput>;
export const AppointmentCreateWithoutFilesInputObjectZodSchema = makeSchema();
