|
|
|
|
@@ -6,12 +6,13 @@ import (
|
|
|
|
|
"cpone/models"
|
|
|
|
|
"cpone/package/config"
|
|
|
|
|
dbx "cpone/package/database"
|
|
|
|
|
"database/sql"
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"errors"
|
|
|
|
|
"fmt"
|
|
|
|
|
"io"
|
|
|
|
|
"math"
|
|
|
|
|
"net/http"
|
|
|
|
|
"net/url"
|
|
|
|
|
"strconv"
|
|
|
|
|
|
|
|
|
|
"go.uber.org/zap"
|
|
|
|
|
@@ -60,7 +61,7 @@ func (tdps *TabDaftarPesertaServices) GetListDaftarPesertaMCU(id string, current
|
|
|
|
|
WHEN M_PatientGender = 'female' THEN 'Perempuan'
|
|
|
|
|
ELSE ' '
|
|
|
|
|
END AS jenisKelamin,
|
|
|
|
|
M_PatientDOB,
|
|
|
|
|
DATE_FORMAT(M_PatientDOB, '%d %M %Y') AS M_PatientDOB,
|
|
|
|
|
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age,
|
|
|
|
|
IFNULL(authPatientEmail, "none") AS authPatientEmail,
|
|
|
|
|
IFNULL(authPatientIsActive, "N") AS authPatientIsActive,
|
|
|
|
|
@@ -88,6 +89,98 @@ func (tdps *TabDaftarPesertaServices) GetListDaftarPesertaMCU(id string, current
|
|
|
|
|
return listDaftarPeserta, totalPage, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (tdps *TabDaftarPesertaServices) SearchDaftarPesertaMCU(mcuID string, keyword string, page int, perPage int) ([]models.ModelMcuDaftarPeserta, int, error) {
|
|
|
|
|
var listDaftarPeserta []models.ModelMcuDaftarPeserta
|
|
|
|
|
var totalData int
|
|
|
|
|
|
|
|
|
|
prmWord := "%" + keyword + "%"
|
|
|
|
|
offset := (page - 1) * perPage
|
|
|
|
|
|
|
|
|
|
sqlt := `
|
|
|
|
|
SELECT COUNT(*) as total
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT
|
|
|
|
|
T_OrderHeaderID,
|
|
|
|
|
T_OrderHeaderDate,
|
|
|
|
|
IFNULL(T_OrderHeaderLabNumber, 0) AS T_OrderHeaderLabNumber,
|
|
|
|
|
T_OrderHeaderM_PatientAge,
|
|
|
|
|
M_PatientID,
|
|
|
|
|
M_PatientNoReg,
|
|
|
|
|
M_PatientName,
|
|
|
|
|
M_PatientGender,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN M_PatientGender = 'male' THEN 'Laki - Laki'
|
|
|
|
|
WHEN M_PatientGender = 'female' THEN 'Perempuan'
|
|
|
|
|
ELSE ' '
|
|
|
|
|
END AS jenisKelamin,
|
|
|
|
|
DATE_FORMAT(M_PatientDOB, '%d %M %Y') AS M_PatientDOB,
|
|
|
|
|
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age,
|
|
|
|
|
IFNULL(authPatientEmail, "none") AS authPatientEmail,
|
|
|
|
|
IFNULL(authPatientIsActive, "N") AS authPatientIsActive,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN T_OrderDetailOrderIsPacket = 'Y' THEN T_OrderDetailOrderT_PacketName
|
|
|
|
|
ELSE T_OrderDetailOrderT_TestName
|
|
|
|
|
END AS test_paket
|
|
|
|
|
FROM t_orderheader
|
|
|
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
|
|
|
|
|
JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID
|
|
|
|
|
AND T_OrderDetailOrderIsActive = 'Y'
|
|
|
|
|
LEFT JOIN auth_patient ON M_PatientID = authPatientM_PatientID AND authPatientIsActive = 'Y'
|
|
|
|
|
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ? AND (M_PatientName LIKE ? OR M_PatientNIP LIKE ?)
|
|
|
|
|
GROUP BY T_OrderHeaderID
|
|
|
|
|
)x
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Get(&totalData, sqlt, mcuID, prmWord, prmWord); err != nil {
|
|
|
|
|
return listDaftarPeserta, 0, fmt.Errorf("error querying database: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sql := `
|
|
|
|
|
SELECT *,
|
|
|
|
|
GROUP_CONCAT(test_paket) as list_paket
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT
|
|
|
|
|
T_OrderHeaderID,
|
|
|
|
|
T_OrderHeaderDate,
|
|
|
|
|
IFNULL(T_OrderHeaderLabNumber, 0) AS T_OrderHeaderLabNumber,
|
|
|
|
|
T_OrderHeaderM_PatientAge,
|
|
|
|
|
M_PatientID,
|
|
|
|
|
M_PatientNoReg,
|
|
|
|
|
M_PatientName,
|
|
|
|
|
M_PatientGender,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN M_PatientGender = 'male' THEN 'Laki - Laki'
|
|
|
|
|
WHEN M_PatientGender = 'female' THEN 'Perempuan'
|
|
|
|
|
ELSE ' '
|
|
|
|
|
END AS jenisKelamin,
|
|
|
|
|
DATE_FORMAT(M_PatientDOB, '%d %M %Y') AS M_PatientDOB,
|
|
|
|
|
FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age,
|
|
|
|
|
IFNULL(authPatientEmail, "none") AS authPatientEmail,
|
|
|
|
|
IFNULL(authPatientIsActive, "N") AS authPatientIsActive,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN T_OrderDetailOrderIsPacket = 'Y' THEN T_OrderDetailOrderT_PacketName
|
|
|
|
|
ELSE T_OrderDetailOrderT_TestName
|
|
|
|
|
END AS test_paket
|
|
|
|
|
FROM t_orderheader
|
|
|
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
|
|
|
|
|
JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID
|
|
|
|
|
AND T_OrderDetailOrderIsActive = 'Y'
|
|
|
|
|
LEFT JOIN auth_patient ON M_PatientID = authPatientM_PatientID AND authPatientIsActive = 'Y'
|
|
|
|
|
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?
|
|
|
|
|
AND (M_PatientName LIKE ? OR M_PatientNIP LIKE ?)
|
|
|
|
|
) x
|
|
|
|
|
GROUP BY T_OrderHeaderID
|
|
|
|
|
ORDER BY T_OrderHeaderLabNumber ASC
|
|
|
|
|
LIMIT ? OFFSET ?
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Select(&listDaftarPeserta, sql, mcuID, prmWord, prmWord, perPage, offset); err != nil {
|
|
|
|
|
return listDaftarPeserta, 0, fmt.Errorf("error querying database: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
totalPage := int(math.Ceil(float64(totalData) / float64(perPage)))
|
|
|
|
|
|
|
|
|
|
return listDaftarPeserta, totalPage, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (tdps *TabDaftarPesertaServices) DetailTestdanPaket(orderheaderID string) ([]models.TableTestPaket, error) {
|
|
|
|
|
var listPaket []models.DetailPaketMCU
|
|
|
|
|
var listTest []models.DetailTestMCU
|
|
|
|
|
@@ -109,14 +202,15 @@ func (tdps *TabDaftarPesertaServices) DetailTestdanPaket(orderheaderID string) (
|
|
|
|
|
|
|
|
|
|
// get detail paket
|
|
|
|
|
q := `
|
|
|
|
|
SELECT
|
|
|
|
|
SELECT DISTINCT
|
|
|
|
|
T_OrderDetailOrderT_PacketID,
|
|
|
|
|
T_OrderDetailOrderT_PacketName,
|
|
|
|
|
T_TestName
|
|
|
|
|
FROM t_orderdetailorder
|
|
|
|
|
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_OrderDetailOrderT_PacketID AND T_PacketDetailIsActive = 'Y'
|
|
|
|
|
JOIN t_test ON T_TestName = T_PacketDetailT_TestID AND T_TestIsActive = 'Y'
|
|
|
|
|
WHERE T_OrderDetailOrderT_OrderHeaderID = ? AND T_OrderDetailOrderIsActive = 'Y'
|
|
|
|
|
JOIN t_packet ON T_PacketID = T_OrderDetailOrderT_PacketID
|
|
|
|
|
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID
|
|
|
|
|
JOIN t_test ON T_PacketDetailT_TestID = T_TestID
|
|
|
|
|
WHERE T_OrderDetailOrderT_OrderHeaderID = ?
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Select(&listPaket, q, orderheaderID); err != nil {
|
|
|
|
|
return ret, err
|
|
|
|
|
@@ -198,13 +292,15 @@ func (tdps *TabDaftarPesertaServices) ResetPasswordPeserta(token string, newPass
|
|
|
|
|
|
|
|
|
|
uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/reset_password_pat"
|
|
|
|
|
|
|
|
|
|
params := url.Values{}
|
|
|
|
|
params.Add("new", newPassword)
|
|
|
|
|
params.Add("email", email)
|
|
|
|
|
params.Add("authuserid", authuserid)
|
|
|
|
|
params.Add("token", token)
|
|
|
|
|
params, _ := json.Marshal(map[string]string{
|
|
|
|
|
"new": newPassword,
|
|
|
|
|
"email": email,
|
|
|
|
|
"authuserid": authuserid,
|
|
|
|
|
"token": token,
|
|
|
|
|
})
|
|
|
|
|
paramsBody := bytes.NewBuffer(params)
|
|
|
|
|
|
|
|
|
|
req, err := http.PostForm(uri, params)
|
|
|
|
|
resp, err := http.Post(uri, "application/json", paramsBody)
|
|
|
|
|
if err != nil {
|
|
|
|
|
ret = models.ResponseStatus{
|
|
|
|
|
Status: "ERR",
|
|
|
|
|
@@ -212,9 +308,9 @@ func (tdps *TabDaftarPesertaServices) ResetPasswordPeserta(token string, newPass
|
|
|
|
|
}
|
|
|
|
|
return ret, err
|
|
|
|
|
}
|
|
|
|
|
defer req.Body.Close()
|
|
|
|
|
defer resp.Body.Close()
|
|
|
|
|
|
|
|
|
|
resp, err := io.ReadAll(req.Body)
|
|
|
|
|
body, err := io.ReadAll(resp.Body)
|
|
|
|
|
if err != nil {
|
|
|
|
|
ret = models.ResponseStatus{
|
|
|
|
|
Status: "ERR",
|
|
|
|
|
@@ -223,7 +319,7 @@ func (tdps *TabDaftarPesertaServices) ResetPasswordPeserta(token string, newPass
|
|
|
|
|
return ret, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = json.Unmarshal(resp, &ret)
|
|
|
|
|
err = json.Unmarshal(body, &ret)
|
|
|
|
|
if err != nil {
|
|
|
|
|
ret = models.ResponseStatus{
|
|
|
|
|
Status: "ERR",
|
|
|
|
|
@@ -235,106 +331,6 @@ func (tdps *TabDaftarPesertaServices) ResetPasswordPeserta(token string, newPass
|
|
|
|
|
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
|
|
|
|
|
@@ -449,11 +445,10 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV3(orderheaderID strin
|
|
|
|
|
|
|
|
|
|
func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) {
|
|
|
|
|
var returnTab []models.TabViewReportMcu
|
|
|
|
|
|
|
|
|
|
var profile_patient models.PatientMCU
|
|
|
|
|
lab_rpt := ""
|
|
|
|
|
|
|
|
|
|
sql := `
|
|
|
|
|
sql_prof := `
|
|
|
|
|
SELECT
|
|
|
|
|
toh.T_OrderHeaderID,
|
|
|
|
|
toh.T_OrderHeaderLabNumber,
|
|
|
|
|
@@ -465,8 +460,12 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID strin
|
|
|
|
|
AND mp.M_PatientIsActive = 'Y'
|
|
|
|
|
WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y'
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Get(&profile_patient, sql, orderheaderID); err != nil {
|
|
|
|
|
return returnTab, fmt.Errorf("error get group result order: %v", err)
|
|
|
|
|
if err := dbx.Handlex.Get(&profile_patient, sql_prof, orderheaderID); err != nil {
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
profile_patient = models.PatientMCU{}
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get group result order: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if profile_patient.T_OrderHeaderLabNumber != "" {
|
|
|
|
|
lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname
|
|
|
|
|
@@ -526,13 +525,18 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID strin
|
|
|
|
|
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Select(&so_data_rpt, sql_rpt, orderheaderID, orderheaderID, orderheaderID); err != nil {
|
|
|
|
|
return returnTab, fmt.Errorf("error get data so_id: %v", err)
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
so_data_rpt = []models.SoRptData{}
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get data so_id: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, d := range so_data_rpt {
|
|
|
|
|
switch d.Rpt_name {
|
|
|
|
|
case "Pemeriksaan Fisik":
|
|
|
|
|
fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
// fisik = "/birt/run?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Rontgen":
|
|
|
|
|
rontgen = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_xray_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Audiometri":
|
|
|
|
|
@@ -561,7 +565,11 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID strin
|
|
|
|
|
AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL'
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil {
|
|
|
|
|
return returnTab, fmt.Errorf("error get data resume id: %v", err)
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
ResumeData = models.ResumeMCU{}
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get data resume id: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ResumeData.Mcu_ResumeID != "" {
|
|
|
|
|
@@ -599,3 +607,316 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID strin
|
|
|
|
|
|
|
|
|
|
return returnTab, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (tdps *TabDaftarPesertaServices) GetListReportPesertaV5(orderheaderID string, mcuid string, staffname string) ([]models.TabViewReportMcu, error) {
|
|
|
|
|
var returnTab []models.TabViewReportMcu
|
|
|
|
|
var profile_patient models.PatientMCU
|
|
|
|
|
|
|
|
|
|
var tahunan_mcu int
|
|
|
|
|
sqlmgm := `
|
|
|
|
|
SELECT Mgm_McuReportHasil
|
|
|
|
|
FROM mgm_mcu
|
|
|
|
|
WHERE Mgm_McuID = ?
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Get(&tahunan_mcu, sqlmgm, mcuid); err != nil {
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
tahunan_mcu = 1
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get type tahunan mcur: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
lab_rpt := ""
|
|
|
|
|
sql_prof := `
|
|
|
|
|
SELECT
|
|
|
|
|
toh.T_OrderHeaderID,
|
|
|
|
|
toh.T_OrderHeaderLabNumber,
|
|
|
|
|
mp.M_PatientID,
|
|
|
|
|
mp.M_PatientName,
|
|
|
|
|
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
|
|
|
|
|
FROM t_orderheader toh
|
|
|
|
|
JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID
|
|
|
|
|
AND mp.M_PatientIsActive = 'Y'
|
|
|
|
|
WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y'
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Get(&profile_patient, sql_prof, orderheaderID); err != nil {
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
profile_patient = models.PatientMCU{}
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get group result order: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if profile_patient.T_OrderHeaderLabNumber != "" {
|
|
|
|
|
if tahunan_mcu != 1 {
|
|
|
|
|
lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_history_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname
|
|
|
|
|
} else {
|
|
|
|
|
lab_rpt = "/birt/frameset?__report=report/one/lab/rpt_test_portal.rptdesign&__format=pdf&PID=" + profile_patient.T_OrderHeaderID + "&tm=" + profile_patient.Datetime + "&username=" + staffname
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var so_data_rpt []models.SoRptData
|
|
|
|
|
fisik := ""
|
|
|
|
|
rontgen := ""
|
|
|
|
|
ekg := ""
|
|
|
|
|
audiometri := ""
|
|
|
|
|
spirometri := ""
|
|
|
|
|
treadmill := ""
|
|
|
|
|
papsmear := ""
|
|
|
|
|
mikro := ""
|
|
|
|
|
usg := ""
|
|
|
|
|
sds := ""
|
|
|
|
|
|
|
|
|
|
sql_rpt := `
|
|
|
|
|
SELECT DISTINCT group_resultName as rpt_name,
|
|
|
|
|
IFNULL(So_ResultEntryID,0) as so_id,
|
|
|
|
|
T_OrderDetailT_OrderHeaderID as order_id,
|
|
|
|
|
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
|
|
|
|
|
FROM t_orderdetail
|
|
|
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
|
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
|
|
|
|
|
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
|
|
|
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N'
|
|
|
|
|
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
|
|
|
|
|
WHERE
|
|
|
|
|
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
|
|
|
|
|
UNION
|
|
|
|
|
SELECT DISTINCT group_resultName as rpt_name,
|
|
|
|
|
IFNULL(So_ResultEntryID,0) as so_id,
|
|
|
|
|
T_OrderDetailT_OrderHeaderID as order_id,
|
|
|
|
|
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
|
|
|
|
|
FROM t_orderdetail
|
|
|
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
|
|
|
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
|
|
|
T_SamplingSoT_TestID = T_TestID
|
|
|
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
|
|
|
|
|
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
|
|
|
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y'
|
|
|
|
|
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
|
|
|
|
|
WHERE
|
|
|
|
|
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
|
|
|
|
|
UNION
|
|
|
|
|
SELECT DISTINCT T_TestName as rpt_name,
|
|
|
|
|
IFNULL(So_ResultEntryID,0) as so_id,
|
|
|
|
|
T_OrderDetailT_OrderHeaderID as order_id,
|
|
|
|
|
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
|
|
|
|
|
FROM t_orderdetail
|
|
|
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang')
|
|
|
|
|
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
|
|
|
T_SamplingSoT_TestID = T_TestID
|
|
|
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
|
|
|
|
|
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
|
|
|
|
|
Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y'
|
|
|
|
|
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
|
|
|
|
|
WHERE
|
|
|
|
|
T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil'
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Select(&so_data_rpt, sql_rpt, orderheaderID, orderheaderID, orderheaderID); err != nil {
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
so_data_rpt = []models.SoRptData{}
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get data so_id: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, d := range so_data_rpt {
|
|
|
|
|
if tahunan_mcu != 1 {
|
|
|
|
|
switch d.Rpt_name {
|
|
|
|
|
case "Pemeriksaan Fisik":
|
|
|
|
|
// fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
fisik = "/birt/run?__report=report/one/mcu/mcu_fisik_history_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Rontgen":
|
|
|
|
|
rontgen = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_radiology_2_annual_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Audiometri":
|
|
|
|
|
audiometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_audiometri_2_annual_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Spirometri":
|
|
|
|
|
spirometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_spirometri_2_annual_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "ECG":
|
|
|
|
|
ekg = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_ecg_2_annual_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Treadmill":
|
|
|
|
|
treadmill = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_treadmill_2_annual_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Papsmear":
|
|
|
|
|
papsmear = "/birt/frameset?__report=report/one/lab/rpt_test_papsmear_history_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.Order_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Mikro":
|
|
|
|
|
mikro = "/birt/run?__report=report/one/lab/rpt_test_mikro_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.Order_id + "&tm=" + d.Datetime
|
|
|
|
|
case "USG", "USG Abdominal Aorta", "USG Upp & Low Abdomen":
|
|
|
|
|
usg = "/birt/run?__report=report/one/lab/rpt_hasil_so_usg_2_annual_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "SDS":
|
|
|
|
|
if d.So_id != "0" {
|
|
|
|
|
tipval := ""
|
|
|
|
|
tpe := `SELECT So_ResultEntrySDSTypeValue as tipval
|
|
|
|
|
FROM so_resultentrysds_type WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ?
|
|
|
|
|
AND So_ResultEntrySDSTypeIsActive = 'Y' LIMIT 1`
|
|
|
|
|
if err := dbx.Handlex.Get(&tipval, tpe, d.So_id); err != nil {
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get sds type value : %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if tipval != "" {
|
|
|
|
|
sds = "/birt/run?__report=report/one/lab/rpt_hasil_so_sds.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&PType=" + tipval + "&tm=" + d.Datetime
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
switch d.Rpt_name {
|
|
|
|
|
case "Pemeriksaan Fisik":
|
|
|
|
|
// fisik = "/birt/frameset?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
fisik = "/birt/run?__report=report/one/mcu/mcu_fisik_history_v2_portal.rptdesign&__format=pdf&PType=fisik&PLang=1&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Rontgen":
|
|
|
|
|
rontgen = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_xray_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Audiometri":
|
|
|
|
|
audiometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_audiometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Spirometri":
|
|
|
|
|
spirometri = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_spirometri_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "ECG":
|
|
|
|
|
ekg = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_ecg_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Treadmill":
|
|
|
|
|
treadmill = "/birt/frameset?__report=report/one/lab/rpt_hasil_so_treadmill_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Papsmear":
|
|
|
|
|
papsmear = "/birt/frameset?__report=report/one/lab/rpt_test_papsmear_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.Order_id + "&tm=" + d.Datetime
|
|
|
|
|
case "Mikro":
|
|
|
|
|
mikro = "/birt/run?__report=report/one/lab/rpt_test_mikro_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.Order_id + "&tm=" + d.Datetime
|
|
|
|
|
case "USG", "USG Abdominal Aorta", "USG Upp & Low Abdomen":
|
|
|
|
|
usg = "/birt/run?__report=report/one/lab/rpt_hasil_so_usg_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&tm=" + d.Datetime
|
|
|
|
|
case "SDS":
|
|
|
|
|
if d.So_id != "0" {
|
|
|
|
|
tipval := ""
|
|
|
|
|
tpe := `SELECT So_ResultEntrySDSTypeValue as tipval
|
|
|
|
|
FROM so_resultentrysds_type WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ?
|
|
|
|
|
AND So_ResultEntrySDSTypeIsActive = 'Y' LIMIT 1`
|
|
|
|
|
if err := dbx.Handlex.Get(&tipval, tpe, d.So_id); err != nil {
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get sds type value : %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if tipval != "" {
|
|
|
|
|
sds = "/birt/run?__report=report/one/lab/rpt_hasil_so_sds_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + d.So_id + "&PType=" + tipval + "&tm=" + d.Datetime
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var ResumeData models.ResumeMCU
|
|
|
|
|
kesimpulan := ""
|
|
|
|
|
// cover := ""
|
|
|
|
|
|
|
|
|
|
sql_resume := `
|
|
|
|
|
SELECT
|
|
|
|
|
Mcu_ResumeID,
|
|
|
|
|
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
|
|
|
|
|
FROM mcu_resume
|
|
|
|
|
WHERE Mcu_ResumeT_OrderHeaderID = ?
|
|
|
|
|
AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL'
|
|
|
|
|
`
|
|
|
|
|
if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil {
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
ResumeData = models.ResumeMCU{}
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get data resume id: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ResumeData.Mcu_ResumeID != "" {
|
|
|
|
|
if tahunan_mcu != 1 {
|
|
|
|
|
kesimpulan = "/birt/frameset?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
|
|
|
|
|
} else {
|
|
|
|
|
kesimpulan = "/birt/frameset?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_v2_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
|
|
|
|
|
}
|
|
|
|
|
// cover = "/birt/frameset?__report=report/one/mcu/rpt_mcu_resume_cover_portal.rptdesign&__format=pdf&username=" + staffname + "&PID=" + ResumeData.Mcu_ResumeID + "&tm=" + ResumeData.Datetime
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
additional := ""
|
|
|
|
|
if fisik == "" {
|
|
|
|
|
id_add := ""
|
|
|
|
|
sql_additional := `SELECT So_ResultEntryID FROM t_orderdetail
|
|
|
|
|
JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
|
|
|
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestID IN (2571,2573,3450,2572) LIMIT 1`
|
|
|
|
|
if err := dbx.Handlex.Get(&id_add, sql_additional, orderheaderID); err != nil {
|
|
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
return returnTab, fmt.Errorf("error get additional rpt: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if id_add != "" {
|
|
|
|
|
if tahunan_mcu != 1 {
|
|
|
|
|
additional = "/birt/run?__report=report/one/mcu/mcu_fisik_ttbbmata_history_portal.rptdesign&__format=pdf&username=" + staffname + "&PType=fisik&PID=" + id_add + "&PLang=1&tm="
|
|
|
|
|
} else {
|
|
|
|
|
additional = "/birt/run?__report=report/one/mcu/mcu_fisik_ttbbmata_portal.rptdesign&__format=pdf&username=" + staffname + "&PType=fisik&PID=" + id_add + "&PLang=1&tm="
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if fisik != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Fisik", Link: fisik})
|
|
|
|
|
}
|
|
|
|
|
if rontgen != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Rontgen", Link: rontgen})
|
|
|
|
|
}
|
|
|
|
|
if usg != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "USG", Link: usg})
|
|
|
|
|
}
|
|
|
|
|
if ekg != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Elektromedik", Link: ekg})
|
|
|
|
|
}
|
|
|
|
|
if audiometri != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Audiometri", Link: audiometri})
|
|
|
|
|
}
|
|
|
|
|
if spirometri != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Spirometri", Link: spirometri})
|
|
|
|
|
}
|
|
|
|
|
if treadmill != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Treadmill", Link: treadmill})
|
|
|
|
|
}
|
|
|
|
|
if sds != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "SDS", Link: sds})
|
|
|
|
|
}
|
|
|
|
|
if kesimpulan != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Kesimpulan", Link: kesimpulan})
|
|
|
|
|
}
|
|
|
|
|
if lab_rpt != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Lab", Link: lab_rpt})
|
|
|
|
|
}
|
|
|
|
|
if papsmear != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Papsmear", Link: papsmear})
|
|
|
|
|
}
|
|
|
|
|
if mikro != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Mikro", Link: mikro})
|
|
|
|
|
}
|
|
|
|
|
if additional != "" {
|
|
|
|
|
returnTab = append(returnTab, models.TabViewReportMcu{Name: "Tambahan", Link: additional})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return returnTab, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (tdps *TabDaftarPesertaServices) GetListAttachmentFile(orderheaderID string) ([]models.AttachmentFIle, error) {
|
|
|
|
|
list_file := []models.AttachmentFIle{}
|
|
|
|
|
|
|
|
|
|
sql := `
|
|
|
|
|
SELECT
|
|
|
|
|
File_AttachmentID,
|
|
|
|
|
File_AttachmentFileName
|
|
|
|
|
FROM t_orderheader
|
|
|
|
|
JOIN file_attachment ON File_AttachmentT_OrderHeaderID = T_OrderHeaderID
|
|
|
|
|
AND T_OrderHeaderID = ? AND File_AttachmentIsActive = 'Y'
|
|
|
|
|
ORDER BY File_AttachmentID ASC`
|
|
|
|
|
|
|
|
|
|
if err := dbx.Handlex.Select(&list_file, sql, orderheaderID); err != nil {
|
|
|
|
|
return list_file, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
url := "/one-media/one-files/"
|
|
|
|
|
for i, v := range list_file {
|
|
|
|
|
list_file[i].Link = url + v.File_AttachmentFileName
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return list_file, nil
|
|
|
|
|
}
|
|
|
|
|
|