diff --git a/handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go b/handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go index 7421eab..e2ab999 100644 --- a/handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go +++ b/handlers/corporate/mcudetail/tabdaftarpeserta.handlers.go @@ -14,6 +14,7 @@ import ( type TabDaftarPesertaServices interface { GetListMcuDaftarPeserta(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error) GetReportMcu(orderheaderID string) ([]models.TabViewReportMcu, error) + GetListReportPeserta(orderheaderID string, host string) ([]models.TabViewReportMcu, error) } type TabDaftarPesertaHandlers struct { @@ -170,13 +171,25 @@ func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error { func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) error { logger, _ := zap.NewProduction() + host := c.Request().Host idx := c.QueryParam("idx") dialogReportID := c.QueryParam("dialogReportID") dialogReportBodyID := c.QueryParam("dialogReportBodyID") logger.Info("params", zap.Any("idx", idx)) - tabData, err := tdp.TabDaftarPesertaServices.GetReportMcu(idx) + // tabData, err := tdp.TabDaftarPesertaServices.GetReportMcu(idx) + // if err != nil { + // tab := corporate_mcudetail.TabReportView([]models.TabViewReportMcu{}) + // mod := corporate_mcudetail.ModalBody( + // dialogReportBodyID, + // tab, + // corporate_mcudetail.JsShowModal(""), + // ) + // return utils.View(c, mod) + // } + + newtabdata, err := tdp.TabDaftarPesertaServices.GetListReportPeserta(idx, host) if err != nil { tab := corporate_mcudetail.TabReportView([]models.TabViewReportMcu{}) mod := corporate_mcudetail.ModalBody( @@ -187,7 +200,9 @@ func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) erro return utils.View(c, mod) } - tabcomponent := corporate_mcudetail.TabReportView(tabData) + logger.Info("resp new data", zap.Any("data", newtabdata)) + + tabcomponent := corporate_mcudetail.TabReportView(newtabdata) modalbody := corporate_mcudetail.ModalBody( dialogReportBodyID, diff --git a/handlers/corporate/patient.handlers.go b/handlers/corporate/patient.handlers.go index 7af627e..43a2b80 100644 --- a/handlers/corporate/patient.handlers.go +++ b/handlers/corporate/patient.handlers.go @@ -21,6 +21,7 @@ type PatientService interface { GetListtingData(email string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error) GetPatientData(email string) (string, error) GetReportMcu(orderheaderID string) ([]models.TabViewReportMcu, error) + GetListReportPeserta(orderheaderID string, host string) ([]models.TabViewReportMcu, error) } func NewPatientHandler(us PatientService) *PatientHandler { @@ -214,13 +215,25 @@ func (ph *PatientHandler) HandleChangePage(c echo.Context) error { func (ph *PatientHandler) HandleOpenReport(c echo.Context) error { logger, _ := zap.NewProduction() + host := c.Request().Host id := c.QueryParam("id") dialogID := c.QueryParam("dialogID") dialogBodyID := c.QueryParam("dialogBodyID") logger.Info("params", zap.Any("id", id)) - tabData, err := ph.PatientService.GetReportMcu(id) + // tabData, err := ph.PatientService.GetReportMcu(id) + // if err != nil { + // tab := corporate_patient.TabReportView([]models.TabViewReportMcu{}) + // mod := corporate_patient.ModalBody( + // dialogBodyID, + // tab, + // corporate_patient.JsShowModal(""), + // ) + // return utils.View(c, mod) + // } + + newtabdata, err := ph.PatientService.GetListReportPeserta(id, host) if err != nil { tab := corporate_patient.TabReportView([]models.TabViewReportMcu{}) mod := corporate_patient.ModalBody( @@ -231,7 +244,7 @@ func (ph *PatientHandler) HandleOpenReport(c echo.Context) error { return utils.View(c, mod) } - tabcomponent := corporate_patient.TabReportView(tabData) + tabcomponent := corporate_patient.TabReportView(newtabdata) modalBody := corporate_patient.ModalBody( dialogBodyID, tabcomponent, diff --git a/models/mcudaftarpeserta.models.go b/models/mcudaftarpeserta.models.go index 24505d5..541ac96 100644 --- a/models/mcudaftarpeserta.models.go +++ b/models/mcudaftarpeserta.models.go @@ -19,9 +19,21 @@ type ModelMcuPesertaReport struct { So_ResultEntryT_OrderHeaderID int `db:"So_ResultEntryT_OrderHeaderID"` So_ResultEntryNonlab_TemplateID int `db:"So_ResultEntryNonlab_TemplateID"` So_ResultEntryNonlab_TemplateName string `db:"So_ResultEntryNonlab_TemplateName"` + Datetime string `db:"Datetime"` } type TabViewReportMcu struct { Name string Link string } + +type OrderReport struct { + M_OrderReportID int `db:"M_OrderReportID"` + M_OrderReportName string `db:"M_OrderReportName"` + M_OrderReportOrdering int `db:"M_OrderReportOrdering"` + M_OrderReportUrl string `db:"M_OrderReportUrl"` + M_OrderReportIsOrderHeader string `db:"M_OrderReportIsOrderHeader"` + M_OrderReportIsFisikUmum string `db:"M_OrderReportIsFisikUmum"` + M_OrderReportIsActive string `db:"M_OrderReportIsActive"` + Datetime string `db:"Datetime"` +} diff --git a/services/corporate/mcudetail/tabdaftarpeserta.services.go b/services/corporate/mcudetail/tabdaftarpeserta.services.go index 0be5bd7..568f140 100644 --- a/services/corporate/mcudetail/tabdaftarpeserta.services.go +++ b/services/corporate/mcudetail/tabdaftarpeserta.services.go @@ -101,7 +101,7 @@ func (tdps *TabDaftarPesertaServices) GetReportMcu(orderheaderID string) ([]mode ORDER BY So_ResultEntryNonlab_TemplateID ` if err := dbx.Handlex.Select(&data, q, orderheaderID); err != nil { - return ret, err + return ret, fmt.Errorf("error get mcu report: %v", err) } // Lab @@ -144,3 +144,98 @@ func (tdps *TabDaftarPesertaServices) GetReportMcu(orderheaderID string) ([]mode return ret, nil } + +func (tdps *TabDaftarPesertaServices) GetListReportPeserta(orderheaderID string, host string) ([]models.TabViewReportMcu, error) { + var ret []models.TabViewReportMcu + var data []models.ModelMcuPesertaReport + + q := ` + SELECT + So_ResultEntryID, + So_ResultEntryT_OrderHeaderID, + So_ResultEntryNonlab_TemplateID, + So_ResultEntryNonlab_TemplateName, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM so_resultentry + WHERE So_ResultEntryT_OrderHeaderID = ? + AND So_ResultEntryIsActive = 'Y' + ORDER BY So_ResultEntryNonlab_TemplateID + ` + if err := dbx.Handlex.Select(&data, q, orderheaderID); err != nil { + return ret, fmt.Errorf("error get mcu report : %v", err) + } + + var tabdata []models.OrderReport + q = ` + SELECT + M_OrderReportID, + M_OrderReportName, + M_OrderReportOrdering, + M_OrderReportUrl, + M_OrderReportIsOrderHeader, + M_OrderReportIsFisikUmum, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM m_order_report + WHERE + M_OrderReportIsActive = 'Y' + AND ( + M_OrderReportName LIKE "%Hasil Laboratorium%" + OR + M_OrderReportName LIKE "%Resume Individu%" + ` + + temParam := map[string]int{} + for _, d := range data { + switch d.So_ResultEntryNonlab_TemplateName { + case "ECG": + q = q + `OR M_OrderReportName LIKE "%Elektromedis%"` + temParam["Elektromedis"] = d.So_ResultEntryID + case "Thorax PA": + q = q + `OR M_OrderReportName LIKE "%Radiologi%"` + temParam["Radiologi"] = d.So_ResultEntryID + case "Audiometri": + q = q + `OR M_OrderReportName LIKE "%Audiometri%"` + temParam["Audiometri"] = d.So_ResultEntryID + case "Spirometri": + q = q + `OR M_OrderReportName LIKE "%Spirometri%"` + temParam["Spirometri"] = d.So_ResultEntryID + case "Fisik Umum": + q = q + `OR M_OrderReportIsFisikUmum = 'Y'` + temParam["Fisik Umum"] = d.So_ResultEntryID + default: + q = q + `OR M_OrderReportName LIKE "%` + d.So_ResultEntryNonlab_TemplateName + `%"` + temParam[d.So_ResultEntryNonlab_TemplateName] = d.So_ResultEntryID + } + } + q = q + `) ORDER BY M_OrderReportOrdering ASC` + if err := dbx.Handlex.Select(&tabdata, q); err != nil { + return ret, fmt.Errorf("error get link mcu report: %v", err) + } + + if host == "localhost:5000" { + host = "https://devcpone.aplikasi.web.id" + } + + for _, t := range tabdata { + if t.M_OrderReportIsFisikUmum == "Y" { + id := strconv.Itoa(temParam["Fisik Umum"]) + ret = append(ret, models.TabViewReportMcu{ + Name: t.M_OrderReportName, + Link: host + t.M_OrderReportUrl + id + "&tm=" + t.Datetime, + }) + } else if t.M_OrderReportIsOrderHeader != "Y" { + id := strconv.Itoa(temParam[t.M_OrderReportName]) + ret = append(ret, models.TabViewReportMcu{ + Name: t.M_OrderReportName, + Link: host + t.M_OrderReportUrl + id + "&tm=" + t.Datetime, + }) + } else { + ret = append(ret, models.TabViewReportMcu{ + Name: t.M_OrderReportName, + Link: host + t.M_OrderReportUrl + orderheaderID + "&tm=" + t.Datetime, + }) + } + } + + return ret, nil +} diff --git a/services/corporate/patient.services.go b/services/corporate/patient.services.go index 6f685b2..d9612fd 100644 --- a/services/corporate/patient.services.go +++ b/services/corporate/patient.services.go @@ -219,3 +219,98 @@ func (sp *PatientServices) GetReportMcu(orderheaderID string) ([]models.TabViewR return ret, nil } + +func (tdps *PatientServices) GetListReportPeserta(orderheaderID string, host string) ([]models.TabViewReportMcu, error) { + var ret []models.TabViewReportMcu + var data []models.ModelMcuPesertaReport + + q := ` + SELECT + So_ResultEntryID, + So_ResultEntryT_OrderHeaderID, + So_ResultEntryNonlab_TemplateID, + So_ResultEntryNonlab_TemplateName, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM so_resultentry + WHERE So_ResultEntryT_OrderHeaderID = ? + AND So_ResultEntryIsActive = 'Y' + ORDER BY So_ResultEntryNonlab_TemplateID + ` + if err := dbx.Handlex.Select(&data, q, orderheaderID); err != nil { + return ret, fmt.Errorf("error get mcu report : %v", err) + } + + var tabdata []models.OrderReport + q = ` + SELECT + M_OrderReportID, + M_OrderReportName, + M_OrderReportOrdering, + M_OrderReportUrl, + M_OrderReportIsOrderHeader, + M_OrderReportIsFisikUmum, + DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime + FROM m_order_report + WHERE + M_OrderReportIsActive = 'Y' + AND ( + M_OrderReportName LIKE "%Hasil Laboratorium%" + OR + M_OrderReportName LIKE "%Resume Individu%" + ` + + temParam := map[string]int{} + for _, d := range data { + switch d.So_ResultEntryNonlab_TemplateName { + case "ECG": + q = q + `OR M_OrderReportName LIKE "%Elektromedis%"` + temParam["Elektromedis"] = d.So_ResultEntryID + case "Thorax PA": + q = q + `OR M_OrderReportName LIKE "%Radiologi%"` + temParam["Radiologi"] = d.So_ResultEntryID + case "Audiometri": + q = q + `OR M_OrderReportName LIKE "%Audiometri%"` + temParam["Audiometri"] = d.So_ResultEntryID + case "Spirometri": + q = q + `OR M_OrderReportName LIKE "%Spirometri%"` + temParam["Spirometri"] = d.So_ResultEntryID + case "Fisik Umum": + q = q + `OR M_OrderReportIsFisikUmum = 'Y'` + temParam["Fisik Umum"] = d.So_ResultEntryID + default: + q = q + `OR M_OrderReportName LIKE "%` + d.So_ResultEntryNonlab_TemplateName + `%"` + temParam[d.So_ResultEntryNonlab_TemplateName] = d.So_ResultEntryID + } + } + q = q + `) ORDER BY M_OrderReportOrdering ASC` + if err := dbx.Handlex.Select(&tabdata, q); err != nil { + return ret, fmt.Errorf("error get link mcu report: %v", err) + } + + if host == "localhost:5000" { + host = "https://devcpone.aplikasi.web.id" + } + + for _, t := range tabdata { + if t.M_OrderReportIsFisikUmum == "Y" { + id := strconv.Itoa(temParam["Fisik Umum"]) + ret = append(ret, models.TabViewReportMcu{ + Name: t.M_OrderReportName, + Link: host + t.M_OrderReportUrl + id + "&tm=" + t.Datetime, + }) + } else if t.M_OrderReportIsOrderHeader != "Y" { + id := strconv.Itoa(temParam[t.M_OrderReportName]) + ret = append(ret, models.TabViewReportMcu{ + Name: t.M_OrderReportName, + Link: host + t.M_OrderReportUrl + id + "&tm=" + t.Datetime, + }) + } else { + ret = append(ret, models.TabViewReportMcu{ + Name: t.M_OrderReportName, + Link: host + t.M_OrderReportUrl + orderheaderID + "&tm=" + t.Datetime, + }) + } + } + + return ret, nil +} diff --git a/views/corporate/mcu/mcutab/modaldaftarpeserta.templ b/views/corporate/mcu/mcutab/modaldaftarpeserta.templ index ca02cc2..7c9b918 100644 --- a/views/corporate/mcu/mcutab/modaldaftarpeserta.templ +++ b/views/corporate/mcu/mcutab/modaldaftarpeserta.templ @@ -62,7 +62,7 @@ templ ModalClose(LinkClose string, hxTarget string, hxSwap string, modalID strin templ TabReportView( datamcu []models.TabViewReportMcu, ) { -