import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { MissingTeethStatusSchema } from '../enums/MissingTeethStatus.schema';
import { EnumMissingTeethStatusFieldUpdateOperationsInputObjectSchema as EnumMissingTeethStatusFieldUpdateOperationsInputObjectSchema } from './EnumMissingTeethStatusFieldUpdateOperationsInput.schema';
import { NullableJsonNullValueInputSchema } from '../enums/NullableJsonNullValueInput.schema';
import { ClaimStatusSchema } from '../enums/ClaimStatus.schema';
import { EnumClaimStatusFieldUpdateOperationsInputObjectSchema as EnumClaimStatusFieldUpdateOperationsInputObjectSchema } from './EnumClaimStatusFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { PatientUpdateOneRequiredWithoutClaimsNestedInputObjectSchema as PatientUpdateOneRequiredWithoutClaimsNestedInputObjectSchema } from './PatientUpdateOneRequiredWithoutClaimsNestedInput.schema';
import { AppointmentUpdateOneWithoutClaimsNestedInputObjectSchema as AppointmentUpdateOneWithoutClaimsNestedInputObjectSchema } from './AppointmentUpdateOneWithoutClaimsNestedInput.schema';
import { UserUpdateOneWithoutClaimsNestedInputObjectSchema as UserUpdateOneWithoutClaimsNestedInputObjectSchema } from './UserUpdateOneWithoutClaimsNestedInput.schema';
import { StaffUpdateOneWithoutClaimsNestedInputObjectSchema as StaffUpdateOneWithoutClaimsNestedInputObjectSchema } from './StaffUpdateOneWithoutClaimsNestedInput.schema';
import { ServiceLineUpdateManyWithoutClaimNestedInputObjectSchema as ServiceLineUpdateManyWithoutClaimNestedInputObjectSchema } from './ServiceLineUpdateManyWithoutClaimNestedInput.schema';
import { ClaimFileUpdateManyWithoutClaimNestedInputObjectSchema as ClaimFileUpdateManyWithoutClaimNestedInputObjectSchema } from './ClaimFileUpdateManyWithoutClaimNestedInput.schema';
import { PaymentUpdateOneWithoutClaimNestedInputObjectSchema as PaymentUpdateOneWithoutClaimNestedInputObjectSchema } from './PaymentUpdateOneWithoutClaimNestedInput.schema'

import { JsonValueSchema as jsonSchema } from '../../helpers/json-helpers';

const makeSchema = () => z.object({
  patientName: z.union([z.string(), z.lazy(() => StringFieldUpdateOperationsInputObjectSchema)]).optional(),
  memberId: z.union([z.string(), z.lazy(() => StringFieldUpdateOperationsInputObjectSchema)]).optional(),
  dateOfBirth: z.union([z.coerce.date(), z.lazy(() => DateTimeFieldUpdateOperationsInputObjectSchema)]).optional(),
  remarks: z.union([z.string(), z.lazy(() => StringFieldUpdateOperationsInputObjectSchema)]).optional(),
  missingTeethStatus: z.union([MissingTeethStatusSchema, z.lazy(() => EnumMissingTeethStatusFieldUpdateOperationsInputObjectSchema)]).optional(),
  missingTeeth: z.union([NullableJsonNullValueInputSchema, jsonSchema]).optional(),
  serviceDate: z.union([z.coerce.date(), z.lazy(() => DateTimeFieldUpdateOperationsInputObjectSchema)]).optional(),
  insuranceProvider: z.union([z.string(), z.lazy(() => StringFieldUpdateOperationsInputObjectSchema)]).optional(),
  createdAt: z.union([z.coerce.date(), z.lazy(() => DateTimeFieldUpdateOperationsInputObjectSchema)]).optional(),
  updatedAt: z.union([z.coerce.date(), z.lazy(() => DateTimeFieldUpdateOperationsInputObjectSchema)]).optional(),
  status: z.union([ClaimStatusSchema, z.lazy(() => EnumClaimStatusFieldUpdateOperationsInputObjectSchema)]).optional(),
  claimNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  preAuthNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
  patient: z.lazy(() => PatientUpdateOneRequiredWithoutClaimsNestedInputObjectSchema).optional(),
  appointment: z.lazy(() => AppointmentUpdateOneWithoutClaimsNestedInputObjectSchema).optional(),
  user: z.lazy(() => UserUpdateOneWithoutClaimsNestedInputObjectSchema).optional(),
  staff: z.lazy(() => StaffUpdateOneWithoutClaimsNestedInputObjectSchema).optional(),
  serviceLines: z.lazy(() => ServiceLineUpdateManyWithoutClaimNestedInputObjectSchema).optional(),
  claimFiles: z.lazy(() => ClaimFileUpdateManyWithoutClaimNestedInputObjectSchema).optional(),
  payment: z.lazy(() => PaymentUpdateOneWithoutClaimNestedInputObjectSchema).optional()
}).strict();
export const ClaimUpdateWithoutNpiProviderInputObjectSchema: z.ZodType<Prisma.ClaimUpdateWithoutNpiProviderInput> = makeSchema() as unknown as z.ZodType<Prisma.ClaimUpdateWithoutNpiProviderInput>;
export const ClaimUpdateWithoutNpiProviderInputObjectZodSchema = makeSchema();
