diff --git a/handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go b/handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go index dbe8994..d6c0da4 100644 --- a/handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go +++ b/handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go @@ -19,7 +19,7 @@ type TabDaftarPesertaServices interface { GetListDaftarPesertaMCU(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error) GenerataPasswordMCU(mgmMCUID string, host string) (models.GeneratePasswordResponse, error) GetAkunPeserta(patientID string) (models.AuthPatient, error) - GetListReportPesertaV3(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) + GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) } type TabDaftarPesertaHandlers struct { @@ -285,7 +285,7 @@ func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) erro dialogReportBodyID := c.QueryParam("dialogReportBodyID") logger.Info("params", zap.Any("idx", idx)) - tabdatav3, err := tdp.TabDaftarPesertaServices.GetListReportPesertaV3(idx, staffname) + tabdatav3, err := tdp.TabDaftarPesertaServices.GetListReportPesertaV4(idx, staffname) if err != nil { logger.Info("error", zap.Any("err", err)) tab := corporate_mcudetail.TabReportView([]models.TabViewReportMcu{}) diff --git a/handlers/corporate/patient.handlers.go b/handlers/corporate/patient.handlers.go index 8c7873f..7f5f1d8 100644 --- a/handlers/corporate/patient.handlers.go +++ b/handlers/corporate/patient.handlers.go @@ -19,7 +19,7 @@ type PatientService interface { GetDashboardPatientBreadcrumb(title string) (models.BreadCrumbV1, error) GetListtingData(email string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error) GetPatientData(email string) (string, error) - GetListReportPesertaV3(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) + GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) } func NewPatientHandler(us PatientService) *PatientHandler { @@ -223,7 +223,7 @@ func (ph *PatientHandler) HandleOpenReport(c echo.Context) error { claims := userCok.Claims.(jwt.MapClaims) staffname := claims["M_StaffName"].(string) - newtabdata, err := ph.PatientService.GetListReportPesertaV3(id, staffname) + newtabdata, err := ph.PatientService.GetListReportPesertaV4(id, staffname) if err != nil { tab := corporate_patient.TabReportView([]models.TabViewReportMcu{}) mod := corporate_patient.ModalBody( diff --git a/models/mcudaftarpeserta.models.go b/models/mcudaftarpeserta.models.go index c7e38e4..67d608b 100644 --- a/models/mcudaftarpeserta.models.go +++ b/models/mcudaftarpeserta.models.go @@ -64,3 +64,23 @@ type GroupResultOrderModel struct { Group_ResultIsOrderHeader string `db:"Group_ResultIsOrderHeader"` Datetime string `db:"Datetime"` } + +type PatientMCU struct { + T_OrderHeaderID string `db:"T_OrderHeaderID"` + T_OrderHeaderLabNumber string `db:"T_OrderHeaderLabNumber"` + M_PatientID string `db:"M_PatientID"` + M_PatientName string `db:"M_PatientName"` + Datetime string `db:"Datetime"` +} + +type SoRptData struct { + Rpt_name string `db:"rpt_name"` + So_id string `db:"so_id"` + Order_id string `db:"order_id"` + Datetime string `db:"Datetime"` +} + +type ResumeMCU struct { + Mcu_ResumeID string `db:"Mcu_ResumeID"` + Datetime string `db:"Datetime"` +} diff --git a/services/corporate/mcudetail/tabdaftarpeserta.services.go b/services/corporate/mcudetail/tabdaftarpeserta.services.go index 25c28b8..6144800 100644 --- a/services/corporate/mcudetail/tabdaftarpeserta.services.go +++ b/services/corporate/mcudetail/tabdaftarpeserta.services.go @@ -351,3 +351,156 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV3(orderheaderID strin return returnTab, nil } + +func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) { + var returnTab []models.TabViewReportMcu + + var profile_patient models.PatientMCU + lab_rpt := "" + + sql := ` + SELECT + toh.T_OrderHeaderID, + toh.T_OrderHeaderLabNumber, + mp.M_PatientID, + mp.M_PatientName, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM t_orderheader toh + JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID + AND mp.M_PatientIsActive = 'Y' + WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y' + ` + if err := dbx.Handlex.Get(&profile_patient, sql, orderheaderID); err != nil { + return returnTab, fmt.Errorf("error get group result order: %v", err) + } + if profile_patient.T_OrderHeaderLabNumber != "" { + lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname + } + + var so_data_rpt []models.SoRptData + fisik := "" + rontgen := "" + ekg := "" + audiometri := "" + spirometri := "" + treadmill := "" + papsmear := "" + + sql_rpt := ` + SELECT DISTINCT group_resultName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, + T_OrderDetailT_OrderHeaderID as order_id, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM t_orderdetail + JOIN t_test ON T_OrderDetailT_TestID = T_TestID + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N' + LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' + WHERE + T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' + UNION + SELECT DISTINCT group_resultName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, + T_OrderDetailT_OrderHeaderID as order_id, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM t_orderdetail + JOIN t_test ON T_OrderDetailT_TestID = T_TestID + JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND + T_SamplingSoT_TestID = T_TestID + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y' + LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' + WHERE + T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' + UNION + SELECT DISTINCT T_TestName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, + T_OrderDetailT_OrderHeaderID as order_id, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM t_orderdetail + JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang') + JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND + T_SamplingSoT_TestID = T_TestID + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y' + LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' + WHERE + T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' + ` + if err := dbx.Handlex.Select(&so_data_rpt, sql_rpt, orderheaderID, orderheaderID, orderheaderID); err != nil { + return returnTab, fmt.Errorf("error get data so_id: %v", err) + } + + for _, d := range so_data_rpt { + switch d.Rpt_name { + case "Pemeriksaan Fisik": + fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Rontgen": + rontgen = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_xray_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Audiometri": + audiometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_audiometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Spirometri": + spirometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_spirometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "ECG": + ekg = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_ecg_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Treadmill": + treadmill = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_treadmill_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Papsmear": + papsmear = "/birt/frameset?__report=report/one/lab/rpt_test_papsmear_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + } + } + + var ResumeData models.ResumeMCU + kesimpulan := "" + // cover := "" + + sql_resume := ` + SELECT + Mcu_ResumeID, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM mcu_resume + WHERE Mcu_ResumeT_OrderHeaderID = ? + AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL' + ` + if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil { + return returnTab, fmt.Errorf("error get data resume id: %v", err) + } + + if ResumeData.Mcu_ResumeID != "" { + // cover = "/birt/frameset?__report=report/one/mcu/rpt_mcu_resume_cover_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime + kesimpulan = "/birt/frameset?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_v2_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime + } + + if fisik != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Fisik", Link: fisik}) + } + if rontgen != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Rontgen", Link: rontgen}) + } + if ekg != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Elektromedik", Link: ekg}) + } + if audiometri != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Audiometri", Link: audiometri}) + } + if spirometri != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Spirometri", Link: spirometri}) + } + if treadmill != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Treadmill", Link: treadmill}) + } + if kesimpulan != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Kesimpulan", Link: kesimpulan}) + } + if lab_rpt != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Lab", Link: lab_rpt}) + } + if papsmear != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Papsmear", Link: papsmear}) + } + + return returnTab, nil +} diff --git a/services/corporate/mcudetail/tabkelainannonlab.services.go b/services/corporate/mcudetail/tabkelainannonlab.services.go index 34f739c..2712f66 100644 --- a/services/corporate/mcudetail/tabkelainannonlab.services.go +++ b/services/corporate/mcudetail/tabkelainannonlab.services.go @@ -440,7 +440,7 @@ func (tknl *TabKelainanNonLabServices) GetAutospirometri(mcuID string) (models.B return option, fmt.Errorf("error get data autspirometri %v", err) } - title := "Autospirometri" + title := "Spirometri" option, err := tknl.ConfBarchartVertical(title, data) if err != nil { return option, fmt.Errorf("error insert data into chart %v", err) diff --git a/services/corporate/patient.services.go b/services/corporate/patient.services.go index 5670c40..be225d1 100644 --- a/services/corporate/patient.services.go +++ b/services/corporate/patient.services.go @@ -216,3 +216,156 @@ func (sp *PatientServices) GetListReportPesertaV3(orderheaderID string, staffnam return returnTab, nil } + +func (sp *PatientServices) GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) { + var returnTab []models.TabViewReportMcu + + var profile_patient models.PatientMCU + lab_rpt := "" + + sql := ` + SELECT + toh.T_OrderHeaderID, + toh.T_OrderHeaderLabNumber, + mp.M_PatientID, + mp.M_PatientName, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM t_orderheader toh + JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID + AND mp.M_PatientIsActive = 'Y' + WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y' + ` + if err := dbx.Handlex.Get(&profile_patient, sql, orderheaderID); err != nil { + return returnTab, fmt.Errorf("error get group result order: %v", err) + } + if profile_patient.T_OrderHeaderLabNumber != "" { + lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname + } + + var so_data_rpt []models.SoRptData + fisik := "" + rontgen := "" + ekg := "" + audiometri := "" + spirometri := "" + treadmill := "" + papsmear := "" + + sql_rpt := ` + SELECT DISTINCT group_resultName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, + T_OrderDetailT_OrderHeaderID as order_id, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM t_orderdetail + JOIN t_test ON T_OrderDetailT_TestID = T_TestID + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N' + LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' + WHERE + T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' + UNION + SELECT DISTINCT group_resultName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, + T_OrderDetailT_OrderHeaderID as order_id, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM t_orderdetail + JOIN t_test ON T_OrderDetailT_TestID = T_TestID + JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND + T_SamplingSoT_TestID = T_TestID + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y' + LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' + WHERE + T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' + UNION + SELECT DISTINCT T_TestName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, + T_OrderDetailT_OrderHeaderID as order_id, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM t_orderdetail + JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang') + JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND + T_SamplingSoT_TestID = T_TestID + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y' + LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' + WHERE + T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' + ` + if err := dbx.Handlex.Select(&so_data_rpt, sql_rpt, orderheaderID, orderheaderID, orderheaderID); err != nil { + return returnTab, fmt.Errorf("error get data so_id: %v", err) + } + + for _, d := range so_data_rpt { + switch d.Rpt_name { + case "Pemeriksaan Fisik": + fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Rontgen": + rontgen = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_xray_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Audiometri": + audiometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_audiometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Spirometri": + spirometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_spirometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "ECG": + ekg = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_ecg_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Treadmill": + treadmill = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_treadmill_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + case "Papsmear": + papsmear = "/birt/frameset?__report=report/one/lab/rpt_test_papsmear_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime + } + } + + var ResumeData models.ResumeMCU + kesimpulan := "" + // cover := "" + + sql_resume := ` + SELECT + Mcu_ResumeID, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM mcu_resume + WHERE Mcu_ResumeT_OrderHeaderID = ? + AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL' + ` + if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil { + return returnTab, fmt.Errorf("error get data resume id: %v", err) + } + + if ResumeData.Mcu_ResumeID != "" { + // cover = "/birt/frameset?__report=report/one/mcu/rpt_mcu_resume_cover_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime + kesimpulan = "/birt/frameset?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_v2_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime + } + + if fisik != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Fisik", Link: fisik}) + } + if rontgen != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Rontgen", Link: rontgen}) + } + if ekg != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Elektromedik", Link: ekg}) + } + if audiometri != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Audiometri", Link: audiometri}) + } + if spirometri != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Spirometri", Link: spirometri}) + } + if treadmill != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Treadmill", Link: treadmill}) + } + if kesimpulan != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Kesimpulan", Link: kesimpulan}) + } + if lab_rpt != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Lab", Link: lab_rpt}) + } + if papsmear != "" { + returnTab = append(returnTab, models.TabViewReportMcu{Name: "Papsmear", Link: papsmear}) + } + + return returnTab, nil +}