Files
simrsx-fe/app/schemas/integration-bpjs.schema.ts
T

146 lines
6.3 KiB
TypeScript

import { not } from '@vueuse/math'
import { z } from 'zod'
import { serviceAssessments, serviceTypes } from '~/lib/constants.vclaim'
const ERROR_MESSAGES = {
required: {
sepDate: 'Tanggal wajib diisi',
serviceType: 'Jenis Pelayanan wajib diisi',
admissionType: 'Jenis Pendaftaran wajib diisi',
bpjsNumber: 'No. Kartu BPJS wajib diisi',
nationalId: 'Nomor ID wajib diisi',
medicalRecordNumber: 'Nomor Rekam Medis wajib diisi',
patientName: 'Nama wajib diisi',
phoneNumber: 'Nomor Telepon wajib diisi',
referralLetterNumber: 'Nomor Surat Kontrol wajib diisi',
referralLetterDate: 'Tanggal Surat Kontrol wajib diisi',
fromClinic: 'Faskes Asal wajib diisi',
destinationClinic: 'Klinik Tujuan wajib diisi',
attendingDoctor: 'Dokter wajib diisi',
initialDiagnosis: 'Diagnosa Awal wajib diisi',
cob: 'COB wajib diisi',
cataract: 'Katarak wajib diisi',
clinicExcecutive: 'Klinkik eksekutif wajib diisi',
procedureType: 'Jenis Prosedur wajib diisi',
supportCode: 'Kode Penunjang wajib diisi',
note: 'Catatan wajib diisi',
trafficAccident: 'Kejadian lalu lintas wajib diisi',
purposeOfVisit: 'Tujuan Kunjungan wajib diisi',
serviceAssessment: 'Assemen Pelayanan wajib diisi',
lpNumber: 'Nomor LP wajib diisi',
accidentDate: 'Tanggal Kejadian lalu lintas wajib diisi',
accidentNote: 'Keterangan Kejadian lalu lintas wajib diisi',
accidentProvince: 'Provinsi Kejadian lalu lintas wajib diisi',
accidentCity: 'Kota Kejadian lalu lintas wajib diisi',
accidentDistrict: 'Kecamatan Kejadian lalu lintas wajib diisi',
suplesi: 'Suplesi wajib diisi',
suplesiNumber: 'Nomor Suplesi wajib diisi',
},
}
const IntegrationBpjsSchema = z.object({
sepDate: z.string({ required_error: ERROR_MESSAGES.required.sepDate }).min(1, ERROR_MESSAGES.required.sepDate),
serviceType: z
.string({ required_error: ERROR_MESSAGES.required.serviceType })
.min(1, ERROR_MESSAGES.required.serviceType)
.optional(),
admissionType: z
.string({ required_error: ERROR_MESSAGES.required.admissionType })
.min(1, ERROR_MESSAGES.required.admissionType),
bpjsNumber: z
.string({ required_error: ERROR_MESSAGES.required.bpjsNumber })
.min(1, ERROR_MESSAGES.required.bpjsNumber),
nationalId: z
.string({ required_error: ERROR_MESSAGES.required.nationalId })
.min(1, ERROR_MESSAGES.required.nationalId),
medicalRecordNumber: z
.string({ required_error: ERROR_MESSAGES.required.medicalRecordNumber })
.min(1, ERROR_MESSAGES.required.medicalRecordNumber),
patientName: z
.string({ required_error: ERROR_MESSAGES.required.patientName })
.min(1, ERROR_MESSAGES.required.patientName),
phoneNumber: z
.string({ required_error: ERROR_MESSAGES.required.phoneNumber })
.min(1, ERROR_MESSAGES.required.phoneNumber),
referralLetterNumber: z
.string({ required_error: ERROR_MESSAGES.required.referralLetterNumber })
.min(1, ERROR_MESSAGES.required.referralLetterNumber),
referralLetterDate: z
.string({ required_error: ERROR_MESSAGES.required.referralLetterDate })
.min(1, ERROR_MESSAGES.required.referralLetterDate),
fromClinic: z
.string({ required_error: ERROR_MESSAGES.required.fromClinic })
.min(1, ERROR_MESSAGES.required.fromClinic)
.optional(),
destinationClinic: z
.string({ required_error: ERROR_MESSAGES.required.destinationClinic })
.min(1, ERROR_MESSAGES.required.destinationClinic),
attendingDoctor: z
.string({ required_error: ERROR_MESSAGES.required.attendingDoctor })
.min(1, ERROR_MESSAGES.required.attendingDoctor),
initialDiagnosis: z
.string({ required_error: ERROR_MESSAGES.required.initialDiagnosis })
.min(1, ERROR_MESSAGES.required.initialDiagnosis),
cob: z.string({ required_error: ERROR_MESSAGES.required.cob }).min(1, ERROR_MESSAGES.required.cob),
cataract: z.string({ required_error: ERROR_MESSAGES.required.cataract }).min(1, ERROR_MESSAGES.required.cataract),
clinicExcecutive: z
.string({ required_error: ERROR_MESSAGES.required.clinicExcecutive })
.min(1, ERROR_MESSAGES.required.clinicExcecutive),
procedureType: z
.string({ required_error: ERROR_MESSAGES.required.procedureType })
.min(1, ERROR_MESSAGES.required.procedureType),
supportCode: z
.string({ required_error: ERROR_MESSAGES.required.supportCode })
.min(1, ERROR_MESSAGES.required.supportCode),
note: z.string({ required_error: ERROR_MESSAGES.required.note }).min(1, ERROR_MESSAGES.required.note).optional(),
trafficAccident: z
.string({ required_error: ERROR_MESSAGES.required.trafficAccident })
.min(1, ERROR_MESSAGES.required.trafficAccident)
.optional(),
purposeOfVisit: z
.string({ required_error: ERROR_MESSAGES.required.purposeOfVisit })
.min(1, ERROR_MESSAGES.required.purposeOfVisit)
.optional(),
serviceAssessment: z
.string({ required_error: ERROR_MESSAGES.required.serviceAssessment })
.min(1, ERROR_MESSAGES.required.serviceAssessment)
.optional(),
lpNumber: z
.string({ required_error: ERROR_MESSAGES.required.lpNumber })
.min(1, ERROR_MESSAGES.required.lpNumber)
.optional(),
accidentDate: z
.string({ required_error: ERROR_MESSAGES.required.accidentDate })
.min(1, ERROR_MESSAGES.required.accidentDate)
.optional(),
accidentNote: z
.string({ required_error: ERROR_MESSAGES.required.accidentNote })
.min(1, ERROR_MESSAGES.required.accidentNote)
.optional(),
accidentProvince: z
.string({ required_error: ERROR_MESSAGES.required.accidentProvince })
.min(1, ERROR_MESSAGES.required.accidentProvince)
.optional(),
accidentCity: z
.string({ required_error: ERROR_MESSAGES.required.accidentCity })
.min(1, ERROR_MESSAGES.required.accidentCity)
.optional(),
accidentDistrict: z
.string({ required_error: ERROR_MESSAGES.required.accidentDistrict })
.min(1, ERROR_MESSAGES.required.accidentDistrict)
.optional(),
suplesi: z
.string({ required_error: ERROR_MESSAGES.required.suplesi })
.min(1, ERROR_MESSAGES.required.suplesi)
.optional(),
suplesiNumber: z
.string({ required_error: ERROR_MESSAGES.required.suplesiNumber })
.min(1, ERROR_MESSAGES.required.suplesiNumber)
.optional(),
})
type IntegrationBpjsFormData = z.infer<typeof IntegrationBpjsSchema>
export { IntegrationBpjsSchema }
export type { IntegrationBpjsFormData }