Files
simrsx-fe/app/schemas/control-letter.schema.ts
T
2025-11-04 16:56:08 +07:00

46 lines
1.3 KiB
TypeScript

import { z } from 'zod'
const ControlLetterSchema = z.object({
sepStatus: z.string({
required_error: 'Mohon isi status SEP',
}).default('SEP Internal'),
spesialist_id: z.number({
required_error: 'Mohon isi Spesialis/Sub Spesialis',
}),
subspesialist_id: z.number({
required_error: 'Mohon isi Spesialis/Sub Spesialis',
}),
doctor_id: z.number({
required_error: 'Mohon isi DPJP',
}),
encounter_id: z.number().optional(),
unit_id: z.number().optional(),
date: z.string({
required_error: 'Mohon lengkapi Tanggal Kontrol',
})
.refine(
(date) => {
// Jika kosong, return false untuk required validation
if (!date || date.trim() === '') return false
// Jika ada isi, validasi format tanggal
try {
const dateObj = new Date(date)
// Cek apakah tanggal valid dan tahun >= 1900
return !isNaN(dateObj.getTime()) && dateObj.getFullYear() >= 1900
} catch {
return false
}
},
{
message: 'Mohon lengkapi Tanggal Kontrol dengan format yang valid',
},
)
.transform((dateStr) => new Date(dateStr).toISOString()),
})
type ControlLetterFormData = z.infer<typeof ControlLetterSchema>
export { ControlLetterSchema }
export type { ControlLetterFormData }