From 9b38689f795d53fffa5b47fb108e5066dd691ab5 Mon Sep 17 00:00:00 2001 From: Khafid Prayoga Date: Thu, 16 Oct 2025 15:35:29 +0700 Subject: [PATCH 1/8] feat(models): add source models for medical entities Add new model interfaces and generators for diagnose, procedure, medical action and its items. These models will be used as base structures for medical data processing. --- app/models/diagnose-src.ts | 16 ++++++++++++++++ app/models/medical-action-src-item.ts | 16 ++++++++++++++++ app/models/medical-action-src.ts | 18 ++++++++++++++++++ app/models/procedure-src.ts | 16 ++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 app/models/diagnose-src.ts create mode 100644 app/models/medical-action-src-item.ts create mode 100644 app/models/medical-action-src.ts create mode 100644 app/models/procedure-src.ts diff --git a/app/models/diagnose-src.ts b/app/models/diagnose-src.ts new file mode 100644 index 00000000..5d25a54a --- /dev/null +++ b/app/models/diagnose-src.ts @@ -0,0 +1,16 @@ +import { type Base, genBase } from './_base' + +export interface DiagnoseSrc extends Base { + code: string + name: string + indName: string +} + +export function genDiagnoseSrc(): DiagnoseSrc { + return { + ...genBase(), + code: '', + name: '', + indName: '', + } +} diff --git a/app/models/medical-action-src-item.ts b/app/models/medical-action-src-item.ts new file mode 100644 index 00000000..0f04657a --- /dev/null +++ b/app/models/medical-action-src-item.ts @@ -0,0 +1,16 @@ +import { type Base, genBase } from './_base' + +export interface MedicalActionSrcItem extends Base { + medicalActionSrc_id: number + procedureSrc_id: number + item_id: number +} + +export function genMedicalActionSrcItem(): MedicalActionSrcItem { + return { + ...genBase(), + medicalActionSrc_id: 0, + procedureSrc_id: 0, + item_id: 0, + } +} diff --git a/app/models/medical-action-src.ts b/app/models/medical-action-src.ts new file mode 100644 index 00000000..c5a030c5 --- /dev/null +++ b/app/models/medical-action-src.ts @@ -0,0 +1,18 @@ +import { type Base, genBase } from './_base' + +export interface MedicalActionSrc extends Base { + code: string + name: string + type_code: string + item_id: number +} + +export function genMedicalActionSrc(): MedicalActionSrc { + return { + ...genBase(), + code: '', + name: '', + type_code: '', + item_id: 0, + } +} diff --git a/app/models/procedure-src.ts b/app/models/procedure-src.ts new file mode 100644 index 00000000..c86adcf9 --- /dev/null +++ b/app/models/procedure-src.ts @@ -0,0 +1,16 @@ +import { type Base, genBase } from './_base' + +export interface ProcedureSrc extends Base { + code: string + name: string + indName: string +} + +export function genProcedureSrc(): ProcedureSrc { + return { + ...genBase(), + code: '', + name: '', + indName: '', + } +} From f7d90270376103bee12185876c82d5277c168ac3 Mon Sep 17 00:00:00 2001 From: Khafid Prayoga Date: Thu, 16 Oct 2025 15:53:57 +0700 Subject: [PATCH 2/8] feat(side-menu): add new menu items for MCU section Add procedure, diagnosis, and medical action links to the MCU section of the side menu to improve navigation and user access to these features --- public/side-menu-items/sys.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/public/side-menu-items/sys.json b/public/side-menu-items/sys.json index c7b15101..19491069 100644 --- a/public/side-menu-items/sys.json +++ b/public/side-menu-items/sys.json @@ -259,6 +259,18 @@ { "title": "Checkup", "link": "/mcu-src/mcu" + }, + { + "title": "Prosedur", + "link": "/mcu-src/procedure" + }, + { + "title": "Diagnosis", + "link": "/mcu-src/diagnose" + }, + { + "title": "Medical Action", + "link": "/mcu-src/medical-action" } ] }, From 586c043411ec68a2df5d51d9ea04683707950056 Mon Sep 17 00:00:00 2001 From: Khafid Prayoga Date: Thu, 16 Oct 2025 16:42:02 +0700 Subject: [PATCH 3/8] feat(mcu-src): add new medical checkup source pages Add index pages for medical checkup source features including diagnosis, procedure, and medical action lists --- .../(features)/mcu-src/diagnose/index.vue | 40 +++++++++++++++++++ app/pages/(features)/mcu-src/mcu/index.vue | 40 +++++++++++++++++++ .../mcu-src/medical-action/index.vue | 40 +++++++++++++++++++ .../(features)/mcu-src/procedure/index.vue | 40 +++++++++++++++++++ 4 files changed, 160 insertions(+) create mode 100644 app/pages/(features)/mcu-src/diagnose/index.vue create mode 100644 app/pages/(features)/mcu-src/mcu/index.vue create mode 100644 app/pages/(features)/mcu-src/medical-action/index.vue create mode 100644 app/pages/(features)/mcu-src/procedure/index.vue diff --git a/app/pages/(features)/mcu-src/diagnose/index.vue b/app/pages/(features)/mcu-src/diagnose/index.vue new file mode 100644 index 00000000..31fb4022 --- /dev/null +++ b/app/pages/(features)/mcu-src/diagnose/index.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/pages/(features)/mcu-src/mcu/index.vue b/app/pages/(features)/mcu-src/mcu/index.vue new file mode 100644 index 00000000..cefa57c6 --- /dev/null +++ b/app/pages/(features)/mcu-src/mcu/index.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/pages/(features)/mcu-src/medical-action/index.vue b/app/pages/(features)/mcu-src/medical-action/index.vue new file mode 100644 index 00000000..36fb8feb --- /dev/null +++ b/app/pages/(features)/mcu-src/medical-action/index.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/pages/(features)/mcu-src/procedure/index.vue b/app/pages/(features)/mcu-src/procedure/index.vue new file mode 100644 index 00000000..50de14c3 --- /dev/null +++ b/app/pages/(features)/mcu-src/procedure/index.vue @@ -0,0 +1,40 @@ + + + From 1ba37e46e16e2e9861d7d7b96fda00ea5d4a2851 Mon Sep 17 00:00:00 2001 From: Khafid Prayoga Date: Fri, 17 Oct 2025 10:22:11 +0700 Subject: [PATCH 4/8] feat(mcu-procedure): add procedure source management feature - Implement procedure source list view with pagination and search - Add create, read, update, and delete operations for procedure sources - Include form validation using zod schema - Set up data table configuration for procedure listing - Add confirmation dialogs for delete operations - Update delete record confirmation based on list config delKeyNames --- .../app/mcu-procedure/entry-form.vue | 137 +++++++++++++ app/components/app/mcu-procedure/list-cfg.ts | 33 ++++ app/components/app/mcu-procedure/list.vue | 36 ++++ app/components/content/mcu-procedure/list.vue | 184 ++++++++++++++++++ app/handlers/procedure-src.handler.ts | 24 +++ .../(features)/mcu-src/procedure/index.vue | 4 +- app/schemas/procedure-src.schema.ts | 22 +++ app/services/procedure-src.service.ts | 41 ++++ 8 files changed, 480 insertions(+), 1 deletion(-) create mode 100644 app/components/app/mcu-procedure/entry-form.vue create mode 100644 app/components/app/mcu-procedure/list-cfg.ts create mode 100644 app/components/app/mcu-procedure/list.vue create mode 100644 app/components/content/mcu-procedure/list.vue create mode 100644 app/handlers/procedure-src.handler.ts create mode 100644 app/schemas/procedure-src.schema.ts create mode 100644 app/services/procedure-src.service.ts diff --git a/app/components/app/mcu-procedure/entry-form.vue b/app/components/app/mcu-procedure/entry-form.vue new file mode 100644 index 00000000..fd33cf90 --- /dev/null +++ b/app/components/app/mcu-procedure/entry-form.vue @@ -0,0 +1,137 @@ + + + diff --git a/app/components/app/mcu-procedure/list-cfg.ts b/app/components/app/mcu-procedure/list-cfg.ts new file mode 100644 index 00000000..0a576270 --- /dev/null +++ b/app/components/app/mcu-procedure/list-cfg.ts @@ -0,0 +1,33 @@ +import type { Config, RecComponent } 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: 'Kode' }, { label: 'Nama (FHIR)' }, { label: 'Nama (ID)' }, { label: '' }]], + + keys: ['code', 'name', 'indName', 'action'], + + delKeyNames: [ + { key: 'code', label: 'Kode' }, + { key: 'name', label: 'Nama (FHIR)' }, + { key: 'indName', label: 'Nama (ID)' }, + ], + + parses: {}, + + components: { + action(rec, idx) { + const res: RecComponent = { + idx, + rec: rec as object, + component: action, + } + return res + }, + }, + + htmls: {}, +} diff --git a/app/components/app/mcu-procedure/list.vue b/app/components/app/mcu-procedure/list.vue new file mode 100644 index 00000000..1be60a60 --- /dev/null +++ b/app/components/app/mcu-procedure/list.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/components/content/mcu-procedure/list.vue b/app/components/content/mcu-procedure/list.vue new file mode 100644 index 00000000..750a217e --- /dev/null +++ b/app/components/content/mcu-procedure/list.vue @@ -0,0 +1,184 @@ + + + diff --git a/app/handlers/procedure-src.handler.ts b/app/handlers/procedure-src.handler.ts new file mode 100644 index 00000000..7c949356 --- /dev/null +++ b/app/handlers/procedure-src.handler.ts @@ -0,0 +1,24 @@ +// Handlers +import { genCrudHandler } from '~/handlers/_handler' + +// Services +import { create, update, remove } from '~/services/procedure-src.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ + create, + update, + remove, +}) diff --git a/app/pages/(features)/mcu-src/procedure/index.vue b/app/pages/(features)/mcu-src/procedure/index.vue index 50de14c3..a31dfa98 100644 --- a/app/pages/(features)/mcu-src/procedure/index.vue +++ b/app/pages/(features)/mcu-src/procedure/index.vue @@ -32,7 +32,9 @@ const canRead = true