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..30fdc894 --- /dev/null +++ b/app/components/app/procedure-room-order/list.cfg.ts @@ -0,0 +1,54 @@ +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-dud.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', '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 + return recX.procedureRoom?.infra?.name || '--belum terdata0--' + }, + }, + + 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..a97ea3fb --- /dev/null +++ b/app/components/app/procedure-room-order/list.vue @@ -0,0 +1,39 @@ + + + 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..e691fa9c --- /dev/null +++ b/app/components/content/procedure-room-order/entry.vue @@ -0,0 +1,54 @@ + + + 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..40f5372d --- /dev/null +++ b/app/components/content/procedure-room-order/list.vue @@ -0,0 +1,174 @@ + + + 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..033d093f --- /dev/null +++ b/app/components/content/procedure-room-order/main.vue @@ -0,0 +1,16 @@ + + + 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/encounter-init.handler.ts b/app/handlers/encounter-init.handler.ts index 3e1e85f3..6ef21d7c 100644 --- a/app/handlers/encounter-init.handler.ts +++ b/app/handlers/encounter-init.handler.ts @@ -40,6 +40,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 ProcedureRoomOrderAsync = defineAsyncComponent(() => import('~/components/content/procedure-room-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')) @@ -162,8 +163,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', @@ -209,13 +210,13 @@ const defaultKeys: Record = { title: 'SPRI', classCode: ['ambulatory', 'emergency'], unit: 'all', - }, + }, refBack: { id: 'reference-back', title: 'PRB', classCode: ['ambulatory', 'emergency', 'inpatient'], unit: 'all', - }, + }, screening: { id: 'screening', title: 'Skrinning MPP', @@ -369,10 +370,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/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/procedure-room-order.ts b/app/models/procedure-room-order.ts new file mode 100644 index 00000000..a77ed700 --- /dev/null +++ b/app/models/procedure-room-order.ts @@ -0,0 +1,22 @@ +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 + infra_code: string + procedureRoom: ProcedureRoom + materialPackage_code: string + materialPackage: MaterialPackage +} + +export function genProcedureRoomOrder(): ProcedureRoomOrder { + return { + ...genBase(), + encounter_id: 0, + infra_code: '', + procedureRoom: genProcedureRoom(), + materialPackage_code: '', + materialPackage: genMaterialPackage(), + } +} diff --git a/app/services/procedure-room-order.service.ts b/app/services/procedure-room-order.service.ts new file mode 100644 index 00000000..8dd6bfd0 --- /dev/null +++ b/app/services/procedure-room-order.service.ts @@ -0,0 +1,26 @@ +// Base +import type { ProcedureRoomOrder } from '~/models/procedure-room-order' +import * as base from './_crud-base' + +const name = 'procedure-room' +const path = `/api/v1/${name}` + +export function create(data: ProcedureRoomOrder) { + 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: ProcedureRoomOrder) { + return base.update(path, id, data, name) +} + +export function remove(id: number | string) { + return base.remove(path, id, name) +}