diff --git a/app/handlers/encounter-entry.handler.ts b/app/handlers/encounter-entry.handler.ts index ad7c09b4..772c7cd9 100644 --- a/app/handlers/encounter-entry.handler.ts +++ b/app/handlers/encounter-entry.handler.ts @@ -61,6 +61,7 @@ export function useEncounterEntry(props: { const isSepValid = ref(false) const isCheckingSep = ref(false) const sepNumber = ref('') + const vclaimReference = ref(null) const isEditMode = computed(() => props.id > 0) @@ -201,6 +202,7 @@ export function useEncounterEntry(props: { } async function getValidateSepNumber(sepNumberValue: string) { + vclaimReference.value = null if (!sepNumberValue || sepNumberValue.trim() === '') { isSepValid.value = false isCheckingSep.value = false @@ -218,6 +220,17 @@ export function useEncounterEntry(props: { formObjects.value.medicalRecordNumber = response.peserta?.noMr || '-' formObjects.value.cardNumber = response.peserta?.noKartu || '-' formObjects.value.registerDate = response.tglSep || null + vclaimReference.value = { + noSep: response.noSep || sepNumberValue.trim(), + tglRujukan: response.tglSep ? new Date(response.tglSep).toISOString() : null, + ppkDirujuk: response.noRujukan || 'rssa', + jnsPelayanan: response.jnsPelayanan === 'Rawat Jalan' ? '2' : response.jnsPelayanan === 'Rawat Inap' ? '1' : null, + catatan: response.catatan || '', + diagRujukan: response.diagnosa || '', + tipeRujukan: response.tujuanKunj?.kode ?? '0', + poliRujukan: response.poli || '', + user: '', + } } isSepValid.value = result.body?.metaData?.code === '200' } @@ -434,20 +447,30 @@ export function useEncounterEntry(props: { const { specialist_id, subspecialist_id } = getSpecialistIdsFromCode(formValues.subSpecialistId || '') + const patientId = formValues.patient_id || selectedPatientObject.value?.id || Number(selectedPatient.value) + + const registeredAtValue = formValues.registeredAt || formValues.registerDate || '' + const visitDateValue = formValues.visitDate || formValues.registeredAt || formValues.registerDate || '' + const payload: any = { - patient_id: selectedPatientObject.value?.id || Number(selectedPatient.value), - registeredAt: formatDate(formValues.registerDate), - visitDate: formatDate(formValues.registerDate), - class_code: props.classCode || '', - subClass_code: props.subClassCode || '', - infra_id: null, - unit_id: null, - appointment_doctor_id: Number(formValues.doctorId), - responsible_doctor_id: Number(formValues.doctorId), + patient_id: patientId, + registeredAt: formatDate(registeredAtValue), + visitDate: formatDate(visitDateValue), + class_code: formValues.class_code || props.classCode || '', + subClass_code: formValues.subClass_code || props.subClassCode || '', + infra_id: formValues.infra_id ?? null, + unit_id: formValues.unit_id ?? null, + unit_code: formValues.unit_code ?? null, + appointment_doctor_code: formValues.appointment_doctor_code || null, + appointment_doctor_id: + formValues.appointment_doctor_id ?? (formValues.doctorId ? Number(formValues.doctorId) : null), + responsible_doctor_id: + formValues.responsible_doctor_id ?? (formValues.doctorId ? Number(formValues.doctorId) : null), + appointment_id: formValues.appointment_id ?? null, + refSource_name: formValues.refSource_name ?? '', + refTypeCode: formValues.refTypeCode ?? formValues.ref_type_code ?? null, + vclaimReference: vclaimReference ?? null, paymentType: formValues.paymentType, - cardNumber: formValues.cardNumber, - refSource_name: '', - appointment_id: null, } if (employeeId && employeeId > 0) { @@ -461,20 +484,39 @@ export function useEncounterEntry(props: { payload.subspecialist_id = subspecialist_id } - let paymentMethod = 'cash' - if (formValues.paymentType === 'jkn' || formValues.paymentType === 'jkmm') { - paymentMethod = 'insurance' - } else if (formValues.paymentType === 'spm') { - paymentMethod = 'cash' - } else if (formValues.paymentType === 'pks') { - paymentMethod = 'membership' + const memberNumber = formValues.member_number ?? formValues.cardNumber ?? formValues.memberNumber ?? null + const refNumber = formValues.ref_number ?? formValues.sepNumber ?? formValues.refNumber ?? null + + let paymentMethodCode = formValues.paymentMethod_code ?? null + if (!paymentMethodCode) { + if (formValues.paymentType === 'jkn' || formValues.paymentType === 'jkmm') { + paymentMethodCode = 'insurance' + } else if (formValues.paymentType === 'spm') { + paymentMethodCode = 'cash' + } else if (formValues.paymentType === 'pks') { + paymentMethodCode = 'membership' + } else { + paymentMethodCode = 'cash' + } } - if (paymentMethod === 'insurance') { - payload.paymentMethod_code = paymentMethod - payload.insuranceCompany_id = null - payload.member_number = formValues.cardNumber - payload.ref_number = formValues.sepNumber + if (paymentMethodCode) { + payload.paymentMethod_code = paymentMethodCode + } + + if (paymentMethodCode === 'insurance') { + payload.insuranceCompany_id = formValues.insuranceCompany_id ?? null + if (memberNumber) payload.member_number = memberNumber + if (refNumber) payload.ref_number = refNumber + if (formValues.refTypeCode) payload.refTypeCode = formValues.refTypeCode + if (formValues.vclaimReference) payload.vclaimReference = formValues.vclaimReference + } else { + if (paymentMethodCode === 'membership' && memberNumber) { + payload.member_number = memberNumber + } + if (refNumber) { + payload.ref_number = refNumber + } } if (props.classCode === 'ambulatory') {