Files
simrsx-fe/app/components/content/encounter/process.vue
T
Hasyim Kai 75b9618a26 Squashed commit of the following:
commit 9f5ede3aea
Merge: 16858dc dbe8e34
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Fri Dec 5 09:26:33 2025 +0700

    Merge pull request #213 from dikstub-rssa/feat/things-munaja

    Feat/things munaja

commit dbe8e34d07
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Dec 5 09:26:00 2025 +0700

    feat/things-munaja: fix enc status

commit 786107ddd9
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Dec 4 22:57:33 2025 +0700

    feat/things-munaja: content switcher

commit 4450cb943e
Merge: 9136093 16858dc
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Dec 4 19:31:30 2025 +0700

    Merge branch 'dev' into feat/things-munaja

commit 9136093fd6
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Dec 4 18:02:14 2025 +0700

    feat/things-munaja: cleaning

commit 16858dc2a0
Merge: 82e33c6 67a5154
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 14:30:35 2025 +0700

    Merge pull request #212 from dikstub-rssa/feat/encounter-adjustment-163

    Enhancement SEP

commit 67a515478c
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 13:39:36 2025 +0700

    fix: save sep

commit 82e33c6dbf
Merge: f96cbdb eba740a
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 13:21:37 2025 +0700

    Merge pull request #209 from dikstub-rssa/feat/move-kai-ui-to-sidebar-195

    Feat/move kai UI to sidebar 195

commit e6b74a4949
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 12:36:53 2025 +0700

    fix: encounter update form

commit 434f8471ce
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 12:20:07 2025 +0700

    fix: update save again

commit bae087aa6d
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 12:19:37 2025 +0700

    fix: update save

commit f96cbdb173
Merge: 5de0057 62556a5
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 12:07:25 2025 +0700

    Merge pull request #210 from dikstub-rssa/feat/procedure-room-order

    Feat/procedure room order

commit 62556a5c7d
Merge: 93a294d 5de0057
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 12:07:18 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit 5da439720f
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 11:59:37 2025 +0700

    feat: implement encounter entry form for patient, doctor, payment, and SEP management

commit 5de0057278
Merge: 71ca7f9 782034c
Author: Andsky <andrianovsky95@gmail.com>
Date:   Thu Dec 4 11:56:31 2025 +0700

    Merge pull request #211 from dikstub-rssa/feat/micro-lab-order-50

    Feat/micro lab order 50

commit 93a294d8d0
Merge: 6c26367 26365bb
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 11:18:49 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit 26365bbd2e
Merge: b6b56d1 e7cab6c
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 11:18:33 2025 +0700

    Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into dev

commit 6c26367c1d
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:51:40 2025 +0700

    feat/procedure-room-order: added item

commit d2ceda37bf
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 10:58:16 2025 +0700

    feat: Implement encounter list management with search, date range filtering, and record actions.

commit a0dfd214e5
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:25:50 2025 +0700

    feat/procedure-room-order: finishing

commit acb573e279
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:25:35 2025 +0700

    feat/procedure-room-order: adjust procedure-room-order

commit 9adb77d10b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:24:52 2025 +0700

    feat/procedure-room-order: adjust material-package

commit 52454a019e
Merge: 0a0fb73 b6b56d1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:23:14 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit b6b56d186d
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Dec 4 10:17:16 2025 +0700

    dev: hotfix, cleaning some pubs

commit acc45b205f
Author: riefive <rie.five@gmail.com>
Date:   Wed Dec 3 16:25:15 2025 +0700

    fix: upload sep + sipp file

commit 0a0fb73483
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Wed Dec 3 14:33:13 2025 +0700

    feat/procedure-room-order: flow for procedure room

commit 7b4b4eecf9
Merge: 9f72e1d b172125
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 10:18:15 2025 +0700

    Merge branch 'feat/mcu-order' into feat/procedure-room-order

commit 782034c2b1
Merge: bae0a22 b80ee5a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 10:16:45 2025 +0700

    Merge branch 'dev' into feat/micro-lab-order-50

commit 9f72e1df47
Merge: fa0ae98 b80ee5a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 10:02:57 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit fa0ae9866e
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 09:44:33 2025 +0700

    feat/procedure-room-order: wip #3

commit ce93f996d9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 09:43:36 2025 +0700

    feat/procedure-room-order: wip #2
    + procedure-room

commit 4444e87cb3
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 09:42:31 2025 +0700

    feat/procedure-room-order: wip #1

    + material-package
    + material-package-item

commit b172125d99
Merge: b2d3c14 9b7a719
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Dec 1 20:41:58 2025 +0700

    Merge branch 'feat/page-cleaning' into feat/mcu-order

commit bae0a222b8
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Dec 1 01:51:04 2025 +0700

    feat/micro-lab-order-50: adjust for antibiotic

commit 1ee0f39e7d
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Dec 1 01:50:39 2025 +0700

    feat/micro-lab-order-50: added antibiotic

commit 95e27a8b6f
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 13:00:04 2025 +0700

    feat/micro-lab-order-50: wip

commit a002ef6c6e
Merge: fb2f01b b2d3c14
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:50:31 2025 +0700

    Merge branch 'feat/mcu-order' into feat/micro-lab-order-50

commit b2d3c14ddc
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:48:11 2025 +0700

    feat/mcu-order: adjustment

commit fb2f01bd36
Merge: 9a481fe 5c92f8b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:43:11 2025 +0700

    Merge branch 'feat/mcu-order' into feat/micro-lab-order-50

commit 5c92f8b946
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:30:19 2025 +0700

    feat/mcu-order: added the components

commit 9a481fec14
Merge: 4251239 78fc289
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Nov 28 21:18:10 2025 +0700

    Merge branch 'dev' into feat/micro-lab-order-50

commit 4251239f7c
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Nov 28 21:17:18 2025 +0700

    feat/micro-lab-order-50: wip

commit cf5789549e
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sun Nov 23 15:56:31 2025 +0700

    feat/mcu: improved wip

commit a40eac35f8
Merge: 3211972 baf6ab1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 19 22:23:18 2025 +0700

    Merge branch 'dev' into feat/radiology-order-54

commit 3211972a84
Merge: e3fc1e4 ccabe01
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Nov 15 20:15:07 2025 +0700

    Merge branch 'dev' into feat/radiology-order-54

commit e3fc1e4ab9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Nov 15 20:14:38 2025 +0700

    feat/radiology-order-54: adjust wip
2025-12-05 14:16:05 +07:00

212 lines
7.2 KiB
Vue

<script setup lang="ts">
import { computed } from 'vue'
///// Imports
// Pubs components
import ContentSwitcher from '~/components/pub/my-ui/content-switcher/content-switcher.vue'
import { useSidebar } from '~/components/pub/ui/sidebar/utils'
import SubMenu from '~/components/pub/my-ui/menus/submenu.vue'
import ContentNavBa from '~/components/pub/my-ui/nav-content/ba.vue'
// App libs
import { getServicePosition } from '~/lib/roles' // previously getPositionAs
// App Models
import { genEncounter, type Encounter } from '~/models/encounter'
// Handlers
import type { EncounterProps } from '~/handlers/encounter-init.handler'
import { getEncounterData } from '~/handlers/encounter-process.handler'
import { getMenuItems } from '~/handlers/encounter-init.handler'
// PLASE ORDER BY TAB POSITION
import Status from '~/components/content/encounter/status.vue'
import AssesmentFunctionList from '~/components/content/soapi/entry.vue'
import EarlyMedicalAssesmentList from '~/components/content/soapi/entry.vue'
import EarlyMedicalRehabList from '~/components/content/soapi/entry.vue'
import DeviceOrder from '~/components/content/device-order/main.vue'
import Prescription from '~/components/content/prescription/main.vue'
import CpLabOrder from '~/components/content/cp-lab-order/main.vue'
import Radiology from '~/components/content/radiology-order/main.vue'
import Consultation from '~/components/content/consultation/list.vue'
import Cprj from '~/components/content/cprj/entry.vue'
import DocUploadList from '~/components/content/document-upload/list.vue'
import GeneralConsentList from '~/components/content/general-consent/entry.vue'
import ResumeList from '~/components/content/resume/list.vue'
import ControlLetterList from '~/components/content/control-letter/list.vue'
import InitialNursingStudy from '~/components/content/initial-nursing/entry.vue'
// App Components
import EncounterPatientInfo from '~/components/app/encounter/quick-info.vue'
import EncounterHistoryButtonMenu from '~/components/app/encounter/quick-shortcut.vue'
///// Declarations and Flows
// Props
const props = defineProps<{
classCode: EncounterProps['classCode']
subClassCode?: EncounterProps['subClassCode']
canCreate?: boolean
canRead?: boolean
canUpdate?: boolean
canDelete?: boolean
}>()
// Common preparations
const route = useRoute()
const router = useRouter()
const { user, userActiveRole, getActiveRole } = useUserStore()
const activeRole = getActiveRole()
const activePosition = ref(getServicePosition(activeRole))
const menus = ref([] as any)
const activeMenu = computed({
get: () => (route.query?.menu && typeof route.query.menu === 'string' ? route.query.menu : 'status'),
set: (value: string) => {
router.replace({ path: route.path, query: { menu: value } })
},
})
const id = typeof route.params.id == 'string' ? parseInt(route.params.id) : 0
const data = ref<Encounter>(genEncounter())
const isShowPatient = computed(() => data.value && data.value?.patient?.person)
const { setOpen } = useSidebar()
setOpen(false)
if (activePosition.value === 'none') {
// if user position is none, redirect to home page
router.push('/')
}
// Dummy rows for ProtocolList (matches keys expected by list-cfg.protocol)
const protocolRows = [
{
number: '1',
tanggal: new Date().toISOString().substring(0, 10),
siklus: 'I',
periode: 'Siklus I',
kehadiran: 'Hadir',
action: '',
},
{
value: 'rehab-medical-assessment',
label: 'Pengkajian Awal Medis Rehabilitasi Medis',
component: EarlyMedicalRehabList,
props: { encounter: data, type: 'early-rehab', label: 'Pengkajian Awal Medis Rehabilitasi Medis' },
},
{
value: 'function-assessment',
label: 'Asesmen Fungsi',
component: AssesmentFunctionList,
props: { encounter: data, type: 'function', label: 'Asesmen Fungsi' },
},
{ value: 'therapy-protocol', label: 'Protokol Terapi' },
{ value: 'education-assessment', label: 'Asesmen Kebutuhan Edukasi' },
{ value: 'patient-note', label: 'CPRJ', component: Cprj, props: { encounter: data } },
{ value: 'consent', label: 'General Consent', component: GeneralConsentList, props: { encounter: data } },
{
value: 'initial-nursing-study',
label: 'Kajian Awal Keperawatan',
component: InitialNursingStudy,
props: { encounter: data },
},
{ value: 'prescription', label: 'Order Obat', component: Prescription, props: { encounter_id: data.value.id } },
{ value: 'device-order', label: 'Order Alkes', component: DeviceOrder, props: { encounter_id: data.value.id } },
{ value: 'device', label: 'Order Alkes' },
{ value: 'mcu-radiology', label: 'Order Radiologi', component: Radiology, props: { encounter_id: data.value.id } },
{ value: 'mcu-lab-cp', label: 'Order Lab PK', component: CpLabOrder, props: { encounter_id: data.value.id } },
{ value: 'mcu-lab-micro', label: 'Order Lab Mikro' },
{ value: 'mcu-lab-pa', label: 'Order Lab PA' },
{ value: 'medical-action', label: 'Order Ruang Tindakan' },
{ value: 'mcu-result', label: 'Hasil Penunjang' },
{ value: 'consultation', label: 'Konsultasi', component: Consultation, props: { encounter: data } },
{ value: 'resume', label: 'Resume', component: ResumeList, props: { encounter: data } },
{ value: 'control', label: 'Surat Kontrol', component: ControlLetterList, props: { encounter: data } },
{ value: 'screening', label: 'Skrinning MPP' },
{
value: 'supporting-document',
label: 'Upload Dokumen Pendukung',
component: DocUploadList,
props: { encounter: data },
number: '2',
tanggal: new Date().toISOString().substring(0, 10),
siklus: 'II',
periode: 'Siklus II',
kehadiran: 'Tidak Hadir',
action: '',
},
]
const paginationMeta = {
recordCount: protocolRows.length,
page: 1,
pageSize: 10,
totalPage: 1,
hasNext: false,
hasPrev: false,
}
// Reacrtivities
watch(getActiveRole, () => {
activePosition.value = getServicePosition(userActiveRole)
initMenus()
})
onMounted(async () => {
await getData()
initMenus()
})
///// Functions
function handleClick(type: string) {
if (type === 'draft') {
router.push(`/${props.classCode}/encounter`)
}
}
function initMenus() {
menus.value = getMenuItems(
id,
props,
user,
{
encounter: data.value,
} as any,
{
protocolTheraphy: paginationMeta,
protocolChemotherapy: paginationMeta,
medicineProtocolChemotherapy: paginationMeta,
},
)
}
async function getData() {
data.value = await getEncounterData(id)
}
</script>
<template>
<div class="w-full">
<div class="bg-white dark:bg-slate-800">
<div class="p-3 2xl:p-4 border-b border-slate-300 dark:border-slate-700">
<ContentNavBa label="Kembali Ke Daftar" @click="handleClick" />
</div>
<ContentSwitcher :active="1" class="h-[130px] 2xl:h-[160px]">
<template v-slot:content1>
<EncounterPatientInfo v-if="isShowPatient" :data="data" />
</template>
<template v-slot:content2>
<EncounterHistoryButtonMenu v-if="isShowPatient" />
</template>
</ContentSwitcher>
</div>
<SubMenu
:data="menus"
:initial-active-menu="activeMenu"
@change-menu="activeMenu = $event"
:can-create="canCreate"
:can-read="canRead"
:can-update="canUpdate"
:can-delete="canDelete"
/>
</div>
</template>