feat/role-check: updat flow for input encounter

This commit is contained in:
2025-12-15 12:10:04 +07:00
parent 49ffad1dde
commit bd48cc5907
13 changed files with 1163 additions and 499 deletions

No files matched your search

+46 -32
View File
@@ -24,6 +24,7 @@ import {
import { getDetail as getDoctorDetail, getValueLabelList as getDoctorValueLabelList } from '~/services/doctor.service'
import {
create as createEncounter,
createWithPatient,
getDetail as getEncounterDetail,
update as updateEncounter,
} from '~/services/encounter.service'
@@ -510,15 +511,18 @@ export function useEncounterEntry(props: {
}
async function handleSaveEncounter(formValues: any) {
console.log(formValues)
return
if (!selectedPatient.value || !selectedPatientObject.value) {
toast({
title: 'Gagal',
description: 'Pasien harus dipilih terlebih dahulu',
variant: 'destructive',
})
return
let enccounterRef = formValues
if (!formValues.encounter) {
if (!selectedPatient.value || !selectedPatientObject.value) {
toast({
title: 'Gagal',
description: 'Pasien harus dipilih terlebih dahulu',
variant: 'destructive',
})
return
}
} else {
enccounterRef = {...formValues.encounter}
}
try {
@@ -532,24 +536,24 @@ export function useEncounterEntry(props: {
return date.toISOString()
}
const { specialist_id, subspecialist_id } = getSpecialistIdsFromCode(formValues.subSpecialistId || '')
const { specialist_id, subspecialist_id } = getSpecialistIdsFromCode(enccounterRef.subSpecialistId || '')
const patientId = formValues.patient_id || selectedPatientObject.value?.id || Number(selectedPatient.value)
const patientId = enccounterRef.patient_id || selectedPatientObject.value?.id || Number(selectedPatient.value)
const registeredAtValue = formValues.registeredAt || formValues.registerDate || ''
const visitDateValue = formValues.visitDate || formValues.registeredAt || formValues.registerDate || ''
const memberNumber = formValues.member_number ?? formValues.cardNumber ?? formValues.memberNumber ?? null
const refNumber = formValues.ref_number ?? formValues.sepNumber ?? formValues.refNumber ?? null
sepFile.value = formValues.sepFile || null
sippFile.value = formValues.sippFile || null
const registeredAtValue = enccounterRef.registeredAt || enccounterRef.registerDate || ''
const visitDateValue = enccounterRef.visitDate || enccounterRef.registeredAt || enccounterRef.registerDate || ''
const memberNumber = enccounterRef.member_number ?? enccounterRef.cardNumber ?? enccounterRef.memberNumber ?? null
const refNumber = enccounterRef.ref_number ?? enccounterRef.sepNumber ?? enccounterRef.refNumber ?? null
sepFile.value = enccounterRef.sepFile || null
sippFile.value = enccounterRef.sippFile || null
let paymentMethodCode = formValues.paymentMethod_code ?? null
let paymentMethodCode = enccounterRef.paymentMethod_code ?? null
if (!isUsePaymentNew && !paymentMethodCode) {
if (formValues.paymentType === 'jkn' || formValues.paymentType === 'jkmm') {
if (enccounterRef.paymentType === 'jkn' || enccounterRef.paymentType === 'jkmm') {
paymentMethodCode = 'insurance'
} else if (formValues.paymentType === 'spm') {
} else if (enccounterRef.paymentType === 'spm') {
paymentMethodCode = 'cash'
} else if (formValues.paymentType === 'pks') {
} else if (enccounterRef.paymentType === 'pks') {
paymentMethodCode = 'membership'
} else {
paymentMethodCode = 'cash'
@@ -558,16 +562,16 @@ export function useEncounterEntry(props: {
const payload: any = {
patient_id: patientId,
appointment_doctor_code: formValues.doctor_code || null,
appointment_doctor_code: enccounterRef.doctor_code || null,
class_code: props.classCode || '',
subClass_code: props.subclassCode || '',
specialist_code: selectedDoctor.value?.specialist_code || '',
infra_id: formValues.infra_id ?? null,
unit_code: formValues.unitCode ?? userStore?.user?.unit_code ?? null,
refSource_name: formValues.refSource_name ?? 'RSSA',
refTypeCode: formValues.paymentType === 'jkn' ? 'bpjs' : '',
infra_id: enccounterRef.infra_id ?? null,
unit_code: enccounterRef.unitCode ?? userStore?.user?.unit_code ?? null,
refSource_name: enccounterRef.refSource_name ?? 'RSSA',
refTypeCode: enccounterRef.paymentType === 'jkn' ? 'bpjs' : '',
vclaimReference: vclaimReference.value ?? null,
paymentType: formValues.paymentType,
paymentType: enccounterRef.paymentType,
registeredAt: formatDate(registeredAtValue),
visitDate: formatDate(visitDateValue),
}
@@ -594,10 +598,10 @@ export function useEncounterEntry(props: {
}
if (paymentMethodCode === 'insurance') {
payload.insuranceCompany_id = formValues.insuranceCompany_id ?? null
payload.insuranceCompany_id = enccounterRef.insuranceCompany_id ?? null
if (memberNumber) payload.member_number = memberNumber
if (formValues.refTypeCode) payload.refTypeCode = formValues.refTypeCode
if (formValues.vclaimReference) payload.vclaimReference = formValues.vclaimReference
if (enccounterRef.refTypeCode) payload.refTypeCode = enccounterRef.refTypeCode
if (enccounterRef.vclaimReference) payload.vclaimReference = enccounterRef.vclaimReference
} else {
if (paymentMethodCode === 'membership' && memberNumber) {
payload.member_number = memberNumber
@@ -613,8 +617,18 @@ export function useEncounterEntry(props: {
if (isEditMode.value) {
result = await updateEncounter(props.id, payload)
} else {
console.log('💾 [ADD MODE] Sending POST request:', { payload })
result = await createEncounter(payload)
// console.log('💾 [ADD MODE] Sending POST request:', { payload })
if (!formValues.encounter) {
result = await createEncounter(payload)
} else {
if (formValues.patient?.person?.birthDate) {
formValues.patient.person.birthDate += 'T00:00:00.000Z'
}
result = await createWithPatient({
encounter: payload,
patient: formValues.patient,
})
}
}
if (result.success) {