feat: add member validation and enhance encounter entry form with additional fields

This commit is contained in:
riefive
2025-11-27 14:19:58 +07:00
parent b38487e41f
commit d8f2e30bd6
3 changed files with 204 additions and 21 deletions

No files matched your search

+25 -2
View File
@@ -23,6 +23,7 @@ import {
getDetail as getEncounterDetail,
update as updateEncounter,
} from '~/services/encounter.service'
import { getList as getMemberList } from '~/services/vclaim-member.service'
import { getList as getSepList } from '~/services/vclaim-sep.service'
// Handlers
@@ -59,6 +60,7 @@ export function useEncounterEntry(props: {
const encounterData = ref<any>(null)
const formObjects = ref<any>({})
const isSepValid = ref(false)
const isMemberValid = ref(false)
const isCheckingSep = ref(false)
const sepNumber = ref('')
const vclaimReference = ref<any>(null)
@@ -201,6 +203,19 @@ export function useEncounterEntry(props: {
return { specialist_id: null, subspecialist_id: null }
}
async function getValidateMember(member: string) {
if (isCheckingSep.value) return
isMemberValid.value = false
try {
const result = await getMemberList({ mode: 'by-card', number: member, date: new Date().toISOString().split('T')[0] })
if (result.success && result.body?.response !== null) {
isMemberValid.value = result.body?.metaData?.code === '200'
}
} catch (error) {
console.error('Error checking member:', error)
}
}
async function getValidateSepNumber(sepNumberValue: string) {
vclaimReference.value = null
if (!sepNumberValue || sepNumberValue.trim() === '') {
@@ -220,11 +235,16 @@ export function useEncounterEntry(props: {
formObjects.value.medicalRecordNumber = response.peserta?.noMr || '-'
formObjects.value.cardNumber = response.peserta?.noKartu || '-'
formObjects.value.registerDate = response.tglSep || null
formObjects.value.sepReference = response.noSep || '-'
formObjects.value.sepControlDate = response.tglSep || null
formObjects.value.sepTrafficStatus = response.nmstatusKecelakaan || '-'
formObjects.value.diagnosis = response.diagnosa || '-'
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,
jnsPelayanan:
response.jnsPelayanan === 'Rawat Jalan' ? '2' : response.jnsPelayanan === 'Rawat Inap' ? '1' : null,
catatan: response.catatan || '',
diagRujukan: response.diagnosa || '',
tipeRujukan: response.tujuanKunj?.kode ?? '0',
@@ -233,6 +253,7 @@ export function useEncounterEntry(props: {
}
}
isSepValid.value = result.body?.metaData?.code === '200'
isMemberValid.value = isSepValid.value
}
} catch (error) {
console.error('Error checking SEP:', error)
@@ -497,7 +518,7 @@ export function useEncounterEntry(props: {
if (paymentMethodCode) {
payload.paymentMethod_code = paymentMethodCode
}
if (paymentMethodCode === 'insurance') {
payload.insuranceCompany_id = formValues.insuranceCompany_id ?? null
if (memberNumber) payload.member_number = memberNumber
@@ -565,6 +586,7 @@ export function useEncounterEntry(props: {
encounterData,
formObjects,
openPatient,
isMemberValid,
isSepValid,
isCheckingSep,
isEditMode,
@@ -585,6 +607,7 @@ export function useEncounterEntry(props: {
getPatientsList,
getPatientCurrent,
getPatientByIdentifierSearch,
getValidateMember,
getValidateSepNumber,
handleFetchSpecialists,
handleFetchDoctors,