diff --git a/handlers/corporate/mcudetail/tabkelainanfisik.hanlders.go b/handlers/corporate/mcudetail/tabkelainanfisik.hanlders.go index 7a648f0..dd0ee5f 100644 --- a/handlers/corporate/mcudetail/tabkelainanfisik.hanlders.go +++ b/handlers/corporate/mcudetail/tabkelainanfisik.hanlders.go @@ -15,6 +15,11 @@ import ( type TabKelainanFisikServices interface { GetKelainanFisikBMI(mcuID string) (models.Piechart, error) GetKelainanFisikHipertensi(mcuID string) (models.Piechart, error) + GetKelainanFisikRefraksi(mcuID string) (models.Piechart, error) + GetKelainanFisikPresentase(mcuID string) (models.Barchart, error) + GetKelFisikAlkohol(mcuID string) (models.Piechart, error) + GetKelFisikMerokok(mcuID string) (models.Piechart, error) + GetKelFisikOlahraga(mcuID string) (models.Piechart, error) } type TabKelainanFisikHandler struct { @@ -38,41 +43,104 @@ func (tkf *TabKelainanFisikHandler) HandleShowTabKelainanFisik(c echo.Context) e if err != nil { return err } - - hiper, err := tkf.TabKelainanFisikServices.GetKelainanFisikHipertensi(id) - if err != nil { - return err - } - bmijson, err := json.MarshalIndent(bmi, "", " ") if err != nil { return err } + hiper, err := tkf.TabKelainanFisikServices.GetKelainanFisikHipertensi(id) + if err != nil { + return err + } hiperjson, err := json.MarshalIndent(hiper, "", " ") if err != nil { return err } + refraksi, err := tkf.TabKelainanFisikServices.GetKelainanFisikRefraksi(id) + if err != nil { + return err + } + refraksijson, err := json.MarshalIndent(refraksi, "", " ") + if err != nil { + return err + } + + alkohol, err := tkf.TabKelainanFisikServices.GetKelFisikAlkohol(id) + if err != nil { + return err + } + alkoholjson, err := json.MarshalIndent(alkohol, "", " ") + if err != nil { + return err + } + + merokok, err := tkf.TabKelainanFisikServices.GetKelFisikMerokok(id) + if err != nil { + return err + } + merokokjson, err := json.MarshalIndent(merokok, "", " ") + if err != nil { + return err + } + + olahraga, err := tkf.TabKelainanFisikServices.GetKelFisikOlahraga(id) + if err != nil { + return err + } + olahragajson, err := json.MarshalIndent(olahraga, "", " ") + if err != nil { + return err + } + chartsxs := []templ.Component{ chart.ShowChartFixed("bmixs", string(bmijson), "400px", "450px"), chart.ShowChartFixed("hprxs", string(hiperjson), "400px", "450px"), + chart.ShowChartFixed("rfkxs", string(refraksijson), "400px", "450px"), + chart.ShowChartFixed("alkxs", string(alkoholjson), "400px", "450px"), + chart.ShowChartFixed("rkkxs", string(merokokjson), "400px", "450px"), + chart.ShowChartFixed("olhxs", string(olahragajson), "400px", "450px"), } chartsmd := []templ.Component{ chart.ShowChartFixed("bmimd", string(bmijson), "450px", "450px"), chart.ShowChartFixed("hprmd", string(hiperjson), "450px", "450px"), + chart.ShowChartFixed("rfkmd", string(refraksijson), "450px", "450px"), + chart.ShowChartFixed("alkmd", string(alkoholjson), "450px", "450px"), + chart.ShowChartFixed("rkkmd", string(merokokjson), "450px", "450px"), + chart.ShowChartFixed("olhmd", string(olahragajson), "450px", "450px"), } chartslg := []templ.Component{ chart.ShowChartFixed("bmilg", string(bmijson), "600px", "450px"), chart.ShowChartFixed("hprlg", string(hiperjson), "600px", "450px"), + chart.ShowChartFixed("rfklg", string(refraksijson), "600px", "450px"), + chart.ShowChartFixed("alklg", string(alkoholjson), "600px", "450px"), + chart.ShowChartFixed("rkklg", string(merokokjson), "600px", "450px"), + chart.ShowChartFixed("olhlg", string(olahragajson), "600px", "450px"), + } + + fisik, err := tkf.TabKelainanFisikServices.GetKelainanFisikPresentase(id) + if err != nil { + return err + } + + fisikjson, err := json.MarshalIndent(fisik, "", " ") + if err != nil { + return err + } + + barchart := []templ.Component{ + chart.ShowChartFixed("fislg", string(fisikjson), "1000px", "450px"), + chart.ShowChartFixed("fismd", string(fisikjson), "500px", "450px"), + chart.ShowChartFixed("fisxs", string(fisikjson), "250px", "450px"), } content := corporate_mcudetail.Tabkelainanfisik( chartsxs, chartsmd, chartslg, + barchart, ) return utils.View(c, content) diff --git a/handlers/corporate/mcudetail/tabkelainanglobal.handlers.go b/handlers/corporate/mcudetail/tabkelainanglobal.handlers.go index 76f0f96..fb67519 100644 --- a/handlers/corporate/mcudetail/tabkelainanglobal.handlers.go +++ b/handlers/corporate/mcudetail/tabkelainanglobal.handlers.go @@ -13,8 +13,8 @@ import ( ) type TabKelainanGlobalServices interface { - GetKelainanGlobalMCU(mcuID string) (models.Barchart, error) GetKelainanFisik(mcuID string) (models.Barchart, error) + GetKelainanGlobalV2(mcuID string) (models.Barchart, error) } type TabKelainanGlobalHandler struct { @@ -33,39 +33,39 @@ func (tkg *TabKelainanGlobalHandler) HandleShowTabKelainanGlobal(c echo.Context) logger.Info("params", zap.Any("id", id)) - kelmcu, err := tkg.TabKelainanGlobalServices.GetKelainanGlobalMCU(id) + kelmcu, err := tkg.TabKelainanGlobalServices.GetKelainanGlobalV2(id) if err != nil { return err } - kelfisik, err := tkg.TabKelainanGlobalServices.GetKelainanFisik(id) - if err != nil { - return err - } + // kelfisik, err := tkg.TabKelainanGlobalServices.GetKelainanFisik(id) + // if err != nil { + // return err + // } klmcujson, err := json.MarshalIndent(kelmcu, "", " ") if err != nil { return err } - klfisjson, err := json.MarshalIndent(kelfisik, "", " ") - if err != nil { - return err - } + // klfisjson, err := json.MarshalIndent(kelfisik, "", " ") + // if err != nil { + // return err + // } chartsxs := []templ.Component{ chart.ShowChartFixed("chartmcuxs", string(klmcujson), "400px", "450px"), - chart.ShowChartFixed("chartfisikxs", string(klfisjson), "400px", "450px"), + // chart.ShowChartFixed("chartfisikxs", string(klfisjson), "400px", "450px"), } chartsmd := []templ.Component{ chart.ShowChartFixed("chartmcumd", string(klmcujson), "500px", "450px"), - chart.ShowChartFixed("chartfisikmd", string(klfisjson), "500px", "450px"), + // chart.ShowChartFixed("chartfisikmd", string(klfisjson), "500px", "450px"), } chartslg := []templ.Component{ chart.ShowChartFixed("chartmculg", string(klmcujson), "1000px", "450px"), - chart.ShowChartFixed("chartfisiklg", string(klfisjson), "1000px", "450px"), + // chart.ShowChartFixed("chartfisiklg", string(klfisjson), "1000px", "450px"), } content := corporate_mcudetail.TabKelainanGlobal( diff --git a/handlers/corporate/mcudetail/tabkelainanlab.handlers.go b/handlers/corporate/mcudetail/tabkelainanlab.handlers.go index c9647f9..d5572a9 100644 --- a/handlers/corporate/mcudetail/tabkelainanlab.handlers.go +++ b/handlers/corporate/mcudetail/tabkelainanlab.handlers.go @@ -37,81 +37,76 @@ func (tkl *TabKelainanLabHandler) HandleShowTabKelainanLab(c echo.Context) error if err != nil { return err } + dataprejson, err := json.MarshalIndent(datapre, "", " ") + if err != nil { + return err + } hematologi, err := tkl.TabKelainanLabServices.GetHematologi(id) if err != nil { return err } + hemajson, err := json.MarshalIndent(hematologi, "", " ") + if err != nil { + return err + } urinalisa, err := tkl.TabKelainanLabServices.GetUrinalisa(id) if err != nil { return err } + urinjson, err := json.MarshalIndent(urinalisa, "", " ") + if err != nil { + return err + } hati, err := tkl.TabKelainanLabServices.GetGangguanFungsiHati(id) if err != nil { return err } + hatijson, err := json.MarshalIndent(hati, "", " ") + if err != nil { + return err + } lemak, err := tkl.TabKelainanLabServices.GetGangguanMetabolismeLemak(id) if err != nil { return err } - - glukosa, err := tkl.TabKelainanLabServices.GetPeningkatanGlukosa(id) - if err != nil { - return err - } - - dataprejson, err := json.MarshalIndent(datapre, "", " ") - if err != nil { - return err - } - - hemajson, err := json.MarshalIndent(hematologi, "", " ") - if err != nil { - return err - } - - urinjson, err := json.MarshalIndent(urinalisa, "", " ") - if err != nil { - return err - } - - hatijson, err := json.MarshalIndent(hati, "", " ") - if err != nil { - return err - } - lemakjson, err := json.MarshalIndent(lemak, "", " ") if err != nil { return err } + glukosa, err := tkl.TabKelainanLabServices.GetPeningkatanGlukosa(id) + if err != nil { + return err + } glukosjson, err := json.MarshalIndent(glukosa, "", " ") if err != nil { return err } chartsxs := []templ.Component{ - chart.ShowChartFixed("dataprexs", string(dataprejson), "400px", "450px"), - chart.ShowChartFixed("hemaxs", string(hemajson), "400px", "450px"), - chart.ShowChartFixed("urinxs", string(urinjson), "400px", "450px"), - chart.ShowChartFixed("hatixs", string(hatijson), "400px", "450px"), - chart.ShowChartFixed("lemakxs", string(lemakjson), "400px", "450px"), - chart.ShowChartFixed("glukosxs", string(glukosjson), "400px", "450px"), + chart.ShowChartFixed("dataprexs", string(dataprejson), "350px", "450px"), + chart.ShowChartFixed("hemaxs", string(hemajson), "300px", "450px"), + chart.ShowChartFixed("urinxs", string(urinjson), "300px", "450px"), + chart.ShowChartFixed("hatixs", string(hatijson), "300px", "450px"), + chart.ShowChartFixed("lemakxs", string(lemakjson), "300px", "450px"), + chart.ShowChartFixed("glukosxs", string(glukosjson), "300px", "450px"), } chartsmd := []templ.Component{ chart.ShowChartFixed("datapremd", string(dataprejson), "500px", "450px"), - chart.ShowChartFixed("hemamd", string(hemajson), "500px", "450px"), - chart.ShowChartFixed("urinmd", string(urinjson), "500px", "450px"), - chart.ShowChartFixed("hatimd", string(hatijson), "500px", "450px"), - chart.ShowChartFixed("lemakmd", string(lemakjson), "500px", "450px"), - chart.ShowChartFixed("glukosmd", string(glukosjson), "500px", "450px"), + chart.ShowChartFixed("hemamd", string(hemajson), "450px", "450px"), + chart.ShowChartFixed("urinmd", string(urinjson), "450px", "450px"), + chart.ShowChartFixed("hatimd", string(hatijson), "450px", "450px"), + chart.ShowChartFixed("lemakmd", string(lemakjson), "450px", "450px"), + chart.ShowChartFixed("glukosmd", string(glukosjson), "450px", "450px"), } chartslg := []templ.Component{ + chart.ShowChartFixed("dataprelg", string(dataprejson), "1000px", "450px"), chart.ShowChartFixed("hemalg", string(hemajson), "600px", "450px"), chart.ShowChartFixed("urinlg", string(urinjson), "600px", "450px"), chart.ShowChartFixed("hatilg", string(hatijson), "600px", "450px"), @@ -120,7 +115,6 @@ func (tkl *TabKelainanLabHandler) HandleShowTabKelainanLab(c echo.Context) error } content := corporate_mcudetail.TabKelainanLab( - chart.ShowChartFixed("dataprelg", string(dataprejson), "1000px", "450px"), chartsxs, chartsmd, chartslg, diff --git a/handlers/corporate/mcudetail/tabkelainannonlab.handlers.go b/handlers/corporate/mcudetail/tabkelainannonlab.handlers.go index fe15e05..beea047 100644 --- a/handlers/corporate/mcudetail/tabkelainannonlab.handlers.go +++ b/handlers/corporate/mcudetail/tabkelainannonlab.handlers.go @@ -14,6 +14,9 @@ import ( type TabKelainanNonLabServices interface { GetDataKelNonLab(mcuID string) (models.Barchart, error) GetThoraxPA(mcuID string) (models.BarchartV2, error) + GetGangguanJantung(mcuID string) (models.BarchartV2, error) + GetAutospirometri(mcuID string) (models.BarchartV2, error) + GetPendengaran(mcuID string) (models.BarchartV2, error) } type TabKelainanNonLabHandler struct { @@ -33,35 +36,69 @@ func (tknl *TabKelainanNonLabHandler) HandleShowTabKelainanNonLab(c echo.Context if err != nil { return err } - - thorax, err := tknl.TabKelainanNonLabServices.GetThoraxPA(id) - if err != nil { - return err - } - dataprejson, err := json.MarshalIndent(datapre, "", " ") if err != nil { return err } + thorax, err := tknl.TabKelainanNonLabServices.GetThoraxPA(id) + if err != nil { + return err + } thrxjson, err := json.MarshalIndent(thorax, "", " ") if err != nil { return err } + jantung, err := tknl.TabKelainanNonLabServices.GetGangguanJantung(id) + if err != nil { + return err + } + jantungjson, err := json.MarshalIndent(jantung, "", " ") + if err != nil { + return err + } + + autospiro, err := tknl.TabKelainanNonLabServices.GetAutospirometri(id) + if err != nil { + return err + } + autospirojson, err := json.MarshalIndent(autospiro, "", " ") + if err != nil { + return err + } + + pendengaran, err := tknl.TabKelainanNonLabServices.GetPendengaran(id) + if err != nil { + return err + } + pendengaranjson, err := json.MarshalIndent(pendengaran, "", " ") + if err != nil { + return err + } + chartsxs := []templ.Component{ - chart.ShowChartFixed("datanonxs", string(dataprejson), "400px", "450px"), - chart.ShowChartFixed("thoraxxs", string(thrxjson), "400px", "450px"), + chart.ShowChartFixed("datanonxs", string(dataprejson), "300px", "450px"), + chart.ShowChartFixed("jantungxs", string(jantungjson), "300px", "450px"), + chart.ShowChartFixed("thoraxxs", string(thrxjson), "300px", "450px"), + chart.ShowChartFixed("spiroxs", string(autospirojson), "300px", "450px"), + chart.ShowChartFixed("dengarxs", string(pendengaranjson), "300px", "450px"), } chartsmd := []templ.Component{ chart.ShowChartFixed("datanonmd", string(dataprejson), "500px", "450px"), + chart.ShowChartFixed("jantungmd", string(jantungjson), "500px", "450px"), chart.ShowChartFixed("thoraxmd", string(thrxjson), "500px", "450px"), + chart.ShowChartFixed("spiromd", string(autospirojson), "500px", "450px"), + chart.ShowChartFixed("dengarmd", string(pendengaranjson), "500px", "450px"), } chartslg := []templ.Component{ chart.ShowChartFixed("datanonlg", string(dataprejson), "1000px", "450px"), + chart.ShowChartFixed("jantunglg", string(jantungjson), "600px", "450px"), chart.ShowChartFixed("thoraxlg", string(thrxjson), "600px", "450px"), + chart.ShowChartFixed("spirolg", string(autospirojson), "600px", "450px"), + chart.ShowChartFixed("dengarlg", string(pendengaranjson), "600px", "450px"), } content := corporate_mcudetail.TabKelainanNonLab( diff --git a/handlers/corporate/mcudetail/tabkesimpulan.handlers.go b/handlers/corporate/mcudetail/tabkesimpulan.handlers.go index d1f0895..cd0192b 100644 --- a/handlers/corporate/mcudetail/tabkesimpulan.handlers.go +++ b/handlers/corporate/mcudetail/tabkesimpulan.handlers.go @@ -14,6 +14,9 @@ type TabKesimpulanServices interface { GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error) GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) GetListKesimpulanFisik(id string) ([]models.ModelKesimpulanLab, error) + GetListKesimpulanLabV2(id string) ([]models.ModelKesimpulanLab, error) + GetListKesimpulanNonLabV2(id string) ([]models.ModelKesimpulanLab, error) + GetListKesimpulanFisikV2(id string) ([]models.ModelKesimpulanLab, error) } type TabKesimpulanHandler struct { @@ -32,7 +35,7 @@ func (tkh *TabKesimpulanHandler) HandleShowTabKesimpulanScreen(c echo.Context) e tableID := utils.GenerateRandomID("tablebody") id := c.Param("id") - dataLab, err := tkh.TabKesimpulanServices.GetListKesimpulanLab(id) + dataLab, err := tkh.TabKesimpulanServices.GetListKesimpulanLabV2(id) if err != nil { defer logger.Sync() logger.Info("ERROR GET LIST LAB", @@ -43,7 +46,7 @@ func (tkh *TabKesimpulanHandler) HandleShowTabKesimpulanScreen(c echo.Context) e } tableComponentLab := corporate_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Lab terbesar :", dataLab, tableID) - dataNonLab, err := tkh.TabKesimpulanServices.GetListKesimpulanNonLab(id) + dataNonLab, err := tkh.TabKesimpulanServices.GetListKesimpulanNonLabV2(id) if err != nil { defer logger.Sync() logger.Info("ERROR GET LIST NON LAB", @@ -54,7 +57,7 @@ func (tkh *TabKesimpulanHandler) HandleShowTabKesimpulanScreen(c echo.Context) e } tableComponentNonLab := corporate_mcudetail.CardTableKesimpulan("3 Kelainan Pemeriksaan Non Lab terbesar :", dataNonLab, tableID) - dataFisik, err := tkh.TabKesimpulanServices.GetListKesimpulanFisik(id) + dataFisik, err := tkh.TabKesimpulanServices.GetListKesimpulanFisikV2(id) if err != nil { defer logger.Sync() logger.Info("ERROR GET LIST FISIK", diff --git a/models/tabkelainanglobal.models.go b/models/tabkelainanglobal.models.go index 992b822..c8197e8 100644 --- a/models/tabkelainanglobal.models.go +++ b/models/tabkelainanglobal.models.go @@ -9,3 +9,9 @@ type KelainanGlobalFisikModel struct { Mcu_KelainanName string `db:"Mcu_KelainanName"` Total int `db:"total"` } + +type KelainanGlobalModel struct { + Mcu_KelainanID string `db:"Mcu_KelainanID"` + Test string `db:"Test"` + Total int `db:"Total"` +} diff --git a/models/tabkelainanlab.models.go b/models/tabkelainanlab.models.go index f5bba37..0aef113 100644 --- a/models/tabkelainanlab.models.go +++ b/models/tabkelainanlab.models.go @@ -1,6 +1,7 @@ package models type KelainanLabModel struct { - Mcu_KelainanName string `db:"Mcu_KelainanName"` + Mcu_KelainanID string `db:"Mcu_KelainanID"` + Mcu_KelainanName string `db:"Test"` Total int `db:"total"` } diff --git a/models/tabkelainannonlab.models.go b/models/tabkelainannonlab.models.go index 7760884..6263b89 100644 --- a/models/tabkelainannonlab.models.go +++ b/models/tabkelainannonlab.models.go @@ -1,6 +1,7 @@ package models type KelNonLabModel struct { - Kelainan string `db:"kelainan"` - Total int `db:"total"` + Mcu_KelainanID string `db:"Mcu_KelainanID"` + Test string `db:"Test"` + Total int `db:"total"` } diff --git a/models/tabkepesertaan.models.go b/models/tabkepesertaan.models.go index 3a2047b..bb1196d 100644 --- a/models/tabkepesertaan.models.go +++ b/models/tabkepesertaan.models.go @@ -1,8 +1,8 @@ package models type TotalPesertaModel struct { - Peserta int `db:"peserta"` - Mgm_McuTotalParticipant int `db:"Mgm_McuTotalParticipant"` + Peserta int `db:"peserta"` + Total int `db:"total"` } type GenderPesertaModel struct { diff --git a/services/corporate/mcudetail/tabdaftarpeserta.services.go b/services/corporate/mcudetail/tabdaftarpeserta.services.go index 2fa250c..31bdfcd 100644 --- a/services/corporate/mcudetail/tabdaftarpeserta.services.go +++ b/services/corporate/mcudetail/tabdaftarpeserta.services.go @@ -93,7 +93,8 @@ func (tdps *TabDaftarPesertaServices) GenerataPasswordMCU(mgmMCUID string, host logger, _ := zap.NewProduction() var ret models.GeneratePasswordResponse - uri := "https://cpone.aplikasi.web.id/one-api/tools/auth_patient/generate/" + mgmMCUID + // uri := "https://cpone.aplikasi.web.id/one-api/tools/auth_patient/generate/" + mgmMCUID + uri := "https://devcpone.aplikasi.web.id/one-api/tools/auth_patient/generate/" + mgmMCUID payload := []byte{} resp, err := http.Post(uri, "application/json", bytes.NewBuffer(payload)) diff --git a/services/corporate/mcudetail/tabkelainanfisik.services.go b/services/corporate/mcudetail/tabkelainanfisik.services.go index 2516619..2740dd9 100644 --- a/services/corporate/mcudetail/tabkelainanfisik.services.go +++ b/services/corporate/mcudetail/tabkelainanfisik.services.go @@ -5,6 +5,7 @@ import ( "cpone/models" dbx "cpone/package/database" "fmt" + "math" "strconv" "go.uber.org/zap" @@ -93,35 +94,162 @@ func (tkf *TabKelainanFisikServices) GetPieChartConf(title string, subtext strin return option, nil } +func (tkf *TabKelainanFisikServices) GetBarChartConf(title string, data models.BarDataset) (models.Barchart, error) { + option := models.Barchart{} + option.Title = struct { + Text string "json:\"text\"" + }{title} + option.Dataset = data + option.Grid.ContainLabel = true + option.XAxis.Name = "amount" + option.YAxis.Type = "category" + option.VisualMap.Orient = "horizontal" + option.VisualMap.Left = "center" + option.VisualMap.Min = 10 + option.VisualMap.Max = 100 + option.VisualMap.Show = false + option.VisualMap.Dimension = 0 + option.VisualMap.InRange.Color = []string{"#42aaf5", "#00eaf2", "#035bff"} + option.Series = []struct { + Label struct { + Position string "json:\"position\"" + Show bool "json:\"show\"" + Formatter string "json:\"formatter\"" + } "json:\"label\"" + Type string "json:\"type\"" + Encode struct { + X string "json:\"x\"" + Y string "json:\"y\"" + } "json:\"encode\"" + }{ + { + Label: struct { + Position string "json:\"position\"" + Show bool "json:\"show\"" + Formatter string "json:\"formatter\"" + }{ + Position: "right", + Show: true, + Formatter: "{@[3]} %", + }, + Type: "bar", + Encode: struct { + X string "json:\"x\"" + Y string "json:\"y\"" + }{ + X: "amount", + Y: "product", + }, + }, + } + option.Tooltip = struct { + Trigger string "json:\"trigger\"" + AxisPointer struct { + Type string "json:\"type\"" + } "json:\"axisPointer\"" + }{ + Trigger: "axis", + AxisPointer: struct { + Type string "json:\"type\"" + }{ + Type: "shadow", + }, + } + + return option, nil +} + +func (tkf *TabKelainanFisikServices) GetKelainanFisikPresentase(mcuID string) (models.Barchart, error) { + var option models.Barchart + var data []models.KelainanGlobalFisikModel + + q := ` + SELECT Mcu_KelainanName, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_fisik + JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID + join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND + Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH') + group by Mcu_KelainanID + ORDER BY total DESC + LIMIt 10 + ` + if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { + return option, fmt.Errorf("error get data kelainan fisik: %v", err) + } + + var jumlahPeserta models.TotalPesertaModel + q = ` + SELECT + COUNT(distinct(T_OrderHeaderID)) as peserta, + COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total + FROM mcu_preregister_patients + LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND + T_OrderHeaderIsActive = 'Y' + WHERE + Mcu_PreregisterPatientsMgm_McuID = ? AND + Mcu_PreregisterPatientsIsActive = 'Y' + ` + if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil { + return option, fmt.Errorf("error get jumlah peserta %v", err) + } + + title := "Kelainan Fisik (10 Terbesar)" + chartData := models.BarDataset{ + Source: [][]interface{}{ + {"score", "amount", "product", "percentage"}, + }, + } + + for i, d := range data { + percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100 + roundedPercentage := math.Round(percentage*100) / 100 + percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64) + chartData.Source = append(chartData.Source, []interface{}{ + i, d.Total, d.Mcu_KelainanName, percentStr, + }) + } + + option, err := tkf.GetBarChartConf(title, chartData) + if err != nil { + return option, fmt.Errorf("error insert data to barchart %v", err) + } + return option, nil +} + func (tkf *TabKelainanFisikServices) GetKelainanFisikBMI(mcuID string) (models.Piechart, error) { logger, _ := zap.NewProduction() var option models.Piechart var data []models.KelainanFisikDataModel q := ` - SELECT - CASE - WHEN Mgm_HeaderIsNormal = "Y" THEN "Normal" - WHEN Mgm_HeaderIsNormal = "N" THEN Mcu_KelainanName - ELSE "Tidak diperiksa" END AS test, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total, - IFNULL(Mcu_KelainanClasification, "") AS Mcu_KelainanClasification - FROM mgm_header - LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y' - LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - LEFT JOIN nat_test ON Nat_TestCode = Mgm_HeaderNat_TestCode - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ? - AND Mgm_HeaderNat_TestCode = 'STATUS GIZI' - GROUP BY - CASE - WHEN Mgm_HeaderIsNormal = "Y" THEN "Normal" - WHEN Mgm_HeaderIsNormal = "N" THEN Mcu_KelainanName ELSE - "Tidak diperiksa" END - ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC + SELECT Mcu_KelainanName as test, + Mcu_KelainanClasification, + count(distinct orderkel.T_OrderHeaderID) as total + FROM mcu_kelainan + JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND + Mcu_SummaryFisikIsActive = 'Y' + LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND + T_KelainanFiskIsActive= 'Y' + LEFT JOIN t_orderheader orderkel ON T_KelainanFiskT_OrderHeaderID = orderkel.T_OrderHeaderID AND + orderkel.T_OrderHeaderIsActive = 'Y' AND orderkel.T_OrderHeaderMgm_McuID = ? + WHERE + Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanClasification = 'asia_pacific' + group by Mcu_KelainanID + UNION + SELECT 'Normal' as test, + 'asia_pacific' as Mcu_KelainanClasification, + count(distinct T_OrderHeaderID) - summary_total_kelainan_bmi(?) as total + FROM t_orderheader + WHERE + T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y' + group by T_OrderHeaderMgm_McuID ` - if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { + if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil { return option, fmt.Errorf("error get data kel fisik bmi %v", err) } defer logger.Sync() @@ -156,28 +284,30 @@ func (tkf *TabKelainanFisikServices) GetKelainanFisikHipertensi(mcuID string) (m var data []models.KelainanFisikDataModel q := ` - SELECT - CASE - WHEN Mgm_HeaderIsNormal = "Y" THEN "Normal" - WHEN Mgm_HeaderIsNormal = "N" THEN Mcu_KelainanName - ELSE "Tidak diperiksa" END AS test, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total, - IFNULL(Mcu_KelainanClasification, "") AS Mcu_KelainanClasification - FROM mgm_header - LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y' - LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - LEFT JOIN nat_test ON Nat_TestCode = Mgm_HeaderNat_TestCode - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ? - AND Mgm_HeaderNat_TestCode = 'TANDA VITAL' - GROUP BY - CASE - WHEN Mgm_HeaderIsNormal = "Y" THEN "Normal" - WHEN Mgm_HeaderIsNormal = "N" THEN Mcu_KelainanName - ELSE "Tidak diperiksa" END - ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC + SELECT Mcu_KelainanName as test, + Mcu_KelainanClasification, + count(distinct orderkel.T_OrderHeaderID) as total + FROM mcu_kelainan + JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND + Mcu_SummaryFisikIsActive = 'Y' + LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND + T_KelainanFiskIsActive= 'Y' + LEFT JOIN t_orderheader orderkel ON T_KelainanFiskT_OrderHeaderID = orderkel.T_OrderHeaderID AND + orderkel.T_OrderHeaderIsActive = 'Y' AND orderkel.T_OrderHeaderMgm_McuID = ? + WHERE + Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanClasification = 'JNC-VII' + group by Mcu_KelainanID + UNION + SELECT 'Normal' as test, + 'JNC-VII' as Mcu_KelainanClasification, + COUNT(T_OrderHeaderID) - summary_total_kelainan_hipertensi(?) as total + FROM t_orderheader + WHERE + T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y' + group by T_OrderHeaderMgm_McuID ` - if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { + + if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil { return option, fmt.Errorf("error get data kel fisik hipertensi: %v", err) } defer logger.Sync() @@ -205,3 +335,197 @@ func (tkf *TabKelainanFisikServices) GetKelainanFisikHipertensi(mcuID string) (m return option, nil } + +func (tkf *TabKelainanFisikServices) GetKelainanFisikRefraksi(mcuID string) (models.Piechart, error) { + var option models.Piechart + var data []models.KelainanFisikDataModel + + q := ` + SELECT Mcu_KelainanName as test, + count(distinct orderkel.T_OrderHeaderID) as total + FROM mcu_kelainan + JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND + Mcu_SummaryFisikIsActive = 'Y' + LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND + T_KelainanFiskIsActive= 'Y' + LEFT JOIN t_orderheader orderkel ON T_KelainanFiskT_OrderHeaderID = orderkel.T_OrderHeaderID AND + orderkel.T_OrderHeaderIsActive = 'Y' AND orderkel.T_OrderHeaderMgm_McuID = ? + WHERE + Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (24,25) + group by Mcu_KelainanID + UNION + SELECT 'Normal' as test, + count(distinct T_OrderHeaderID) - summary_total_kelainan_visus(?) as total + FROM t_orderheader + WHERE + T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y' + group by T_OrderHeaderMgm_McuID + ` + + if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil { + return option, fmt.Errorf("error get data kel fisik refraksi: %v", err) + } + + title := "Refraksi" + subtext := "" + chartData := []models.SeriesData{} + + if data != nil { + for _, d := range data { + chartData = append(chartData, models.SeriesData{ + Value: d.Total, + Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta", + }) + } + } else { + chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"}) + } + + option, err := tkf.GetPieChartConf(title, subtext, chartData) + if err != nil { + return option, fmt.Errorf("error get and insert data to chart: %v", err) + } + + return option, nil +} + +func (tkf *TabKelainanFisikServices) GetKelFisikAlkohol(mcuID string) (models.Piechart, error) { + var option models.Piechart + var data []models.KelainanFisikDataModel + + q := ` + SELECT + Mcu_KelainanName as test, + COUNT( distinct T_OrderHeaderID) as total + FROM mcu_kelainan + JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND + Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (117,118,119) + LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND + T_KelainanFiskIsActive = 'Y' + LEFT JOIN so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND + So_ResultEntryIsActive = 'Y' + LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND + So_ResultEntryFisikUmumIsActive = 'Y' + LEFT JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND + T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ` + + if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { + return option, fmt.Errorf("error get data kel fisik konsumsi alkohol: %v", err) + } + + title := "Konsumsi Alkohol" + subtext := "" + chartData := []models.SeriesData{} + + if data != nil { + for _, d := range data { + chartData = append(chartData, models.SeriesData{ + Value: d.Total, + Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta", + }) + } + } else { + chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"}) + } + + option, err := tkf.GetPieChartConf(title, subtext, chartData) + if err != nil { + return option, fmt.Errorf("error get and insert data to chart: %v", err) + } + + return option, nil +} + +func (tkf *TabKelainanFisikServices) GetKelFisikMerokok(mcuID string) (models.Piechart, error) { + var option models.Piechart + var data []models.KelainanFisikDataModel + + q := ` + SELECT Mcu_KelainanName as test, COUNT( distinct T_OrderHeaderID) as total + FROM mcu_kelainan + JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND + Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (120,121,122) + LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND + T_KelainanFiskIsActive = 'Y' + LEFT JOIN so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND + So_ResultEntryIsActive = 'Y' + LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND + So_ResultEntryFisikUmumIsActive = 'Y' + LEFT JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND + T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ` + if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { + return option, fmt.Errorf("error get data kel fisik merokok %v", err) + } + + title := "Merokok" + subtext := "" + chartData := []models.SeriesData{} + + if data != nil { + for _, d := range data { + chartData = append(chartData, models.SeriesData{ + Value: d.Total, + Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta", + }) + } + } else { + chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"}) + } + + option, err := tkf.GetPieChartConf(title, subtext, chartData) + if err != nil { + return option, fmt.Errorf("error get and insert data into chart %v", err) + } + + return option, nil +} + +func (tkf *TabKelainanFisikServices) GetKelFisikOlahraga(mcuID string) (models.Piechart, error) { + var option models.Piechart + var data []models.KelainanFisikDataModel + + q := ` + SELECT Mcu_KelainanName as test, COUNT( distinct T_OrderHeaderID) as total + FROM mcu_kelainan + JOIN mcu_summaryfisik ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID AND + Mcu_KelainanIsActive = 'Y' AND Mcu_KelainanID IN (123,124) + LEFT JOIN t_kelainan_fisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND + T_KelainanFiskIsActive = 'Y' + LEFT JOIN so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND + So_ResultEntryIsActive = 'Y' + LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND + So_ResultEntryFisikUmumIsActive = 'Y' + LEFT JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND + T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ` + if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { + return option, fmt.Errorf("error get data kel fisik olahraga %v", err) + } + + title := "Olahraga" + subtext := "" + chartData := []models.SeriesData{} + + if data != nil { + for _, d := range data { + chartData = append(chartData, models.SeriesData{ + Value: d.Total, + Name: d.Test + ": " + strconv.Itoa(d.Total) + " Peserta", + }) + } + } else { + chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"}) + } + + option, err := tkf.GetPieChartConf(title, subtext, chartData) + if err != nil { + return option, fmt.Errorf("error get and insert data to chart %v", err) + } + + return option, nil +} diff --git a/services/corporate/mcudetail/tabkelainanglobal.services.go b/services/corporate/mcudetail/tabkelainanglobal.services.go index d64135c..a42a69b 100644 --- a/services/corporate/mcudetail/tabkelainanglobal.services.go +++ b/services/corporate/mcudetail/tabkelainanglobal.services.go @@ -64,7 +64,7 @@ func (tkg *TabKelainanGlobalServices) GetBarChartConf(title string, data models. X string "json:\"x\"" Y string "json:\"y\"" }{ - X: "score", + X: "amount", Y: "product", }, }, @@ -199,3 +199,92 @@ func (tkg *TabKelainanGlobalServices) GetKelainanFisik(mcuID string) (models.Bar return option, nil } + +func (tkg *TabKelainanGlobalServices) GetKelainanGlobalV2(mcuID string) (models.Barchart, error) { + var option models.Barchart + var data []models.KelainanGlobalModel + + q := ` + SELECT * FROM ( + SELECT Mcu_KelainanID, + Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as Total + FROM t_kelainan_lab + JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID + join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID + where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + UNION + SELECT Mcu_KelainanID, Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as Total + FROM t_kelainan_nonlab + JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID + join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND + T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID + where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + UNION + SELECT Mcu_KelainanID, Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as Total + FROM t_kelainan_fisik + JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID + join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ) a + + ORDER BY total DESC + LIMIT 10 + ` + if err := dbx.Handlex.Select(&data, q, mcuID, mcuID, mcuID); err != nil { + return option, fmt.Errorf("error get data kelainan global %v", err) + } + + var jumlahPeserta models.TotalPesertaModel + + q = ` + SELECT + COUNT(distinct(T_OrderHeaderID)) as peserta, + COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total + FROM mcu_preregister_patients + LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND + T_OrderHeaderIsActive = 'Y' + WHERE + Mcu_PreregisterPatientsMgm_McuID = ? AND + Mcu_PreregisterPatientsIsActive = 'Y' + ` + if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil { + return option, fmt.Errorf("error get jumlah peserta %v", err) + } + + title := "Kelainan Global (10 Terbesar)" + chartData := models.BarDataset{ + Source: [][]interface{}{ + {"score", "amount", "product", "percentage"}, + }, + } + + for _, d := range data { + percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100 + roundedPercentage := math.Round(percentage*100) / 100 + percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64) + chartData.Source = append(chartData.Source, []interface{}{ + d.Mcu_KelainanID, d.Total, d.Test, percentStr, + }) + } + + option, err := tkg.GetBarChartConf(title, chartData) + if err != nil { + return option, fmt.Errorf("error insert data to barchart %v", err) + } + + return option, nil +} diff --git a/services/corporate/mcudetail/tabkelainanlab.services.go b/services/corporate/mcudetail/tabkelainanlab.services.go index 42781cc..34ea5ba 100644 --- a/services/corporate/mcudetail/tabkelainanlab.services.go +++ b/services/corporate/mcudetail/tabkelainanlab.services.go @@ -65,7 +65,7 @@ func (tkl *TabKelainanLabServices) ConfBarchart(title string, data models.BarDat X string "json:\"x\"" Y string "json:\"y\"" }{ - X: "score", + X: "amount", Y: "product", }, }, @@ -127,7 +127,7 @@ func (tkl *TabKelainanLabServices) ConfBarchartVertical(title string, data []mod Rotate int "json:\"rotate\"" }{ Interval: 0, - Rotate: 0, + Rotate: 20, }, }, YAxis: struct { @@ -226,46 +226,56 @@ func (tkl *TabKelainanLabServices) GetDataPresentaseKelainanLab(mcuID string) (m var data []models.KelainanLabModel q := ` - SELECT - Mcu_KelainanName, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total - FROM mgm_header - JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID - AND Mgm_DetailIsActive = 'Y' - JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ? - AND Mgm_HeaderType = 'L' - AND Mgm_HeaderIsNormal = 'N' - GROUP BY Mcu_KelainanID ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC + SELECT Mcu_KelainanID, + Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_lab + JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID + join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID + where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC + LIMIT 10 ` if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { - return option, fmt.Errorf("error get total presentase fisik %v", err) + return option, fmt.Errorf("error get kelainan lab %v", err) } defer logger.Sync() logger.Info("resp data", zap.Any("data", data)) - title := "Data Presentase Kelainan Lab" + title := "Kelainan Lab (10 Terbesar)" chartData := models.BarDataset{ Source: [][]interface{}{ {"score", "amount", "product", "percentage"}, }, } - max := 1 - for _, d := range data { - if d.Total >= max { - max = d.Total - } + var jumlahPeserta models.TotalPesertaModel + q = ` + SELECT + COUNT(distinct(T_OrderHeaderID)) as peserta, + COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total + FROM mcu_preregister_patients + LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND + T_OrderHeaderIsActive = 'Y' + WHERE + Mcu_PreregisterPatientsMgm_McuID = ? AND + Mcu_PreregisterPatientsIsActive = 'Y' + ` + if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil { + return option, fmt.Errorf("error get jumlah peserta %v", err) } for _, d := range data { - percentage := float64(d.Total) / float64(max) * 100 + percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100 roundedPercentage := math.Round(percentage*100) / 100 percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64) chartData.Source = append(chartData.Source, []interface{}{ - d.Total, d.Total, d.Mcu_KelainanName, percentStr, + d.Mcu_KelainanID, d.Total, d.Mcu_KelainanName, percentStr, }) } @@ -283,18 +293,18 @@ func (tkl *TabKelainanLabServices) GetHematologi(mcuID string) (models.BarchartV var data []models.KelainanLabModel q := ` - SELECT Mcu_KelainanName, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total - FROM mgm_header - JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y' - JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ? - AND Mgm_HeaderType = 'L' - AND Mgm_HeaderIsNormal = 'N' - AND Mcu_KelainanGroupID = 14 - GROUP BY Mcu_KelainanID - ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC + SELECT Mcu_KelainanID, + Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_lab + JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID + join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID AND Mcu_KelainanGroupID = 14 + JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID + where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC ` if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { return option, fmt.Errorf("error get hematologi %v", err) @@ -317,20 +327,20 @@ func (tkl *TabKelainanLabServices) GetUrinalisa(mcuID string) (models.BarchartV2 var data []models.KelainanLabModel q := ` - SELECT - Mcu_KelainanName, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total - FROM mgm_header - JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID - AND Mgm_DetailIsActive = 'Y' - JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ? - AND Mgm_HeaderType = 'L' - AND Mgm_HeaderIsNormal = 'N' - AND Mcu_KelainanGroupID = 15 - GROUP BY Mcu_KelainanID - ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC + SELECT Mcu_KelainanID, + Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_lab + JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID + join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + AND Mcu_KelainanGroupID = 15 + JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID + AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID + where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC ` if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { return option, fmt.Errorf("error get urinalisa %v", err) @@ -353,19 +363,18 @@ func (tkl *TabKelainanLabServices) GetGangguanFungsiHati(mcuID string) (models.B var data []models.KelainanLabModel q := ` - SELECT Mcu_KelainanName, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total - FROM mgm_header - JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID - AND Mgm_DetailIsActive = 'Y' - JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ? - AND Mgm_HeaderType = 'L' - AND Mgm_HeaderIsNormal = 'N' - AND Mcu_KelainanGroupID = 16 - GROUP BY Mcu_KelainanID - ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC + SELECT Mcu_KelainanID, + Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_lab + JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID + join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID AND Mcu_KelainanGroupID = 16 + JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID + where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC ` if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { return option, fmt.Errorf("error get gangguan fungsi hati %v", err) @@ -388,17 +397,19 @@ func (tkl *TabKelainanLabServices) GetGangguanMetabolismeLemak(mcuID string) (mo var data []models.KelainanLabModel q := ` - SELECT - IFNULL(Mcu_KelainanName,'Normal') AS Mcu_KelainanName, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total - FROM mgm_header - LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y' - LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderNat_TestCode IN ( '10520300','10520400') - AND Mgm_HeaderMgm_McuID = ? - GROUP BY Mcu_KelainanID - ORDER BY total DESC + SELECT Mcu_KelainanID, + Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_lab + JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID + join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND + T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID AND Nat_TestCode IN ( '10520300','10520400') + where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC ` if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { return option, fmt.Errorf("error get gangguan metabolisme lemak %v", err) @@ -421,16 +432,19 @@ func (tkl *TabKelainanLabServices) GetPeningkatanGlukosa(mcuID string) (models.B var data []models.KelainanLabModel q := ` - SELECT IFNULL(Mcu_KelainanName,'Normal') AS Mcu_KelainanName, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total - FROM mgm_header - LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y' - LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderNat_TestCode = 10540200 - AND Mgm_HeaderMgm_McuID = ? - GROUP BY Mcu_KelainanID - ORDER BY total DESC + SELECT Mcu_KelainanID, + Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_lab + JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID + join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND + T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID AND Nat_TestCode IN ( '10540200') + where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC ` if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { return option, fmt.Errorf("error get peningkatan glukosa %v", err) diff --git a/services/corporate/mcudetail/tabkelainannonlab.services.go b/services/corporate/mcudetail/tabkelainannonlab.services.go index 295fb4e..6bbff62 100644 --- a/services/corporate/mcudetail/tabkelainannonlab.services.go +++ b/services/corporate/mcudetail/tabkelainannonlab.services.go @@ -32,7 +32,7 @@ func (tknl *TabKelainanNonLabServices) GetBarChartConf(title string, data models option.YAxis.Type = "category" option.VisualMap.Orient = "horizontal" option.VisualMap.Left = "center" - option.VisualMap.Min = 10 + option.VisualMap.Min = 1 option.VisualMap.Max = 100 option.VisualMap.Show = false option.VisualMap.Dimension = 0 @@ -95,8 +95,15 @@ func (tknl *TabKelainanNonLabServices) ConfBarchartVertical(title string, data [ cnt := len(data) for idx, d := range data { + if len(d.Test) > 30 { + var newText = d.Test[:30] + "- \n" + d.Test[30:] + chartData.Source = append(chartData.Source, []interface{}{ + idx, d.Total, newText, + }) + continue + } chartData.Source = append(chartData.Source, []interface{}{ - idx, d.Total, d.Kelainan, + idx, d.Total, d.Test, }) } @@ -125,7 +132,7 @@ func (tknl *TabKelainanNonLabServices) ConfBarchartVertical(title string, data [ Rotate int "json:\"rotate\"" }{ Interval: 0, - Rotate: 0, + Rotate: 20, }, }, YAxis: struct { @@ -224,45 +231,56 @@ func (tknl *TabKelainanNonLabServices) GetDataKelNonLab(mcuID string) (models.Ba var data []models.KelNonLabModel q := ` - SELECT concat(Nat_TestName,"/",Mcu_KelainanName) AS kelainan, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total - FROM mgm_header - LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y' - LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - LEFT JOIN nat_test ON Nat_TestCode = Mgm_HeaderNat_TestCode - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderMgm_McuID = ? - AND Mgm_HeaderType = 'NL' - AND Mgm_HeaderIsNormal = 'N' - GROUP BY Mcu_KelainanID - ORDER BY COUNT(Mgm_HeaderT_OrderHeaderID) DESC + SELECT Mcu_KelainanID, Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_nonlab + JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID + join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND + T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID + where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC + LIMIT 10 ` + if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { return option, fmt.Errorf("error get data kelainan global mcu %v", err) } defer logger.Sync() logger.Info("resp data", zap.Any("data", data)) - title := "Data Presentase Kelainan Non Lab" + title := "Kelainan Non Lab (10 Terbesar)" chartData := models.BarDataset{ Source: [][]interface{}{ {"score", "amount", "product", "percentage"}, }, } - max := 1 - for _, d := range data { - if d.Total >= max { - max = d.Total - } + var jumlahPeserta models.TotalPesertaModel + q = ` + SELECT + COUNT(distinct(T_OrderHeaderID)) as peserta, + COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total + FROM mcu_preregister_patients + LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND + T_OrderHeaderIsActive = 'Y' + WHERE + Mcu_PreregisterPatientsMgm_McuID = ? AND + Mcu_PreregisterPatientsIsActive = 'Y' + ` + if err := dbx.Handlex.Get(&jumlahPeserta, q, mcuID); err != nil { + return option, fmt.Errorf("error get jumlah peserta %v", err) } for _, d := range data { - percentage := float64(d.Total) / float64(max) * 100 + percentage := float64(d.Total) / float64(jumlahPeserta.Peserta) * 100 roundedPercentage := math.Round(percentage*100) / 100 percentStr := strconv.FormatFloat(roundedPercentage, 'f', -1, 64) chartData.Source = append(chartData.Source, []interface{}{ - d.Total, d.Total, d.Kelainan, percentStr, + d.Mcu_KelainanID, d.Total, d.Test, percentStr, }) } @@ -280,21 +298,23 @@ func (tknl *TabKelainanNonLabServices) GetThoraxPA(mcuID string) (models.Barchar var data []models.KelNonLabModel q := ` - SELECT - IFNULL(Mcu_KelainanName,'Normal') AS kelainan, - COUNT(Mgm_HeaderT_OrderHeaderID) AS total - FROM mgm_header - LEFT JOIN mgm_detail ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND Mgm_DetailIsActive = 'Y' - LEFT JOIN mcu_kelainan ON Mgm_DetailMcu_KelainanID = Mcu_KelainanID - LEFT JOIN mcu_kelainangroup ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID - WHERE Mgm_HeaderIsActive = 'Y' AND Mgm_HeaderNat_TestCode = 30150100 - AND Mgm_HeaderIsNormal = 'N' AND Mgm_HeaderMgm_McuID = ? - GROUP BY Mcu_KelainanID - ORDER BY total DESC + SELECT Mcu_KelainanID, Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_nonlab + JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID + join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND + T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID AND Nat_TestID = 5798 + where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC + LIMIT 10 ` if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { - return option, fmt.Errorf("error get data kelainan global mcu %v", err) + return option, fmt.Errorf("error get data thorax pa %v", err) } defer logger.Sync() logger.Info("resp data", zap.Any("data", data)) @@ -307,3 +327,100 @@ func (tknl *TabKelainanNonLabServices) GetThoraxPA(mcuID string) (models.Barchar return option, nil } + +func (tknl *TabKelainanNonLabServices) GetGangguanJantung(mcuID string) (models.BarchartV2, error) { + var option models.BarchartV2 + var data []models.KelNonLabModel + + q := ` + SELECT Mcu_KelainanID, Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_nonlab + JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID + join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID AND + Mcu_KelainanGroupID = 10 + JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND + T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID + where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC + LIMIT 10 + ` + if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { + return option, fmt.Errorf("error get data gangguan jantung %v", err) + } + + title := "Gangguan Jantung" + option, err := tknl.ConfBarchartVertical(title, data) + if err != nil { + return option, fmt.Errorf("error insert data into chart %v", err) + } + + return option, nil +} + +func (tknl *TabKelainanNonLabServices) GetAutospirometri(mcuID string) (models.BarchartV2, error) { + var option models.BarchartV2 + var data []models.KelNonLabModel + + q := ` + SELECT Mcu_KelainanID, Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_nonlab + JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID + join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND + T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID AND Nat_TestID = 5321 + where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC + LIMIT 10 + ` + if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { + return option, fmt.Errorf("error get data autspirometri %v", err) + } + + title := "Autospirometri" + option, err := tknl.ConfBarchartVertical(title, data) + if err != nil { + return option, fmt.Errorf("error insert data into chart %v", err) + } + + return option, nil +} + +func (tknl *TabKelainanNonLabServices) GetPendengaran(mcuID string) (models.BarchartV2, error) { + var option models.BarchartV2 + var data []models.KelNonLabModel + + q := ` + SELECT Mcu_KelainanID, Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_nonlab + JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID + join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND + T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID AND Nat_TestID = 5308 + where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC + LIMIT 10 + ` + if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { + return option, fmt.Errorf("error get data gangguan pendengaran %v", err) + } + + title := "Gangguan Pendengaran" + option, err := tknl.ConfBarchartVertical(title, data) + if err != nil { + return option, fmt.Errorf("error insert data into chart %v", err) + } + + return option, nil +} diff --git a/services/corporate/mcudetail/tabkepesertaan.services.go b/services/corporate/mcudetail/tabkepesertaan.services.go index ea6ba51..ce763a7 100644 --- a/services/corporate/mcudetail/tabkepesertaan.services.go +++ b/services/corporate/mcudetail/tabkepesertaan.services.go @@ -101,14 +101,16 @@ func (tkp *TabKepersertaanServices) GetTotalKepesertaanMCU(mcuID string) (models q := ` SELECT - COUNT(mo.Mcu_OrderID) AS peserta, - mm.Mgm_McuTotalParticipant - FROM mgm_mcu mm - LEFT JOIN t_orderheader toh ON toh.T_OrderHeaderMgm_McuID = mm.Mgm_McuID - AND T_OrderHeaderIsActive = 'Y' - LEFT JOIN mcu_order mo ON mo.Mcu_OrderT_OrderHeaderID = toh.T_OrderHeaderID - WHERE mm.Mgm_McuID = ? AND mm.Mgm_McuIsActive = 'Y' + COUNT(distinct(T_OrderHeaderID)) as peserta, + COUNT( distinct(Mcu_PreregisterPatientsM_PatientID)) as total + FROM mcu_preregister_patients + LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID AND + T_OrderHeaderIsActive = 'Y' + WHERE + Mcu_PreregisterPatientsMgm_McuID = ? AND + Mcu_PreregisterPatientsIsActive = 'Y' ` + if err := dbx.Handlex.Get(&data, q, mcuID); err != nil { return option, fmt.Errorf("error get total participant %v", err) } @@ -116,10 +118,10 @@ func (tkp *TabKepersertaanServices) GetTotalKepesertaanMCU(mcuID string) (models logger.Info("resp data", zap.Any("data", data)) title := "Peserta MCU" - subtext := "Total Peserta " + strconv.Itoa(data.Mgm_McuTotalParticipant) + subtext := "Total Peserta " + strconv.Itoa(data.Total) chartData := []models.SeriesData{} - if data.Mgm_McuTotalParticipant == 0 { + if data.Total == 0 { chartData = append(chartData, models.SeriesData{Value: 0, Name: "No Data"}) } else { chartData = []models.SeriesData{ @@ -128,8 +130,8 @@ func (tkp *TabKepersertaanServices) GetTotalKepesertaanMCU(mcuID string) (models Name: "Sudah MCU: " + strconv.Itoa(data.Peserta) + " peserta", }, { - Value: data.Mgm_McuTotalParticipant - data.Peserta, - Name: "Belum MCU: " + strconv.Itoa(data.Mgm_McuTotalParticipant-data.Peserta) + " peserta", + Value: data.Total - data.Peserta, + Name: "Belum MCU: " + strconv.Itoa(data.Total-data.Peserta) + " peserta", }, } } @@ -152,21 +154,14 @@ func (tkp *TabKepersertaanServices) GetKepesertaanByGender(mcuID string) (models chartData := []models.SeriesData{} q := ` - SELECT - CASE - WHEN M_PatientGender = 'male' THEN 'Laki-laki' - WHEN M_PatientGender = 'female' THEN 'Perempuan' - ELSE M_PatientGender - END AS M_PatientGender, - COUNT(*) AS Jumlah - FROM mcu_order - JOIN t_orderheader ON Mcu_OrderT_OrderHeaderID = T_OrderHeaderID - AND T_OrderHeaderIsActive = 'Y' - LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID - AND M_PatientIsActive = 'Y' - WHERE Mcu_OrderMgm_McuID = ? + SELECT IF(M_PatientGender = 'male','Laki-laki','Perempuan') as M_PatientGender, + COUNT(T_OrderHeaderID) as Jumlah + FROM t_orderheader + LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' + WHERE T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y' GROUP BY M_PatientGender ` + if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { return option, fmt.Errorf("error get total gender %v", err) } @@ -202,24 +197,23 @@ func (tkp *TabKepersertaanServices) GetKepesertaanByUmur(mcuID string) (models.P chartData := []models.SeriesData{} q := ` - SELECT + SELECT CASE - WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' then "1. < 30 tahun" - WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND LEFT(T_OrderHeaderM_PatientAge,2) < '40' then "2. 30 -< 40 tahun" - WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND LEFT(T_OrderHeaderM_PatientAge,2) < '50' then "3. 40 - < 50 tahun" - WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' then "4. > 50 tahun" else "" + WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' THEN "1. < 30 tahun" + WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND left(T_OrderHeaderM_PatientAge,2) < '40' THEN "2. 30 -< 40 tahun" + WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND left(T_OrderHeaderM_PatientAge,2) < '50' THEN "3. 40 - < 50 tahun" + WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' THEN "4. > 50 tahun" ELSE "" END AS umur, - COUNT(Mcu_OrderT_OrderHeaderID) AS total - FROM mcu_order - JOIN t_orderheader ON Mcu_OrderT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive = 'Y' + COUNT(T_OrderHeaderID) as total + FROM t_orderheader LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' - WHERE Mcu_OrderMgm_McuID = ? - GROUP BY + WHERE t_orderheaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y' + GROUP BY CASE - WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' then "1. < 30 tahun" - WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND LEFT(T_OrderHeaderM_PatientAge,2) < '40' then "2. 30 -< 40 tahun" - WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND LEFT(T_OrderHeaderM_PatientAge,2) < '50' then "3. 40 - < 50 tahun" - WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' then "4. > 50 tahun" else "" + WHEN LEFT(T_OrderHeaderM_PatientAge,2) < '30' THEN "1. < 30 tahun" + WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '30' AND left(T_OrderHeaderM_PatientAge,2) < '40' THEN "2. 30 -< 40 tahun" + WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '40' AND left(T_OrderHeaderM_PatientAge,2) < '50' THEN "3. 40 - < 50 tahun" + WHEN LEFT(T_OrderHeaderM_PatientAge,2) >= '50' THEN "4. > 50 tahun" ELSE "" END ORDER BY umur ` diff --git a/services/corporate/mcudetail/tabkesimpulan.services.go b/services/corporate/mcudetail/tabkesimpulan.services.go index bd09202..1a3e74e 100644 --- a/services/corporate/mcudetail/tabkesimpulan.services.go +++ b/services/corporate/mcudetail/tabkesimpulan.services.go @@ -230,3 +230,76 @@ func (tks *TabKesimpulanServices) GetListKesimpulanFisik(id string) ([]models.Mo return listFisik, nil } + +func (tks *TabKesimpulanServices) GetListKesimpulanLabV2(id string) ([]models.ModelKesimpulanLab, error) { + var data []models.ModelKesimpulanLab + + q := ` + SELECT Mcu_KelainanID as nomor, + Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_lab + JOIN t_orderheader ON T_KelainanLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID + join mcu_kelainan on Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID AND T_KelainanLabNat_TestID = Mcu_SummaryLabNat_TestID + where T_KelainanLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC + LIMIT 3 + ` + if err := dbx.Handlex.Select(&data, q, id); err != nil { + return data, fmt.Errorf("error get data top 3 kelainan lab %v", err) + } + + return data, nil +} + +func (tks *TabKesimpulanServices) GetListKesimpulanNonLabV2(id string) ([]models.ModelKesimpulanLab, error) { + var data []models.ModelKesimpulanLab + + q := ` + SELECT Mcu_KelainanID as nomor, Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_nonlab + JOIN t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID + join mcu_kelainan on Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND + T_KelainanNonLabNat_TestID = Mcu_SummaryNonlabNat_TestID + where T_KelainanNonLabIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC + LIMIT 3 + ` + if err := dbx.Handlex.Select(&data, q, id); err != nil { + return data, fmt.Errorf("error get data top 3 kelainan non lab %v", err) + } + + return data, nil +} + +func (tks *TabKesimpulanServices) GetListKesimpulanFisikV2(id string) ([]models.ModelKesimpulanLab, error) { + var data []models.ModelKesimpulanLab + + q := ` + SELECT Mcu_KelainanID as nomor, Mcu_KelainanName as Test, + count(distinct T_OrderHeaderID) as total + FROM t_kelainan_fisik + JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID + JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID + join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID + where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + group by Mcu_KelainanID + ORDER BY total DESC + LIMIT 3 + ` + if err := dbx.Handlex.Select(&data, q, id); err != nil { + return data, fmt.Errorf("error get data top 3 kelainan fisik %v", err) + } + + return data, nil +} diff --git a/services/public/login.services.go b/services/public/login.services.go index dfa4eea..d6e9ea6 100644 --- a/services/public/login.services.go +++ b/services/public/login.services.go @@ -30,7 +30,8 @@ func (ls *ServicesLogin) MultiSignIn(username string, password string, host stri // host = "https://cpone.aplikasi.web.id" // } - uri := "https://cpone.aplikasi.web.id/one-api/v1/system/auth/multi_login" + // uri := "https://cpone.aplikasi.web.id/one-api/v1/system/auth/multi_login" + uri := "https://devcpone.aplikasi.web.id/one-api/v1/system/auth/multi_login" params := url.Values{} params.Add("username", username) diff --git a/views/corporate/mcu/mcutab/tabkelainanfisik.templ b/views/corporate/mcu/mcutab/tabkelainanfisik.templ index 93de871..08c6b80 100644 --- a/views/corporate/mcu/mcutab/tabkelainanfisik.templ +++ b/views/corporate/mcu/mcutab/tabkelainanfisik.templ @@ -3,7 +3,8 @@ package corporate_mcudetail templ Tabkelainanfisik( chartsxs []templ.Component, chartsmd []templ.Component, - chartslg []templ.Component, + chartslg []templ.Component, + barchart []templ.Component, ) {