diff --git a/app/components/app/device-order-item/entry-form.vue b/app/components/app/device-order-item/entry-form.vue new file mode 100644 index 00000000..3ae2d200 --- /dev/null +++ b/app/components/app/device-order-item/entry-form.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/app/components/app/device-order-item/list-entry.config.ts b/app/components/app/device-order-item/list-entry.config.ts index f2f3ef86..d47c4368 100644 --- a/app/components/app/device-order-item/list-entry.config.ts +++ b/app/components/app/device-order-item/list-entry.config.ts @@ -1,36 +1,35 @@ import { defineAsyncComponent } from 'vue' -import type { Config } from '~/components/pub/my-ui/data-table' - +import type { Config, RecComponent } from '~/components/pub/my-ui/data-table' const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-ud.vue')) export const config: Config = { - cols: [{}, {}, { width: 50 }], + cols: [{}, { width: 200 }, { width: 100 }], headers: [[{ label: 'Nama' }, { label: 'Jumlah' }, { label: '' }]], - keys: ['name', 'count', 'action'], + keys: ['device.name', 'quantity', 'action'], delKeyNames: [ { key: 'name', label: 'Nama' }, { key: 'count', label: 'Jumlah' }, ], - skeletonSize: 10 + skeletonSize: 10, // funcParsed: { // parent: (rec: unknown): unknown => { // const recX = rec as SmallDetailDto // return recX.parent?.name || '-' // }, // }, - // funcComponent: { - // action(rec: object, idx: any) { - // const res: RecComponent = { - // idx, - // rec: rec as object, - // component: action, - // props: { - // size: 'sm', - // }, - // } - // return res - // }, - // } + components: { + action(rec, idx) { + const res: RecComponent = { + idx, + rec: rec as object, + component: action, + props: { + size: 'sm', + }, + } + return res + }, + } } diff --git a/app/components/app/device-order-item/list-entry.vue b/app/components/app/device-order-item/list-entry.vue index 26f6691d..b6031228 100644 --- a/app/components/app/device-order-item/list-entry.vue +++ b/app/components/app/device-order-item/list-entry.vue @@ -1,13 +1,23 @@ diff --git a/app/components/app/device-order/confirmation-info.vue b/app/components/app/device-order/confirmation-info.vue new file mode 100644 index 00000000..6711091f --- /dev/null +++ b/app/components/app/device-order/confirmation-info.vue @@ -0,0 +1,26 @@ + + \ No newline at end of file diff --git a/app/components/app/device-order/entry-form.vue b/app/components/app/device-order/entry-form.vue index bea2b6eb..4e66c441 100644 --- a/app/components/app/device-order/entry-form.vue +++ b/app/components/app/device-order/entry-form.vue @@ -1,6 +1,25 @@ diff --git a/app/components/app/device-order/list.config.ts b/app/components/app/device-order/list.config.ts index 0e0d068d..04a6c9fc 100644 --- a/app/components/app/device-order/list.config.ts +++ b/app/components/app/device-order/list.config.ts @@ -1,10 +1,8 @@ -import type { Config } from '~/components/pub/my-ui/data-table' +import type { Config, RecComponent } from '~/components/pub/my-ui/data-table' import type { DeviceOrder } from '~/models/device-order' -// import type {} from -// import { defineAsyncComponent } from 'vue' - -// const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-ud.vue')) +import type { DeviceOrderItem } from '~/models/device-order-item' +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dsd.vue')) export const config: Config = { cols: [{ width: 120 }, { }, { }, { }, { width: 50 }], @@ -23,7 +21,21 @@ export const config: Config = { htmls: { items: (rec: unknown): unknown => { const recX = rec as DeviceOrder - return recX.items?.length || 0 + if (recX.items?.length > 0) { + let output = '' + recX.items.forEach((item: DeviceOrderItem) => { + output += '' + + ''+ + `` + + '' + + `` + + '' + }) + output += '
${item.device?.name}:${item.quantity}
' + return output + } else { + return '-' + } }, }, parses: { @@ -36,18 +48,18 @@ export const config: Config = { // return recX.parent?.name || '-' // }, }, - // funcComponent: { - // action(rec: object, idx: any) { - // const res: RecComponent = { - // idx, - // rec: rec as object, - // component: action, - // props: { - // size: 'sm', - // }, - // } - // return res - // }, - // } + components: { + action(rec, idx) { + const res: RecComponent = { + idx, + rec: rec as object, + component: action, + props: { + size: 'sm', + }, + } + return res + }, + } } diff --git a/app/components/content/device-order/entry.vue b/app/components/content/device-order/entry.vue index 6d76d685..5d87d960 100644 --- a/app/components/content/device-order/entry.vue +++ b/app/components/content/device-order/entry.vue @@ -1,24 +1,177 @@ diff --git a/app/components/content/device-order/list.vue b/app/components/content/device-order/list.vue index 6c23cfc0..1ffa324d 100644 --- a/app/components/content/device-order/list.vue +++ b/app/components/content/device-order/list.vue @@ -1,72 +1,38 @@ diff --git a/app/components/content/device-order/main.vue b/app/components/content/device-order/main.vue index ae5a9ca8..ff8722de 100644 --- a/app/components/content/device-order/main.vue +++ b/app/components/content/device-order/main.vue @@ -3,10 +3,14 @@ import List from './list.vue' import Entry from './entry.vue' -const { mode } = useQueryMode() +defineProps<{ + encounter_id: number +}>() + +const { mode } = useQueryCRUDMode() diff --git a/app/components/content/encounter/process.vue b/app/components/content/encounter/process.vue index c72f6835..7f62f5d1 100644 --- a/app/components/content/encounter/process.vue +++ b/app/components/content/encounter/process.vue @@ -64,9 +64,7 @@ const tabs: TabItem[] = [ { value: 'consent', label: 'General Consent' }, { value: 'patient-note', label: 'CPRJ' }, { value: 'prescription', label: 'Order Obat', component: Prescription, props: { encounter_id: data.id } }, - { value: 'device-order', label: 'Order Alkes', component: DeviceOrder, props: { encounter: data } }, - { value: 'mcu-radiology', label: 'Order Radiologi' }, - { value: 'mcu-lab-pc', label: 'Order Lab PK' }, + { value: 'device-order', label: 'Order Alkes', component: DeviceOrder, props: { encounter_id: data.id } }, { value: 'mcu-radiology', label: 'Order Radiologi', component: Radiology, props: { encounter_id: data.id } }, { value: 'mcu-lab-cp', label: 'Order Lab PK', component: CpLabOrder, props: { encounter_id: data.id } }, { value: 'mcu-lab-micro', label: 'Order Lab Mikro' }, diff --git a/app/models/device-order-item.ts b/app/models/device-order-item.ts index fa16638a..31b3ee47 100644 --- a/app/models/device-order-item.ts +++ b/app/models/device-order-item.ts @@ -1,16 +1,19 @@ import { type Base, genBase } from "./_base" +import { genDevice, type Device } from "./device" export interface DeviceOrderItem extends Base { deviceOrder_id: number - device_id: number - count: number + device_code: string + device: Device + quantity: number } export function genDeviceOrderItem(): DeviceOrderItem { return { ...genBase(), deviceOrder_id: 0, - device_id: 0, - count: 0, + device_code: '', + device: genDevice(), + quantity: 0, } } diff --git a/app/models/device-order.ts b/app/models/device-order.ts index f2e88b0f..cbb682ad 100644 --- a/app/models/device-order.ts +++ b/app/models/device-order.ts @@ -1,9 +1,11 @@ import { type Base, genBase } from "./_base" import type { DeviceOrderItem } from "./device-order-item" +import { genDoctor, type Doctor } from "./doctor" export interface DeviceOrder extends Base { encounter_id: number - doctor_id: number + doctor_code: number + doctor: Doctor status_code?: string items: DeviceOrderItem[] } @@ -12,7 +14,8 @@ export function genDeviceOrder(): DeviceOrder { return { ...genBase(), encounter_id: 0, - doctor_id: 0, + doctor_code: 0, + doctor: genDoctor(), items: [] } } diff --git a/app/services/device-order.service.ts b/app/services/device-order.service.ts index b8d5372c..cf70420d 100644 --- a/app/services/device-order.service.ts +++ b/app/services/device-order.service.ts @@ -13,8 +13,8 @@ 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 getDetail(id: number | string, params?: any) { + return base.getDetail(path, id, name, params) } export function update(id: number | string, data: any) { @@ -24,3 +24,16 @@ export function update(id: number | string, data: any) { 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 = {} + result.success = resp.success + result.body = (resp.body as Record) || {} + return result + } catch (error) { + console.error(`Error putting ${name}:`, error) + throw new Error(`Failed to put ${name}`) + } +} \ No newline at end of file