feat: Implement item management module and add encounter initialization handler.

This commit is contained in:
riefive
2025-12-05 14:53:31 +07:00
parent 615a7c4485
commit 4715e5330a
5 changed files with 149 additions and 47 deletions

No files matched your search

+76 -39
View File
@@ -56,211 +56,248 @@ const VaccineDataListAsync = defineAsyncComponent(() => import('~/components/con
const InitialNursingStudyAsync = defineAsyncComponent(() => import('~/components/content/initial-nursing/entry.vue'))
const defaultKeys: Record<string, any> = {
status: 'status',
earlyNurseryAssessment: 'early-nursery-assessment',
earlyMedicalAssessment: 'early-medical-assessment',
earlyMedicalRehabAssessment: 'early-medical-rehab-assessment',
functionAssessment: 'function-assessment',
therapyProtocol: 'therapy-protocol',
chemotherapyProtocol: 'chemotherapy-protocol',
chemotherapyMedicine: 'chemotherapy-medicine',
educationAssessment: 'education-assessment',
generalConsent: 'general-consent',
patientAmbNote: 'patient-amb-note',
patientDevNote: 'patient-dev-note',
prescription: 'prescription',
deviceOrder: 'device-order',
radiologyOrder: 'radiology-order',
cpLabOrder: 'cp-lab-order',
microLabOrder: 'micro-lab-order',
paLabOrder: 'pa-lab-order',
procedureRoomOrder: 'procedure-room-order',
mcuResult: 'mcu-result',
actionReport: 'action-report',
surgeryReport: 'surgery-report',
vaccineData: 'vaccine-data',
consultation: 'consultation',
controlLetter: 'control-letter',
inpatientLetter: 'inpatient-letter',
kfr: 'kfr',
refBack: 'reference-back',
screening: 'screening',
supportingDocument: 'supporting-document',
resume: 'resume',
ambResume: 'amb-resume',
priceList: 'price-list',
initialNursingStudy: 'initial-nursing-study',
}
const defaultMenus: Record<string, any> = {
status: {
id: 'status',
id: defaultKeys.status,
title: 'Status Masuk/Keluar',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
earlyNurseryAssessment: {
id: 'early-nursery-assessment',
id: defaultKeys.earlyNurseryAssessment,
title: 'Pengkajian Awal Keperawatan',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
earlyMedicalAssessment: {
id: 'early-medical-assessment',
id: defaultKeys.earlyMedicalAssessment,
title: 'Pengkajian Awal Medis',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
earlyMedicalRehabAssessment: {
id: 'rehab-medical-assessment',
id: defaultKeys.earlyMedicalRehabAssessment,
title: 'Pengkajian Awal Medis Rehabilitasi Medis',
classCode: ['ambulatory'],
unit: 'rehab',
afterId: 'early-medical-assessment',
afterId: defaultKeys.earlyMedicalAssessment,
},
functionAssessment: {
id: 'function-assessment',
id: defaultKeys.functionAssessment,
title: 'Asesmen Fungsi',
classCode: ['ambulatory'],
unit: 'rehab',
afterId: 'rehab-medical-assessment',
afterId: defaultKeys.rehabMedicalAssessment,
},
therapyProtocol: {
id: 'therapy-protocol',
id: defaultKeys.therapyProtocol,
classCode: ['ambulatory'],
title: 'Protokol Terapi',
unit: 'rehab',
afterId: 'function-assessment',
afterId: defaultKeys.functionAssessment,
},
chemotherapyProtocol: {
id: 'chemotherapy-protocol',
id: defaultKeys.chemotherapyProtocol,
title: 'Protokol Kemoterapi',
classCode: ['ambulatory'],
unit: 'chemo',
afterId: 'early-medical-assessment',
afterId: defaultKeys.earlyMedicalAssessment,
},
chemotherapyMedicine: {
id: 'chemotherapy-medicine',
title: 'Protokol Obat Kemoterapi',
classCode: ['ambulatory'],
unit: 'chemo',
afterId: 'chemotherapy-protocol',
afterId: defaultKeys.chemotherapyProtocol,
},
educationAssessment: {
id: 'education-assessment',
id: defaultKeys.educationAssessment,
title: 'Asesmen Kebutuhan Edukasi',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
generalConsent: {
id: 'general-consent',
id: defaultKeys.generalConsent,
title: 'General Consent',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
patientAmbNote: {
id: 'patient-amb-note',
id: defaultKeys.patientAmbNote,
title: 'CPRJ',
classCode: ['ambulatory', 'emergency'],
unit: 'all',
},
patientDevNote: {
id: 'patient-dev-note',
id: defaultKeys.patientDevNote,
title: 'CPP',
classCode: ['inpatient'],
unit: 'all',
},
prescription: {
id: 'prescription',
id: defaultKeys.prescription,
title: 'Order Obat',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
deviceOrder: {
id: 'device-order',
id: defaultKeys.deviceOrder,
title: 'Order Alkes',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
radiologyOrder: {
id: 'radiology-order',
id: defaultKeys.radiologyOrder,
title: 'Order Radiologi',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
cpLabOrder: {
id: 'cp-lab-order',
id: defaultKeys.cpLabOrder,
title: 'Order Lab PK',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
microLabOrder: {
id: 'micro-lab-order',
id: defaultKeys.microLabOrder,
title: 'Order Lab Mikro',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
paLabOrder: {
id: 'pa-lab-order',
id: defaultKeys.paLabOrder,
title: 'Order Lab PA',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
procedureRoomOrder: {
id: 'procedure-room-order',
id: defaultKeys.procedureRoomOrder,
title: 'Order Ruang Tindakan',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
mcuResult: {
id: 'mcu-result',
id: defaultKeys.mcuResult,
title: 'Hasil Penunjang',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
actionReport: {
id: 'action-report',
id: defaultKeys.actionReport,
title: 'Laporan Tindakan',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
surgeryReport: {
id: 'surgery-report',
id: defaultKeys.surgeryReport,
title: 'Laporan Operasi',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
vaccineData: {
id: 'vaccine-data',
id: defaultKeys.vaccineData,
title: 'Data Vaksin',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
consultation: {
id: 'consultation',
id: defaultKeys.consultation,
title: 'Konsultasi',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
controlLetter: {
id: 'control-letter',
id: defaultKeys.controlLetter,
title: 'Surat Kontrol',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
inpatientLetter: {
id: 'inpatient-letter',
id: defaultKeys.inpatientLetter,
title: 'SPRI',
classCode: ['ambulatory', 'emergency'],
unit: 'all',
},
kfr: {
id: 'kfr',
id: defaultKeys.kfr,
title: 'KFR',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
refBack: {
id: 'reference-back',
id: defaultKeys.refBack,
title: 'PRB',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
screening: {
id: 'screening',
id: defaultKeys.screening,
title: 'Skrinning MPP',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
supportingDocument: {
id: 'supporting-document',
id: defaultKeys.supportingDocument,
title: 'Upload Dokumen Pendukung',
classCode: ['ambulatory'],
unit: 'all',
},
resume: {
id: 'resume',
id: defaultKeys.resume,
title: 'Resume',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
ambResume: {
id: 'amb-resume',
id: defaultKeys.ambResume,
title: 'Resume Medis Rawat Jalan',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
priceList: {
id: 'price-list',
id: defaultKeys.priceList,
title: 'Tarif Tindakan',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
},
initialNursingStudy: {
id: 'initial-nursing-study',
id: defaultKeys.initialNursingStudy,
title: 'Kajian Awal Keperawatan',
classCode: ['ambulatory', 'emergency', 'inpatient'],
unit: 'all',
@@ -298,7 +335,7 @@ export function insertItemByAfterId(id: string, items: EncounterItem[], newItem:
}
export function injectComponents(id: string | number, data: EncounterListData, meta: EncounterListData) {
const currentKeys = { ...defaultKeys }
const currentKeys = { ...defaultMenus }
if (currentKeys?.status) {
currentKeys.status['component'] = StatusAsync
currentKeys.status['props'] = { encounter: data?.encounter }