import * as z from 'zod' export const schemaConf = z.object({ name: z .string({ required_error: 'Nama spesialisasi harus diisi', }) .min(3, 'Nama spesialisasi minimal 3 karakter'), code: z .string({ required_error: 'Kode spesialisasi harus diisi', }) .min(3, 'Kode spesialisasi minimal 3 karakter'), installationId: z .string({ required_error: 'Instalasi harus dipilih', }) .min(1, 'Instalasi harus dipilih'), unitId: z .string({ required_error: 'Unit harus dipilih', }) .min(1, 'Unit harus dipilih'), }) // Unit mapping berdasarkan installation export const installationUnitMapping: Record = { '1': ['1', '3', '5'], '2': ['2', '4', '6'], '3': ['7', '8', '9', '10', '11'], } export const unitConf = { msg: { placeholder: '---pilih unit', search: 'kode, nama unit', empty: 'unit tidak ditemukan', }, items: [ { value: '1', label: 'Instalasi Medis', code: 'MED' }, { value: '2', label: 'Instalasi Keperawatan', code: 'NUR' }, { value: '3', label: 'Instalasi Administrasi', code: 'ADM' }, { value: '4', label: 'Instalasi Penunjang Non-Medis', code: 'SUP' }, { value: '5', label: 'Instalasi Pendidikan & Pelatihan', code: 'EDU' }, { value: '6', label: 'Instalasi Farmasi', code: 'PHA' }, { value: '7', label: 'Instalasi Radiologi', code: 'RAD' }, { value: '8', label: 'Instalasi Laboratorium', code: 'LAB' }, { value: '9', label: 'Instalasi Keuangan', code: 'FIN' }, { value: '10', label: 'Instalasi SDM', code: 'HR' }, { value: '11', label: 'Instalasi Teknologi Informasi', code: 'ITS' }, { value: '12', label: 'Instalasi Pemeliharaan & Sarana', code: 'MNT' }, { value: '13', label: 'Instalasi Gizi / Catering', code: 'CAT' }, { value: '14', label: 'Instalasi Keamanan', code: 'SEC' }, { value: '15', label: 'Instalasi Gawat Darurat', code: 'EMR' }, { value: '16', label: 'Instalasi Bedah Sentral', code: 'SUR' }, { value: '17', label: 'Instalasi Rawat Jalan', code: 'OUT' }, { value: '18', label: 'Instalasi Rawat Inap', code: 'INP' }, { value: '19', label: 'Instalasi Rehabilitasi Medik', code: 'REB' }, { value: '20', label: 'Instalasi Penelitian & Pengembangan', code: 'RSH' }, ], } export const installationConf = { msg: { placeholder: '---pilih instalasi', search: 'kode, nama instalasi', empty: 'instalasi tidak ditemukan', }, items: [ { value: '1', label: 'Ambulatory', code: 'AMB' }, { value: '2', label: 'Inpatient', code: 'IMP' }, { value: '3', label: 'Emergency', code: 'EMER' }, ], } // Helper function untuk filter unit berdasarkan installation export function getFilteredUnits(installationId: string) { if (!installationId || !installationUnitMapping[installationId]) { return [] } const allowedUnitIds = installationUnitMapping[installationId] return unitConf.items.filter((unit) => allowedUnitIds.includes(unit.value)) } // Helper function untuk membuat unit config yang ter-filter export function createFilteredUnitConf(installationId: string) { return { ...unitConf, items: getFilteredUnits(installationId), } }