import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { IntFilterObjectSchema as IntFilterObjectSchema } from './IntFilter.schema';
import { IntNullableFilterObjectSchema as IntNullableFilterObjectSchema } from './IntNullableFilter.schema';
import { StringFilterObjectSchema as StringFilterObjectSchema } from './StringFilter.schema';
import { DateTimeFilterObjectSchema as DateTimeFilterObjectSchema } from './DateTimeFilter.schema';
import { EnumMissingTeethStatusFilterObjectSchema as EnumMissingTeethStatusFilterObjectSchema } from './EnumMissingTeethStatusFilter.schema';
import { MissingTeethStatusSchema } from '../enums/MissingTeethStatus.schema';
import { JsonNullableFilterObjectSchema as JsonNullableFilterObjectSchema } from './JsonNullableFilter.schema';
import { EnumClaimStatusFilterObjectSchema as EnumClaimStatusFilterObjectSchema } from './EnumClaimStatusFilter.schema';
import { ClaimStatusSchema } from '../enums/ClaimStatus.schema';
import { StringNullableFilterObjectSchema as StringNullableFilterObjectSchema } from './StringNullableFilter.schema'

const claimscalarwhereinputSchema = z.object({
  AND: z.union([z.lazy(() => ClaimScalarWhereInputObjectSchema), z.lazy(() => ClaimScalarWhereInputObjectSchema).array()]).optional(),
  OR: z.lazy(() => ClaimScalarWhereInputObjectSchema).array().optional(),
  NOT: z.union([z.lazy(() => ClaimScalarWhereInputObjectSchema), z.lazy(() => ClaimScalarWhereInputObjectSchema).array()]).optional(),
  id: z.union([z.lazy(() => IntFilterObjectSchema), z.number().int()]).optional(),
  patientId: z.union([z.lazy(() => IntFilterObjectSchema), z.number().int()]).optional(),
  appointmentId: z.union([z.lazy(() => IntNullableFilterObjectSchema), z.number().int()]).optional().nullable(),
  userId: z.union([z.lazy(() => IntFilterObjectSchema), z.number().int()]).optional(),
  staffId: z.union([z.lazy(() => IntFilterObjectSchema), z.number().int()]).optional(),
  patientName: z.union([z.lazy(() => StringFilterObjectSchema), z.string()]).optional(),
  memberId: z.union([z.lazy(() => StringFilterObjectSchema), z.string()]).optional(),
  dateOfBirth: z.union([z.lazy(() => DateTimeFilterObjectSchema), z.coerce.date()]).optional(),
  remarks: z.union([z.lazy(() => StringFilterObjectSchema), z.string()]).optional(),
  missingTeethStatus: z.union([z.lazy(() => EnumMissingTeethStatusFilterObjectSchema), MissingTeethStatusSchema]).optional(),
  missingTeeth: z.lazy(() => JsonNullableFilterObjectSchema).optional(),
  serviceDate: z.union([z.lazy(() => DateTimeFilterObjectSchema), z.coerce.date()]).optional(),
  insuranceProvider: z.union([z.lazy(() => StringFilterObjectSchema), z.string()]).optional(),
  createdAt: z.union([z.lazy(() => DateTimeFilterObjectSchema), z.coerce.date()]).optional(),
  updatedAt: z.union([z.lazy(() => DateTimeFilterObjectSchema), z.coerce.date()]).optional(),
  status: z.union([z.lazy(() => EnumClaimStatusFilterObjectSchema), ClaimStatusSchema]).optional(),
  claimNumber: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
  preAuthNumber: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
  npiProviderId: z.union([z.lazy(() => IntNullableFilterObjectSchema), z.number().int()]).optional().nullable()
}).strict();
export const ClaimScalarWhereInputObjectSchema: z.ZodType<Prisma.ClaimScalarWhereInput> = claimscalarwhereinputSchema as unknown as z.ZodType<Prisma.ClaimScalarWhereInput>;
export const ClaimScalarWhereInputObjectZodSchema = claimscalarwhereinputSchema;
