diff --git a/test/vuex/cpone-mcu-generate-summaries/api/patient.js b/test/vuex/cpone-mcu-generate-summaries/api/patient.js
new file mode 100644
index 0000000..9e779f8
--- /dev/null
+++ b/test/vuex/cpone-mcu-generate-summaries/api/patient.js
@@ -0,0 +1,786 @@
+const URL = "/one-api/mcusummaries/";
+
+export async function getmgmmcu(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/getmgmmcu', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function search(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/search', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function generatesetup(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/generatesetup', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function getsexreg(token) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/getsexreg',{token:token});
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function savecsv(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/savecsv',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function newpatient(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/newpatient',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function xdelete(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/deletepatient',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function getaddress(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/getaddress',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function searchcity(token,prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/searchcity',{token:token,search:prm});
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch(e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+ }
+
+ export async function getdistrict(token,prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/getdistrict',{id:prm.M_CityID,token:token});
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch(e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+ }
+
+ export async function getkelurahan(token,prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/getkelurahan',{token:token,id:prm.M_DistrictID});
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch(e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+ }
+
+
+export async function savenewaddress(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/savenewaddress',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function saveeditaddress(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/saveeditaddress',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function deleteaddress(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/deleteaddress',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+
+export async function searchdoctor(prm) {
+ try {
+ console.log('aye')
+ console.log(prm)
+ var resp = await axios.post(URL + 'generatedata/searchdoctor',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch(e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+ }
+
+ export async function searchcompany(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/searchcompany',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch(e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+export async function getmou(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/getmou',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch(e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+ }
+
+ export async function savegeneratedata(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/savegeneratedata',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch(e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+ }
+
+ export async function gotoreg(prm) {
+ try {
+ var resp = await axios.post(URL + 'generatedata/gotoreg',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch(e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+ }
+
+export async function generatecountkelainan(prm) {
+ const params = new URLSearchParams();
+ for (const key in prm) {
+ params.append(key, prm[key]);
+ }
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/sqlgenerator/get_count_kelainan', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+
+}
+
+export async function savekelainanselection(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/sqlgenerator/save_kelainan_selection',prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+
+
+}
+
+export async function getKelainanSelected(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/sqlgenerator/get_kelainan_selected', prm);
+ if (resp.status != 200) {
+ return { status: false, message: resp.statusText };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return { status: false, message: e.message };
+ }
+}
+
+export async function downloadDatabase(prm) {
+ try {
+ var resp = await axios.get('/one-api/summarydashboard/sqlgenerator/download', {
+ responseType: 'blob',
+ params: prm
+ });
+
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText,
+ data: null
+ };
+ }
+
+ return resp;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+
+}
+
+
+export async function truncateDatabase(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/sqlgenerator/truncate_corporate_tables', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+ }
+}
+
+// 1. Generate Table Setup
+export async function generateTable(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_table_setup', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 2. Generate Kelainan Lab
+export async function generateKelainanLab(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_kelainan_lab', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+
+// 3. Generate Kelainan Non-Lab
+export async function generateKelainanNonLab(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_kelainan_nonlab', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 4. Generate Kelainan Fisik
+export async function generateKelainanFisik(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_kelainan_fisik', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 5. Generate Kelainan Summary
+export async function generateKelainanSummary(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/summary_kelainan_sepuluh', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 6. Generate Result McuLab
+export async function generateKelainanResultMcuLab(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_result_mcu_lab', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 7. Generate Kelainan Result McuNonLab
+export async function generateKelainanResultMcuNonLab(prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_result_mcu_nonlab', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 8. Generate Result Mcu Kenal Warna
+export async function generateResultMcuKenalWarna (prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_result_mcu_kenal_warna', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 9. Generate generate_result_mcu_visus
+export async function generateResultMcuVisus (prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_result_mcu_visus', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 10. Generate generate_result_mcu_status_gizi
+export async function generateResultStatusGizi (prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_result_mcu_status_gizi', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 11. generate_result_mcu_bodyfatmonitoring
+export async function generateResultMcuBodyFatMonitoring (prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_result_mcu_bodyfatmonitoring', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 12. generate_result_mcu_fisik
+export async function generateResultMcuFisik (prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_result_mcu_fisik', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 13. generate_all_results
+export async function generateAllResult (prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/generatedata/generate_all_results', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+// 14. Generate Encrypt Key
+export async function generateEncryptKey (prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/sqlgenerator/create_encrypt_key', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
+
+export async function getActiveEncryptKey (prm) {
+ try {
+ var resp = await axios.post('/one-api/summarydashboard/sqlgenerator/get_active_encrypt_key', prm);
+ if (resp.status != 200) {
+ return {
+ status: "ERR",
+ message: resp.statusText
+ };
+ }
+ let data = resp.data;
+ return data;
+ } catch (e) {
+ return {
+ status: "ERR",
+ message: e.message
+ };
+
+ }
+}
diff --git a/test/vuex/cpone-mcu-generate-summaries/components/VueCsvImport.vue b/test/vuex/cpone-mcu-generate-summaries/components/VueCsvImport.vue
new file mode 100644
index 0000000..a21896a
--- /dev/null
+++ b/test/vuex/cpone-mcu-generate-summaries/components/VueCsvImport.vue
@@ -0,0 +1,293 @@
+
+
+
+
+
diff --git a/test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientAddress.vue b/test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientAddress.vue
new file mode 100644
index 0000000..7a6b1f4
--- /dev/null
+++ b/test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientAddress.vue
@@ -0,0 +1,397 @@
+
+
+
+
+
+ Konfirmasi
+
+
+ {{msgconfirmationdeleteaddr}}
+
+
+
+ Hapus
+ Batal
+
+
+
+
+
+
+ Form Alamat Pasien
+
+
+
+
+
+ Jangan kosong dong
+ Biarkan jadi yang utama
+
+
+
+
+
+
+
+
+
+
+
+ Jangan kosong dong
+
+
+
+ Jangan kosong dong
+
+
+
+ Jangan kosong dong
+
+
+
+
+
+ Jangan kosong dong
+
+
+
+
+
+
+ Tutup
+ Simpan
+ Simpan
+
+
+
+
+
+
+ ALAMAT PASIEN
+
+ Baru
+
+
+
+
+
+
+
+
+ delete
+ edit
+
+ {{ props.item.M_PatientAddressNote}}
+ {{ props.item.M_PatientAddressDescription}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientDetail.vue b/test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientDetail.vue
new file mode 100644
index 0000000..9c590fc
--- /dev/null
+++ b/test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientDetail.vue
@@ -0,0 +1,277 @@
+
+
+
+
+
+ Konfirmasi Generate Ulang
+
+
+ Anda yakin ingin meng-generate ulang database untuk company
+ {{ selected_mgmmcu.mcuName }} ?
+ Semua data sebelumnya akan hilang.
+
+
+
+ Batal
+ Ya, Lanjutkan
+
+
+
+
+
+
+ Daftar Kelainan
+
+ Simpan Pilihan
+
+
+
+
+
+
+
+ Pilih
+
+
+ {{ header.text }}
+
+
+
+
+
+
+
+
+ {{ props.item.Mcu_KelainanName }}
+ {{ props.item.total_patient }}
+
+
+
+
+
+
+
+
+ Data Kelainan Belum Ada
+ Tidak ada data kelainan yang ditemukan untuk MCU ini. Silakan buat database terlebih dahulu.
+
+
+
+ mdi-database-plus
+ Create Database
+
+
+
+
+
+
+
+
+ Jika pilihan kelainan sudah sesuai, Anda dapat men-generate dan mengunduh database.
+
+
+
+ mdi-database-arrow-down
+ Download Database
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientList.vue b/test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientList.vue
new file mode 100644
index 0000000..5f62b37
--- /dev/null
+++ b/test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientList.vue
@@ -0,0 +1,389 @@
+
+
+
+
+
+ GAGAL, KTP DAN TANGGAL LAHIR HARUS BENAR!!!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tutup
+
+
+
+
+
+
+ Berhasil !
+
+ {{msgsuccess}}
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SETUP : {{selected_mgmmcu.Mgm_McuLabel}}
+
+
+
+
+
+ Periode : {{selected_mgmmcu.Mgm_McuStartDate}} - {{selected_mgmmcu.Mgm_McuEndDate}}
+
+ Encrypt Key :
+
{{ activeEncryptKey }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/vuex/cpone-mcu-generate-summaries/csv-mcu.csv b/test/vuex/cpone-mcu-generate-summaries/csv-mcu.csv
new file mode 100644
index 0000000..50c9710
--- /dev/null
+++ b/test/vuex/cpone-mcu-generate-summaries/csv-mcu.csv
@@ -0,0 +1,3 @@
+PID,NAMA,TANGGAL_LAHIR,JENIS_KELAMIN,NIK,JABATAN,EMAIL,HP,LOKASI,JOB,KEDUDUKAN
+,AA,12-09-2001,P,,GURU,,,,,
+,BB,14-01-1994,L,12.14.44.55,DIRKEU,,,,,
diff --git a/test/vuex/cpone-mcu-generate-summaries/csv-mcu.xls b/test/vuex/cpone-mcu-generate-summaries/csv-mcu.xls
new file mode 100644
index 0000000..e6ea410
Binary files /dev/null and b/test/vuex/cpone-mcu-generate-summaries/csv-mcu.xls differ
diff --git a/test/vuex/cpone-mcu-generate-summaries/csv-mcu.xlsx b/test/vuex/cpone-mcu-generate-summaries/csv-mcu.xlsx
new file mode 100644
index 0000000..b131b5a
Binary files /dev/null and b/test/vuex/cpone-mcu-generate-summaries/csv-mcu.xlsx differ
diff --git a/test/vuex/cpone-mcu-generate-summaries/index.php b/test/vuex/cpone-mcu-generate-summaries/index.php
new file mode 100644
index 0000000..25cae5e
--- /dev/null
+++ b/test/vuex/cpone-mcu-generate-summaries/index.php
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+ One
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/vuex/cpone-mcu-generate-summaries/mcu_template.xlsx b/test/vuex/cpone-mcu-generate-summaries/mcu_template.xlsx
new file mode 100644
index 0000000..53151a5
Binary files /dev/null and b/test/vuex/cpone-mcu-generate-summaries/mcu_template.xlsx differ
diff --git a/test/vuex/cpone-mcu-generate-summaries/mcu_template_default.xlsx b/test/vuex/cpone-mcu-generate-summaries/mcu_template_default.xlsx
new file mode 100644
index 0000000..d5e7d8d
Binary files /dev/null and b/test/vuex/cpone-mcu-generate-summaries/mcu_template_default.xlsx differ
diff --git a/test/vuex/cpone-mcu-generate-summaries/mcu_template_west.xlsx b/test/vuex/cpone-mcu-generate-summaries/mcu_template_west.xlsx
new file mode 100644
index 0000000..085b986
Binary files /dev/null and b/test/vuex/cpone-mcu-generate-summaries/mcu_template_west.xlsx differ
diff --git a/test/vuex/cpone-mcu-generate-summaries/modules/patient.js b/test/vuex/cpone-mcu-generate-summaries/modules/patient.js
new file mode 100644
index 0000000..c7d6ebb
--- /dev/null
+++ b/test/vuex/cpone-mcu-generate-summaries/modules/patient.js
@@ -0,0 +1,1051 @@
+// 1 => LOADING
+// 2 => DONE
+// 3 => ERROR
+import * as api from "../api/patient.js"
+
+export default {
+ namespaced: true,
+ state: {
+ lookup_status: 0,
+ mgmmcu: [],
+ selected_mgmmcu: {},
+ error_identifier: [],
+ // cpone
+ last_id: -1,
+ last_saved_id: -1,
+ x_addr_id: 0,
+ act: 'edit',
+ act_addr: 'new',
+ get_data_status: 0,
+ search_patient: 0,
+ search_status: 0,
+ search_error_message: '',
+ norm: '',
+ patient_prefix: '',
+ patient_name: '',
+ patient_suffix: '',
+ titles: [],
+ selected_title: {},
+ dob: '',
+ patients: [],
+ total_patients: 0,
+ patient_address: [],
+ sexes: [],
+ selected_sex: {},
+ religions: [],
+ selected_religion: {},
+ phone: '',
+ hp: '',
+ email: '',
+ pob: '',
+ kartuidentitass: [],
+ selected_kartuidentitas: {},
+ noidentitas: '',
+ note: '',
+ nik: '',
+ jabatan: '',
+ kedudukan: '',
+ pj: '',
+ location: '',
+ job: '',
+ total_patient: 0,
+ selected_patient: {},
+ save_status: 0,
+ btn_save_seen: true,
+ pgrs_save: false,
+ save_error_message: '',
+ no_save: 0,
+ open_alert_confirmation: false,
+ alert_success: false,
+ msg_success: "",
+ dialog_success: false,
+ dialog_confirmation_delete: false,
+ msg_confirmation_delete: "",
+ dialog_confirmation_delete_addr: false,
+ msg_confirmation_delete_addr: "",
+ autocomplete_status: 0,
+ dialog_form_address: false,
+ label_address: '',
+ addresses: [],
+ cities: [],
+ city_address: {},
+ companies:[],
+ company:{},
+ mous:[],
+ mou:{},
+ doctors:[],
+ doctor:{},
+ districts: [],
+ district_address: {},
+ kelurahans: [],
+ kelurahan_address: {},
+ description_address: '',
+ errors: [],
+ current_page:1,
+ autocomplete_status:0,
+ status:{id:"N",name:"Belum di download"},
+ start_date:moment(new Date()).format('YYYY-MM-DD'),
+ end_date:moment(new Date()).format('YYYY-MM-DD'),
+ selected_mous:[],
+ selected_doctors:[],
+ xid:-1,
+ csv_json:[],
+ data_setup:{},
+ default_mu :{},
+ default_doctor:{},
+ setupcode:'',
+ search:'',
+ loading_save:false,
+ open_dialog_info: false,
+ msg_info: '',
+ loading_generate: false,
+ kelainan_count: [],
+ loading_create_db: false,
+ pre_selected_kelainan: [],
+ create_db_progress: 0,
+ create_db_message: '',
+ selected_mgm_mcu_id: 0,
+ dialog_confirm_create_db: false,
+ active_encrypt_key: '',
+ selectedKelainan: [],
+ savedKelainan: []
+ },
+ mutations: {
+ update_open_dialog_info(state, val) {
+ state.open_dialog_info = val
+ },
+ update_msg_info(state, val) {
+ state.msg_info = val
+ },
+ update_lookup_status(state, val) {
+ state.lookup_status = val
+ },
+ update_mgmmcu(state, val) {
+ state.mgmmcu = val
+ },
+ update_selected_mgmmcu(state, val) {
+ state.selected_mgmmcu = val
+ },
+ update_error_identifier(state, val) {
+ state.error_identifier = val
+ },
+ // cpone
+ update_search(state,val){
+ state.search = val
+ },
+ update_setupcode(state,val){
+ state.setupcode = val
+ },
+ update_default_mu(state,val){
+ state.default_mu = val
+ },
+ update_default_doctor(state,val){
+ state.default_doctor = val
+ },
+ update_data_setup(state,val){
+ state.data_setup = val
+ },
+ update_csv_json(state,val){
+ state.csv_json = val
+ },
+ update_xid(state,val){
+ state.xid = val
+ },
+ update_selected_doctors(state,val){
+ state.selected_doctors = val
+ },
+ update_selected_mous(state,val){
+ state.selected_mous = val
+ },
+ update_companies(state,val){
+ state.companies = val
+ },
+ update_company(state,val){
+ state.company = val
+ },
+ update_mous(state,val){
+ state.mous = val
+ },
+ update_mou(state,val){
+ state.mou = val
+ },
+ update_doctors(state,val){
+ state.doctors = val
+ },
+ update_doctor(state,val){
+ state.doctor = val
+ },
+ update_autocomplete_status(state,val){
+ state.autocomplete_status = val
+ },
+ update_start_date(state, val) {
+ state.start_date = val
+ },
+ update_end_date(state, val) {
+ state.end_date = val
+ },
+ update_status(state, val) {
+ state.status = val
+ },
+ update_current_page(state, val) {
+ state.current_page = val
+ },
+ update_x_addr_id(state, val) {
+ state.x_addr_id = val
+ },
+ update_last_id(state, val) {
+ state.last_id = val
+ },
+ update_last_saved_id(state, val) {
+ state.last_saved_id = val
+ },
+ update_act(state, val) {
+ state.act = val
+ },
+ update_act_addr(state, val) {
+ state.act_addr = val
+ },
+ update_get_data_status(state, val) {
+ state.get_data_status = val
+ },
+ update_search_error_message(state, patient) {
+ state.search_error_message = patient
+ },
+ update_search_patient(state, patient) {
+ state.search_patient = patient
+ },
+ update_dob(state, val) {
+ state.dob = val
+ },
+ update_patient_prefix(state, val) {
+ state.patient_prefix= val
+ },
+ update_patient_name(state, val) {
+ state.patient_name = val
+ },
+ update_patient_suffix(state, val) {
+ state.patient_suffix = val
+ },
+ update_norm(state, val) {
+ state.norm = val
+ },
+ update_titles(state, val) {
+ state.titles = val
+ },
+ update_selected_title(state, val) {
+ state.selected_title = val
+ },
+ update_patients(state, data) {
+ state.patients = data
+ },
+ update_selected_patient(state, val) {
+ state.selected_patient = val
+ },
+ update_sexes(state, val) {
+ state.sexes = val
+ },
+ update_selected_sex(state, val) {
+ state.selected_sex = val
+ },
+ update_religions(state, val) {
+ state.religions = val
+ },
+ update_selected_religion(state, val) {
+ state.selected_religion = val
+ },
+ update_phone(state, val) {
+ state.phone = val
+ },
+ update_email(state, val) {
+ state.email = val
+ },
+ update_pob(state, val) {
+ state.pob = val
+ },
+ update_hp(state, val) {
+ state.hp = val
+ },
+ update_kartuidentitass(state, val) {
+ state.kartuidentitass = val
+ },
+ update_selected_kartuidentitas(state, val) {
+ state.selected_kartuidentitas = val
+ },
+ update_noidentitas(state, val) {
+ state.noidentitas = val
+ },
+ update_note(state, val) {
+ state.note = val
+ },
+ update_nik(state, val) {
+ state.nik = val
+ },
+ update_jabatan(state, val) {
+ state.jabatan = val
+ },
+ update_kedudukan(state, val) {
+ state.kedudukan = val
+ },
+ update_pj(state, val) {
+ state.pj = val
+ },
+ update_location(state, val) {
+ state.location = val
+ },
+ update_job(state, val) {
+ state.job = val
+ },
+ update_save_status(state, val) {
+ state.save_status = val
+ },
+ update_btn_save_seen(state, val) {
+ state.btn_save_seen = val
+ },
+ update_pgrs_save(state, val) {
+ state.pgrs_save = val
+ },
+ update_save_error_message(state, msg) {
+ state.save_error_message = ''
+ },
+ update_no_save(state, val) {
+ state.no_save = val
+ },
+ update_open_alert_confirmation(state, val) {
+ state.open_alert_confirmation = val
+ },
+ update_alert_success(state, val) {
+ state.alert_success = val
+ },
+ update_msg_success(state, val) {
+ state.msg_success = val
+ },
+ update_dialog_success(state, val) {
+ state.dialog_success = val
+ },
+ update_dialog_confirmation_delete(state, val) {
+ state.dialog_confirmation_delete = val
+ },
+ update_msg_confirmation_delete(state, val) {
+ state.msg_confirmation_delete = val
+ },
+ update_dialog_confirmation_delete_addr(state, val) {
+ state.dialog_confirmation_delete_addr = val
+ },
+ update_msg_confirmation_delete_addr(state, val) {
+ state.msg_confirmation_delete_addr = val
+ },
+ update_addresses(state, val) {
+ state.addresses = val
+ },
+ update_autocomplete_status(state, val) {
+ state.autocomplete_status = val
+ },
+ update_dialog_form_address(state, val) {
+ state.dialog_form_address = val
+ },
+ update_label_address(state, val) {
+ state.label_address = val
+ },
+ update_cities(state, val) {
+ state.cities = val
+ },
+ update_city_address(state, val) {
+ state.city_address = val
+ },
+ update_districts(state, val) {
+ state.districts = val
+ },
+ update_district_address(state, val) {
+ state.district_address = val
+ },
+ update_kelurahans(state, val) {
+ state.kelurahans = val
+ },
+ update_kelurahan_address(state, val) {
+ state.kelurahan_address = val
+ },
+ update_description_address(state, val) {
+ state.description_address = val
+ },
+ update_search_status(state, val) {
+ state.search_status = val
+ },
+ update_errors(state, val) {
+ state.errors = val
+ },
+ update_total_patients(state, val) {
+ state.total_patients = val
+ },
+ update_total_patient(state, val) {
+ state.total_patient = val
+ },
+ update_save_status(state, val) {
+ state.save_status = val
+ },
+ update_loading_save(state, val) {
+ state.loading_save = val
+ },
+ update_loading_generate(state, val) {
+ state.loading_generate = val
+ },
+ update_kelainan_count(state, data) {
+ state.kelainan_count = data
+ },
+ update_pre_selected_kelainan(state, data) {
+ state.pre_selected_kelainan = data
+ },
+ update_selected_mgm_mcu_id(state, val) {
+ state.selected_mgm_mcu_id = val
+ },
+ update_loading_create_db(state, val) {
+ state.loading_create_db = val;
+ },
+ update_create_db_progress(state, val) {
+ state.create_db_progress = val;
+ },
+ update_create_db_message(state, val) {
+ state.create_db_message = val;
+ },
+ update_dialog_confirm_create_db(state, val) {
+ state.dialog_confirm_create_db = val;
+ },
+ update_active_encrypt_key(state, val) {
+ state.active_encrypt_key = val;
+ },
+ update_selected_kelainan(state, val) {
+ state.selectedKelainan = val;
+ },
+ update_saved_kelainan(state, val) {
+ state.savedKelainan = val;
+ }
+ },
+ actions: {
+ async getmgmmcu(context) {
+ context.commit("update_lookup_status", 1)
+ try {
+ var prm = {token: one_token()}
+ let resp = await api.getmgmmcu(prm)
+ if (resp.status != "OK") {
+ context.commit("update_lookup_status", 3)
+ } else {
+ context.commit("update_lookup_status", 2)
+ let data = {
+ records: resp.data.records,
+ }
+ context.commit("update_mgmmcu", resp.data.records)
+ }
+ } catch (e) {
+ context.commit("update_lookup_status", 3)
+ }
+ },
+
+ async generatesetup(context, prm) {
+ context.commit("update_get_data_status", 1)
+ try {
+ prm.token = one_token()
+ let resp = await api.generatesetup(prm)
+ if (resp.status != "OK") {
+ context.commit("update_get_data_status", 3)
+ } else {
+ context.commit("update_get_data_status", 2)
+
+ let setupData = resp.data.records;
+ console.log("DEBUG DATA SETUP:", setupData);
+
+ context.commit("update_data_setup", setupData)
+ context.commit("update_setupcode", '')
+ context.commit("update_current_page", 1)
+
+ if (context.state.selected_mgmmcu && context.state.selected_mgmmcu.Mgm_McuID) {
+ context.dispatch("getcountkelainan", {
+ Mgm_McuID: context.state.selected_mgmmcu.Mgm_McuID
+ });
+ }
+
+ context.dispatch("search", {
+ search: '',
+ xid: setupData.McuOfflinePrepareID,
+ current_page: 1,
+ lastid: -1
+ })
+ }
+ } catch (e) {
+ context.commit("update_get_data_status", 3)
+ }
+ },
+
+ async getsexreg(context) {
+ context.commit("update_get_data_status", 1)
+ try {
+ let resp = await api.getsexreg(one_token())
+ if (resp.status != "OK") {
+ context.commit("update_get_data_status", 3)
+ } else {
+ context.commit("update_get_data_status", 2)
+ let data = {
+ records: resp.data.records,
+ total: resp.data.total
+ }
+ context.commit("update_sexes", data.records.sexes)
+ context.commit("update_religions", data.records.religions)
+ context.commit("update_titles", data.records.titles)
+ context.commit("update_kartuidentitass", data.records.kartuidentitass)
+ }
+ } catch (e) {
+ context.commit("update_get_data_status", 3)
+ }
+ },
+
+ async savecsv(context, prm) {
+ context.commit("update_save_status", 1)
+ try {
+ context.commit("update_loading_save", true)
+ prm.token = one_token()
+ let resp = await api.savecsv(prm)
+ if (resp.status != "OK") {
+ context.commit("update_loading_save", false)
+ context.commit("update_save_status", 3)
+ context.commit("update_open_dialog_info", true)
+ context.commit("update_msg_info", resp.message)
+ } else {
+ context.commit("update_loading_save", false)
+ context.commit("update_save_status", 2)
+
+ context.dispatch("search", {
+ search: '',
+ current_page: 1,
+ lastid: -1
+ })
+
+
+ if (context.state.selected_mgmmcu && context.state.selected_mgmmcu.Mgm_McuID) {
+ context.dispatch("getcountkelainan", {
+ mgm_mcu_id: context.state.selected_mgmmcu.Mgm_McuID
+ })
+ }
+ }
+ } catch (e) {
+ context.commit("update_loading_save", false)
+ context.commit("update_save_status", 3)
+ }
+ },
+
+ async gotoreg(context, prm) {
+ context.commit("update_save_status", 1)
+ try {
+ prm.token = one_token()
+ let resp = await api.gotoreg(prm)
+ if (resp.status != "OK") {
+ context.commit("update_save_status", 3)
+ } else {
+ context.commit("update_save_status", 2)
+ var pre_id = prm.Mcu_PreregisterDetailsID
+ location.replace("/one-ui/test/vuex/one-fo-registration-v8/" + "?pre_id=" +pre_id)
+ }
+ } catch (e) {
+ context.commit("update_save_status", 3)
+ }
+ },
+ async newpatient(context, prm) {
+ context.commit("update_save_status", 1)
+ try {
+ prm.token = one_token()
+ let resp = await api.newpatient(prm)
+ if (resp.status != "OK") {
+ context.commit("update_save_status", 3)
+ } else {
+ context.commit("update_save_status", 2)
+ console.log(resp.data.id)
+ context.commit("update_last_id", resp.data.id)
+ context.commit("update_dialog_success", true)
+ var msg = "Data pasien " + prm.M_PatientName + " sudah tersimpan dong ..."
+ context.commit("update_msg_success", msg)
+
+ }
+ } catch (e) {
+ context.commit("update_save_status", 3)
+ }
+ },
+ async delete(context, prm) {
+ context.commit("update_save_status", 1)
+ try {
+ prm.token = one_token()
+ let resp = await api.xdelete(prm)
+ if (resp.status != "OK") {
+ context.commit("update_save_status", 3)
+ } else {
+ context.commit("update_save_status", 2)
+ context.commit("update_last_id", 0)
+ context.commit("update_dialog_confirmation_delete", false)
+ context.commit("update_dialog_success", true)
+ var msg = "Data setup " + prm.code + " sudah dihapus dong ..."
+ context.commit("update_msg_success", msg)
+ context.commit("update_company", {})
+ context.commit("update_selected_mous", [])
+ context.commit("update_mou", {})
+ context.commit("update_selected_doctors", [])
+ context.commit("update_start_date", moment(new Date()).format('YYYY-MM-DD'))
+ context.commit("update_end_date", moment(new Date()).format('YYYY-MM-DD'))
+ context.commit("update_default_mou", {})
+ context.commit("update_default_doctor", {})
+ }
+ } catch (e) {
+ context.commit("update_save_status", 3)
+ }
+ },
+ async getaddress(context, prm) {
+ context.commit("update_save_status", 1)
+ try {
+ prm.token = one_token()
+ let resp = await api.getaddress(prm)
+ if (resp.status != "OK") {
+ context.commit("update_save_status", 3)
+ } else {
+ context.commit("update_save_status", 2)
+ let data = {
+ records: resp.data.records,
+ total: resp.data.total
+ }
+ context.commit("update_addresses", data.records)
+ }
+ } catch (e) {
+ context.commit("update_save_status", 3)
+ }
+ },
+ async savesetup(context, prm) {
+ context.commit("update_save_status", 1)
+ try {
+ prm.token = one_token()
+ let resp = await api.savesetup(prm)
+ if (resp.status != "OK") {
+ context.commit("update_save_status", 3)
+ } else {
+ context.commit("update_save_status", 2)
+ let data = {
+ records: resp.data.records,
+ total: resp.data.total
+ }
+ context.commit("update_company", {})
+ context.commit("update_selected_mous", [])
+ context.commit("update_mou", {})
+ context.commit("update_selected_doctors", [])
+ context.commit("update_start_date", moment(new Date()).format('YYYY-MM-DD'))
+ context.commit("update_end_date", moment(new Date()).format('YYYY-MM-DD'))
+ context.commit("update_default_mou", {})
+ context.commit("update_default_doctor", {})
+ context.commit("update_dialog_success", true)
+ if(context.state.act === 'new')
+ var msg = "Pembuatan setup nomor " + resp.data.records.xnumber + " sudah berhasil dong ..."
+ else
+ var msg = "Perubahan setup nomor " + resp.data.records.xnumber + " sudah berhasil dong ..."
+
+ context.commit("update_msg_success", msg)
+ }
+ } catch (e) {
+ context.commit("update_save_status", 3)
+ }
+ },
+ async searchcity(context, prm) {
+ context.commit("update_autocomplete_status", 1)
+ try {
+ let resp = await api.searchcity(one_token(), prm)
+ if (resp.status != "OK") {
+ context.commit("update_autocomplete_status", 3)
+ } else {
+ context.commit("update_autocomplete_status", 2)
+ let data = {
+ records: resp.data.records,
+ total: resp.data.total
+ }
+ context.commit("update_cities", resp.data.records)
+ }
+ } catch (e) {
+ context.commit("update_autocomplete_status", 3)
+ }
+ },
+ async searchdoctor(context,prm) {
+ context.commit("update_autocomplete_status",1)
+ try {
+ var xpar = {}
+ xpar.search = prm
+ xpar.token = one_token()
+ let resp= await api.searchdoctor(xpar)
+ if (resp.status != "OK") {
+ context.commit("update_autocomplete_status",3)
+ } else {
+ context.commit("update_autocomplete_status",2)
+ let data = {
+ records : resp.data.records,
+ total: resp.data.total
+ }
+ var arr = resp.data.records
+ var xsel = context.state.selected_doctors
+ var filtered = arr.filter(o1 => xsel.filter(o2 => o2.id === o1.id).length === 0)
+ context.commit("update_doctors",filtered)
+ }
+ } catch(e) {
+ context.commit("update_autocomplete_status",3)
+ }
+ },
+ async searchcompany(context,prm) {
+ context.commit("update_autocomplete_status",1)
+ try {
+ prm.token = one_token()
+
+ let resp= await api.searchcompany(prm)
+ if (resp.status != "OK") {
+ context.commit("update_autocomplete_status",3)
+ } else {
+ context.commit("update_autocomplete_status",2)
+ let data = {
+ records : resp.data.records,
+ total: resp.data.total
+ }
+ context.commit("update_companies",resp.data.records)
+ }
+ } catch(e) {
+ context.commit("update_autocomplete_status",3)
+ }
+ },
+ async getdistrict(context, prm) {
+ context.commit("update_get_data_status", 1)
+ try {
+ let resp = await api.getdistrict(one_token(), prm)
+ if (resp.status != "OK") {
+ context.commit("update_get_data_status", 3)
+ } else {
+ context.commit("update_get_data_status", 2)
+ let data = {
+ records: resp.data.records,
+ total: resp.data.total
+ }
+ context.commit("update_districts", resp.data.records)
+ }
+ } catch (e) {
+ context.commit("update_get_data_status", 3)
+ }
+ },
+ async getkelurahan(context, prm) {
+ context.commit("update_get_data_status", 1)
+ try {
+ let resp = await api.getkelurahan(one_token(), prm)
+ if (resp.status != "OK") {
+ context.commit("update_get_data_status", 3)
+ } else {
+ context.commit("update_get_data_status", 2)
+ let data = {
+ records: resp.data.records,
+ total: resp.data.total
+ }
+ context.commit("update_kelurahans", resp.data.records)
+ }
+ } catch (e) {
+ context.commit("update_get_data_status", 3)
+ }
+ },
+ async savenewaddress(context, prm) {
+ context.commit("update_save_status", 1)
+ try {
+ prm.token = one_token()
+ let resp = await api.savenewaddress(prm)
+ if (resp.status != "OK") {
+ context.commit("update_save_status", 3)
+ } else {
+ context.commit("update_save_status", 2)
+ context.commit("update_dialog_form_address", false)
+ context.commit("update_last_id", prm.M_PatientAddressM_PatientID)
+ context.commit("update_dialog_success", true)
+ var msg = "Penambahan data alamat pasien " + prm.M_PatientName + " sudah berhasil dong ..."
+ context.commit("update_msg_success", msg)
+
+ }
+ } catch (e) {
+ context.commit("update_save_status", 3)
+ }
+ },
+ async saveeditaddress(context, prm) {
+ context.commit("update_save_status", 1)
+ try {
+ prm.token = one_token()
+ let resp = await api.saveeditaddress(prm)
+ if (resp.status != "OK") {
+ context.commit("update_save_status", 3)
+ } else {
+ context.commit("update_save_status", 2)
+ context.commit("update_dialog_form_address", false)
+ context.commit("update_last_id", prm.M_PatientAddressM_PatientID)
+ context.commit("update_dialog_success", true)
+ var msg = "Perubahan data alamat pasien " + prm.M_PatientName + " sudah berhasil dong ..."
+ context.commit("update_msg_success", msg)
+
+ }
+ } catch (e) {
+ context.commit("update_save_status", 3)
+ }
+ },
+ async deleteaddress(context, prm) {
+ context.commit("update_save_status", 1)
+ try {
+ prm.token = one_token()
+ let resp = await api.deleteaddress(prm)
+ if (resp.status != "OK") {
+ context.commit("update_save_status", 3)
+ } else {
+ context.commit("update_save_status", 2)
+ context.commit("update_dialog_confirmation_delete_addr", false)
+ context.commit("update_last_id", prm.M_PatientAddressM_PatientID)
+ context.commit("update_dialog_success", true)
+ var msg = "Penghapusan data alamat " + prm.M_PatientAddressNote + " dari pasien " + prm.M_PatientName + " sudah berhasil dong ..."
+ context.commit("update_msg_success", msg)
+
+ }
+ } catch (e) {
+ context.commit("update_save_status", 3)
+ }
+ },
+ async getmou(context,prm) {
+ context.commit("update_lookup_order",1)
+ try {
+ prm.token = one_token()
+ let resp= await api.getmou(prm)
+ if (resp.status != "OK") {
+ context.commit("update_lookup_order",3)
+ } else {
+ context.commit("update_lookup_order",2)
+ let data = {
+ records : resp.data.records,
+ total: resp.data.total
+ }
+ context.commit("update_mous",resp.data.records)
+ context.commit("update_mou",{})
+ context.commit("update_selected_mous",[])
+ }
+ } catch(e) {
+ context.commit("update_lookup_order",3)
+ }
+ },
+ async getcountkelainan(context, prm) {
+ context.commit("update_get_data_status", 1)
+ try {
+ prm.token = one_token()
+ console.log("Sending request to get_count_kelainan with params:", prm)
+ let resp = await api.generatecountkelainan(prm)
+
+ console.log("Response from get_count_kelainan:", resp)
+
+ if (resp.status != "OK") {
+ console.error("Error status:", resp.status, resp.message)
+ context.commit("update_get_data_status", 3)
+ } else {
+ console.log("Success! Data:", resp.data.data)
+ context.commit("update_get_data_status", 2)
+ context.commit("update_kelainan_count", resp.data.data);
+
+ // Filter dan simpan kelainan yang sudah terpilih sebelumnya
+ const preSelected = resp.data.data.filter(item => item.is_selected);
+ context.commit("update_pre_selected_kelainan", preSelected);
+ }
+ } catch (e) {
+ console.error("Exception in getcountkelainan:", e)
+ context.commit("update_get_data_status", 3)
+ }
+ },
+
+ async savekelainanselection(context, prm) {
+ context.commit("update_loading_save", true)
+ try {
+ prm.token = one_token()
+ let resp = await api.savekelainanselection(prm)
+
+ if (resp.status != "OK") {
+ context.commit("update_save_status", 3)
+ context.commit("update_msg_info", resp.message)
+ context.commit("update_open_dialog_info", true)
+ return false;
+ } else {
+ context.commit("update_save_status", 2)
+ context.commit("update_msg_success", "Data kelainan berhasil disimpan")
+ context.commit("update_dialog_success", true)
+ context.commit("update_saved_kelainan", prm.selected_kelainan.map(i => i.id));
+ return true;
+ }
+ } catch (e) {
+ context.commit("update_save_status", 3)
+ return false;
+ } finally {
+ context.commit("update_loading_save", false)
+ }
+ },
+
+ async generateDatabase(context, prm) {
+ context.commit("update_loading_generate", true);
+ try {
+ // Panggil API untuk generate, enkripsi, dan download file
+ const downloadPrm = {
+ db_name: "cpone_corporate", // Sesuai dengan logika backend
+ Mgm_McuID: prm.mgm_mcu_id,
+ };
+ const resp = await api.downloadDatabase(downloadPrm);
+
+ if (resp.status === 200 && resp.data) {
+ // Membuat URL dari blob untuk diunduh
+ const url = window.URL.createObjectURL(new Blob([resp.data]));
+ const link = document.createElement('a');
+ link.href = url;
+
+ // Menentukan nama file dari header atau generate nama baru
+ const contentDisposition = resp.headers['content-disposition'];
+ let filename = `dump_cpone_corporate.dat`; // Default filename
+ if (contentDisposition) {
+ const filenameMatch = contentDisposition.match(/filename="?([^"]+)"?/);
+ if (filenameMatch && filenameMatch.length > 1) {
+ filename = filenameMatch[1];
+ }
+ }
+ link.setAttribute('download', filename);
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+ window.URL.revokeObjectURL(url);
+ } else {
+ throw new Error(resp.message || "Gagal mengunduh file terenkripsi.");
+ }
+ } catch (e) {
+ console.error("Error generating database dump:", e);
+ } finally {
+ context.commit("update_loading_generate", false);
+ }
+ },
+
+ async truncateDatabaseAction(context, prm) {
+ context.commit("update_loading_create_db", true);
+ context.commit("update_create_db_message", "Menghapus data lama...");
+ try {
+ const apiParams = {
+ Mgm_McuID: prm.mgm_mcu_id,
+ confirm_truncate: prm.confirm_truncate,
+ token: one_token()
+ };
+ const resp = await api.truncateDatabase(apiParams);
+ if (resp.status !== "OK") {
+ throw new Error(`Gagal menghapus data lama: ${resp.message}`);
+ }
+ return true;
+ } catch (e) {
+ console.error("Error during truncate operation:", e);
+ context.commit("update_msg_info", e.message);
+ context.commit("update_open_dialog_info", true);
+ context.commit("update_loading_create_db", false);
+ return false;
+ }
+ },
+
+ async createDatabase(context, prm) {
+ // context.commit("update_loading_create_db", true);
+ context.commit("update_create_db_progress", 0);
+ const apiCalls = [
+ { func: api.generateTable, name: "Table Setup" },
+ { func: api.generateKelainanLab, name: "Kelainan Lab" },
+ { func: api.generateKelainanNonLab, name: "Kelainan Non-Lab" },
+ { func: api.generateKelainanFisik, name: "Kelainan Fisik" },
+ { func: api.generateKelainanSummary, name: "Kelainan Summary" },
+ { func: api.generateKelainanResultMcuLab, name: "Result MCU Lab" },
+ { func: api.generateKelainanResultMcuNonLab, name: "Result MCU Non-Lab" },
+ { func: api.generateResultMcuKenalWarna, name: "Result MCU Kenal Warna" },
+ { func: api.generateResultMcuVisus, name: "Result MCU Visus" },
+ { func: api.generateResultStatusGizi, name: "Result Status Gizi" },
+ { func: api.generateResultMcuBodyFatMonitoring, name: "Result Body Fat Monitoring" },
+ { func: api.generateResultMcuFisik, name: "Result MCU Fisik" },
+ { func: api.generateAllResult, name: "All Results" },
+ { func: api.generateEncryptKey, name: "Encrypt Key" }
+ ];
+
+ try {
+ let lastCallResp = null; // Variabel untuk menyimpan response terakhir
+ for (let i = 0; i < apiCalls.length; i++) {
+ const call = apiCalls[i];
+ const progressMessage = `Step ${i + 1}/${apiCalls.length}: Generating ${call.name}...`;
+
+ context.commit("update_create_db_message", progressMessage);
+ context.commit("update_create_db_progress", ((i + 1) / apiCalls.length) * 100);
+
+ const apiParams = {
+ Mgm_McuID: prm.mgm_mcu_id,
+ token: one_token()
+ };
+ const resp = await call.func(apiParams);
+ lastCallResp = resp;
+
+ if (resp.status !== "OK") {
+ if (resp.message === "No data found") {
+ console.warn(`Skipping step ${i + 1} (${call.name}): No data found.`);
+ } else {
+ throw new Error(`Failed at step ${i + 1} (${call.name}): ${resp.message}`);
+ }
+ }
+ }
+
+ // Ambil response dari panggilan API terakhir (generateEncryptKey)
+ let successMessage = "Database berhasil dibuat ulang.";
+ // Perbaikan: Akses new_key dari dalam objek 'data'
+ if (lastCallResp && lastCallResp.status === "OK" && lastCallResp.data && lastCallResp.data.new_key) {
+ successMessage += ` Kunci Enkripsi Baru berhasil di-generate.`;
+ }
+ context.commit("update_msg_success", successMessage);
+ context.commit("update_dialog_success", true);
+
+ // Panggil getcountkelainan dan getActiveEncryptKey untuk refresh data di UI
+ context.dispatch("getcountkelainan", { Mgm_McuID: prm.mgm_mcu_id });
+ context.dispatch("getActiveEncryptKey", { Mgm_McuID: prm.mgm_mcu_id });
+
+ } catch (e) {
+ console.error("Error during database creation:", e);
+ context.commit("update_msg_info", e.message);
+ context.commit("update_open_dialog_info", true);
+ } finally {
+ context.commit("update_loading_create_db", false);
+ context.commit("update_create_db_progress", 0);
+ context.commit("update_create_db_message", "");
+ }
+ },
+
+ async getActiveEncryptKey(context, prm) {
+ context.commit("update_active_encrypt_key", ''); // Reset dulu
+ try {
+ prm.token = one_token();
+ const resp = await api.getActiveEncryptKey(prm);
+
+ if (resp.status === "OK" && resp.data && resp.data.active_key) {
+ context.commit("update_active_encrypt_key", resp.data.active_key);
+ } else {
+ // Jika tidak ada key, tidak perlu menampilkan error, cukup kosongkan saja
+ console.warn(resp.message || "No active key found");
+ context.commit("update_active_encrypt_key", '');
+ }
+ } catch (e) {
+ console.error("Error fetching active encrypt key:", e);
+ context.commit("update_active_encrypt_key", '');
+ }
+ },
+
+ async getKelainanSelected(context, prm) {
+ context.commit("update_selected_kelainan", []); // Reset UI selection
+ context.commit("update_saved_kelainan", []); // Reset saved selection
+ try {
+ prm.token = one_token();
+ const resp = await api.getKelainanSelected(prm);
+
+ if (resp.status && resp.data && resp.data.selected) {
+ const selectedIds = resp.data.selected.map(i => i.id);
+ context.commit("update_selected_kelainan", selectedIds);
+ context.commit("update_saved_kelainan", selectedIds);
+ } else {
+ console.warn(resp.message || "No selected 'kelainan' found");
+ }
+ } catch (e) {
+ console.error("Error fetching selected 'kelainan':", e);
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/test/vuex/cpone-mcu-generate-summaries/store.js b/test/vuex/cpone-mcu-generate-summaries/store.js
new file mode 100644
index 0000000..61cf2a1
--- /dev/null
+++ b/test/vuex/cpone-mcu-generate-summaries/store.js
@@ -0,0 +1,27 @@
+// State
+// data ...
+// Mutations
+//
+//
+// Actions
+import patient from "./modules/patient.js";
+import system from "../../../apps/modules/system/system.js";
+export const store = new Vuex.Store({
+ modules: {
+ patient: patient,
+ system: system
+ },
+ state: {
+ tab_selected: 'pasien-dokter'
+ },
+ mutations: {
+ change_tab(state, ntab) {
+ state.tab_selected = ntab
+ }
+ },
+ actions: {
+ change_tab(context, ntab) {
+ context.commit('change_tab', ntab)
+ }
+ }
+});
\ No newline at end of file