diff --git a/app/components/app/medicine-mix/list-entry.ts b/app/components/app/medicine-mix/list-entry.ts new file mode 100644 index 00000000..03202670 --- /dev/null +++ b/app/components/app/medicine-mix/list-entry.ts @@ -0,0 +1,50 @@ +import type { + Col, + KeyLabel, + RecComponent, + RecStrFuncComponent, + RecStrFuncUnknown, + Th, +} from '~/components/pub/my-ui/data/types' +import { defineAsyncComponent } from 'vue' + +type SmallDetailDto = any + +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue')) + +export const cols: Col[] = [{}, {}, {}, {}, {}, {}, { width: 50 }] + +export const header: Th[][] = [ + [ + { label: 'Nama' }, + { label: "Dosis" }, + { label: 'Satuan' }, + { label: '' }, + ], +] + +export const keys = ['name', 'dose', 'uom.name', 'action'] + +export const delKeyNames: KeyLabel[] = [ + { key: 'code', label: 'Kode' }, + { key: 'name', label: 'Nama' }, +] + +export const funcParsed: RecStrFuncUnknown = { + group: (rec: unknown): unknown => { + return (rec as SmallDetailDto).medicineGroup_code || '-' + }, +} + +export const funcComponent: RecStrFuncComponent = { + action: (rec: unknown, idx: number): RecComponent => { + const res: RecComponent = { + idx, + rec: rec as object, + component: action, + } + return res + }, +} + +export const funcHtml: RecStrFuncUnknown = {} diff --git a/app/components/app/medicine-mix/list-entry.vue b/app/components/app/medicine-mix/list-entry.vue new file mode 100644 index 00000000..ba0fa689 --- /dev/null +++ b/app/components/app/medicine-mix/list-entry.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/app/prescription-item/list-entry.vue b/app/components/app/prescription-item/list-entry.vue index 5b496b2b..422ebba7 100644 --- a/app/components/app/prescription-item/list-entry.vue +++ b/app/components/app/prescription-item/list-entry.vue @@ -1,14 +1,30 @@ diff --git a/app/components/app/prescription-item/list.cfg.ts b/app/components/app/prescription-item/list.cfg.ts new file mode 100644 index 00000000..fd980bb1 --- /dev/null +++ b/app/components/app/prescription-item/list.cfg.ts @@ -0,0 +1,41 @@ +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: 'Bentuk' }, + { label: 'Freq' }, + { label: 'Dosis' }, + { label: 'Interval' }, + { label: 'Total' }, + ], + ], + + keys: ['name', 'uom_code', 'frequency', 'multiplier', 'interval', 'total'], + + delKeyNames: [ + { key: 'code', label: 'Kode' }, + { key: 'name', label: 'Nama' }, + ], + + parses: { + cateogry: (rec: unknown): unknown => { + return (rec as SmallDetailDto).medicineCategory?.name || '-' + }, + group: (rec: unknown): unknown => { + return (rec as SmallDetailDto).medicineGroup?.name || '-' + }, + method: (rec: unknown): unknown => { + return (rec as SmallDetailDto).medicineMethod?.name || '-' + }, + unit: (rec: unknown): unknown => { + return (rec as SmallDetailDto).medicineUnit?.name || '-' + }, + }, +} diff --git a/app/components/app/prescription-item/list.vue b/app/components/app/prescription-item/list.vue new file mode 100644 index 00000000..ed64b09e --- /dev/null +++ b/app/components/app/prescription-item/list.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/app/prescription-item/mix-entry.vue b/app/components/app/prescription-item/mix-entry.vue new file mode 100644 index 00000000..d9b4881e --- /dev/null +++ b/app/components/app/prescription-item/mix-entry.vue @@ -0,0 +1,113 @@ + + + diff --git a/app/components/app/prescription-item/non-mix-entry.vue b/app/components/app/prescription-item/non-mix-entry.vue new file mode 100644 index 00000000..25970646 --- /dev/null +++ b/app/components/app/prescription-item/non-mix-entry.vue @@ -0,0 +1,90 @@ + + + diff --git a/app/components/app/prescription/detail.vue b/app/components/app/prescription/detail.vue new file mode 100644 index 00000000..694eb9a1 --- /dev/null +++ b/app/components/app/prescription/detail.vue @@ -0,0 +1,32 @@ + + + \ No newline at end of file diff --git a/app/components/app/prescription/entry.vue b/app/components/app/prescription/entry.vue index 3b4acf28..ef8756e8 100644 --- a/app/components/app/prescription/entry.vue +++ b/app/components/app/prescription/entry.vue @@ -1,32 +1,36 @@ diff --git a/app/components/app/prescription/list-entry.vue b/app/components/app/prescription/list-entry.vue new file mode 100644 index 00000000..aa768000 --- /dev/null +++ b/app/components/app/prescription/list-entry.vue @@ -0,0 +1,88 @@ + + + + + + diff --git a/app/components/app/prescription/list-with-sub.vue b/app/components/app/prescription/list-with-sub.vue new file mode 100644 index 00000000..14bc1785 --- /dev/null +++ b/app/components/app/prescription/list-with-sub.vue @@ -0,0 +1,56 @@ + + + diff --git a/app/components/app/prescription/list.vue b/app/components/app/prescription/list.vue index 6fe27d39..ae5126ca 100644 --- a/app/components/app/prescription/list.vue +++ b/app/components/app/prescription/list.vue @@ -1,5 +1,37 @@ + + diff --git a/app/components/content/encounter/process.vue b/app/components/content/encounter/process.vue index 72fc5378..77c5b1f6 100644 --- a/app/components/content/encounter/process.vue +++ b/app/components/content/encounter/process.vue @@ -14,7 +14,7 @@ import Status from '~/components/content/encounter/status.vue' import AssesmentFunctionList from '~/components/content/soapi/entry.vue' 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 Prescription from '~/components/content/prescription/main.vue' import CpLabOrder from '~/components/content/cp-lab-order/main.vue' import Radiology from '~/components/content/radiology-order/main.vue' import Consultation from '~/components/content/consultation/list.vue' @@ -62,7 +62,7 @@ const tabs: TabItem[] = [ { value: 'education-assessment', label: 'Asesmen Kebutuhan Edukasi' }, { value: 'consent', label: 'General Consent' }, { value: 'patient-note', label: 'CPRJ' }, - { value: 'prescription', label: 'Order Obat', component: PrescriptionList }, + { value: 'prescription', label: 'Order Obat', component: Prescription, props: { encounter_id: data.id } }, { value: 'device', label: 'Order Alkes' }, { 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 } }, diff --git a/app/components/content/prescription/entry.vue b/app/components/content/prescription/entry.vue new file mode 100644 index 00000000..4b3fa663 --- /dev/null +++ b/app/components/content/prescription/entry.vue @@ -0,0 +1,132 @@ + + + diff --git a/app/components/content/prescription/list.vue b/app/components/content/prescription/list.vue index f8059b9d..844cb04f 100644 --- a/app/components/content/prescription/list.vue +++ b/app/components/content/prescription/list.vue @@ -1,37 +1,82 @@ diff --git a/app/components/content/prescription/main.vue b/app/components/content/prescription/main.vue new file mode 100644 index 00000000..033d093f --- /dev/null +++ b/app/components/content/prescription/main.vue @@ -0,0 +1,16 @@ + + + diff --git a/app/handlers/prescription-item.handler.ts b/app/handlers/prescription-item.handler.ts new file mode 100644 index 00000000..70450970 --- /dev/null +++ b/app/handlers/prescription-item.handler.ts @@ -0,0 +1,17 @@ +import { createCrudHandler, genCrudHandler } from '~/handlers/_handler' +import { create, update, remove } from '~/services/prescription-item.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ create, update, remove}) diff --git a/app/handlers/prescription.handler.ts b/app/handlers/prescription.handler.ts new file mode 100644 index 00000000..62e1861e --- /dev/null +++ b/app/handlers/prescription.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/models/consultation.ts b/app/models/consultation.ts index 09d050a8..595d628e 100644 --- a/app/models/consultation.ts +++ b/app/models/consultation.ts @@ -28,9 +28,10 @@ export interface DeleteDto { export function genCreateDto(): CreateDto { return { + date: '', encounter_id: 0, problem: '', - unit_id: 0, + dstUnit_id: 0, } } diff --git a/app/models/prescription.ts b/app/models/prescription.ts index 543724d2..12d5eb9d 100644 --- a/app/models/prescription.ts +++ b/app/models/prescription.ts @@ -1,10 +1,10 @@ +import { type Base, genBase } from "./_base"; import { type Encounter, genEncounter } from "./encounter"; import { type Doctor, genDoctor } from "./doctor"; import { type PrescriptionItem } from "./prescription-item"; import type { SpecialistIntern } from "./specialist-intern"; -export interface Prescription { - id: number +export interface Prescription extends Base { encounter_id: number encounter: Encounter doctor_id: number @@ -44,7 +44,7 @@ export interface DeleteDto { export function genPresciption(): Prescription { return { - id: 0, + ...genBase(), encounter_id: 0, encounter: genEncounter(), doctor_id: 0, diff --git a/app/schemas/prescription-item.schema.ts b/app/schemas/prescription-item.schema.ts new file mode 100644 index 00000000..7c3ca7d3 --- /dev/null +++ b/app/schemas/prescription-item.schema.ts @@ -0,0 +1,10 @@ +import { z } from 'zod' +import type { PrescriptionItem } from '~/models/prescription-item' + +const PrescriptionItemSchema = z.object({ +}) + +type PrescriptionItemFormData = z.infer & PrescriptionItem + +export { PrescriptionItemSchema } +export type { PrescriptionItemFormData } diff --git a/app/schemas/prescription.schema.ts b/app/schemas/prescription.schema.ts new file mode 100644 index 00000000..1e23f642 --- /dev/null +++ b/app/schemas/prescription.schema.ts @@ -0,0 +1,11 @@ +import { z } from 'zod' +import type { Prescription } from '~/models/prescription' + +const PrescriptionSchema = z.object({ + 'encounter-id': z.number().nullable().optional(), +}) + +type PrescriptionFormData = z.infer & Prescription + +export { PrescriptionSchema } +export type { PrescriptionFormData } diff --git a/app/services/prescription-item.service.ts b/app/services/prescription-item.service.ts new file mode 100644 index 00000000..22649e14 --- /dev/null +++ b/app/services/prescription-item.service.ts @@ -0,0 +1,23 @@ +import * as base from './_crud-base' + +const path = '/api/v1/prescription-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) { + return base.getDetail(path, id) +} + +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/prescription.service.ts b/app/services/prescription.service.ts new file mode 100644 index 00000000..150357ab --- /dev/null +++ b/app/services/prescription.service.ts @@ -0,0 +1,24 @@ +import * as base from './_crud-base' + +const path = '/api/v1/prescription' +const name = 'prescription' + +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) +}