revice tab ordering service
This commit is contained in:
@@ -7,18 +7,19 @@ import (
|
||||
"cpone/utils"
|
||||
corporate_mcudetail "cpone/views/corporate/mcu/mcutab"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/a-h/templ"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/labstack/echo/v4"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
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)
|
||||
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)
|
||||
}
|
||||
|
||||
type TabDaftarPesertaHandlers struct {
|
||||
@@ -49,7 +50,7 @@ func (tdp *TabDaftarPesertaHandlers) HandleShowTabDaftarPeserta(c echo.Context)
|
||||
id := c.Param("id")
|
||||
logger.Info("Params", zap.Any("id", id))
|
||||
|
||||
dataTable, totalPage, err := tdp.TabDaftarPesertaServices.GetListMcuDaftarPeserta(id, 1, 10)
|
||||
dataTable, totalPage, err := tdp.TabDaftarPesertaServices.GetListDaftarPesertaMCU(id, 1, 10)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -239,7 +240,7 @@ func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
tableData, totalPage, err := tdp.TabDaftarPesertaServices.GetListMcuDaftarPeserta(id, page, 10)
|
||||
tableData, totalPage, err := tdp.TabDaftarPesertaServices.GetListDaftarPesertaMCU(id, page, 10)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -274,15 +275,19 @@ func (tdp *TabDaftarPesertaHandlers) HandlePagination(c echo.Context) error {
|
||||
|
||||
func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
host := c.Request().Host
|
||||
|
||||
userCok := c.Get("user").(*jwt.Token)
|
||||
claims := userCok.Claims.(jwt.MapClaims)
|
||||
staffname := claims["M_StaffName"].(string)
|
||||
|
||||
idx := c.QueryParam("idx")
|
||||
dialogReportID := c.QueryParam("dialogReportID")
|
||||
dialogReportBodyID := c.QueryParam("dialogReportBodyID")
|
||||
logger.Info("params", zap.Any("idx", idx))
|
||||
|
||||
newtabdata, err := tdp.TabDaftarPesertaServices.GetListReportPeserta(idx, host)
|
||||
tabdatav3, err := tdp.TabDaftarPesertaServices.GetListReportPesertaV3(idx, staffname)
|
||||
if err != nil {
|
||||
logger.Info("error", zap.Any("err", err))
|
||||
tab := corporate_mcudetail.TabReportView([]models.TabViewReportMcu{})
|
||||
mod := corporate_mcudetail.ModalRptBody(
|
||||
dialogReportBodyID,
|
||||
@@ -292,9 +297,9 @@ func (tdp *TabDaftarPesertaHandlers) HandleOpenReportDialog(c echo.Context) erro
|
||||
return utils.View(c, mod)
|
||||
}
|
||||
|
||||
logger.Info("resp new data", zap.Any("data", newtabdata))
|
||||
logger.Info("resp new data", zap.Any("data", tabdatav3))
|
||||
|
||||
tabcomponent := corporate_mcudetail.TabReportView(newtabdata)
|
||||
tabcomponent := corporate_mcudetail.TabReportView(tabdatav3)
|
||||
|
||||
modalbody := corporate_mcudetail.ModalRptBody(
|
||||
dialogReportBodyID,
|
||||
@@ -327,18 +332,9 @@ func (tdp *TabDaftarPesertaHandlers) HandleDialogGenPass(c echo.Context) error {
|
||||
host := c.Request().Host
|
||||
id := c.Param("id")
|
||||
|
||||
// tableID := c.FormValue("tableID")
|
||||
// paginationID := c.FormValue("paginationID")
|
||||
// pageparam := c.FormValue("currpage" + paginationID)
|
||||
|
||||
dialogGenPassID := c.FormValue("dialogGenPassID")
|
||||
dialogGenPassBodyID := c.FormValue("dialogGenPassBodyID")
|
||||
|
||||
// dialogReportBodyID := c.FormValue("dialogReportBodyID")
|
||||
// dialogAkunBodyID := c.FormValue("dialogAkunBodyID")
|
||||
|
||||
// logger.Info("param", zap.Any("id", id), zap.Any("page", pageparam))
|
||||
|
||||
// generate pasword
|
||||
resp, err := tdp.TabDaftarPesertaServices.GenerataPasswordMCU(id, host)
|
||||
if err != nil {
|
||||
@@ -505,9 +501,81 @@ func (tdp *TabDaftarPesertaHandlers) HandleAkun(c echo.Context) error {
|
||||
dialogAkunBodyID := c.FormValue("dialogAkunBodyID")
|
||||
logger.Info("params", zap.Any("patid", patientID))
|
||||
|
||||
// akunEmail := c.FormValue("akunpesertaemail")
|
||||
// akunPass := c.FormValue("akunpesertapass")
|
||||
// akunPasscel := c.FormValue("akunpesertapasscek")
|
||||
akunID := c.FormValue("akunpesertaid")
|
||||
akunEmail := c.FormValue("akunpesertaemail")
|
||||
akunPass := c.FormValue("akunpesertapass")
|
||||
akunPasscek := c.FormValue("akunpesertapasscek")
|
||||
|
||||
formValidation := ""
|
||||
emailValidation := ""
|
||||
passValidation := ""
|
||||
pass2Validation := ""
|
||||
|
||||
if strings.TrimSpace(akunEmail) == "" {
|
||||
formValidation = "Email tidak boleh kosong"
|
||||
emailValidation = "Email tidak boleh kosong"
|
||||
}
|
||||
if strings.TrimSpace(akunPass) == "" {
|
||||
formValidation = "Password tidak boleh kosong"
|
||||
passValidation = "Password tidak boleh kosong"
|
||||
}
|
||||
if strings.TrimSpace(akunPasscek) == "" {
|
||||
formValidation = "Password tidak boleh kosong"
|
||||
pass2Validation = "Password tidak boleh kosong"
|
||||
}
|
||||
if strings.TrimSpace(akunEmail) == "" && strings.TrimSpace(akunPass) == "" && strings.TrimSpace(akunPasscek) == "" {
|
||||
formValidation = "Email dan Password tidak boleh kosong"
|
||||
emailValidation = "Email tidak boleh kosong"
|
||||
passValidation = "Password tidak boleh kosong"
|
||||
pass2Validation = "Password tidak boleh kosong"
|
||||
}
|
||||
if strings.TrimSpace(akunPass) != strings.TrimSpace(akunPasscek) {
|
||||
formValidation = "Password tidak sama"
|
||||
passValidation = "Password tidak sama"
|
||||
pass2Validation = "Password tidak sama"
|
||||
}
|
||||
|
||||
if formValidation != "" || emailValidation != "" || passValidation != "" || pass2Validation != "" {
|
||||
dialogAkunBody := corporate_mcudetail.ModalViewAkunBody(
|
||||
dialogAkunBodyID,
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "ID Akun Peserta",
|
||||
Name: "akunpesertaid",
|
||||
Placeholder: "ID Akun Peserta",
|
||||
Type: "hidden",
|
||||
ID: "akunpesertaidid",
|
||||
Value: akunID,
|
||||
},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Email Akun",
|
||||
Name: "akunpesertaemail",
|
||||
Type: "text",
|
||||
ID: "akunpesertaemailid",
|
||||
Value: akunEmail,
|
||||
ErrorMsg: emailValidation,
|
||||
},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Password Akun",
|
||||
Name: "akunpesertapass",
|
||||
Type: "password",
|
||||
ID: "akunpesertapassid",
|
||||
Value: akunPass,
|
||||
ErrorMsg: passValidation,
|
||||
},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Ketik ulang password",
|
||||
Name: "akunpesertapasscek",
|
||||
Type: "password",
|
||||
ID: "akunpesertapasscekid",
|
||||
Value: akunPasscek,
|
||||
ErrorMsg: pass2Validation,
|
||||
},
|
||||
corporate_mcudetail.JsShowModal(""),
|
||||
)
|
||||
toastwarning := customtoastv2.CustomToastV2Show("Warning", formValidation, "warning")
|
||||
retVal := []templ.Component{toastwarning, dialogAkunBody}
|
||||
return utils.ViewMulti(c, retVal)
|
||||
}
|
||||
|
||||
dialogAkunBody := corporate_mcudetail.ModalViewAkunBody(
|
||||
dialogAkunBodyID,
|
||||
|
||||
@@ -17,11 +17,9 @@ import (
|
||||
|
||||
type PatientService interface {
|
||||
GetDashboardPatientBreadcrumb(title string) (models.BreadCrumbV1, error)
|
||||
ListingData(search string, date string, patID string, corpId string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error)
|
||||
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)
|
||||
GetListReportPesertaV3(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error)
|
||||
}
|
||||
|
||||
func NewPatientHandler(us PatientService) *PatientHandler {
|
||||
@@ -215,25 +213,17 @@ 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)
|
||||
// if err != nil {
|
||||
// tab := corporate_patient.TabReportView([]models.TabViewReportMcu{})
|
||||
// mod := corporate_patient.ModalBody(
|
||||
// dialogBodyID,
|
||||
// tab,
|
||||
// corporate_patient.JsShowModal(""),
|
||||
// )
|
||||
// return utils.View(c, mod)
|
||||
// }
|
||||
userCok := c.Get("user").(*jwt.Token)
|
||||
claims := userCok.Claims.(jwt.MapClaims)
|
||||
staffname := claims["M_StaffName"].(string)
|
||||
|
||||
newtabdata, err := ph.PatientService.GetListReportPeserta(id, host)
|
||||
newtabdata, err := ph.PatientService.GetListReportPesertaV3(id, staffname)
|
||||
if err != nil {
|
||||
tab := corporate_patient.TabReportView([]models.TabViewReportMcu{})
|
||||
mod := corporate_patient.ModalBody(
|
||||
|
||||
@@ -14,7 +14,6 @@ import (
|
||||
)
|
||||
|
||||
type LoginService interface {
|
||||
Login(username string, password string) (models.ResponseApi, error)
|
||||
MultiSignIn(username string, password string, host string) (models.Response, error)
|
||||
}
|
||||
|
||||
@@ -48,20 +47,15 @@ func (lh *LoginHandler) HandleSignIn(c echo.Context) error {
|
||||
defer logger.Sync()
|
||||
logger.Info("Error", zap.Any("error multi signin", err))
|
||||
|
||||
si := public_login.ShowLogin("Login ", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
|
||||
si := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
|
||||
return utils.View(c, si)
|
||||
|
||||
// loginform := public_login.FormSignin(false)
|
||||
// return utils.View(c, loginform)
|
||||
}
|
||||
if resp.Status == "ERR" {
|
||||
defer logger.Sync()
|
||||
logger.Info("Error", zap.Any("ERR", resp.Status))
|
||||
|
||||
si := public_login.ShowLogin("Login ", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
|
||||
si := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
|
||||
return utils.View(c, si)
|
||||
// loginform := public_login.FormSignin(false)
|
||||
// return utils.View(c, loginform)
|
||||
}
|
||||
|
||||
defer logger.Sync()
|
||||
@@ -86,9 +80,6 @@ func (lh *LoginHandler) HandleSignIn(c echo.Context) error {
|
||||
|
||||
si := public_login.ShowLogin("Login ", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin())
|
||||
return utils.View(c, si)
|
||||
|
||||
// loginform := public_login.FormSignin(false)
|
||||
// return utils.View(c, loginform)
|
||||
}
|
||||
|
||||
cookie := new(http.Cookie)
|
||||
|
||||
@@ -16,9 +16,10 @@ type ModelMcuDaftarPeserta struct {
|
||||
AuthPatientIsActive string `db:"authPatientIsActive"`
|
||||
}
|
||||
|
||||
type ModelMcuPesertaReport struct {
|
||||
type SoResultEntryReportModel struct {
|
||||
So_ResultEntryID int `db:"So_ResultEntryID"`
|
||||
So_ResultEntryT_OrderHeaderID int `db:"So_ResultEntryT_OrderHeaderID"`
|
||||
So_ResultEntryT_OrderDetailID int `db:"So_ResultEntryT_OrderDetailID"`
|
||||
So_ResultEntryNonlab_TemplateID int `db:"So_ResultEntryNonlab_TemplateID"`
|
||||
So_ResultEntryNonlab_TemplateName string `db:"So_ResultEntryNonlab_TemplateName"`
|
||||
Datetime string `db:"Datetime"`
|
||||
@@ -52,3 +53,13 @@ type AuthPatient struct {
|
||||
AuthPatientPassword string `db:"authPatientPassword"`
|
||||
AuthPatientIsActive string `db:"authPatientIsActive"`
|
||||
}
|
||||
|
||||
type GroupResultOrderModel struct {
|
||||
Group_ResultID string `db:"Group_ResultID"`
|
||||
Group_ResultName string `db:"Group_ResultName"`
|
||||
Group_ResultResumeMcu string `db:"Group_ResultResumeMcu"`
|
||||
Group_ResultOrderOrder string `db:"Group_ResultOrderOrder"`
|
||||
Group_ResultUrl string `db:"Group_ResultUrl"`
|
||||
Group_ResultIsOrderHeader string `db:"Group_ResultIsOrderHeader"`
|
||||
Datetime string `db:"Datetime"`
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ func NewTabDaftarPesertaServices(uStore db.AppStore) *TabDaftarPesertaServices {
|
||||
}
|
||||
}
|
||||
|
||||
func (tdps *TabDaftarPesertaServices) GetListMcuDaftarPeserta(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error) {
|
||||
func (tdps *TabDaftarPesertaServices) GetListDaftarPesertaMCU(id string, currentpage int, rowperpage int) ([]models.ModelMcuDaftarPeserta, int, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var listDaftarPeserta []models.ModelMcuDaftarPeserta
|
||||
var totalData int
|
||||
@@ -43,7 +43,7 @@ func (tdps *TabDaftarPesertaServices) GetListMcuDaftarPeserta(id string, current
|
||||
|
||||
query := `SELECT T_OrderHeaderID,
|
||||
T_OrderHeaderDate,
|
||||
T_OrderHeaderLabNumber,
|
||||
IFNULL(T_OrderHeaderLabNumber, 0) AS T_OrderHeaderLabNumber,
|
||||
T_OrderHeaderM_PatientAge,
|
||||
M_PatientID,
|
||||
M_PatientNoReg,
|
||||
@@ -72,194 +72,28 @@ func (tdps *TabDaftarPesertaServices) GetListMcuDaftarPeserta(id string, current
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
|
||||
|
||||
defer logger.Sync()
|
||||
logger.Info("GET DATA PESERTA",
|
||||
zap.Any("id", id),
|
||||
zap.Any("total data", totalData),
|
||||
zap.Any("peserta", listDaftarPeserta),
|
||||
)
|
||||
// logger.Info("GET DATA PESERTA",
|
||||
// zap.Any("id", id),
|
||||
// zap.Any("total data", totalData),
|
||||
// zap.Any("peserta", listDaftarPeserta),
|
||||
// )
|
||||
|
||||
return listDaftarPeserta, totalPage, nil
|
||||
}
|
||||
|
||||
func (tdps *TabDaftarPesertaServices) GetReportMcu(orderheaderID string) ([]models.TabViewReportMcu, error) {
|
||||
var ret []models.TabViewReportMcu
|
||||
var data []models.ModelMcuPesertaReport
|
||||
var totalData int
|
||||
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM so_resultentry
|
||||
WHERE So_ResultEntryT_OrderHeaderID = ?
|
||||
AND So_ResultEntryIsActive = 'Y'
|
||||
`
|
||||
if err := dbx.Handlex.Get(&totalData, q, orderheaderID); err != nil {
|
||||
return ret, fmt.Errorf("error get total mcu report: %v", err)
|
||||
}
|
||||
|
||||
q = `
|
||||
SELECT
|
||||
So_ResultEntryID,
|
||||
So_ResultEntryT_OrderHeaderID,
|
||||
So_ResultEntryNonlab_TemplateID,
|
||||
So_ResultEntryNonlab_TemplateName
|
||||
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)
|
||||
}
|
||||
|
||||
// Lab
|
||||
ret = append(ret, models.TabViewReportMcu{Name: "Hasil Laboratorium", Link: "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_test.rptdesign&__format=pdf&PID=" + orderheaderID + "&username=adhi&tm=1717726294764"})
|
||||
|
||||
// Non-lab
|
||||
for _, n := range data {
|
||||
var link models.TabViewReportMcu
|
||||
|
||||
switch n.So_ResultEntryNonlab_TemplateName {
|
||||
case "ECG":
|
||||
link.Name = "Elektromedis"
|
||||
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_elmd.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
|
||||
case "Thorax PA":
|
||||
link.Name = "Radiologi"
|
||||
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_xray.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
|
||||
case "Audiometri":
|
||||
link.Name = "Audiometri"
|
||||
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_audiometri.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
|
||||
case "Spirometri":
|
||||
link.Name = "Spirometri"
|
||||
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_spirometri.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
|
||||
case "Fisik Umum":
|
||||
namaFisik := []string{"Hasil Fisik", "Hasil Pajanan", "Riwayat"}
|
||||
linkFisik := []string{
|
||||
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_fisik.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=fisik&username=adhi&tm=1717726294764",
|
||||
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_pajanan.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=fisik&username=adhi&tm=1717726294764",
|
||||
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_riwayat.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=riwayat&username=adhi&tm=1717726294764",
|
||||
}
|
||||
for i := 0; i < 3; i++ {
|
||||
ret = append(ret, models.TabViewReportMcu{Name: namaFisik[i], Link: linkFisik[i]})
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
ret = append(ret, link)
|
||||
}
|
||||
|
||||
ret = append(ret, models.TabViewReportMcu{Name: "Resume Individu", Link: "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_resume.rptdesign&__format=pdf&PID=" + orderheaderID + "&username=adhi&tm=1717726294764"})
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
func (tdps *TabDaftarPesertaServices) GenerataPasswordMCU(mgmMCUID string, host string) (models.GeneratePasswordResponse, error) {
|
||||
|
||||
// Generate email dan password utk seluruh peserta mgm mcu
|
||||
// https://devcpone.aplikasi.web.id/one-api/tools/auth_patient/generate/<XID>
|
||||
// <XID> : mgmMcuID
|
||||
|
||||
if host == "localhost:5000" {
|
||||
host = "https://devcpone.aplikasi.web.id"
|
||||
}
|
||||
// if host == "localhost:5000" {
|
||||
// host = "https://devcpone.aplikasi.web.id"
|
||||
// }
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret models.GeneratePasswordResponse
|
||||
uri := host + "/one-api/tools/auth_patient/generate/" + mgmMCUID
|
||||
uri := "https://cpone.aplikasi.web.id/one-api/tools/auth_patient/generate/" + mgmMCUID
|
||||
|
||||
payload := []byte{}
|
||||
resp, err := http.Post(uri, "application/json", bytes.NewBuffer(payload))
|
||||
@@ -304,3 +138,215 @@ func (tdps *TabDaftarPesertaServices) GetAkunPeserta(patientID string) (models.A
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (tdps *TabDaftarPesertaServices) GetListReportPesertaV2(orderheaderID string, host string) ([]models.TabViewReportMcu, error) {
|
||||
var returnTabRpt []models.TabViewReportMcu
|
||||
var SoResultData []models.SoResultEntryReportModel
|
||||
|
||||
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(&SoResultData, q, orderheaderID); err != nil {
|
||||
return returnTabRpt, fmt.Errorf("error get so result data non lab: %v", err)
|
||||
}
|
||||
|
||||
mapSoResult := map[string]int{}
|
||||
for _, so := range SoResultData {
|
||||
switch so.So_ResultEntryNonlab_TemplateName {
|
||||
case "ECG":
|
||||
mapSoResult["Elektromedik"] = so.So_ResultEntryID
|
||||
case "Thorax PA":
|
||||
mapSoResult["Radiologi"] = so.So_ResultEntryID
|
||||
case "Fisik Umum", "Fisik Umum K3":
|
||||
mapSoResult["Fisik"] = so.So_ResultEntryID
|
||||
default:
|
||||
mapSoResult[so.So_ResultEntryNonlab_TemplateName] = so.So_ResultEntryID
|
||||
}
|
||||
}
|
||||
|
||||
var GroupResultOrder []models.GroupResultOrderModel
|
||||
q = `
|
||||
SELECT
|
||||
gr.Group_ResultID,
|
||||
gr.Group_ResultName,
|
||||
gr.Group_ResultResumeMcu,
|
||||
gr.Group_ResultUrl,
|
||||
gr.Group_ResultIsOrderHeader,
|
||||
gro.Group_ResultOrderOrder,
|
||||
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
|
||||
FROM t_orderdetail todtl
|
||||
JOIN t_test tt ON todtl.T_OrderDetailT_TestID = tt.T_TestID
|
||||
AND tt.T_TestIsActive = 'Y'
|
||||
JOIN group_resultdetail grd ON tt.T_TestID = grd.Group_ResultDetailT_TestID
|
||||
AND grd.Group_ResultDetailIsActive = 'Y'
|
||||
JOIN group_result gr ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
|
||||
AND gr.Group_ResultIsActive = 'Y'
|
||||
JOIN group_resultorder gro ON gro.Group_ResultOrderGroup_ResultID = gr.Group_ResultID
|
||||
AND Group_ResultOrderIsActive = 'Y'
|
||||
WHERE todtl.T_OrderDetailT_OrderHeaderID = ?
|
||||
AND todtl.T_OrderDetailIsActive = 'Y'
|
||||
GROUP BY gr.Group_ResultID
|
||||
ORDER BY gro.Group_ResultOrderOrder
|
||||
`
|
||||
if err := dbx.Handlex.Select(&GroupResultOrder, q, orderheaderID); err != nil {
|
||||
return returnTabRpt, fmt.Errorf("error get group result order: %v", err)
|
||||
}
|
||||
|
||||
for _, d := range GroupResultOrder {
|
||||
var urlMap map[string]string
|
||||
if err := json.Unmarshal([]byte(d.Group_ResultUrl), &urlMap); err != nil {
|
||||
return returnTabRpt, fmt.Errorf("error parsing json: %v", err)
|
||||
}
|
||||
|
||||
if d.Group_ResultIsOrderHeader == "N" {
|
||||
if d.Group_ResultResumeMcu == "FISIK" {
|
||||
soResultID := strconv.Itoa(mapSoResult["Fisik"])
|
||||
for key, value := range urlMap {
|
||||
returnTabRpt = append(returnTabRpt, models.TabViewReportMcu{
|
||||
Name: key,
|
||||
Link: value + soResultID + "&tm=" + d.Datetime,
|
||||
})
|
||||
}
|
||||
}
|
||||
if d.Group_ResultResumeMcu == "NONLAB" {
|
||||
soResultID := strconv.Itoa(mapSoResult[d.Group_ResultName])
|
||||
for key, value := range urlMap {
|
||||
returnTabRpt = append(returnTabRpt, models.TabViewReportMcu{
|
||||
Name: key,
|
||||
Link: value + soResultID + "&tm=" + d.Datetime,
|
||||
})
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for _, value := range urlMap {
|
||||
returnTabRpt = append(returnTabRpt, models.TabViewReportMcu{
|
||||
Name: d.Group_ResultName,
|
||||
Link: value + orderheaderID + "&tm=" + d.Datetime,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return returnTabRpt, nil
|
||||
}
|
||||
|
||||
func (tdps *TabDaftarPesertaServices) GetListReportPesertaV3(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
|
||||
var returnTab []models.TabViewReportMcu
|
||||
var GroupResultOrder []models.GroupResultOrderModel
|
||||
var SoResultData []models.SoResultEntryReportModel
|
||||
|
||||
q := `
|
||||
SELECT
|
||||
gr.Group_ResultID,
|
||||
gr.Group_ResultName,
|
||||
gr.Group_ResultResumeMcu,
|
||||
gr.Group_ResultUrl,
|
||||
gr.Group_ResultIsOrderHeader,
|
||||
gro.Group_ResultOrderOrder,
|
||||
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
|
||||
FROM t_orderdetail todtl
|
||||
JOIN t_test tt ON todtl.T_OrderDetailT_TestID = tt.T_TestID
|
||||
AND tt.T_TestIsActive = 'Y'
|
||||
JOIN group_resultdetail grd ON tt.T_TestID = grd.Group_ResultDetailT_TestID
|
||||
AND grd.Group_ResultDetailIsActive = 'Y'
|
||||
JOIN group_result gr ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
|
||||
AND gr.Group_ResultIsActive = 'Y'
|
||||
JOIN group_resultorder gro ON gro.Group_ResultOrderGroup_ResultID = gr.Group_ResultID
|
||||
AND Group_ResultOrderIsActive = 'Y'
|
||||
WHERE todtl.T_OrderDetailT_OrderHeaderID = ?
|
||||
AND todtl.T_OrderDetailIsActive = 'Y'
|
||||
GROUP BY gr.Group_ResultID
|
||||
ORDER BY gro.Group_ResultOrderOrder
|
||||
`
|
||||
if err := dbx.Handlex.Select(&GroupResultOrder, q, orderheaderID); err != nil {
|
||||
return returnTab, fmt.Errorf("error get group result order: %v", err)
|
||||
}
|
||||
|
||||
q = `
|
||||
SELECT
|
||||
sre.So_ResultEntryID,
|
||||
sre.So_ResultEntryT_OrderHeaderID,
|
||||
sre.So_ResultEntryT_OrderDetailID,
|
||||
sre.So_ResultEntryNonlab_TemplateID,
|
||||
sre.So_ResultEntryNonlab_TemplateName
|
||||
FROM t_orderdetail tdet
|
||||
JOIN t_test tt ON tdet.T_OrderDetailT_TestID = tt.T_TestID
|
||||
AND tt.T_TestIsActive = 'Y'
|
||||
JOIN so_resultentry sre ON sre.So_ResultEntryT_OrderDetailID = tdet.T_OrderDetailID
|
||||
AND sre.So_ResultEntryIsActive = 'Y'
|
||||
WHERE tdet.T_OrderDetailT_OrderHeaderID = ?
|
||||
AND tdet.T_OrderDetailIsActive = 'Y'
|
||||
`
|
||||
if err := dbx.Handlex.Select(&SoResultData, q, orderheaderID); err != nil {
|
||||
return returnTab, fmt.Errorf("error get so result data non lab: %v", err)
|
||||
}
|
||||
|
||||
mapSoResultData := map[string]int{}
|
||||
for _, so := range SoResultData {
|
||||
switch so.So_ResultEntryNonlab_TemplateName {
|
||||
case "ECG":
|
||||
mapSoResultData["Elektromedik"] = so.So_ResultEntryID
|
||||
case "Thorax PA":
|
||||
mapSoResultData["Rontgen"] = so.So_ResultEntryID
|
||||
case "Fisik Umum", "Fisik Umum K3":
|
||||
mapSoResultData["FISIK"] = so.So_ResultEntryID
|
||||
default:
|
||||
mapSoResultData[so.So_ResultEntryNonlab_TemplateName] = so.So_ResultEntryID
|
||||
}
|
||||
}
|
||||
|
||||
for _, group := range GroupResultOrder {
|
||||
var urlMap map[string]string
|
||||
if err := json.Unmarshal([]byte(group.Group_ResultUrl), &urlMap); err != nil {
|
||||
return returnTab, fmt.Errorf("error parsing json: %v", err)
|
||||
}
|
||||
|
||||
switch group.Group_ResultResumeMcu {
|
||||
case "FISIK":
|
||||
soResultID := strconv.Itoa(mapSoResultData["FISIK"])
|
||||
if soResultID != "0" {
|
||||
for key, value := range urlMap {
|
||||
returnTab = append(returnTab, models.TabViewReportMcu{
|
||||
Name: key,
|
||||
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
|
||||
})
|
||||
}
|
||||
}
|
||||
case "NONLAB":
|
||||
soResultID := strconv.Itoa(mapSoResultData[group.Group_ResultName])
|
||||
if soResultID != "0" {
|
||||
for _, value := range urlMap {
|
||||
returnTab = append(returnTab, models.TabViewReportMcu{
|
||||
Name: group.Group_ResultName,
|
||||
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
|
||||
})
|
||||
}
|
||||
}
|
||||
case "LAB":
|
||||
for _, value := range urlMap {
|
||||
returnTab = append(returnTab, models.TabViewReportMcu{
|
||||
Name: group.Group_ResultName,
|
||||
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
|
||||
})
|
||||
}
|
||||
default:
|
||||
for _, value := range urlMap {
|
||||
returnTab = append(returnTab, models.TabViewReportMcu{
|
||||
Name: group.Group_ResultName,
|
||||
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return returnTab, nil
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
dbx "cpone/package/database"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
@@ -62,52 +63,6 @@ func (sp *PatientServices) GetDashboardPatientBreadcrumb(title string) (models.B
|
||||
return breadcrumb, nil
|
||||
}
|
||||
|
||||
func (sp *PatientServices) ListingData(search string, date string, patID string, corpId string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret []models.DashboardPatient
|
||||
var totalData int
|
||||
|
||||
if len(date) == 0 {
|
||||
date = ""
|
||||
}
|
||||
|
||||
prmSearch := "%" + search + "%"
|
||||
offset := (currentpage - 1) * rowperpage
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM t_orderheader
|
||||
WHERE T_OrderHeaderIsActive = 'Y'
|
||||
AND T_OrderHeaderLabNumber LIKE ?
|
||||
AND T_OrderHeaderM_PatientID = ?
|
||||
`
|
||||
if err := dbx.Handlex.Get(&totalData, q, prmSearch, patID); err != nil {
|
||||
return nil, 0, fmt.Errorf("error query get total data: %v", err)
|
||||
}
|
||||
|
||||
q = `
|
||||
SELECT
|
||||
T_OrderHeaderID,
|
||||
DATE_FORMAT(T_OrderHeaderDate, '%d/%m/%Y') AS T_OrderHeaderDate,
|
||||
T_OrderHeaderLabNumber,
|
||||
T_OrderHeaderM_PatientID,
|
||||
T_OrderHeaderCorporateID,
|
||||
T_OrderHeaderMgm_McuID,
|
||||
T_OrderHeaderIsActive
|
||||
FROM t_orderheader
|
||||
WHERE T_OrderHeaderIsActive = 'Y'
|
||||
AND T_OrderHeaderLabNumber LIKE ?
|
||||
AND T_OrderHeaderM_PatientID = ?
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
if err := dbx.Handlex.Select(&ret, q, prmSearch, patID, rowperpage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error query get data: %v", err)
|
||||
}
|
||||
logger.Info("response", zap.Any("data", ret))
|
||||
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowperpage)))
|
||||
return ret, totalPage, nil
|
||||
}
|
||||
|
||||
func (sp *PatientServices) GetListtingData(email string, currentpage int, rowperpage int) ([]models.DashboardPatient, int, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret []models.DashboardPatient
|
||||
@@ -150,167 +105,114 @@ func (sp *PatientServices) GetListtingData(email string, currentpage int, rowper
|
||||
return ret, totalPage, nil
|
||||
}
|
||||
|
||||
func (sp *PatientServices) GetReportMcu(orderheaderID string) ([]models.TabViewReportMcu, error) {
|
||||
var ret []models.TabViewReportMcu
|
||||
var data []models.ModelMcuPesertaReport
|
||||
var totalData int
|
||||
|
||||
q := `
|
||||
SELECT COUNT(*)
|
||||
FROM so_resultentry
|
||||
WHERE So_ResultEntryT_OrderHeaderID = ?
|
||||
AND So_ResultEntryIsActive = 'Y'
|
||||
`
|
||||
if err := dbx.Handlex.Get(&totalData, q, orderheaderID); err != nil {
|
||||
return ret, fmt.Errorf("error get total mcu report: %v", err)
|
||||
}
|
||||
|
||||
q = `
|
||||
SELECT
|
||||
So_ResultEntryID,
|
||||
So_ResultEntryT_OrderHeaderID,
|
||||
So_ResultEntryNonlab_TemplateID,
|
||||
So_ResultEntryNonlab_TemplateName
|
||||
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, err
|
||||
}
|
||||
|
||||
// Lab
|
||||
ret = append(ret, models.TabViewReportMcu{Name: "Hasil Laboratorium", Link: "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_test.rptdesign&__format=pdf&PID=" + orderheaderID + "&username=adhi&tm=1717726294764"})
|
||||
|
||||
// Non-lab
|
||||
for _, n := range data {
|
||||
var link models.TabViewReportMcu
|
||||
|
||||
switch n.So_ResultEntryNonlab_TemplateName {
|
||||
case "ECG":
|
||||
link.Name = "Elektromedis"
|
||||
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_elmd.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
|
||||
case "Thorax PA":
|
||||
link.Name = "Radiologi"
|
||||
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_xray.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
|
||||
case "Audiometri":
|
||||
link.Name = "Audiometri"
|
||||
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_audiometri.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
|
||||
case "Spirometri":
|
||||
link.Name = "Spirometri"
|
||||
link.Link = "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_spirometri.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&username=adhi&tm=1717726294764"
|
||||
case "Fisik Umum":
|
||||
namaFisik := []string{"Hasil Fisik", "Hasil Pajanan", "Riwayat"}
|
||||
linkFisik := []string{
|
||||
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_fisik.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=fisik&username=adhi&tm=1717726294764",
|
||||
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_pajanan.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=fisik&username=adhi&tm=1717726294764",
|
||||
"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/mcu_riwayat.rptdesign&__format=pdf&PID=" + strconv.Itoa(n.So_ResultEntryID) + "&PType=riwayat&username=adhi&tm=1717726294764",
|
||||
}
|
||||
for i := 0; i < 3; i++ {
|
||||
ret = append(ret, models.TabViewReportMcu{Name: namaFisik[i], Link: linkFisik[i]})
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
ret = append(ret, link)
|
||||
}
|
||||
ret = append(ret, models.TabViewReportMcu{Name: "Resume Individu", Link: "https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_mcu_resume.rptdesign&__format=pdf&PID=" + orderheaderID + "&username=adhi&tm=1717726294764"})
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (tdps *PatientServices) GetListReportPeserta(orderheaderID string, host string) ([]models.TabViewReportMcu, error) {
|
||||
var ret []models.TabViewReportMcu
|
||||
var data []models.ModelMcuPesertaReport
|
||||
func (sp *PatientServices) GetListReportPesertaV3(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
|
||||
var returnTab []models.TabViewReportMcu
|
||||
var GroupResultOrder []models.GroupResultOrderModel
|
||||
var SoResultData []models.SoResultEntryReportModel
|
||||
|
||||
q := `
|
||||
SELECT
|
||||
So_ResultEntryID,
|
||||
So_ResultEntryT_OrderHeaderID,
|
||||
So_ResultEntryNonlab_TemplateID,
|
||||
So_ResultEntryNonlab_TemplateName,
|
||||
gr.Group_ResultID,
|
||||
gr.Group_ResultName,
|
||||
gr.Group_ResultResumeMcu,
|
||||
gr.Group_ResultUrl,
|
||||
gr.Group_ResultIsOrderHeader,
|
||||
gro.Group_ResultOrderOrder,
|
||||
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
|
||||
FROM t_orderdetail todtl
|
||||
JOIN t_test tt ON todtl.T_OrderDetailT_TestID = tt.T_TestID
|
||||
AND tt.T_TestIsActive = 'Y'
|
||||
JOIN group_resultdetail grd ON tt.T_TestID = grd.Group_ResultDetailT_TestID
|
||||
AND grd.Group_ResultDetailIsActive = 'Y'
|
||||
JOIN group_result gr ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
|
||||
AND gr.Group_ResultIsActive = 'Y'
|
||||
JOIN group_resultorder gro ON gro.Group_ResultOrderGroup_ResultID = gr.Group_ResultID
|
||||
AND Group_ResultOrderIsActive = 'Y'
|
||||
WHERE todtl.T_OrderDetailT_OrderHeaderID = ?
|
||||
AND todtl.T_OrderDetailIsActive = 'Y'
|
||||
GROUP BY gr.Group_ResultID
|
||||
ORDER BY gro.Group_ResultOrderOrder
|
||||
`
|
||||
if err := dbx.Handlex.Select(&data, q, orderheaderID); err != nil {
|
||||
return ret, fmt.Errorf("error get mcu report : %v", err)
|
||||
if err := dbx.Handlex.Select(&GroupResultOrder, q, orderheaderID); err != nil {
|
||||
return returnTab, fmt.Errorf("error get group result order: %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%"
|
||||
sre.So_ResultEntryID,
|
||||
sre.So_ResultEntryT_OrderHeaderID,
|
||||
sre.So_ResultEntryT_OrderDetailID,
|
||||
sre.So_ResultEntryNonlab_TemplateID,
|
||||
sre.So_ResultEntryNonlab_TemplateName
|
||||
FROM t_orderdetail tdet
|
||||
JOIN t_test tt ON tdet.T_OrderDetailT_TestID = tt.T_TestID
|
||||
AND tt.T_TestIsActive = 'Y'
|
||||
JOIN so_resultentry sre ON sre.So_ResultEntryT_OrderDetailID = tdet.T_OrderDetailID
|
||||
AND sre.So_ResultEntryIsActive = 'Y'
|
||||
WHERE tdet.T_OrderDetailT_OrderHeaderID = ?
|
||||
AND tdet.T_OrderDetailIsActive = 'Y'
|
||||
`
|
||||
if err := dbx.Handlex.Select(&SoResultData, q, orderheaderID); err != nil {
|
||||
return returnTab, fmt.Errorf("error get so result data non lab: %v", err)
|
||||
}
|
||||
|
||||
temParam := map[string]int{}
|
||||
for _, d := range data {
|
||||
switch d.So_ResultEntryNonlab_TemplateName {
|
||||
mapSoResultData := map[string]int{}
|
||||
for _, so := range SoResultData {
|
||||
switch so.So_ResultEntryNonlab_TemplateName {
|
||||
case "ECG":
|
||||
q = q + `OR M_OrderReportName LIKE "%Elektromedis%"`
|
||||
temParam["Elektromedis"] = d.So_ResultEntryID
|
||||
mapSoResultData["Elektromedik"] = so.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
|
||||
mapSoResultData["Rontgen"] = so.So_ResultEntryID
|
||||
case "Fisik Umum", "Fisik Umum K3":
|
||||
mapSoResultData["FISIK"] = so.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,
|
||||
})
|
||||
mapSoResultData[so.So_ResultEntryNonlab_TemplateName] = so.So_ResultEntryID
|
||||
}
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
for _, group := range GroupResultOrder {
|
||||
var urlMap map[string]string
|
||||
if err := json.Unmarshal([]byte(group.Group_ResultUrl), &urlMap); err != nil {
|
||||
return returnTab, fmt.Errorf("error parsing json: %v", err)
|
||||
}
|
||||
|
||||
switch group.Group_ResultResumeMcu {
|
||||
case "FISIK":
|
||||
soResultID := strconv.Itoa(mapSoResultData["FISIK"])
|
||||
if soResultID != "0" {
|
||||
for key, value := range urlMap {
|
||||
returnTab = append(returnTab, models.TabViewReportMcu{
|
||||
Name: key,
|
||||
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
|
||||
})
|
||||
}
|
||||
}
|
||||
case "NONLAB":
|
||||
soResultID := strconv.Itoa(mapSoResultData[group.Group_ResultName])
|
||||
if soResultID != "0" {
|
||||
for _, value := range urlMap {
|
||||
returnTab = append(returnTab, models.TabViewReportMcu{
|
||||
Name: group.Group_ResultName,
|
||||
Link: value + "&username=" + staffname + "&PID=" + soResultID + "&tm=" + group.Datetime,
|
||||
})
|
||||
}
|
||||
}
|
||||
case "LAB":
|
||||
for _, value := range urlMap {
|
||||
returnTab = append(returnTab, models.TabViewReportMcu{
|
||||
Name: group.Group_ResultName,
|
||||
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
|
||||
})
|
||||
}
|
||||
default:
|
||||
for _, value := range urlMap {
|
||||
returnTab = append(returnTab, models.TabViewReportMcu{
|
||||
Name: group.Group_ResultName,
|
||||
Link: value + "&username=" + staffname + "&PID=" + orderheaderID + "&tm=" + group.Datetime,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return returnTab, nil
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
package public_services
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"cpone/db"
|
||||
"cpone/models"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
@@ -24,58 +22,15 @@ func NewServicesLogin(uStore db.AppStore) *ServicesLogin {
|
||||
}
|
||||
}
|
||||
|
||||
func (ls *ServicesLogin) Login(username string, password string) (models.ResponseApi, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
url := "https://devcpone.aplikasi.web.id/one-api/v1/system/auth/login"
|
||||
|
||||
var resp models.ResponseApi
|
||||
|
||||
// Create a JSON payload with the username and password
|
||||
payload := []byte(fmt.Sprintf(`{"username": "%s", "password": "%s"}`, username, password))
|
||||
logger.Info("payload", zap.Any("data", payload))
|
||||
|
||||
// Make the POST request
|
||||
request, err := http.Post(url, "application/json", bytes.NewBuffer(payload))
|
||||
if err != nil {
|
||||
logger.Info("requser", zap.Any("err", err))
|
||||
return resp, err
|
||||
}
|
||||
if request.StatusCode != http.StatusOK {
|
||||
logger.Info("status", zap.Any("err", request.StatusCode))
|
||||
return resp, fmt.Errorf("server returned non-OK status: %d", request.StatusCode)
|
||||
}
|
||||
defer request.Body.Close()
|
||||
|
||||
// Read the response body
|
||||
body, err := io.ReadAll(request.Body)
|
||||
if err != nil {
|
||||
logger.Info("body", zap.Any("data", body))
|
||||
return resp, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(body, &resp); err != nil {
|
||||
logger.Info("json", zap.Any("data", err))
|
||||
return resp, err
|
||||
}
|
||||
|
||||
// Check if status is "ERR"
|
||||
if resp.Status == "ERR" {
|
||||
logger.Info("status", zap.Any("data", resp.Message))
|
||||
return resp, fmt.Errorf("login failed: %s", resp.Message)
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (ls *ServicesLogin) MultiSignIn(username string, password string, host string) (models.Response, error) {
|
||||
logger, _ := zap.NewProduction()
|
||||
var ret models.Response
|
||||
|
||||
if host == "localhost:5000" {
|
||||
host = "https://devcpone.aplikasi.web.id"
|
||||
}
|
||||
// if host == "localhost:5000" {
|
||||
// host = "https://cpone.aplikasi.web.id"
|
||||
// }
|
||||
|
||||
uri := host + "/one-api/v1/system/auth/multi_login"
|
||||
uri := "https://cpone.aplikasi.web.id/one-api/v1/system/auth/multi_login"
|
||||
|
||||
params := url.Values{}
|
||||
params.Add("username", username)
|
||||
|
||||
@@ -62,7 +62,8 @@ templ TabViewMcuDetail(
|
||||
<div id="tabdaftarpeserta"></div>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="kt_tab_pane_8" role="tabpanel" aria-labelledby="kt_tab_pane_8" style="height: 800px;">
|
||||
<object data={"https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_summary_executive.rptdesign&__format=pdf&PID="+id+"&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
|
||||
// <object data={"https://cpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_summary_executive.rptdesign&__format=pdf&PID="+id+"&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
|
||||
<object data={"/birt/run?__report=report/one/mcu/rpt_summary_executive.rptdesign&__format=pdf&PID="+id+"&username=adhi&tm=1717726294764"} type="application/pdf" width="100%" height="100%"></object>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="kt_tab_pane_9" role="tabpanel" aria-labelledby="kt_tab_pane_9">
|
||||
<div id="tabkeuangan"></div>
|
||||
|
||||
@@ -134,9 +134,9 @@ func TabViewMcuDetail(
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
var templ_7745c5c3_Var10 string
|
||||
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs("https://devcpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_summary_executive.rptdesign&__format=pdf&PID=" + id + "&username=adhi&tm=1717726294764")
|
||||
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs("https://cpone.aplikasi.web.id/birt/run?__report=report/one/mcu/rpt_summary_executive.rptdesign&__format=pdf&PID=" + id + "&username=adhi&tm=1717726294764")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutabview.templ`, Line: 65, Col: 171}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutabview.templ`, Line: 65, Col: 168}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
|
||||
@@ -98,15 +98,16 @@ templ CssLogin() {
|
||||
templ JsLogin() {
|
||||
<script src="/asset-corporate-portal/js/login-general.js"></script>
|
||||
<script>
|
||||
const param = {
|
||||
token: localStorage.getItem('token')
|
||||
}
|
||||
// const paramLocal = {
|
||||
// token: localStorage.getItem('token')
|
||||
// }
|
||||
|
||||
if (param.token) {
|
||||
console.log(param);
|
||||
let tkn = localStorage.getItem('token')
|
||||
|
||||
if (tkn) {
|
||||
htmx.ajax('POST', '/login/autologin', {
|
||||
headers: {
|
||||
Authorization: `Bearer ${param.token}`
|
||||
Authorization: `Bearer ${tkn}`
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ func JsLogin() templ.Component {
|
||||
templ_7745c5c3_Var3 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script src=\"/asset-corporate-portal/js/login-general.js\"></script><script>\r\n\t\tconst param = {\r\n\t\t\ttoken: localStorage.getItem('token')\r\n\t\t}\r\n\r\n\t\tif (param.token) {\r\n\t\t\tconsole.log(param);\r\n\t\t\thtmx.ajax('POST', '/login/autologin', {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAuthorization: `Bearer ${param.token}`\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\t\t\r\n\t</script>")
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script src=\"/asset-corporate-portal/js/login-general.js\"></script><script>\r\n\t\t// const paramLocal = {\r\n\t\t// \ttoken: localStorage.getItem('token')\r\n\t\t// }\r\n\r\n\t\tlet tkn = localStorage.getItem('token')\r\n\r\n\t\tif (tkn) {\r\n\t\t\thtmx.ajax('POST', '/login/autologin', {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAuthorization: `Bearer ${tkn}`\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\t\t\r\n\t</script>")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user