From 30f09c353cd8c635dfb9af95025e8449c0b1ae9a Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Wed, 29 Apr 2026 09:51:46 +0700 Subject: [PATCH] Add cpone MCU generate summaries module --- .../api/patient.js | 786 ++++++++++++ .../components/VueCsvImport.vue | 293 +++++ .../components/oneMdPatientAddress.vue | 397 +++++++ .../components/oneMdPatientDetail.vue | 277 +++++ .../components/oneMdPatientList.vue | 389 ++++++ .../cpone-mcu-generate-summaries/csv-mcu.csv | 3 + .../cpone-mcu-generate-summaries/csv-mcu.xls | Bin 0 -> 6144 bytes .../cpone-mcu-generate-summaries/csv-mcu.xlsx | Bin 0 -> 5989 bytes .../cpone-mcu-generate-summaries/index.php | 118 ++ .../mcu_template.xlsx | Bin 0 -> 11369 bytes .../mcu_template_default.xlsx | Bin 0 -> 10931 bytes .../mcu_template_west.xlsx | Bin 0 -> 9194 bytes .../modules/patient.js | 1051 +++++++++++++++++ .../cpone-mcu-generate-summaries/store.js | 27 + 14 files changed, 3341 insertions(+) create mode 100644 test/vuex/cpone-mcu-generate-summaries/api/patient.js create mode 100644 test/vuex/cpone-mcu-generate-summaries/components/VueCsvImport.vue create mode 100644 test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientAddress.vue create mode 100644 test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientDetail.vue create mode 100644 test/vuex/cpone-mcu-generate-summaries/components/oneMdPatientList.vue create mode 100644 test/vuex/cpone-mcu-generate-summaries/csv-mcu.csv create mode 100644 test/vuex/cpone-mcu-generate-summaries/csv-mcu.xls create mode 100644 test/vuex/cpone-mcu-generate-summaries/csv-mcu.xlsx create mode 100644 test/vuex/cpone-mcu-generate-summaries/index.php create mode 100644 test/vuex/cpone-mcu-generate-summaries/mcu_template.xlsx create mode 100644 test/vuex/cpone-mcu-generate-summaries/mcu_template_default.xlsx create mode 100644 test/vuex/cpone-mcu-generate-summaries/mcu_template_west.xlsx create mode 100644 test/vuex/cpone-mcu-generate-summaries/modules/patient.js create mode 100644 test/vuex/cpone-mcu-generate-summaries/store.js 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 @@ + + + + + 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 @@ + + + + + \ 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 @@ + + + + \ 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 0000000000000000000000000000000000000000..e6ea4101ad9e40e587c1ee5d6e70371687ad8914 GIT binary patch literal 6144 zcmeHLU2IfE6h3#myS>{Mx-AqH1TPgz3#|$~h%wl`rKK!ww@qoIQ6etww$$#nrY$N_ z<5I+gL=p@SzK|G_`d~EvCTgOI<-x=UjXwzni4TQ0q7RF~7!qLpzL~r1rFP5G)EG$5 z&6$~V=FFTkXU;t{_x|`p+0@C8m!Feq@Te5XwRAxIF1~?wAVUX5JZO`5EuBth*k~@m zZRCNgj;-87FE-H!g?(kTJ!CJfQeo7`{c_- z-!bK@+%8@+4Dqs#C4UpJFOz zerF&ssNA?&ic?JCU*p1O%0UAu-<-rNBxXofU1XBS%Woq2n@H;B-^lw{B%uxj9tt=( zI>L>ZI%2ok5bUxe&CPb}o>qHDxD)iwrbu|#o|dLoyDc1na3tJ<*xzY4*pS3+v#HGv zx5BI)9k_P3wzt^3!jRh8-T*UNni{(syIbr?8fQ?k*wDf=sK=}TqTv9~9D;`jl}>2E z8xmRx*4+z#Fa?w;9|W<|EAL+XxovMp{T{_ns_U+rN7iy{;G~1-IptliMr=^!xRPBe zYh*Rfsclu2T?2{Os1=F5V08{BqC>TvvHtz>=tyPN#!Xdrh1BpcyNO&!v_EE5bsSO( zUQ=ZijM=Qdl5@hMOoU1Ti{cHEbYfR@|$bELPYDJs~?+Z zyk5*Z1i-`lgua33dxq&@(5W`#6tbm4o+j4bz~c%;vb?M6wxaJRBAPO=^&F%rj|zkg zRR9X{=Ja_%aqG3D4-~(LH01}yFC$GAg5rUxDH9X}Qd0p?yfoBUwcQ{odq=BZvFG9YeG+Q48E z&$oTD{TIEXu0A$%*-ssw)8C&y@xY4U@wZ@q?d1;|!ShYy?FNsB11Bdk>Nu9R=HjD! z0qzhF%;)#Nil1pY!0je$H2KbvFU}gww;?C(JdVE)BQhv^)qjXVw|HLdazrcR6$w%0 zpu7e_$nPXWL$*P40`F)$YP{V zUCu78d+$fZZ*_uCcFBIMKY_0v{`(2zFHoP_6LQAzH8c!PZm4$j^EAqL{c9lmzB8py l8lj;_*$`8Ipl;2cEpu4^I_MsA^v_3itNwTYfBC=l{{zirI*b4S literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b131b5aa3d8094e5642c5661ec0589e7276c66c3 GIT binary patch literal 5989 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..53151a5b93b3dfdbdee88e08df14b805df50ee06 GIT binary patch literal 11369 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 AW&i*H literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d5e7d8d71cd2730c21d4f9620e1f222d39d8014d GIT binary patch literal 10931 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..085b986186ba1b2cfe7a4d7ad36180ff5cd3931b GIT binary patch literal 9194 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 literal 0 HcmV?d00001 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