From a9ab75fd984945703f3ef7dff990811361c54696 Mon Sep 17 00:00:00 2001 From: Andrian Roshandy Date: Fri, 31 Oct 2025 14:35:05 +0700 Subject: [PATCH 1/2] feat/readiology-order: added mcu --- .../app/mcu-order-item/list-entry.cfg.ts | 35 ++++++++++ .../app/mcu-order-item/list-entry.vue | 26 ++++++++ app/components/app/mcu-order-item/list.cfg.ts | 21 ++++++ app/components/app/mcu-order-item/list.vue | 20 ++++++ app/components/app/mcu-order/detail.vue | 32 ++++++++++ app/components/app/mcu-order/entry.vue | 0 app/components/app/mcu-order/list-pk.vue | 64 +++++++++++++++++++ app/components/app/mcu-order/list.vue | 64 +++++++++++++++++++ .../app/mcu-src-category/switcher.vue | 35 ++++++++++ .../app/mcu-src/picker-accordion.vue | 49 ++++++++++++++ app/handlers/mcu-order-item.handler.ts | 17 +++++ app/handlers/mcu-order.handler.ts | 17 +++++ app/handlers/mcu-src-category.handler.ts | 24 +++++++ app/models/mcu-order.ts | 8 ++- app/services/mcu-order-item.service.ts | 24 +++++++ app/services/mcu-order.service.ts | 24 +++++++ app/services/mcu-src-category.service.ts | 25 ++++++++ app/services/mcu-src.service.ts | 25 ++++++++ 18 files changed, 509 insertions(+), 1 deletion(-) create mode 100644 app/components/app/mcu-order-item/list-entry.cfg.ts create mode 100644 app/components/app/mcu-order-item/list-entry.vue create mode 100644 app/components/app/mcu-order-item/list.cfg.ts create mode 100644 app/components/app/mcu-order-item/list.vue create mode 100644 app/components/app/mcu-order/detail.vue create mode 100644 app/components/app/mcu-order/entry.vue create mode 100644 app/components/app/mcu-order/list-pk.vue create mode 100644 app/components/app/mcu-order/list.vue create mode 100644 app/components/app/mcu-src-category/switcher.vue create mode 100644 app/components/app/mcu-src/picker-accordion.vue create mode 100644 app/handlers/mcu-order-item.handler.ts create mode 100644 app/handlers/mcu-order.handler.ts create mode 100644 app/handlers/mcu-src-category.handler.ts create mode 100644 app/services/mcu-order-item.service.ts create mode 100644 app/services/mcu-order.service.ts create mode 100644 app/services/mcu-src-category.service.ts create mode 100644 app/services/mcu-src.service.ts diff --git a/app/components/app/mcu-order-item/list-entry.cfg.ts b/app/components/app/mcu-order-item/list-entry.cfg.ts new file mode 100644 index 00000000..294232f0 --- /dev/null +++ b/app/components/app/mcu-order-item/list-entry.cfg.ts @@ -0,0 +1,35 @@ +import type { Config } from '~/components/pub/my-ui/data-table' +import { defineAsyncComponent } from 'vue' + +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue')) + +export const config: Config = { + cols: [{}, {}, {}, { width: 50 }], + + headers: [ + [ + { label: 'Nama' }, + { label: 'Jenis' }, + { label: 'Catatan' }, + { label: '' }, + ], + ], + + keys: ['mcuSrc.name', 'mcuSrc.mcuSrcCategory.name', 'note'], + + delKeyNames: [ + { key: 'mcuSrc.name', label: 'Nama' }, + ], + + components: { + action(rec, idx) { + return { + idx, + rec: rec as object, + component: action, + } + }, + }, + + htmls: {}, +} diff --git a/app/components/app/mcu-order-item/list-entry.vue b/app/components/app/mcu-order-item/list-entry.vue new file mode 100644 index 00000000..6c93c5ac --- /dev/null +++ b/app/components/app/mcu-order-item/list-entry.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/app/mcu-order-item/list.cfg.ts b/app/components/app/mcu-order-item/list.cfg.ts new file mode 100644 index 00000000..852bee25 --- /dev/null +++ b/app/components/app/mcu-order-item/list.cfg.ts @@ -0,0 +1,21 @@ +import type { Config } from '~/components/pub/my-ui/data-table' +import { defineAsyncComponent } from 'vue' + +type SmallDetailDto = any + +export const config: Config = { + cols: [{}, {}], + + headers: [ + [ + { label: 'Nama' }, + { label: 'Jenis' }, + ], + ], + + keys: ['mcuSrc.name', 'mcuSrcCategory.name'], + + delKeyNames: [ + { key: 'mcuSrc.name', label: 'Nama' }, + ], +} diff --git a/app/components/app/mcu-order-item/list.vue b/app/components/app/mcu-order-item/list.vue new file mode 100644 index 00000000..ef7438c6 --- /dev/null +++ b/app/components/app/mcu-order-item/list.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/app/mcu-order/detail.vue b/app/components/app/mcu-order/detail.vue new file mode 100644 index 00000000..fe161595 --- /dev/null +++ b/app/components/app/mcu-order/detail.vue @@ -0,0 +1,32 @@ + + + \ No newline at end of file diff --git a/app/components/app/mcu-order/entry.vue b/app/components/app/mcu-order/entry.vue new file mode 100644 index 00000000..e69de29b diff --git a/app/components/app/mcu-order/list-pk.vue b/app/components/app/mcu-order/list-pk.vue new file mode 100644 index 00000000..df296419 --- /dev/null +++ b/app/components/app/mcu-order/list-pk.vue @@ -0,0 +1,64 @@ + + + diff --git a/app/components/app/mcu-order/list.vue b/app/components/app/mcu-order/list.vue new file mode 100644 index 00000000..df296419 --- /dev/null +++ b/app/components/app/mcu-order/list.vue @@ -0,0 +1,64 @@ + + + diff --git a/app/components/app/mcu-src-category/switcher.vue b/app/components/app/mcu-src-category/switcher.vue new file mode 100644 index 00000000..78c54acb --- /dev/null +++ b/app/components/app/mcu-src-category/switcher.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/app/mcu-src/picker-accordion.vue b/app/components/app/mcu-src/picker-accordion.vue new file mode 100644 index 00000000..a42834f9 --- /dev/null +++ b/app/components/app/mcu-src/picker-accordion.vue @@ -0,0 +1,49 @@ + + + diff --git a/app/handlers/mcu-order-item.handler.ts b/app/handlers/mcu-order-item.handler.ts new file mode 100644 index 00000000..62e1861e --- /dev/null +++ b/app/handlers/mcu-order-item.handler.ts @@ -0,0 +1,17 @@ +import { createCrudHandler, genCrudHandler } from '~/handlers/_handler' +import { create, update, remove } from '~/services/prescription.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ create, update, remove}) diff --git a/app/handlers/mcu-order.handler.ts b/app/handlers/mcu-order.handler.ts new file mode 100644 index 00000000..4b114dfc --- /dev/null +++ b/app/handlers/mcu-order.handler.ts @@ -0,0 +1,17 @@ +import { createCrudHandler, genCrudHandler } from '~/handlers/_handler' +import { create, update, remove } from '~/services/mcu-order.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ create, update, remove}) diff --git a/app/handlers/mcu-src-category.handler.ts b/app/handlers/mcu-src-category.handler.ts new file mode 100644 index 00000000..8369666b --- /dev/null +++ b/app/handlers/mcu-src-category.handler.ts @@ -0,0 +1,24 @@ +// Handlers +import { genCrudHandler } from '~/handlers/_handler' + +// Services +import { create, update, remove } from '~/services/mcu-src-category.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ + create, + update, + remove, +}) diff --git a/app/models/mcu-order.ts b/app/models/mcu-order.ts index e3899aab..35e4018c 100644 --- a/app/models/mcu-order.ts +++ b/app/models/mcu-order.ts @@ -1,14 +1,18 @@ import { type Base, genBase } from "./_base" +import { type Doctor, genDoctor } from "./doctor" +import type { McuOrderItem } from "./mcu-order-item" export interface McuOrder extends Base { encounter_id: number doctor_id: number + doctor: Doctor status_code?: string specimenPickTime: string examinationDate: string number?: number temperature?: number mcuUrgencyLevel_code?: string + items: McuOrderItem[] } export function genMcuOrder(): McuOrder { @@ -16,8 +20,10 @@ export function genMcuOrder(): McuOrder { ...genBase(), encounter_id: 0, doctor_id: 0, + doctor: genDoctor(), specimenPickTime: '', - examinationDate: '' + examinationDate: '', + items: [] } } diff --git a/app/services/mcu-order-item.service.ts b/app/services/mcu-order-item.service.ts new file mode 100644 index 00000000..b7ffbbfe --- /dev/null +++ b/app/services/mcu-order-item.service.ts @@ -0,0 +1,24 @@ +import * as base from './_crud-base' + +const path = '/api/v1/mcu-order-item' +const name = 'mcu-order-item' + +export function create(data: any) { + return base.create(path, data) +} + +export function getList(params: any = null) { + return base.getList(path, params) +} + +export function getDetail(id: number | string, params?: any) { + return base.getDetail(path, id, name, params) +} + +export function update(id: number | string, data: any) { + return base.update(path, id, data) +} + +export function remove(id: number | string) { + return base.remove(path, id) +} diff --git a/app/services/mcu-order.service.ts b/app/services/mcu-order.service.ts new file mode 100644 index 00000000..77e023d7 --- /dev/null +++ b/app/services/mcu-order.service.ts @@ -0,0 +1,24 @@ +import * as base from './_crud-base' + +const path = '/api/v1/mcu-order' +const name = 'mcu-order' + +export function create(data: any) { + return base.create(path, data) +} + +export function getList(params: any = null) { + return base.getList(path, params) +} + +export function getDetail(id: number | string, params?: any) { + return base.getDetail(path, id, name, params) +} + +export function update(id: number | string, data: any) { + return base.update(path, id, data) +} + +export function remove(id: number | string) { + return base.remove(path, id) +} diff --git a/app/services/mcu-src-category.service.ts b/app/services/mcu-src-category.service.ts new file mode 100644 index 00000000..c154b1dc --- /dev/null +++ b/app/services/mcu-src-category.service.ts @@ -0,0 +1,25 @@ +// Base +import * as base from './_crud-base' + +const path = '/api/v1/mcu-src-category' +const name = 'mcu-src-category' + +export function create(data: any) { + return base.create(path, data, name) +} + +export function getList(params: any = null) { + return base.getList(path, params, name) +} + +export function getDetail(id: number | string) { + return base.getDetail(path, id, name) +} + +export function update(id: number | string, data: any) { + return base.update(path, id, data, name) +} + +export function remove(id: number | string) { + return base.remove(path, id, name) +} diff --git a/app/services/mcu-src.service.ts b/app/services/mcu-src.service.ts new file mode 100644 index 00000000..a7a466b8 --- /dev/null +++ b/app/services/mcu-src.service.ts @@ -0,0 +1,25 @@ +// Base +import * as base from './_crud-base' + +const path = '/api/v1/mcu-src' +const name = 'mcu-src' + +export function create(data: any) { + return base.create(path, data, name) +} + +export function getList(params: any = null) { + return base.getList(path, params, name) +} + +export function getDetail(id: number | string) { + return base.getDetail(path, id, name) +} + +export function update(id: number | string, data: any) { + return base.update(path, id, data, name) +} + +export function remove(id: number | string) { + return base.remove(path, id, name) +} From f676c8a4b98c037965328cbde25a523942387f53 Mon Sep 17 00:00:00 2001 From: Andrian Roshandy Date: Mon, 3 Nov 2025 08:11:02 +0700 Subject: [PATCH 2/2] feat/cp-lab-order-48: wip --- app/components/content/cp-lab-order/entry.vue | 155 ++++++++++++++++ app/components/content/cp-lab-order/list.vue | 169 ++++++++++++++++++ app/components/content/cp-lab-order/main.vue | 16 ++ app/components/content/encounter/process.vue | 3 +- 4 files changed, 342 insertions(+), 1 deletion(-) create mode 100644 app/components/content/cp-lab-order/entry.vue create mode 100644 app/components/content/cp-lab-order/list.vue create mode 100644 app/components/content/cp-lab-order/main.vue diff --git a/app/components/content/cp-lab-order/entry.vue b/app/components/content/cp-lab-order/entry.vue new file mode 100644 index 00000000..4d0aa002 --- /dev/null +++ b/app/components/content/cp-lab-order/entry.vue @@ -0,0 +1,155 @@ + + + diff --git a/app/components/content/cp-lab-order/list.vue b/app/components/content/cp-lab-order/list.vue new file mode 100644 index 00000000..73b9361c --- /dev/null +++ b/app/components/content/cp-lab-order/list.vue @@ -0,0 +1,169 @@ + + + diff --git a/app/components/content/cp-lab-order/main.vue b/app/components/content/cp-lab-order/main.vue new file mode 100644 index 00000000..033d093f --- /dev/null +++ b/app/components/content/cp-lab-order/main.vue @@ -0,0 +1,16 @@ + + + diff --git a/app/components/content/encounter/process.vue b/app/components/content/encounter/process.vue index 71c7fe3d..45b89c2e 100644 --- a/app/components/content/encounter/process.vue +++ b/app/components/content/encounter/process.vue @@ -15,6 +15,7 @@ import AssesmentFunctionList from '~/components/content/assesment-function/list. import EarlyMedicalAssesmentList from '~/components/content/soapi/entry.vue' import EarlyMedicalRehabList from '~/components/content/soapi/entry.vue' import PrescriptionList from '~/components/content/prescription/list.vue' +import CpLabOrder from '~/components/content/cp-lab-order/main.vue' import Consultation from '~/components/content/consultation/list.vue' const route = useRoute() @@ -52,7 +53,7 @@ const tabs: TabItem[] = [ { value: 'prescription', label: 'Order Obat', component: PrescriptionList }, { value: 'device', label: 'Order Alkes' }, { value: 'mcu-radiology', label: 'Order Radiologi' }, - { value: 'mcu-lab-pc', label: 'Order Lab PK' }, + { value: 'mcu-lab-pc', label: 'Order Lab PK', component: CpLabOrder, props: { encounter_id: data.id } }, { value: 'mcu-lab-micro', label: 'Order Lab Mikro' }, { value: 'mcu-lab-pa', label: 'Order Lab PA' }, { value: 'medical-action', label: 'Order Ruang Tindakan' },