import { z } from 'zod' const dateStringSchema = z.string().min(1) export const chemotherapySchema = z.object({ // Data Pasien namaPasien: z.string({ required_error: 'Nama pasien harus diisi', }).min(1, 'Nama pasien harus diisi'), tanggalLahir: z.string({ required_error: 'Tanggal lahir harus diisi', }).min(1, 'Tanggal lahir harus diisi'), noRM: z.string({ required_error: 'Nomor RM harus diisi', }).min(1, 'Nomor RM harus diisi'), alamat: z.string({ required_error: 'Alamat harus diisi', }).min(1, 'Alamat harus diisi'), beratBadan: z.union([ z.string(), z.number() ]).transform(val => val === '' ? null : Number(val)) .refine(val => val === null || (val >= 0 && val <= 500), { message: 'Berat badan harus di antara 0-500 kg', }), tinggiBadan: z.union([ z.string(), z.number() ]).transform(val => val === '' ? null : Number(val)) .refine(val => val === null || (val >= 0 && val <= 300), { message: 'Tinggi badan harus di antara 0-300 cm', }), diagnosa: z.string({ required_error: 'Diagnosa harus dipilih', }).min(1, 'Diagnosa harus dipilih'), // Protokol Kemoterapi siklus: z.string({ required_error: 'Siklus harus diisi', }).min(1, 'Siklus harus diisi'), periodeAwal: z.string({ required_error: 'Periode awal harus diisi', }).min(1, 'Periode awal harus diisi'), periodeAkhir: dateStringSchema.refine((val) => { if (!val) return false const date = new Date(val) return !isNaN(date.getTime()) }, { message: 'Format tanggal tidak valid' }), tanggalKemoterapi: dateStringSchema.refine((val) => { if (!val) return false const date = new Date(val) return !isNaN(date.getTime()) }, { message: 'Format tanggal tidak valid' }), dokterKRJ: z.string({ required_error: 'Dokter harus dipilih', }).refine(val => val !== '', { message: 'Dokter harus dipilih', }), })