feat(sep): refactor table letter
This commit is contained in:
@@ -6,6 +6,7 @@ import { useRoute } from 'vue-router'
|
||||
import AppSepEntryForm from '~/components/app/sep/entry-form.vue'
|
||||
import AppViewPatient from '~/components/app/patient/view-patient.vue'
|
||||
import AppViewHistory from '~/components/app/sep/view-history.vue'
|
||||
import AppViewLetter from '~/components/app/sep/view-letter.vue'
|
||||
import { toast } from '~/components/pub/ui/toast'
|
||||
|
||||
// Types
|
||||
@@ -33,17 +34,19 @@ import { getValueLabelList as getDistrictList } from '~/services/vclaim-region-d
|
||||
import { getValueLabelList as getDoctorLabelList } from '~/services/vclaim-doctor.service'
|
||||
import { getValueLabelList as getHealthFacilityLabelList } from '~/services/vclaim-healthcare.service'
|
||||
import { getValueLabelList as getDiagnoseLabelList } from '~/services/vclaim-diagnose.service'
|
||||
import { getList as getHospitalLetterList } from '~/services/vclaim-reference-hospital-letter.service'
|
||||
import { getList as getControlLetterList } from '~/services/vclaim-control-letter.service'
|
||||
import { getList as geMonitoringVisitList } from '~/services/vclaim-monitoring-visit.service'
|
||||
import { getList as getMonitoringHistoryList } from '~/services/vclaim-monitoring-history.service'
|
||||
import { create as createSep, makeSepData } from '~/services/vclaim-sep.service'
|
||||
|
||||
// Handlers
|
||||
import {
|
||||
patients,
|
||||
selectedPatient,
|
||||
selectedPatientObject,
|
||||
paginationMeta,
|
||||
getPatientsList,
|
||||
import {
|
||||
patients,
|
||||
selectedPatient,
|
||||
selectedPatientObject,
|
||||
paginationMeta,
|
||||
getPatientsList,
|
||||
getPatientCurrent,
|
||||
getPatientByIdentifierSearch,
|
||||
} from '~/handlers/patient.handler'
|
||||
@@ -57,6 +60,7 @@ const selectedObjects = ref<any>({})
|
||||
const selectedServiceType = ref<string>('')
|
||||
const histories = ref<Array<SepHistoryData>>([])
|
||||
const visits = ref<Array<SepVisitData>>([])
|
||||
const letters = ref<Array<any>>([])
|
||||
const doctors = ref<Array<{ value: string | number; label: string }>>([])
|
||||
const diagnoses = ref<Array<{ value: string | number; label: string }>>([])
|
||||
const facilitiesFrom = ref<Array<{ value: string | number; label: string }>>([])
|
||||
@@ -144,28 +148,68 @@ async function getMonitoringVisitMappers() {
|
||||
}
|
||||
}
|
||||
|
||||
const letters = [
|
||||
{
|
||||
noSurat: 'SK22334442',
|
||||
tglRencana: '12 Agustus 2025',
|
||||
noSep: 'SEP3232332',
|
||||
namaPasien: 'Ahmad Baidowi',
|
||||
noBpjs: '33442331214',
|
||||
klinik: 'Penyakit Dalam',
|
||||
dokter: 'dr. Andi Prasetyo, Sp.PD-KHOM',
|
||||
},
|
||||
{
|
||||
noSurat: 'SK99120039',
|
||||
tglRencana: '12 Agustus 2025',
|
||||
noSep: 'SEP4443232',
|
||||
namaPasien: 'Bian Maulana',
|
||||
noBpjs: '33442367656',
|
||||
klinik: 'Gigi',
|
||||
dokter: 'dr. Achmad Suparjo',
|
||||
},
|
||||
]
|
||||
async function getLetterMappers(admissionType: string, search: string) {
|
||||
letters.value = []
|
||||
let result = null
|
||||
if (admissionType !== '3') {
|
||||
result = await getHospitalLetterList({
|
||||
letterNumber: search,
|
||||
})
|
||||
} else {
|
||||
result = await getControlLetterList({
|
||||
letterNumber: search,
|
||||
mode: 'by-control',
|
||||
})
|
||||
if (result && result.success && result.body) {
|
||||
const lettersRaw = result.body?.response || null
|
||||
if (!lettersRaw) {
|
||||
result = await getControlLetterList({
|
||||
letterNumber: search,
|
||||
mode: 'by-card',
|
||||
})
|
||||
}
|
||||
}
|
||||
if (result && result.success && result.body) {
|
||||
const lettersRaw = result.body?.response || null
|
||||
if (!lettersRaw) {
|
||||
result = await getControlLetterList({
|
||||
letterNumber: search,
|
||||
mode: 'by-sep',
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
if (result && result.success && result.body) {
|
||||
const lettersRaw = result.body?.response || null
|
||||
console.log(lettersRaw)
|
||||
// {
|
||||
// noSurat: 'SK22334442',
|
||||
// tglRencana: '12 Agustus 2025',
|
||||
// noSep: 'SEP3232332',
|
||||
// namaPasien: 'Ahmad Baidowi',
|
||||
// noBpjs: '33442331214',
|
||||
// klinik: 'Penyakit Dalam',
|
||||
// dokter: 'dr. Andi Prasetyo, Sp.PD-KHOM',
|
||||
// },
|
||||
|
||||
function handleSavePatient() {
|
||||
// {
|
||||
// noSurat: 'SK99120039',
|
||||
// tglRencana: '12 Agustus 2025',
|
||||
// noSep: 'SEP4443232',
|
||||
// namaPasien: 'Bian Maulana',
|
||||
// noBpjs: '33442367656',
|
||||
// klinik: 'Gigi',
|
||||
// dokter: 'dr. Achmad Suparjo',
|
||||
// },
|
||||
|
||||
if (!lettersRaw) return
|
||||
lettersRaw.forEach((result: any) => {
|
||||
// letters.value.push({})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function handleSavePatient() {
|
||||
selectedPatientObject.value = null
|
||||
setTimeout(() => {
|
||||
getPatientCurrent(selectedPatient.value)
|
||||
@@ -196,10 +240,7 @@ async function handleEvent(menu: string, value: any) {
|
||||
return
|
||||
}
|
||||
if (menu === 'search-letter') {
|
||||
getMonitoringVisitMappers().then(() => {
|
||||
openLetter.value = true
|
||||
})
|
||||
return
|
||||
openLetter.value = true
|
||||
}
|
||||
if (menu === 'history-sep') {
|
||||
getMonitoringHistoryMappers().then(() => {
|
||||
@@ -401,15 +442,17 @@ onMounted(async () => {
|
||||
v-model:selected="selectedPatient"
|
||||
:patients="patients"
|
||||
:pagination-meta="paginationMeta"
|
||||
@fetch="(value) => {
|
||||
if (value.search && value.search.length >= 3) {
|
||||
// Use identifier search for specific searches (NIK, RM, etc.)
|
||||
getPatientByIdentifierSearch(value.search)
|
||||
} else {
|
||||
// Use regular search for general searches
|
||||
getPatientsList({ ...value, 'page-size': 10, includes: 'person' })
|
||||
@fetch="
|
||||
(value) => {
|
||||
if (value.search && value.search.length >= 3) {
|
||||
// Use identifier search for specific searches (NIK, RM, etc.)
|
||||
getPatientByIdentifierSearch(value.search)
|
||||
} else {
|
||||
// Use regular search for general searches
|
||||
getPatientsList({ ...value, 'page-size': 10, includes: 'person' })
|
||||
}
|
||||
}
|
||||
}"
|
||||
"
|
||||
@save="handleSavePatient"
|
||||
/>
|
||||
<AppSepTableSearchLetter
|
||||
@@ -422,4 +465,12 @@ onMounted(async () => {
|
||||
v-model:open="openHistory"
|
||||
:histories="histories"
|
||||
/>
|
||||
<AppViewLetter
|
||||
v-model:open="openLetter"
|
||||
:letters="letters"
|
||||
:selected="selectedLetter"
|
||||
:pagination-meta="paginationMeta"
|
||||
@fetch="(value) => getLetterMappers(value.admissionType, value.search)"
|
||||
@save="handleSaveLetter"
|
||||
/>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user