diff --git a/app/components/app/antibiotic-in-use/entry.vue b/app/components/app/antibiotic-in-use/entry.vue new file mode 100644 index 00000000..e69de29b diff --git a/app/components/app/antibiotic-in-use/list.cfg.ts b/app/components/app/antibiotic-in-use/list.cfg.ts new file mode 100644 index 00000000..429e2dd8 --- /dev/null +++ b/app/components/app/antibiotic-in-use/list.cfg.ts @@ -0,0 +1,28 @@ +import type { Config, RecComponent } from '~/components/pub/my-ui/data-table' +import { defineAsyncComponent } from 'vue' + +type SmallDetailDto = any + +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue')) + +export const config: Config = { + cols: [{}, {}], + + headers: [[{ label: 'Kode' }, { label: 'Nama' }]], + + keys: ['code', 'name'], + + delKeyNames: [ + { key: 'code', label: 'Kode' }, + { key: 'name', label: 'Nama' }, + ], + + parses: { + }, + + components: { + }, + + htmls: { + }, +} diff --git a/app/components/app/antibiotic-in-use/list.vue b/app/components/app/antibiotic-in-use/list.vue new file mode 100644 index 00000000..fac15e5c --- /dev/null +++ b/app/components/app/antibiotic-in-use/list.vue @@ -0,0 +1,17 @@ + + + + + + + diff --git a/app/components/app/material-package-item/quick-list.cfg.ts b/app/components/app/material-package-item/quick-list.cfg.ts new file mode 100644 index 00000000..90caf510 --- /dev/null +++ b/app/components/app/material-package-item/quick-list.cfg.ts @@ -0,0 +1,23 @@ +import type { Config } from '~/components/pub/my-ui/data-table' + +type SmallDetailDto = any + +export const config: Config = { + cols: [ { width: 150 }, {}, { width: 150 }], + + headers: [ + [ + { label: 'No' }, + { label: 'Name' }, + { label: 'Jumlah' }, + ], + ], + + keys: ['number', 'material.name', 'count'], + + parses: { + number: (rec: unknown): unknown => { + return (rec as SmallDetailDto).medicineGroup?.name || '-' + }, + }, +} diff --git a/app/components/app/material-package-item/quick-list.vue b/app/components/app/material-package-item/quick-list.vue new file mode 100644 index 00000000..2ff50a73 --- /dev/null +++ b/app/components/app/material-package-item/quick-list.vue @@ -0,0 +1,23 @@ + + + + + + Daftar Item BMHP + + + + diff --git a/app/components/app/material-package/switcher.vue b/app/components/app/material-package/switcher.vue new file mode 100644 index 00000000..2709ff5e --- /dev/null +++ b/app/components/app/material-package/switcher.vue @@ -0,0 +1,33 @@ + + + + + + Paket BMHP + + + + + + diff --git a/app/components/app/mcu-order-item/list-entry.cfg.ts b/app/components/app/mcu-order-item/list-entry.cfg.ts index 89d85dce..841b77a0 100644 --- a/app/components/app/mcu-order-item/list-entry.cfg.ts +++ b/app/components/app/mcu-order-item/list-entry.cfg.ts @@ -1,18 +1,20 @@ import type { Config } from '~/components/pub/my-ui/data-table' import { defineAsyncComponent } from 'vue' +import type { McuOrderItem } from '~/models/mcu-order-item' const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue')) +// const input = defineAsyncComponent(() => import('~/components/pub/my-ui/data/editable-div.vue')) const input = defineAsyncComponent(() => import('~/components/pub/ui/input/Input.vue')) export const config: Config = { - cols: [{}, {}, { classVal: '!p-0.5' }, { width: 50 }], + cols: [{}, {}, { classVal: '!p-0.5' }], headers: [ [ { label: 'Nama' }, { label: 'Jenis' }, - { label: 'Catatan' }, - { label: '' }, + { label: 'Catatan', classVal: '!w-[40%]' }, + // { label: '' }, ], ], @@ -27,16 +29,17 @@ export const config: Config = { return { idx, rec: rec as object, + props: { data: (rec as McuOrderItem).note }, component: input, } }, - action(rec, idx) { - return { - idx, - rec: rec as object, - component: action, - } - }, + // 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 index 6c93c5ac..4fd8edb8 100644 --- a/app/components/app/mcu-order-item/list-entry.vue +++ b/app/components/app/mcu-order-item/list-entry.vue @@ -1,4 +1,6 @@ - diff --git a/app/components/app/mcu-order-item/list.cfg.ts b/app/components/app/mcu-order-item/list.cfg.ts index 2b054379..28441165 100644 --- a/app/components/app/mcu-order-item/list.cfg.ts +++ b/app/components/app/mcu-order-item/list.cfg.ts @@ -1,16 +1,18 @@ import type { Config } from '~/components/pub/my-ui/data-table' export const config: Config = { - cols: [{}, {}], + cols: [{}, { width: 150 }, {}], headers: [ [ { label: 'Nama' }, - { label: 'Jenis' }, + { label: 'Jadwal Pemeriksaan' }, + { label: 'Status' }, + { label: 'Catatan' }, ], ], - keys: ['mcuSrc.name', 'mcuSrcCategory.name'], + keys: ['mcuSrc.name', 'examinationDate', 'status_code', 'note'], delKeyNames: [ { key: 'mcuSrc.name', label: 'Nama' }, diff --git a/app/components/app/mcu-order/confirmation-info.vue b/app/components/app/mcu-order/confirmation-info.vue new file mode 100644 index 00000000..4f7c9a9d --- /dev/null +++ b/app/components/app/mcu-order/confirmation-info.vue @@ -0,0 +1,20 @@ + + + + + Tanggal + : + {{ recItem.createdAt?.substring(0, 10) }} + + + DPJP + : + {{ recItem.doctor?.employee?.person?.name }} + + \ No newline at end of file diff --git a/app/components/app/mcu-order/detail.vue b/app/components/app/mcu-order/detail.vue index fe161595..8d86a98b 100644 --- a/app/components/app/mcu-order/detail.vue +++ b/app/components/app/mcu-order/detail.vue @@ -10,7 +10,7 @@ const props = defineProps<{ - Order {{ data?.createdAt?.substring(0, 10) }} - {{ data.status_code }} + Order {{ data?.createdAt?.substring(0, 10) }} - {{ data?.status_code }} diff --git a/app/components/app/mcu-order/list.vue b/app/components/app/mcu-order/list.vue index df296419..4c749dc9 100644 --- a/app/components/app/mcu-order/list.vue +++ b/app/components/app/mcu-order/list.vue @@ -34,7 +34,7 @@ function navClick(type: 'cancel' | 'edit' | 'submit', data: McuOrder): void { Belum Ada Data - + Order #{{ data.length - idx }} - {{ item.createdAt?.substring(0, 10) }} - {{ item.status_code }} diff --git a/app/components/app/mcu-order/micro-list.vue b/app/components/app/mcu-order/micro-list.vue new file mode 100644 index 00000000..e63ad40b --- /dev/null +++ b/app/components/app/mcu-order/micro-list.vue @@ -0,0 +1,68 @@ + + + + + Belum Ada Data + + + + Order #{{ data.length - idx }} - {{ item.createdAt?.substring(0, 10) }} - {{ item.status_code }} + + + + DPJP + + {{ item.doctor?.employee?.person?.name || '........' }} + + + + PPDS + + ........... + + + + { navClick(type, item) }" + /> + + + + + + diff --git a/app/components/app/mcu-src/picker-accordion.vue b/app/components/app/mcu-src/picker-accordion.vue index a42834f9..79429e9d 100644 --- a/app/components/app/mcu-src/picker-accordion.vue +++ b/app/components/app/mcu-src/picker-accordion.vue @@ -37,7 +37,7 @@ function pick(item: McuSrc) { diff --git a/app/components/app/procedure-room-order-item/list-detail.cfg.ts b/app/components/app/procedure-room-order-item/list-detail.cfg.ts new file mode 100644 index 00000000..cf0f6dab --- /dev/null +++ b/app/components/app/procedure-room-order-item/list-detail.cfg.ts @@ -0,0 +1,16 @@ +import type { Config } from '~/components/pub/my-ui/data-table' +import { defineAsyncComponent } from 'vue' + +export const config: Config = { + cols: [{}, {}, { classVal: '!p-0.5' }], + + headers: [ + [ + { label: 'Kode' }, + { label: 'Nama' }, + { label: 'Catatan' }, + ], + ], + + keys: ['procedureRoom.code', 'procedureRoom.infra.name', 'note'], +} diff --git a/app/components/app/procedure-room-order-item/list-detail.vue b/app/components/app/procedure-room-order-item/list-detail.vue new file mode 100644 index 00000000..75727a72 --- /dev/null +++ b/app/components/app/procedure-room-order-item/list-detail.vue @@ -0,0 +1,22 @@ + + + + + + Daftar Order Ruang + + + + diff --git a/app/components/app/procedure-room-order-item/list-entry.cfg.ts b/app/components/app/procedure-room-order-item/list-entry.cfg.ts new file mode 100644 index 00000000..2afcd855 --- /dev/null +++ b/app/components/app/procedure-room-order-item/list-entry.cfg.ts @@ -0,0 +1,43 @@ +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')) +const input = defineAsyncComponent(() => import('~/components/pub/ui/input/Input.vue')) + +export const config: Config = { + cols: [{}, {}, { classVal: '!p-0.5' }, { width: 50 }], + + headers: [ + [ + { label: 'Kode' }, + { label: 'Nama' }, + { label: 'Catatan' }, + { label: '' }, + ], + ], + + keys: ['procedureRoom.code', 'procedureRoom.infra.name', 'note'], + + delKeyNames: [ + { key: 'mcuSrc.name', label: 'Nama' }, + ], + + components: { + note(rec, idx) { + return { + idx, + rec: rec as object, + component: input, + } + }, + action(rec, idx) { + return { + idx, + rec: rec as object, + component: action, + } + }, + }, + + htmls: {}, +} diff --git a/app/components/app/procedure-room-order-item/list-entry.vue b/app/components/app/procedure-room-order-item/list-entry.vue new file mode 100644 index 00000000..f86a0b8e --- /dev/null +++ b/app/components/app/procedure-room-order-item/list-entry.vue @@ -0,0 +1,33 @@ + + + + + + Daftar Order Ruang + + + + + + Pilih Item + + + + diff --git a/app/components/app/procedure-room-order/detail.vue b/app/components/app/procedure-room-order/detail.vue new file mode 100644 index 00000000..23d0dc75 --- /dev/null +++ b/app/components/app/procedure-room-order/detail.vue @@ -0,0 +1,28 @@ + + + + + + Detail Order + + + + No. Order + + ORT-{{ data.id }} + + + Tgl. Order + + {{ data.createdAt?.substring(0, 10) }} + + + + diff --git a/app/components/app/procedure-room-order/form.vue b/app/components/app/procedure-room-order/form.vue new file mode 100644 index 00000000..ff6c3835 --- /dev/null +++ b/app/components/app/procedure-room-order/form.vue @@ -0,0 +1,6 @@ + + + + + diff --git a/app/components/app/procedure-room-order/list.cfg.ts b/app/components/app/procedure-room-order/list.cfg.ts new file mode 100644 index 00000000..e415e26f --- /dev/null +++ b/app/components/app/procedure-room-order/list.cfg.ts @@ -0,0 +1,61 @@ +import type { Config, RecComponent } from '~/components/pub/my-ui/data-table' +import { defineAsyncComponent } from 'vue' +import type { ProcedureRoomOrder } from '~/models/procedure-room-order' + +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dsd.vue')) + +export const config: Config = { + cols: [{}, {}, {}, {}, {}, { width: 50 }], + + headers: [[ + { label: 'Tgl. Order' }, + { label: 'No. Order' }, + { label: 'Ruangan' }, + { label: 'Status' }, + { label: 'Resume' }, + { label: '' }, + ]], + + keys: ['date', 'number', 'room', 'status_code', 'resume', 'action'], + + delKeyNames: [ + { key: 'createdAt', label: 'Tgl. Order' }, + { key: 'id', label: 'No. Order' }, + ], + + parses: { + date: (rec: any) => { + const recX = rec as ProcedureRoomOrder + return recX.createdAt ? recX.createdAt.substring(0, 10) : '' + + }, + number: (rec: any) => { + const recX = rec as ProcedureRoomOrder + return `ORT-${recX.id}` + }, + room: (rec: any) => { + const recX = rec as ProcedureRoomOrder + let result = '' + if (recX.items && recX.items.length > 0) { + recX.items.forEach((item, idx) => { + result += item.infra?.name ? `${item.infra.name}` : '' + }) + } + // recX.ite + return '' + }, + }, + + components: { + action(rec, idx) { + const res: RecComponent = { + idx, + rec: rec as object, + component: action, + } + return res + }, + }, + + htmls: {}, +} diff --git a/app/components/app/procedure-room-order/list.vue b/app/components/app/procedure-room-order/list.vue new file mode 100644 index 00000000..bdbfe1be --- /dev/null +++ b/app/components/app/procedure-room-order/list.vue @@ -0,0 +1,34 @@ + + + + + + diff --git a/app/components/app/procedure-room/multi-opt-picker.vue b/app/components/app/procedure-room/multi-opt-picker.vue new file mode 100644 index 00000000..ecdd945a --- /dev/null +++ b/app/components/app/procedure-room/multi-opt-picker.vue @@ -0,0 +1,41 @@ + + + + + + Daftar Pilihan Ruang Tindakan + + + + + + {{ item.infra?.name }} + + + + Tidak ada data ruang tindakan. + + + + diff --git a/app/components/app/procedure-room/picker.vue b/app/components/app/procedure-room/picker.vue new file mode 100644 index 00000000..3660e0cb --- /dev/null +++ b/app/components/app/procedure-room/picker.vue @@ -0,0 +1,42 @@ + + + + + + Daftar Pilihan Ruang Tindakan + + + + + + {{ item.infra?.name }} + + + + Tidak ada data ruang tindakan. + + + + diff --git a/app/components/app/procedure-room/single-opt-picker.vue b/app/components/app/procedure-room/single-opt-picker.vue new file mode 100644 index 00000000..ecdd945a --- /dev/null +++ b/app/components/app/procedure-room/single-opt-picker.vue @@ -0,0 +1,41 @@ + + + + + + Daftar Pilihan Ruang Tindakan + + + + + + {{ item.infra?.name }} + + + + Tidak ada data ruang tindakan. + + + + diff --git a/app/components/app/procedure-room/switcher.vue b/app/components/app/procedure-room/switcher.vue new file mode 100644 index 00000000..fdd80e7d --- /dev/null +++ b/app/components/app/procedure-room/switcher.vue @@ -0,0 +1,29 @@ + + + + + + Jenis Ruang Tindakan + + + + {{ item }} + + + + diff --git a/app/components/content/cp-lab-order/list.vue b/app/components/content/cp-lab-order/list.vue index 73b9361c..8bb06569 100644 --- a/app/components/content/cp-lab-order/list.vue +++ b/app/components/content/cp-lab-order/list.vue @@ -21,7 +21,7 @@ import { // Apps import { getList, getDetail } from '~/services/mcu-order.service' -import List from '~/components/app/mcu-order/list.vue' +import List from '~/components/app/mcu-order/micro-list.vue' import type { McuOrder } from '~/models/mcu-order' const route = useRoute() @@ -55,7 +55,7 @@ const { }) const headerPrep: HeaderPrep = { - title: 'Order Lab PK', + title: 'Order Lab Mikro', icon: 'i-lucide-box', refSearchNav: { placeholder: 'Cari (min. 3 karakter)...', diff --git a/app/components/content/mcu-order/entry.vue b/app/components/content/mcu-order/entry.vue new file mode 100644 index 00000000..f07310b3 --- /dev/null +++ b/app/components/content/mcu-order/entry.vue @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + pickerDialogOpen = false" class="justify-center" /> + + diff --git a/app/components/content/mcu-order/list.vue b/app/components/content/mcu-order/list.vue new file mode 100644 index 00000000..6fcff867 --- /dev/null +++ b/app/components/content/mcu-order/list.vue @@ -0,0 +1,198 @@ + + + + + + + + handleActionRemove(recId, getMyList, toast)" + @cancel="" + > + + + + handleActionSubmit(recId, getMyList, toast)" + @cancel="" + > + + + diff --git a/app/components/content/mcu-order/main.vue b/app/components/content/mcu-order/main.vue new file mode 100644 index 00000000..033d093f --- /dev/null +++ b/app/components/content/mcu-order/main.vue @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/components/content/micro-lab-order/entry.vue b/app/components/content/micro-lab-order/entry.vue new file mode 100644 index 00000000..e6ef9600 --- /dev/null +++ b/app/components/content/micro-lab-order/entry.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/app/components/content/micro-lab-order/list.vue b/app/components/content/micro-lab-order/list.vue new file mode 100644 index 00000000..c2bda748 --- /dev/null +++ b/app/components/content/micro-lab-order/list.vue @@ -0,0 +1,8 @@ + + + + + diff --git a/app/components/content/micro-lab-order/main.vue b/app/components/content/micro-lab-order/main.vue new file mode 100644 index 00000000..033d093f --- /dev/null +++ b/app/components/content/micro-lab-order/main.vue @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/components/content/procedure-room-order/entry.vue b/app/components/content/procedure-room-order/entry.vue new file mode 100644 index 00000000..ad780e5b --- /dev/null +++ b/app/components/content/procedure-room-order/entry.vue @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pickerDialogOpen = false" class="justify-center" /> + + diff --git a/app/components/content/procedure-room-order/list.vue b/app/components/content/procedure-room-order/list.vue new file mode 100644 index 00000000..d742941c --- /dev/null +++ b/app/components/content/procedure-room-order/list.vue @@ -0,0 +1,191 @@ + + + + + + + + handleActionRemove(recId, getMyList, toast)" + @cancel="" + > + + Tanggal + : + {{ recItem.createdAt?.substring(0, 10) }} + + + DPJP + : + {{ recItem.doctor?.employee?.person?.name }} + + + + handleActionSubmit(recId, getMyList, toast)" + @cancel="" + > + + Tanggal + : + {{ recItem.createdAt.substring(0, 10) }} + + + DPJP + : + {{ recItem.doctor?.employee?.person?.name }} + + + diff --git a/app/components/content/procedure-room-order/main.vue b/app/components/content/procedure-room-order/main.vue new file mode 100644 index 00000000..61250fe1 --- /dev/null +++ b/app/components/content/procedure-room-order/main.vue @@ -0,0 +1,17 @@ + + + + + + {{ crudQueryParams.mode }} + diff --git a/app/components/content/radiology-order/list.vue b/app/components/content/radiology-order/list.vue index b2c8571d..47c822e9 100644 --- a/app/components/content/radiology-order/list.vue +++ b/app/components/content/radiology-order/list.vue @@ -13,7 +13,6 @@ import { recAction, recItem, isReadonly, - isFormEntryDialogOpen, isRecordConfirmationOpen, handleActionSave, handleActionRemove, @@ -28,6 +27,7 @@ const route = useRoute() const { setQueryParams } = useQueryParam() const title = ref('') +const addTrigger = ref(false) const plainEid = route.params.id const encounter_id = (plainEid && typeof plainEid == 'string') ? parseInt(plainEid) : 0 // here the @@ -74,7 +74,7 @@ const headerPrep: HeaderPrep = { onClick: () => { recItem.value = null recId.value = 0 - isFormEntryDialogOpen.value = true + addTrigger.value = true isReadonly.value = false }, }, @@ -90,7 +90,7 @@ const getMyDetail = async (id: number | string) => { if (result.success) { const currentValue = result.body?.data || {} recItem.value = currentValue - isFormEntryDialogOpen.value = true + addTrigger.value = true } } @@ -113,10 +113,10 @@ watch([recId, recAction], () => { } }) -watch([isFormEntryDialogOpen], async () => { - if (isFormEntryDialogOpen.value) { - isFormEntryDialogOpen.value = false; - const saveResp = await handleActionSave({ encounter_id }, getMyList, () =>{}, toast) +watch([addTrigger], async () => { + if (addTrigger.value) { + addTrigger.value = false; + const saveResp = await handleActionSave({ encounter_id, "scope_code": "rad" }, getMyList, () =>{}, toast) if (saveResp.success) { setQueryParams({ 'mode': 'entry', diff --git a/app/components/pub/my-ui/data/camuflage-input.vue b/app/components/pub/my-ui/data/camuflage-input.vue new file mode 100644 index 00000000..09500724 --- /dev/null +++ b/app/components/pub/my-ui/data/camuflage-input.vue @@ -0,0 +1,59 @@ + + + + activeState = true" + :class="`${defaultClass}`" + :style="widthStyle"> + {{ model }} + + activeState = false" + /> + + + diff --git a/app/components/pub/my-ui/nav-footer/ca-ed-su.vue b/app/components/pub/my-ui/nav-footer/ca-ed-su.vue index 1f0f5915..9bf7466b 100644 --- a/app/components/pub/my-ui/nav-footer/ca-ed-su.vue +++ b/app/components/pub/my-ui/nav-footer/ca-ed-su.vue @@ -7,7 +7,7 @@ const props = defineProps<{ const defaultClass = props.defaultClass ?? 'm-2 flex gap-2 px-2' const additionalClass = props.class ?? '' -const btnClass = props.smallMode ? '[&_button]:w-7 [&_button]:h-7 [&_button]:2xl:w-8 [&_button]:2xl:h-9 [&_button]:!p-0' : '' +const btnClass = props.smallMode ? '[&_button]:w-7 [&_button]:h-7 [&_button]:2xl:w-8 [&_button]:2xl:h-8 [&_button]:!p-0' : '' type ClickType = 'cancel' | 'edit' | 'submit' diff --git a/app/composables/useQueryCRUD.ts b/app/composables/useQueryCRUD.ts index 655440f6..2147b49b 100644 --- a/app/composables/useQueryCRUD.ts +++ b/app/composables/useQueryCRUD.ts @@ -70,7 +70,13 @@ export function useQueryCRUDMode(key: string = 'mode') { }, }) - const goToEntry = () => (mode.value = 'entry') + const goToEntry = (myRecord_id?: any) => { + mode.value = 'entry' + if(myRecord_id) { + myRecord_id.value = myRecord_id + } + } + const backToList = () => { router.push({ path: route.path, @@ -78,7 +84,7 @@ export function useQueryCRUDMode(key: string = 'mode') { ...route.query, mode: 'list', // HAPUS record-id - 'record-id': undefined, + recordIdKey: undefined, }, }) } @@ -106,3 +112,4 @@ export function useQueryCRUDRecordId(key: string = 'record-id') { return { recordId } } + diff --git a/app/const/key-val/clinical.ts b/app/const/key-val/clinical.ts index d6a37b43..0c33a59c 100644 --- a/app/const/key-val/clinical.ts +++ b/app/const/key-val/clinical.ts @@ -18,6 +18,7 @@ export type MedObstacleCode = 'hearing' | 'sight' | 'physical' | 'emotional' | ' export type LearnMethodCode = 'demo' | 'discuss-leaflet' export type LangClassCode = 'ind' | 'region' | 'foreign' export type TranslatorSrcCode = 'team' | 'family' +export type ProcedureRoomTypeCode = 'procedure' | 'operation' export const subjectCodes: Record = { detail: 'Detail', @@ -224,3 +225,8 @@ export const translatorSrcCodes: Record = { team: 'Tim Penerjemah', family: 'Keluarga', } + +export const procedureRoomTypeCodes: Record = { + procedure: 'Ruang Tindakan', + operation: 'Ruang Operasi', +} diff --git a/app/handlers/antibiotic-in-use.ts b/app/handlers/antibiotic-in-use.ts new file mode 100644 index 00000000..d10f3b1c --- /dev/null +++ b/app/handlers/antibiotic-in-use.ts @@ -0,0 +1,24 @@ +// Handlers +import { genCrudHandler } from '~/handlers/_handler' + +// Services +import { create, update, remove } from '~/services/antibiotic-in-use' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ + create, + update, + remove, +}) diff --git a/app/handlers/antibiotic-src-category.ts b/app/handlers/antibiotic-src-category.ts new file mode 100644 index 00000000..e68380b0 --- /dev/null +++ b/app/handlers/antibiotic-src-category.ts @@ -0,0 +1,24 @@ +// Handlers +import { genCrudHandler } from '~/handlers/_handler' + +// Services +import { create, update, remove } from '~/services/antibiotic-src-category' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ + create, + update, + remove, +}) diff --git a/app/handlers/antibiotic-src.ts b/app/handlers/antibiotic-src.ts new file mode 100644 index 00000000..1671471b --- /dev/null +++ b/app/handlers/antibiotic-src.ts @@ -0,0 +1,24 @@ +// Handlers +import { genCrudHandler } from '~/handlers/_handler' + +// Services +import { create, update, remove } from '~/services/antibiotic-src' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ + create, + update, + remove, +}) diff --git a/app/handlers/encounter-init.handler.ts b/app/handlers/encounter-init.handler.ts index 7c6cc703..b015b357 100644 --- a/app/handlers/encounter-init.handler.ts +++ b/app/handlers/encounter-init.handler.ts @@ -40,6 +40,8 @@ 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 ProcedureRoomOrderAsync = defineAsyncComponent(() => import('~/components/content/procedure-room-order/main.vue')) +const MicroLabOrderAsync = defineAsyncComponent(() => import('~/components/content/micro-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')) @@ -167,8 +169,8 @@ const defaultKeys: Record = { classCode: ['ambulatory', 'emergency', 'inpatient'], unit: 'all', }, - actionRoomOrder: { - id: 'action-room-order', + procedureRoomOrder: { + id: 'procedure-room-order', title: 'Order Ruang Tindakan', classCode: ['ambulatory', 'emergency', 'inpatient'], unit: 'all', @@ -377,8 +379,7 @@ export function injectComponents(id: string | number, data: EncounterListData, m currentKeys.cpLabOrder['props'] = { encounter_id: id } } if (currentKeys?.microLabOrder) { - // TODO: add component for microLabOrder - currentKeys.microLabOrder['component'] = null + currentKeys.microLabOrder['component'] = MicroLabOrderAsync currentKeys.microLabOrder['props'] = { encounter_id: id } } if (currentKeys?.paLabOrder) { @@ -386,10 +387,9 @@ export function injectComponents(id: string | number, data: EncounterListData, m currentKeys.paLabOrder['component'] = null currentKeys.paLabOrder['props'] = { encounter_id: id } } - if (currentKeys?.actionRoomOrder) { - // TODO: add component for actionRoomOrder - currentKeys.actionRoomOrder['component'] = null - currentKeys.actionRoomOrder['props'] = { encounter_id: id } + if (currentKeys?.procedureRoomOrder) { + currentKeys.procedureRoomOrder['component'] = ProcedureRoomOrderAsync + currentKeys.procedureRoomOrder['props'] = { encounter_id: id } } if (currentKeys?.mcuResult) { // TODO: add component for mcuResult diff --git a/app/handlers/procedure-room-order.handler.ts b/app/handlers/procedure-room-order.handler.ts new file mode 100644 index 00000000..d2535274 --- /dev/null +++ b/app/handlers/procedure-room-order.handler.ts @@ -0,0 +1,17 @@ +import { genCrudHandler } from '~/handlers/_handler' +import { create, update, remove } from '~/services/procedure-room-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/procedure-room.handler.ts b/app/handlers/procedure-room.handler.ts new file mode 100644 index 00000000..49ee40ec --- /dev/null +++ b/app/handlers/procedure-room.handler.ts @@ -0,0 +1,17 @@ +import { genCrudHandler } from '~/handlers/_handler' +import { create, update, remove } from '~/services/procedure-room.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ create, update, remove}) diff --git a/app/models/antibiotic-in-use.ts b/app/models/antibiotic-in-use.ts new file mode 100644 index 00000000..e793fc12 --- /dev/null +++ b/app/models/antibiotic-in-use.ts @@ -0,0 +1,16 @@ +import { type Base, genBase } from "./_base" +import type { AntibioticSrc } from "./antibiotic-src" + +export interface AntibioticInUse extends Base { + mcuOrder_id: number + antibioticSrc_code: string + antibioticSrc: AntibioticSrc +} + +export function genDevice(): Pick { + return { + ...genBase(), + mcuOrder_id: 0, + antibioticSrc_code: '' + } +} diff --git a/app/models/antibiotic-src-category.ts b/app/models/antibiotic-src-category.ts new file mode 100644 index 00000000..6001b4e8 --- /dev/null +++ b/app/models/antibiotic-src-category.ts @@ -0,0 +1,14 @@ +import { type Base, genBase } from "./_base" + +export interface AntibioticSrcCategory extends Base { + code: string + name: string +} + +export function genDevice(): AntibioticSrcCategory { + return { + ...genBase(), + code: '', + name: '', + } +} diff --git a/app/models/antibiotic-src.ts b/app/models/antibiotic-src.ts new file mode 100644 index 00000000..ee272f54 --- /dev/null +++ b/app/models/antibiotic-src.ts @@ -0,0 +1,16 @@ +import { type Base, genBase } from "./_base" + +export interface AntibioticSrc extends Base { + code: string + name: string + antibioticSrcCategory_code: string +} + +export function genDevice(): AntibioticSrc { + return { + ...genBase(), + code: '', + name: '', + antibioticSrcCategory_code: '' + } +} diff --git a/app/models/infra.ts b/app/models/infra.ts index 80119748..e7ebe681 100644 --- a/app/models/infra.ts +++ b/app/models/infra.ts @@ -1,10 +1,27 @@ -export interface Infra { - id?: number +import { type Base, genBase } from "./_base"; +import { genProcedureRoom, type ProcedureRoom } from "./procedure-room"; + +export interface Infra extends Base { code: string name: string infraGroup_code: string parent_id?: number | string | null + unit_id?: number | string | null specialist_id?: number | string | null subspecialist_id?: number | string | null - unit_id?: number | string | null + procedureRoom?: ProcedureRoom +} + +export function genInfra(): Infra { + return { + ...genBase(), + code: '', + name: '', + infraGroup_code: '', + parent_id: null, + unit_id: null, + specialist_id: null, + subspecialist_id: null, + procedureRoom: genProcedureRoom(), + } } diff --git a/app/models/material-package-item.ts b/app/models/material-package-item.ts new file mode 100644 index 00000000..9ccde8d1 --- /dev/null +++ b/app/models/material-package-item.ts @@ -0,0 +1,14 @@ +import { type Base, genBase } from "./_base" + +export interface MaterialPackageItem extends Base { + materialPackage_code: string + material_code: string +} + +export function genMaterialPackage(): MaterialPackageItem { + return { + ...genBase(), + materialPackage_code: '', + material_code: '', + } +} diff --git a/app/models/material-package.ts b/app/models/material-package.ts new file mode 100644 index 00000000..df3f01d1 --- /dev/null +++ b/app/models/material-package.ts @@ -0,0 +1,14 @@ +import { type Base, genBase } from "./_base" + +export interface MaterialPackage extends Base { + code: string + name: string +} + +export function genMaterialPackage(): MaterialPackage { + return { + ...genBase(), + code: '', + name: '', + } +} diff --git a/app/models/mcu-order-item.ts b/app/models/mcu-order-item.ts index 67038edf..ece036e4 100644 --- a/app/models/mcu-order-item.ts +++ b/app/models/mcu-order-item.ts @@ -2,16 +2,33 @@ import { type Base, genBase } from "./_base" export interface McuOrderItem extends Base { mcuOrder_id: number - mcuSrc_id: number + mcuSrc_code: string + note?: string examinationDate?: string result?: string status_code?: string } +export interface CreateDto { + mcuOrder_id: number + mcuSrc_code: string + note?: string +} + +export interface ReadList { + 'mcu-order-id'?: number + 'mcu-src-code'?: string + includes?: string +} + +export interface UpdateDto extends CreateDto { + id: number +} + export function genMcuOrderItem(): McuOrderItem { return { ...genBase(), mcuOrder_id: 0, - mcuSrc_id: 0, + mcuSrc_code: '', } } diff --git a/app/models/mcu-order-sub-item.ts b/app/models/mcu-order-sub-item.ts index 271ed424..a64af0d1 100644 --- a/app/models/mcu-order-sub-item.ts +++ b/app/models/mcu-order-sub-item.ts @@ -1,8 +1,8 @@ import { type Base, genBase } from "./_base" export interface McuOrderSubItem extends Base { - mcuSubSrc_id: number mcuOrderItem_id: number + mcuSubSrc_code: string result?: string status_code?: string } @@ -10,7 +10,7 @@ export interface McuOrderSubItem extends Base { export function genMcuOrderSubItem(): McuOrderSubItem { return { ...genBase(), - mcuSubSrc_id: 0, mcuOrderItem_id: 0, + mcuSubSrc_code: '', } } diff --git a/app/models/mcu-order.ts b/app/models/mcu-order.ts index 35e4018c..859c0548 100644 --- a/app/models/mcu-order.ts +++ b/app/models/mcu-order.ts @@ -1,4 +1,5 @@ import { type Base, genBase } from "./_base" +import type { AntibioticInUse } from "./antibiotic-in-use" import { type Doctor, genDoctor } from "./doctor" import type { McuOrderItem } from "./mcu-order-item" @@ -13,6 +14,7 @@ export interface McuOrder extends Base { temperature?: number mcuUrgencyLevel_code?: string items: McuOrderItem[] + antibioticInUseItems: AntibioticInUse[] } export function genMcuOrder(): McuOrder { @@ -23,7 +25,8 @@ export function genMcuOrder(): McuOrder { doctor: genDoctor(), specimenPickTime: '', examinationDate: '', - items: [] + items: [], + antibioticInUseItems: [], } } diff --git a/app/models/procedure-room-order-item.ts b/app/models/procedure-room-order-item.ts new file mode 100644 index 00000000..5fa84763 --- /dev/null +++ b/app/models/procedure-room-order-item.ts @@ -0,0 +1,27 @@ +import { type Base, genBase } from "./_base"; +import { genMaterialPackage, type MaterialPackage } from "./material-package"; +import { genProcedureRoom, type ProcedureRoom } from "./procedure-room"; + +export interface ProcedureRoomOrderItem extends Base { + procedureRoomOrder_id: number + procedureRoom_code: string + procedureRoom: ProcedureRoom +} + +export interface CreateDto { + procedureRoomOrder_id: number + procedureRoom_code: string +} + +export interface UpdateDto extends CreateDto { + note?: string +} + +export function genProcedureRoomOrderItem(): ProcedureRoomOrderItem { + return { + ...genBase(), + procedureRoomOrder_id: 0, + procedureRoom_code: '', + procedureRoom: genProcedureRoom(), + } +} diff --git a/app/models/procedure-room-order.ts b/app/models/procedure-room-order.ts new file mode 100644 index 00000000..4d1bb8c5 --- /dev/null +++ b/app/models/procedure-room-order.ts @@ -0,0 +1,23 @@ +import { type Base, genBase } from "./_base"; +import { genMaterialPackage, type MaterialPackage } from "./material-package"; +import { genProcedureRoom, type ProcedureRoom } from "./procedure-room"; + +export interface ProcedureRoomOrder extends Base { + encounter_id: number + materialPackage_code?: string + materialPackage: MaterialPackage + items?: ProcedureRoom[] +} + +export interface CreateDto { + encounter_id: number +} + +export function genProcedureRoomOrder(): ProcedureRoomOrder { + return { + ...genBase(), + encounter_id: 0, + materialPackage_code: '', + materialPackage: genMaterialPackage(), + } +} diff --git a/app/models/procedure-room.ts b/app/models/procedure-room.ts new file mode 100644 index 00000000..b34bba13 --- /dev/null +++ b/app/models/procedure-room.ts @@ -0,0 +1,24 @@ +import { type Base, genBase } from "./_base"; +import type { Infra } from "./infra"; + +export interface ProcedureRoom extends Base { + code: string + infra_code: string + infra?: Infra + type_code: string + unit_code: string + specialist_code?: string | null + subspecialist_code?: string | null +} + +export function genProcedureRoom(): ProcedureRoom { + return { + ...genBase(), + code: '', + infra_code: '', + type_code: '', + unit_code: '', + specialist_code: null, + subspecialist_code: null, + } +} diff --git a/app/schemas/material-package-item.schema.ts b/app/schemas/material-package-item.schema.ts new file mode 100644 index 00000000..e893aa5b --- /dev/null +++ b/app/schemas/material-package-item.schema.ts @@ -0,0 +1,12 @@ +import { z } from 'zod' +import type { MaterialPackageItem } from '~/models/material-package-item' + +const MaterialSchema = z.object({ + materialPackage_code: z.string({ required_error: 'Kode harus diisi' }).min(1, 'Kode minimum 1 karakter'), + material_code: z.string({ required_error: 'Nama harus diisi' }).min(1, 'Nama minimum 1 karakter'), +}) + +type MaterialFormData = z.infer & Partial + +export { MaterialSchema } +export type { MaterialFormData } diff --git a/app/schemas/material-package.schema.ts b/app/schemas/material-package.schema.ts new file mode 100644 index 00000000..38220f7b --- /dev/null +++ b/app/schemas/material-package.schema.ts @@ -0,0 +1,12 @@ +import { z } from 'zod' +import type { MaterialPackage } from '~/models/material-package' + +const MaterialSchema = z.object({ + code: z.string({ required_error: 'Kode harus diisi' }).min(1, 'Kode minimum 1 karakter'), + name: z.string({ required_error: 'Nama harus diisi' }).min(1, 'Nama minimum 1 karakter'), +}) + +type MaterialFormData = z.infer & Partial + +export { MaterialSchema } +export type { MaterialFormData } diff --git a/app/services/antibiotic-in-use.ts b/app/services/antibiotic-in-use.ts new file mode 100644 index 00000000..41038eb5 --- /dev/null +++ b/app/services/antibiotic-in-use.ts @@ -0,0 +1,25 @@ +// Base +import * as base from './_crud-base' + +const name = 'antibiotic-in-use' +const path = '/api/v1/' + name + +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/antibiotic-src-category.ts b/app/services/antibiotic-src-category.ts new file mode 100644 index 00000000..eac38f0e --- /dev/null +++ b/app/services/antibiotic-src-category.ts @@ -0,0 +1,25 @@ +// Base +import * as base from './_crud-base' + +const name = 'antibiotic-src-category' +const path = '/api/v1/' + name + +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/antibiotic-src.ts b/app/services/antibiotic-src.ts new file mode 100644 index 00000000..4c2623bf --- /dev/null +++ b/app/services/antibiotic-src.ts @@ -0,0 +1,25 @@ +// Base +import * as base from './_crud-base' + +const name = 'antibiotic-src' +const path = '/api/v1/' + name + +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/infra.service.ts b/app/services/infra.service.ts index 9147421d..aa9b94e8 100644 --- a/app/services/infra.service.ts +++ b/app/services/infra.service.ts @@ -1,14 +1,11 @@ -// Base import * as base from './_crud-base' - -// Types import type { Infra } from '~/models/infra' -const path = '/api/v1/infra' const name = 'infra' +const path = `/api/v1/${name}` -export function create(data: any) { +export function create(data: Infra) { return base.create(path, data, name) } @@ -20,7 +17,7 @@ export function getDetail(id: number | string) { return base.getDetail(path, id, name) } -export function update(id: number | string, data: any) { +export function update(id: number | string, data: Infra) { return base.update(path, id, data, name) } @@ -28,15 +25,26 @@ export function remove(id: number | string) { return base.remove(path, id, name) } -export async function getValueLabelList(params: any = null): Promise<{ value: string; label: string }[]> { +export async function getValueLabelList(params: any = null, useId = false): Promise<{ value: string; label: string }[]> { let data: { value: string; label: string }[] = [] const result = await getList(params) if (result.success) { const resultData = result.body?.data || [] - data = resultData.map((item: Infra) => ({ - value: item.id ? Number(item.id) : item.code, - label: item.name, - })) + data = !useId ? + resultData.map((item: Infra) => ({ value: item.code, label: item.name })) : + resultData.map((item: Infra) => ({ value: item.id, label: item.name })) } return data } + +// export async function getProcedureRoomValueLabelList(params: any = null, useId = false): Promise<{ value: string; label: string }[]> { +// let data: { value: string; label: string }[] = [] +// const result = await getList({ 'infraGroup_code': 'procedure-room' ,...params}) +// if (result.success) { +// const resultData = result.body?.data || [] +// data = !useId ? +// resultData.map((item: Infra) => ({ value: item.code, label: item.name })) : +// resultData.map((item: Infra) => ({ value: item.id, label: item.name })) +// } +// return data +// } diff --git a/app/services/material-package-item.service.ts b/app/services/material-package-item.service.ts new file mode 100644 index 00000000..00059356 --- /dev/null +++ b/app/services/material-package-item.service.ts @@ -0,0 +1,25 @@ +// Base +import * as base from './_crud-base' + +const name = 'material-package-item' +const path = `/api/v1/${name}` + +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/material-package.service.ts b/app/services/material-package.service.ts new file mode 100644 index 00000000..36822045 --- /dev/null +++ b/app/services/material-package.service.ts @@ -0,0 +1,38 @@ +// Base +import type { MaterialPackage } from '~/models/material-package' +import * as base from './_crud-base' + +const name = 'material-package' +const path = `/api/v1/${name}` + +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) +} + +export async function getValueLabelList(params: any = null, useId = false): Promise<{ value: string; label: string }[]> { + let data: { value: string; label: string }[] = [] + const result = await getList(params) + if (result.success) { + const resultData = result.body?.data || [] + data = !useId ? + resultData.map((item: MaterialPackage) => ({ value: item.code, label: item.name })) : + resultData.map((item: MaterialPackage) => ({ value: item.id, label: item.name })) + } + return data +} diff --git a/app/services/mcu-order-item.service.ts b/app/services/mcu-order-item.service.ts index b7ffbbfe..4e8c852f 100644 --- a/app/services/mcu-order-item.service.ts +++ b/app/services/mcu-order-item.service.ts @@ -1,13 +1,14 @@ import * as base from './_crud-base' +import * as model from '~/models/mcu-order-item' const path = '/api/v1/mcu-order-item' const name = 'mcu-order-item' -export function create(data: any) { +export function create(data: model.CreateDto) { return base.create(path, data) } -export function getList(params: any = null) { +export function getList(params: model.ReadList | null = null) { return base.getList(path, params) } @@ -15,7 +16,7 @@ export function getDetail(id: number | string, params?: any) { return base.getDetail(path, id, name, params) } -export function update(id: number | string, data: any) { +export function update(id: number | string, data: model.UpdateDto) { return base.update(path, id, data) } diff --git a/app/services/mcu-order.service.ts b/app/services/mcu-order.service.ts index 77e023d7..7299203b 100644 --- a/app/services/mcu-order.service.ts +++ b/app/services/mcu-order.service.ts @@ -22,3 +22,16 @@ export function update(id: number | string, data: any) { export function remove(id: number | string) { return base.remove(path, id) } + +export async function submit(id: number) { + try { + const resp = await xfetch(`${path}/${id}/submit`, 'PATCH') + const result: any = {} + result.success = resp.success + result.body = (resp.body as Record) || {} + return result + } catch (error) { + console.error(`Error submitting ${name}:`, error) + throw new Error(`Failed to submit ${name}`) + } +} diff --git a/app/services/procedure-room-order-item.service.ts b/app/services/procedure-room-order-item.service.ts new file mode 100644 index 00000000..8e6d08b8 --- /dev/null +++ b/app/services/procedure-room-order-item.service.ts @@ -0,0 +1,26 @@ +// Base +import type { CreateDto, UpdateDto } from '~/models/procedure-room-order-item' +import * as base from './_crud-base' + +const name = 'procedure-room-order-item' +const path = `/api/v1/${name}` + +export function create(data: CreateDto) { + 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: UpdateDto) { + return base.update(path, id, data, name) +} + +export function remove(id: number | string) { + return base.remove(path, id, name) +} diff --git a/app/services/procedure-room-order.service.ts b/app/services/procedure-room-order.service.ts new file mode 100644 index 00000000..b5c354c3 --- /dev/null +++ b/app/services/procedure-room-order.service.ts @@ -0,0 +1,42 @@ +// Base +import type { ProcedureRoomOrder, CreateDto } from '~/models/procedure-room-order' +import * as base from './_crud-base' + +const name = 'procedure-room-order' +const path = `/api/v1/${name}` + +export function create(data: CreateDto) { + return base.create(path, data, name) +} + +export function getList(params: any = null) { + return base.getList(path, params, name) +} + +export function getDetail(id: number | string, params: any = null) { + return base.getDetail(path, id, name, params) +} + +export function update(id: number | string, data: ProcedureRoomOrder) { + return base.update(path, id, data, name) +} + +export function remove(id: number | string) { + return base.remove(path, id, name) +} + + +export async function submit(id: number) { + try { + const resp = await xfetch(`${path}/${id}/submit`, 'PATCH') + const result: any = {} + if (resp.success) { + result.success = resp.success + result.body = (resp.body as Record) || {} + return result + } + } catch (error) { + console.error(`Error submitting ${name}:`, error) + throw new Error(`Failed to submit ${name}`) + } +} diff --git a/app/services/procedure-room.service.ts b/app/services/procedure-room.service.ts new file mode 100644 index 00000000..c799de75 --- /dev/null +++ b/app/services/procedure-room.service.ts @@ -0,0 +1,26 @@ +// Base +import type { ProcedureRoom } from '~/models/procedure-room' +import * as base from './_crud-base' + +const name = 'procedure-room' +const path = `/api/v1/${name}` + +export function create(data: ProcedureRoom) { + 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: ProcedureRoom) { + return base.update(path, id, data, name) +} + +export function remove(id: number | string) { + return base.remove(path, id, name) +}