feat: enhance encounter process with user data logging and component integration

This commit is contained in:
riefive
2025-11-24 14:47:00 +07:00
parent 1053d794a0
commit 3a2ad11a0e
2 changed files with 16 additions and 8 deletions
@@ -40,12 +40,12 @@ const id = typeof route.params.id == 'string' ? parseInt(route.params.id) : 0
const data = ref<any>(null)
const isShowPatient = computed(() => data.value && data.value?.patient?.person)
console.log(user)
if (activePosition.value === 'none') { // if user position is none, redirect to home page
router.push('/')
}
console.log(JSON.stringify(user, null, 4))
// Dummy rows for ProtocolList (matches keys expected by list-cfg.protocol)
const protocolRows = [
{
@@ -82,7 +82,7 @@ function handleClick(type: string) {
}
function initMenus() {
menus.value = getMenuItems(id, props, user, activePosition.value, {
menus.value = getMenuItems(id, props, user, {
status: data.value,
medicalAssessment: data.value,
medicalAssessmentRehab: data.value,
+13 -5
View File
@@ -39,6 +39,7 @@ const ChemoMedicineProtocolListAsync = defineAsyncComponent(
const DeviceOrderAsync = defineAsyncComponent(() => import('~/components/content/device-order/main.vue'))
const PrescriptionAsync = defineAsyncComponent(() => import('~/components/content/prescription/main.vue'))
const CpLabOrderAsync = defineAsyncComponent(() => import('~/components/content/cp-lab-order/main.vue'))
const CprjAsync = defineAsyncComponent(() => import('~/components/content/cprj/entry.vue'))
const RadiologyAsync = defineAsyncComponent(() => import('~/components/content/radiology-order/main.vue'))
const ConsultationAsync = defineAsyncComponent(() => import('~/components/content/consultation/list.vue'))
const DocUploadListAsync = defineAsyncComponent(() => import('~/components/content/document-upload/list.vue'))
@@ -259,6 +260,7 @@ export function injectComponents(id: string | number, data: EncounterListData, m
}
}
if (currentKeys?.therapyProtocol) {
// TODO: add component for therapyProtocol
currentKeys.therapyProtocol['component'] = null
currentKeys.therapyProtocol['props'] = {
data: data?.protocolTheraphy,
@@ -280,6 +282,7 @@ export function injectComponents(id: string | number, data: EncounterListData, m
}
}
if (currentKeys?.educationAssessment) {
// TODO: add component for education assessment
currentKeys.educationAssessment['component'] = null
currentKeys.educationAssessment['props'] = { encounter_id: id }
}
@@ -288,7 +291,7 @@ export function injectComponents(id: string | number, data: EncounterListData, m
currentKeys.consent['props'] = { encounter_id: id }
}
if (currentKeys?.patientNote) {
currentKeys.patientNote['component'] = null
currentKeys.patientNote['component'] = CprjAsync
currentKeys.patientNote['props'] = { encounter_id: id }
}
if (currentKeys?.prescription) {
@@ -308,18 +311,22 @@ export function injectComponents(id: string | number, data: EncounterListData, m
currentKeys.mcuLabPc['props'] = { encounter_id: id }
}
if (currentKeys?.mcuLabMicro) {
// TODO: add component for mcuLabMicro
currentKeys.mcuLabMicro['component'] = null
currentKeys.mcuLabMicro['props'] = { encounter_id: id }
}
if (currentKeys?.mcuLabPa) {
// TODO: add component for mcuLabPa
currentKeys.mcuLabPa['component'] = null
currentKeys.mcuLabPa['props'] = { encounter_id: id }
}
if (currentKeys?.medicalAction) {
// TODO: add component for medicalAction
currentKeys.medicalAction['component'] = null
currentKeys.medicalAction['props'] = { encounter_id: id }
}
if (currentKeys?.mcuResult) {
// TODO: add component for mcuResult
currentKeys.mcuResult['component'] = null
currentKeys.mcuResult['props'] = { encounter_id: id }
}
@@ -336,6 +343,7 @@ export function injectComponents(id: string | number, data: EncounterListData, m
currentKeys.control['props'] = { encounter: data?.letterOfControl }
}
if (currentKeys?.screening) {
// TODO: add component for screening
currentKeys.screening['component'] = null
currentKeys.screening['props'] = { encounter_id: id }
}
@@ -344,6 +352,7 @@ export function injectComponents(id: string | number, data: EncounterListData, m
currentKeys.supportingDocument['props'] = { encounter_id: id }
}
if (currentKeys?.priceList) {
// TODO: add component for priceList
currentKeys.priceList['component'] = null
currentKeys.priceList['props'] = { encounter_id: id }
}
@@ -431,7 +440,6 @@ export function getMenuItems(
id: string | number,
props: any,
user: any,
activePosition: any,
data: EncounterListData,
meta: any,
) {
@@ -467,14 +475,14 @@ export function getMenuItems(
}
const currentListItems = listItems[`installation|${normalClassCode}`]
if (!currentListItems) return []
const unitCode = user?.unit?.code ? `unit|${user.unit.code}` : 'all'
const unitCode = user?.unit_code ? `unit|${user.unit_code}` : 'all'
const currentUnitItems: any = currentListItems[`${unitCode}`]
if (!currentUnitItems) return []
let menus = []
if (currentUnitItems.roles && currentUnitItems.roles?.some((role: string) => role === activePosition.value)) {
if (currentUnitItems.roles && currentUnitItems.roles?.includes(user.activeRole)) {
menus = [...currentUnitItems.items]
} else {
menus = [...currentUnitItems]
menus = unitCode !== 'all' && currentUnitItems?.items ? [...currentUnitItems.items] : [...currentUnitItems]
}
return menus
}