feat(sep): add class form
This commit is contained in:
@@ -33,109 +33,201 @@ const ERROR_MESSAGES = {
|
||||
accidentDistrict: 'Kecamatan Kejadian lalu lintas wajib diisi',
|
||||
suplesi: 'Suplesi wajib diisi',
|
||||
suplesiNumber: 'Nomor Suplesi wajib diisi',
|
||||
classLevel: 'Kelas Rawat wajib diisi',
|
||||
classLevelUpgrade: 'Kelas Rawat Naik wajib diisi',
|
||||
classPaySource: 'Pembiayaan wajib diisi',
|
||||
responsiblePerson: 'Penanggung Jawab 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).optional(),
|
||||
supportCode: z
|
||||
.string({ required_error: ERROR_MESSAGES.required.supportCode })
|
||||
.min(1, ERROR_MESSAGES.required.supportCode).optional(),
|
||||
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(),
|
||||
})
|
||||
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)
|
||||
.optional(),
|
||||
supportCode: z
|
||||
.string({ required_error: ERROR_MESSAGES.required.supportCode })
|
||||
.min(1, ERROR_MESSAGES.required.supportCode)
|
||||
.optional(),
|
||||
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 }).optional(),
|
||||
accidentDate: z.string({ required_error: ERROR_MESSAGES.required.accidentDate }).optional(),
|
||||
accidentNote: z.string({ required_error: ERROR_MESSAGES.required.accidentNote }).optional(),
|
||||
accidentProvince: z.string({ required_error: ERROR_MESSAGES.required.accidentProvince }).optional(),
|
||||
accidentCity: z.string({ required_error: ERROR_MESSAGES.required.accidentCity }).optional(),
|
||||
accidentDistrict: z.string({ required_error: ERROR_MESSAGES.required.accidentDistrict }).optional(),
|
||||
suplesi: z.string({ required_error: ERROR_MESSAGES.required.suplesi }).optional(),
|
||||
suplesiNumber: z.string({ required_error: ERROR_MESSAGES.required.suplesiNumber }).optional(),
|
||||
classLevel: z.string({ required_error: ERROR_MESSAGES.required.classLevel }).optional(),
|
||||
classLevelUpgrade: z.string({ required_error: ERROR_MESSAGES.required.classLevelUpgrade }).optional(),
|
||||
classPaySource: z.string({ required_error: ERROR_MESSAGES.required.classPaySource }).optional(),
|
||||
responsiblePerson: z.string({ required_error: ERROR_MESSAGES.required.responsiblePerson }).optional(),
|
||||
})
|
||||
.refine(
|
||||
(data) => {
|
||||
return data.trafficAccident !== '' && data.accidentDate && data.accidentDate.trim() !== ''
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.accidentDate,
|
||||
path: ['accidentDate'],
|
||||
},
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
return data.trafficAccident !== '' && data.accidentProvince && data.accidentProvince.trim() !== ''
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.accidentProvince,
|
||||
path: ['accidentProvince'],
|
||||
},
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
return data.trafficAccident !== '' && data.accidentCity && data.accidentCity.trim() !== ''
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.accidentCity,
|
||||
path: ['accidentCity'],
|
||||
},
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
return data.trafficAccident !== '' && data.accidentDistrict && data.accidentDistrict.trim() !== ''
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.accidentDistrict,
|
||||
path: ['accidentDistrict'],
|
||||
},
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
return data.trafficAccident !== '' && data.suplesi && data.suplesi.trim() !== ''
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.suplesi,
|
||||
path: ['suplesi'],
|
||||
},
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
return (
|
||||
data.trafficAccident !== '' &&
|
||||
data.suplesi?.trim() === 'yes' &&
|
||||
data.suplesiNumber &&
|
||||
data.suplesiNumber.trim() !== ''
|
||||
)
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.suplesiNumber,
|
||||
path: ['suplesiNumber'],
|
||||
},
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
return data.serviceType === '1' && data.classLevel && data.classLevel.trim() !== ''
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.classLevel,
|
||||
path: ['classLevel'],
|
||||
},
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
return data.serviceType === '1' && data.classLevelUpgrade && data.classLevelUpgrade.trim() !== ''
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.classLevelUpgrade,
|
||||
path: ['classLevelUpgrade'],
|
||||
},
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
return (
|
||||
data.serviceType === '1' &&
|
||||
data.classLevelUpgrade?.trim() !== '' &&
|
||||
data.classPaySource &&
|
||||
data.classPaySource.trim() !== ''
|
||||
)
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.classLevelUpgrade,
|
||||
path: ['classPaySource'],
|
||||
},
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
return (
|
||||
data.serviceType === '1' &&
|
||||
data.classPaySource?.trim() !== '' &&
|
||||
data.responsiblePerson &&
|
||||
data.responsiblePerson.trim() !== ''
|
||||
)
|
||||
},
|
||||
{
|
||||
message: ERROR_MESSAGES.required.responsiblePerson,
|
||||
path: ['responsiblePerson'],
|
||||
},
|
||||
)
|
||||
|
||||
type IntegrationBpjsFormData = z.infer<typeof IntegrationBpjsSchema>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user