From acc45b205f9df0f5862985909cd6fc5231f6876c Mon Sep 17 00:00:00 2001 From: riefive Date: Wed, 3 Dec 2025 16:25:15 +0700 Subject: [PATCH 1/7] fix: upload sep + sipp file --- app/components/app/encounter/entry-form.vue | 7 ++++--- app/handlers/encounter-entry.handler.ts | 14 +++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/components/app/encounter/entry-form.vue b/app/components/app/encounter/entry-form.vue index 34497de7..fd490411 100644 --- a/app/components/app/encounter/entry-form.vue +++ b/app/components/app/encounter/entry-form.vue @@ -181,10 +181,11 @@ function onAddSep() { const formValues = { patientId: patientId.value || '', doctorCode: doctorCode.value, - // subSpecialistCode: subSpecialistCode.value, registerDate: registerDate.value, cardNumber: cardNumber.value, paymentMethodCode: paymentMethodCode.value, + sepFile: sepFile.value, + sippFile: sippFile.value, sepType: sepType.value } emit('event', 'add-sep', formValues) @@ -553,7 +554,7 @@ defineExpose({ :max-size-mb="1" v-model="sepFile" v-bind="sepFileAttrs" - @file-selected="(file: any) => { console.log(file) }" + @file-selected="() => {}" /> {{ noteFile }} @@ -569,7 +570,7 @@ defineExpose({ :max-size-mb="1" v-model="sippFile" v-bind="sippFileAttrs" - @file-selected="(file: any) => { console.log(file) }" + @file-selected="() => {}" /> {{ noteFile }} diff --git a/app/handlers/encounter-entry.handler.ts b/app/handlers/encounter-entry.handler.ts index cc5eda23..a7daf29d 100644 --- a/app/handlers/encounter-entry.handler.ts +++ b/app/handlers/encounter-entry.handler.ts @@ -501,6 +501,8 @@ export function useEncounterEntry(props: { 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 let paymentMethodCode = formValues.paymentMethod_code ?? null if (!paymentMethodCode) { @@ -545,18 +547,21 @@ export function useEncounterEntry(props: { if (paymentMethodCode) { payload.paymentMethod_code = paymentMethodCode } + if (!payload.vclaimReference) { + payload.vclaimReference = { + noSep: refNumber, + } + } 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 (isAdmin && props.classCode === 'ambulatory') { @@ -573,9 +578,6 @@ export function useEncounterEntry(props: { } if (result.success) { - console.log(result) - console.log(sepFile.value) - console.log(sippFile.value) // const encounterId = isEditMode.value ? props.id : result.body?.data?.id if (patientId) { if (sepFile.value) { @@ -620,8 +622,6 @@ export function useEncounterEntry(props: { paymentsList, sepsList, sepNumber, - sepFile, - sippFile, participantGroupsList, specialistsTree, doctorsList, From d2ceda37bf0e9b76cefb4aa26112bafb17abeace Mon Sep 17 00:00:00 2001 From: riefive Date: Thu, 4 Dec 2025 10:58:16 +0700 Subject: [PATCH 2/7] feat: Implement encounter list management with search, date range filtering, and record actions. --- app/components/app/encounter/filter-nav.vue | 80 +++++++++++---------- app/components/content/encounter/list.vue | 68 +++++++++++------- app/handlers/encounter-entry.handler.ts | 2 +- 3 files changed, 89 insertions(+), 61 deletions(-) diff --git a/app/components/app/encounter/filter-nav.vue b/app/components/app/encounter/filter-nav.vue index 947148aa..8f4c850e 100644 --- a/app/components/app/encounter/filter-nav.vue +++ b/app/components/app/encounter/filter-nav.vue @@ -18,25 +18,13 @@ const props = defineProps<{ onExportCsv?: () => void }>() -// function emitSearchNavClick() { -// props.refSearchNav?.onClick() -// } -// -// function onInput(event: Event) { -// props.refSearchNav?.onInput((event.target as HTMLInputElement).value) -// } -// -// function btnClick() { -// props.prep?.addNav?.onClick?.() -// } +const emit = defineEmits<{ + apply: [filters: { personName: string; startDate: string; endDate: string }] +}>() const searchQuery = ref('') const isRoleRegistration = props.activePositon === 'registration' const isRoleMedical = props.activePositon === 'medical' -const dateRange = ref<{ from: Date | null; to: Date | null }>({ - from: new Date(), - to: new Date(), -}) const df = new DateFormatter('en-US', { dateStyle: 'medium', @@ -49,31 +37,47 @@ const todayCalendar = new CalendarDate(today.getFullYear(), today.getMonth() + 1 // Get date 1 month ago const oneMonthAgo = new Date(today) oneMonthAgo.setMonth(today.getMonth() - 1) -const oneMonthAgoCalendar = new CalendarDate(oneMonthAgo.getFullYear(), oneMonthAgo.getMonth() + 1, oneMonthAgo.getDate()) +const oneMonthAgoCalendar = new CalendarDate( + oneMonthAgo.getFullYear(), + oneMonthAgo.getMonth() + 1, + oneMonthAgo.getDate(), +) const value = ref({ start: oneMonthAgoCalendar, end: todayCalendar, }) as Ref -// function onFilterClick() { -// console.log('Search:', searchQuery.value) -// console.log('Date Range:', dateRange.value) -// props.refSearchNav?.onClick() -// } +function onFilterClick() { + const startDate = value.value.start ? value.value.start.toString() : '' + const endDate = value.value.end ? value.value.end.toString() : startDate + + emit('apply', { + personName: searchQuery.value, + startDate, + endDate, + }) +} - + @@ -99,28 +103,32 @@ const value = ref({ - - - - Ekspor PDF - - - Ekspor CSV - - - Ekspor Excel - + Ekspor PDF + Ekspor CSV + Ekspor Excel diff --git a/app/components/content/encounter/list.vue b/app/components/content/encounter/list.vue index 1ea0d6a0..3aeb1254 100644 --- a/app/components/content/encounter/list.vue +++ b/app/components/content/encounter/list.vue @@ -13,7 +13,11 @@ import { useSidebar } from '~/components/pub/ui/sidebar/utils' import { getServicePosition } from '~/lib/roles' // previously getPositionAs // Services -import { getList as getEncounterList, remove as removeEncounter, cancel as cancelEncounter } from '~/services/encounter.service' +import { + getList as getEncounterList, + remove as removeEncounter, + cancel as cancelEncounter, +} from '~/services/encounter.service' // Apps import Content from '~/components/app/encounter/list.vue' @@ -40,6 +44,7 @@ const { getActiveRole } = useUserStore() // Main data const data = ref([]) const dataFiltered = ref([]) +const filterParams = ref({}) const activeServicePosition = ref(getServicePosition(getActiveRole())) const isLoading = reactive({ summary: false, @@ -99,27 +104,30 @@ provide('rec_action', recAction) provide('rec_item', recItem) provide('table_data_loader', isLoading) -watch(getActiveRole, (role? : string) => { +watch(getActiveRole, (role?: string) => { activeServicePosition.value = getServicePosition(role) }) -watch(() => recAction.value, () => { - const basePath = `/${props.classCode}/encounter` - if (recAction.value === ActionEvents.showConfirmDelete) { - isRecordConfirmationOpen.value = true - } else if (recAction.value === ActionEvents.showCancel) { - isRecordCancelOpen.value = true - } else if (recAction.value === ActionEvents.showDetail) { - navigateTo(`${basePath}/${recId.value}/detail`) - } else if (recAction.value === ActionEvents.showEdit) { - navigateTo(`${basePath}/${recId.value}/edit`) - } else if (recAction.value === ActionEvents.showProcess) { - navigateTo(`${basePath}/${recId.value}/process`) - } else if (recAction.value === ActionEvents.showConfirmDelete) { - isRecordConfirmationOpen.value = true - } - recAction.value = '' // reset -}) +watch( + () => recAction.value, + () => { + const basePath = `/${props.classCode}/encounter` + if (recAction.value === ActionEvents.showConfirmDelete) { + isRecordConfirmationOpen.value = true + } else if (recAction.value === ActionEvents.showCancel) { + isRecordCancelOpen.value = true + } else if (recAction.value === ActionEvents.showDetail) { + navigateTo(`${basePath}/${recId.value}/detail`) + } else if (recAction.value === ActionEvents.showEdit) { + navigateTo(`${basePath}/${recId.value}/edit`) + } else if (recAction.value === ActionEvents.showProcess) { + navigateTo(`${basePath}/${recId.value}/process`) + } else if (recAction.value === ActionEvents.showConfirmDelete) { + isRecordConfirmationOpen.value = true + } + recAction.value = '' // reset + }, +) onMounted(() => { getPatientList() @@ -128,13 +136,16 @@ onMounted(() => { /////// Functions async function getPatientList() { isLoading.isTableLoading = true + const includesParams = + 'patient,patient-person,patient-person-addresses,unit,Appointment_Doctor,Appointment_Doctor-employee,Appointment_Doctor-employee-person,Responsible_Doctor,Responsible_Doctor-employee,Responsible_Doctor-employee-person' + data.value = [] try { - const params: any = { includes: 'patient,patient-person' } + const params: any = { includes: includesParams, ...filterParams.value } if (props.classCode) { - params['class-code'] = props.classCode + params.class_code = props.classCode } if (props.subClassCode) { - params['sub-class-code'] = props.subClassCode + params.sub_class_code = props.subClassCode } const result = await getEncounterList(params) if (result.success) { @@ -148,6 +159,15 @@ async function getPatientList() { } } +function handleFilterApply(filters: { personName: string; startDate: string; endDate: string }) { + filterParams.value = { + 'person-name': filters.personName, + 'start-date': filters.startDate, + 'end-date': filters.endDate, + } + getPatientList() +} + // Handle confirmation result async function handleConfirmCancel(record: any, action: string) { if (action === 'deactivate' && record?.id) { @@ -243,7 +263,7 @@ function handleRemoveConfirmation() { - + diff --git a/app/handlers/encounter-entry.handler.ts b/app/handlers/encounter-entry.handler.ts index a7daf29d..2a91b1b1 100644 --- a/app/handlers/encounter-entry.handler.ts +++ b/app/handlers/encounter-entry.handler.ts @@ -519,7 +519,7 @@ export function useEncounterEntry(props: { const payload: any = { patient_id: patientId, - appointment_doctor_code: formValues.doctorId || null, + appointment_doctor_code: formValues.doctorCode || null, class_code: props.classCode || '', subClass_code: props.subClassCode || '', infra_id: formValues.infra_id ?? null, From 5da439720f541fa48ad5015617cb98a847b0fcfc Mon Sep 17 00:00:00 2001 From: riefive Date: Thu, 4 Dec 2025 11:59:37 +0700 Subject: [PATCH 3/7] feat: implement encounter entry form for patient, doctor, payment, and SEP management --- app/components/app/encounter/entry-form.vue | 62 ++++++++++++++++----- app/handlers/encounter-entry.handler.ts | 42 +++++++++++--- app/handlers/supporting-document.handler.ts | 14 +++++ 3 files changed, 96 insertions(+), 22 deletions(-) diff --git a/app/components/app/encounter/entry-form.vue b/app/components/app/encounter/entry-form.vue index fd490411..9e6ca98f 100644 --- a/app/components/app/encounter/entry-form.vue +++ b/app/components/app/encounter/entry-form.vue @@ -23,6 +23,7 @@ import { paymentMethodCodes } from '~/const/key-val/common' // App things import { genEncounter, type Encounter } from '~/models/encounter' +import { se } from 'date-fns/locale' // Props const props = defineProps<{ @@ -48,7 +49,7 @@ const model = defineModel() model.value = genEncounter() // Common preparation -const defaultCBItems = [{ label: 'Pilih', value: '' }]; +const defaultCBItems = [{ label: 'Pilih', value: '' }] const paymentMethodItems = CB.recStrToItem(paymentMethodCodes) // Emit preparation @@ -95,7 +96,10 @@ const isInsurancePayment = computed(() => ['insurance', 'jkn'].includes(paymentM const isDateLoading = ref(false) const debouncedSepNumber = refDebounced(sepNumber, 500) const debouncedCardNumber = refDebounced(cardNumber, 500) +const sepFileReview = ref(null) +const sippFileReview = ref(null) const unitFullName = ref('') // Unit, specialist, subspecialist +const formRef = ref(null) // Expose submit method for parent component if (mode === 'add') { // Set default sepDate to current date in YYYY-MM-DD format @@ -106,11 +110,10 @@ if (mode === 'add') { registerDate.value = `${year}-${month}-${day}` } -watch(() => props.selectedDoctor, (doctor) => { - unitFullName.value = doctor.subspecialist?.name ?? - doctor.specialist?.name ?? - doctor.unit?.name ?? - 'tidak diketahui' +watch( + () => props.selectedDoctor, + (doctor) => { + unitFullName.value = doctor.subspecialist?.name ?? doctor.specialist?.name ?? doctor.unit?.name ?? 'tidak diketahui' model.value!.unit_code = doctor.unit_code || '' model.value!.specialist_code = doctor.specialist_code || '' model.value!.subspecialist_code = doctor.subspecialist_code || '' @@ -126,12 +129,13 @@ watch( nationalIdentity.value = objects?.nationalIdentity || '' medicalRecordNumber.value = objects?.medicalRecordNumber || '' doctorCode.value = objects?.doctorCode || '' - // subSpecialistCode.value = objects?.subSpecialistCode || '' paymentMethodCode.value = objects?.paymentMethodCode || '' patientCategory.value = objects?.patientCategory || '' cardNumber.value = objects?.cardNumber || '' sepType.value = objects?.sepType || '' sepNumber.value = objects?.sepNumber || '' + sepFileReview.value = objects?.sepFileReview || '' + sippFileReview.value = objects?.sippFileReview || '' isDateLoading.value = true setTimeout(() => { registerDate.value = objects?.registerDate || '' @@ -186,7 +190,7 @@ function onAddSep() { paymentMethodCode: paymentMethodCode.value, sepFile: sepFile.value, sippFile: sippFile.value, - sepType: sepType.value + sepType: sepType.value, } emit('event', 'add-sep', formValues) } @@ -197,12 +201,21 @@ function onSearchSep() { // Submit handler const onSubmit = handleSubmit((values) => { - console.log('✅ Validated form values:', JSON.stringify(values, null, 2)) - emit('event', 'save', values) + let payload: any = values + if (props.mode === 'edit') { + payload = { + ...payload, + sepFileReview: sepFileReview.value, + sippFileReview: sippFileReview.value, + } + return + } + emit('event', 'save', payload) }) -// Expose submit method for parent component -const formRef = ref(null) +function openFile(path: string) { + window.open(path, '_blank') +} function submitForm() { // Trigger form submit using native form submit @@ -347,7 +360,10 @@ defineExpose({ * - + @@ -415,7 +431,7 @@ defineExpose({ placeholder="Pilih Kelompok Peserta" /> - + {{ noteReference }} @@ -434,7 +450,7 @@ defineExpose({ placeholder="Masukkan nomor kartu BPJS" /> -
@@ -559,6 +575,14 @@ defineExpose({ {{ noteFile }} + + {{ sepFileReview?.fileName }} + @@ -575,6 +599,14 @@ defineExpose({ {{ noteFile }} + + {{ sippFileReview?.fileName }} + diff --git a/app/handlers/encounter-entry.handler.ts b/app/handlers/encounter-entry.handler.ts index 2a91b1b1..2efb3c9d 100644 --- a/app/handlers/encounter-entry.handler.ts +++ b/app/handlers/encounter-entry.handler.ts @@ -13,6 +13,9 @@ import { genDoctor, type Doctor } from '~/models/doctor' // Stores import { useUserStore } from '~/stores/user' +// Handlers +import { uploadAttachmentCustom } from '~/handlers/supporting-document.handler' + // Services import { getList as getSpecialistList, @@ -26,7 +29,6 @@ import { } from '~/services/encounter.service' import { getList as getMemberList } from '~/services/vclaim-member.service' import { getList as getSepList } from '~/services/vclaim-sep.service' -import { uploadAttachment } from '~/services/supporting-document.service' // Handlers import { @@ -468,6 +470,19 @@ export function useEncounterEntry(props: { if (formData.subSpecialistId) { await handleFetchDoctors(formData.subSpecialistId) } + if (encounter.encounterDocuments && Array.isArray(encounter.encounterDocuments)) { + let sepFileReview = {} + let sippFileReview = {} + for (const doc of encounter.encounterDocuments) { + if (doc.type === 'vclaim-sep') { + sepFileReview = { id: doc.id, fileName: doc.fileName, filePath: doc.filePath, type: doc.type_code } + } else if (doc.type === 'vclaim-sipp') { + sippFileReview = { id: doc.id, fileName: doc.fileName, filePath: doc.filePath, type: doc.type_code } + } + } + formData.sepFileReview = sepFileReview + formData.sippFileReview = sippFileReview + } formObjects.value = { ...formData } } @@ -501,7 +516,7 @@ export function useEncounterEntry(props: { 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 + sepFile.value = formValues.sepFile || null sippFile.value = formValues.sippFile || null let paymentMethodCode = formValues.paymentMethod_code ?? null @@ -519,7 +534,7 @@ export function useEncounterEntry(props: { const payload: any = { patient_id: patientId, - appointment_doctor_code: formValues.doctorCode || null, + appointment_doctor_code: formValues.doctor_code || null, class_code: props.classCode || '', subClass_code: props.subClassCode || '', infra_id: formValues.infra_id ?? null, @@ -578,13 +593,26 @@ export function useEncounterEntry(props: { } if (result.success) { - // const encounterId = isEditMode.value ? props.id : result.body?.data?.id - if (patientId) { + const encounterId = isEditMode.value ? props.id : result.body?.data?.id + + if (encounterId) { if (sepFile.value) { - await uploadAttachment(sepFile.value, patientId, 'vclaim-sep') + await uploadAttachmentCustom({ + id: isEditMode.value && formValues.sepFileReview ? formValues.sepFileReview.id : null, + file: sepFile.value, + refId: encounterId, + entityTypeCode: 'encounter', + type: 'vclaim-sep', + }) } if (sippFile.value) { - await uploadAttachment(sippFile.value, patientId, 'vclaim-sipp') + await uploadAttachmentCustom({ + id: isEditMode.value && formValues.sippFileReview ? formValues.sippFileReview.id : null, + file: sippFile.value, + refId: encounterId, + entityTypeCode: 'encounter', + type: 'vclaim-sipp', + }) } } diff --git a/app/handlers/supporting-document.handler.ts b/app/handlers/supporting-document.handler.ts index 70b29612..87ff864a 100644 --- a/app/handlers/supporting-document.handler.ts +++ b/app/handlers/supporting-document.handler.ts @@ -22,3 +22,17 @@ export const { update, remove, }) + +export async function uploadAttachmentCustom(payload: any) { + const { user } = useUserStore() + + const formData = new FormData() + formData.append('content', payload.file) + formData.append('entityType_code', payload.entityTypeCode) + formData.append('type_code', payload.type) + formData.append('ref_id', payload.refId) + formData.append('upload_employee_id', user.employee_id) + + const response = payload.id ? await update(payload.id, formData) : await create(formData) + return response?.body?.data +} From bae087aa6d5b25cf80688e512963854242b49ae6 Mon Sep 17 00:00:00 2001 From: riefive Date: Thu, 4 Dec 2025 12:19:37 +0700 Subject: [PATCH 4/7] fix: update save --- app/components/app/encounter/entry-form.vue | 1 - app/handlers/encounter-entry.handler.ts | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/components/app/encounter/entry-form.vue b/app/components/app/encounter/entry-form.vue index 9e6ca98f..a25eba6e 100644 --- a/app/components/app/encounter/entry-form.vue +++ b/app/components/app/encounter/entry-form.vue @@ -208,7 +208,6 @@ const onSubmit = handleSubmit((values) => { sepFileReview: sepFileReview.value, sippFileReview: sippFileReview.value, } - return } emit('event', 'save', payload) }) diff --git a/app/handlers/encounter-entry.handler.ts b/app/handlers/encounter-entry.handler.ts index 2efb3c9d..2d2e13da 100644 --- a/app/handlers/encounter-entry.handler.ts +++ b/app/handlers/encounter-entry.handler.ts @@ -483,6 +483,7 @@ export function useEncounterEntry(props: { formData.sepFileReview = sepFileReview formData.sippFileReview = sippFileReview } + console.log(sepFileReview) formObjects.value = { ...formData } } From 434f8471ce90c5dc296c1388cfd6dee173ac3248 Mon Sep 17 00:00:00 2001 From: riefive Date: Thu, 4 Dec 2025 12:20:07 +0700 Subject: [PATCH 5/7] fix: update save again --- app/handlers/encounter-entry.handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/handlers/encounter-entry.handler.ts b/app/handlers/encounter-entry.handler.ts index 2d2e13da..337cc2a8 100644 --- a/app/handlers/encounter-entry.handler.ts +++ b/app/handlers/encounter-entry.handler.ts @@ -482,8 +482,8 @@ export function useEncounterEntry(props: { } formData.sepFileReview = sepFileReview formData.sippFileReview = sippFileReview + console.log(sepFileReview) } - console.log(sepFileReview) formObjects.value = { ...formData } } From e6b74a4949383014a1e665928165f4a4d3af5663 Mon Sep 17 00:00:00 2001 From: riefive Date: Thu, 4 Dec 2025 12:36:53 +0700 Subject: [PATCH 6/7] fix: encounter update form --- app/components/app/encounter/entry-form.vue | 42 +++++++++++---------- app/handlers/encounter-entry.handler.ts | 5 +-- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/app/components/app/encounter/entry-form.vue b/app/components/app/encounter/entry-form.vue index a25eba6e..9950a3dd 100644 --- a/app/components/app/encounter/entry-form.vue +++ b/app/components/app/encounter/entry-form.vue @@ -574,14 +574,15 @@ defineExpose({ {{ noteFile }} - - {{ sepFileReview?.fileName }} - +

+ + {{ sepFileReview?.fileName }} + +

@@ -598,14 +599,15 @@ defineExpose({ {{ noteFile }} - - {{ sippFileReview?.fileName }} - +

+ + {{ sippFileReview?.fileName }} + +

@@ -623,13 +625,13 @@ defineExpose({ > - + - + @@ -667,13 +669,13 @@ defineExpose({ > - + - + diff --git a/app/handlers/encounter-entry.handler.ts b/app/handlers/encounter-entry.handler.ts index 337cc2a8..5f632ac2 100644 --- a/app/handlers/encounter-entry.handler.ts +++ b/app/handlers/encounter-entry.handler.ts @@ -474,15 +474,14 @@ export function useEncounterEntry(props: { let sepFileReview = {} let sippFileReview = {} for (const doc of encounter.encounterDocuments) { - if (doc.type === 'vclaim-sep') { + if (doc.type_code === 'vclaim-sep') { sepFileReview = { id: doc.id, fileName: doc.fileName, filePath: doc.filePath, type: doc.type_code } - } else if (doc.type === 'vclaim-sipp') { + } else if (doc.type_code === 'vclaim-sipp') { sippFileReview = { id: doc.id, fileName: doc.fileName, filePath: doc.filePath, type: doc.type_code } } } formData.sepFileReview = sepFileReview formData.sippFileReview = sippFileReview - console.log(sepFileReview) } formObjects.value = { ...formData } From 67a515478cf9412dbe7ef56885ea84d662be0de4 Mon Sep 17 00:00:00 2001 From: riefive Date: Thu, 4 Dec 2025 13:39:36 +0700 Subject: [PATCH 7/7] fix: save sep --- app/components/app/sep/entry-form.vue | 1 - app/handlers/integration-sep-entry.handler.ts | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/components/app/sep/entry-form.vue b/app/components/app/sep/entry-form.vue index f921d633..594d2f02 100644 --- a/app/components/app/sep/entry-form.vue +++ b/app/components/app/sep/entry-form.vue @@ -142,7 +142,6 @@ const onSaveNumber = () => { // Submit handler const onSubmit = handleSubmit((values) => { - console.log('✅ Validated form values:', JSON.stringify(values, null, 2)) emit('event', 'save-sep', values) }) diff --git a/app/handlers/integration-sep-entry.handler.ts b/app/handlers/integration-sep-entry.handler.ts index 7569980a..d9ce2e31 100644 --- a/app/handlers/integration-sep-entry.handler.ts +++ b/app/handlers/integration-sep-entry.handler.ts @@ -256,6 +256,8 @@ export function useIntegrationSepEntry() { }, ] } else { + const destA = lettersRaw?.rujukan?.provPerujuk?.Kode + const destB = lettersRaw?.rujukan?.provPerujuk?.kode letters.value = [ { letterNumber: lettersRaw?.rujukan?.noKunjungan || '', @@ -276,7 +278,7 @@ export function useIntegrationSepEntry() { patientName: lettersRaw?.rujukan?.peserta?.nama || '', patientPhone: lettersRaw?.rujukan?.peserta?.mr?.noTelepon || '', medicalRecordNumber: lettersRaw?.rujukan?.peserta?.mr?.noMR || '', - destination: lettersRaw?.rujukan?.provPerujuk?.kode || '', + destination: destA || destB || '', }, }, ] @@ -480,7 +482,7 @@ export function useIntegrationSepEntry() { } if (!value.destinationClinic) { - mappedValues.destinationClinic = selectedObjects.value['destination'] || '' + mappedValues.referralTo = selectedObjects.value['destination'] || '' } if (!value.clinicExcecutive) { mappedValues.clinicExcecutive = 'no'