mdpasien add edit

This commit is contained in:
Sas Andy
2024-06-04 10:58:24 +07:00
parent 2e61efa16f
commit d6fb303970
30 changed files with 4126 additions and 166 deletions

View File

@@ -6,11 +6,16 @@ import (
navbarmenu "cpone/component/navbar"
"cpone/component/pagination"
sidebaruserprofile "cpone/component/sidebar_user_profile"
customtoastv2 "cpone/component/toastbootstrap"
"cpone/models"
"cpone/services"
"cpone/utils"
dev_mdpasienview "cpone/views/dev/mdpasien"
"net/http"
"path/filepath"
"runtime"
"strconv"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
@@ -23,6 +28,19 @@ type MdPasienServices interface {
currentPage int,
rowPerPage int) ([]models.Pasien, int, error)
GetMdPasienBreadCrumb(title string) (models.BreadCrumbV1, error)
GetPasienTitle() ([]models.SapaanPasien, error)
Addpasien(prm models.PasienFormServicesPrm) (string, error)
GetPasienByID(id string) (*models.Pasien, error)
GetPasienTermonology() (
sapaan []models.SapaanPasien,
gender []models.TerminologyV0,
goldar []models.TerminologyV0,
rh []models.TerminologyV0,
pendidikan []models.TerminologyV0,
etnis []models.TerminologyV0,
idType []models.TerminologyV0,
err error)
EditPasien(prm models.PasienFormServicesPrm) (string, error)
}
func NewMdPasienHandler(us MdPasienServices) *MdPasienHandler {
@@ -35,6 +53,20 @@ type MdPasienHandler struct {
MdPasienServices MdPasienServices
}
func (lh *MdPasienHandler) GetFotoProfile(c echo.Context) error {
// Mengambil nama file dari parameter URL
filename := c.Param("filename")
_, b, _, _ := runtime.Caller(0)
basepath := filepath.Dir(b)
println("Basepath")
println(basepath)
// Menentukan path file (relative to the dev/services folder)
filePath := filepath.Join(basepath, "..", "..", "uploads", "patient", filename)
// Mengembalikan file sebagai respon
return c.File(filePath)
}
func (lh *MdPasienHandler) HandleShowMdPasienScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
dataMenu, err := services.GetMenu()
@@ -111,9 +143,9 @@ func (lh *MdPasienHandler) HandleShowMdPasienScreen(c echo.Context) error {
}
tablePasien := dev_mdpasienview.TablePasien(pasienlist, tablePasienID,
"getEdit",
"trgtedt",
"swpedt",
"/dev/md/pasien/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
"getdlt",
"trgtdlt",
@@ -132,6 +164,95 @@ func (lh *MdPasienHandler) HandleShowMdPasienScreen(c echo.Context) error {
dev_mdpasienview.BeforeRequestContent(),
dev_mdpasienview.AfterRequestContent())
//Form add
//Sapaan
sapaanList, genderList, goldarList, rhesusList, pendidikanList, etnisList, idTypeList, err := lh.MdPasienServices.GetPasienTermonology()
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET PASIEN TERMINOLOGY",
zap.Any("error", err),
)
return err
}
sapaanOpt := dev_mdpasienview.ListItemSapaan(sapaanList, 0)
genderOpt := dev_mdpasienview.ListItemTerminology(genderList, "")
goldarOpt := dev_mdpasienview.ListItemTerminology(goldarList, "")
rhesusOpt := dev_mdpasienview.ListItemTerminology(rhesusList, "")
pendidikanOpt := dev_mdpasienview.ListItemTerminology(pendidikanList, "")
etnisOpt := dev_mdpasienview.ListItemTerminology(etnisList, "")
idTypeOpt := dev_mdpasienview.ListItemTerminology(idTypeList, "")
formAddBodyCmp := dev_mdpasienview.BodyFormPasien(
models.PasineFormBodyComponent{
IDComponentUpload: "addFotoProfile",
IDForm: dialogAddBodyID,
SapaanItems: sapaanOpt,
GenderItems: genderOpt,
GoldarItems: goldarOpt,
RhesusItems: rhesusOpt,
PendidikanItems: pendidikanOpt,
EtnisItems: etnisOpt,
IDItems: idTypeOpt,
HxSwapOOB: "true",
},
)
formAddAction := dev_mdpasienview.ActionFormPasien("/dev/md/pasien/closeaddform", "#"+dialogAddBodyID, "outerHtml", dialogAddID)
formAddBtnClose := dev_mdpasienview.BtnCloseFormPasien("/dev/md/pasien/closeaddform", "#"+dialogAddBodyID, "outerHtml", dialogAddID)
formAddCmp := dev_mdpasienview.PasienForm(models.PasienFormComponent{
IDComponent: "",
Link: "/dev/md/pasien/add",
HxTarget: "#" + dialogAddBodyID,
HxSwap: "none",
HxInclude: "#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage" + paginationID,
ModalID: dialogAddID,
ModalTitle: "New-Pasien",
DialogBody: formAddBodyCmp,
DialogAction: formAddAction,
ButtonCLose: formAddBtnClose,
})
formEditBodyCmp := dev_mdpasienview.BodyFormPasien(
models.PasineFormBodyComponent{
IDComponentUpload: "editFotoProfile",
IDForm: dialogEditBodyID,
SapaanItems: sapaanOpt,
GenderItems: genderOpt,
GoldarItems: goldarOpt,
RhesusItems: rhesusOpt,
PendidikanItems: pendidikanOpt,
EtnisItems: etnisOpt,
IDItems: idTypeOpt,
},
)
formEditAction := dev_mdpasienview.ActionFormPasien("/dev/md/pasien/closeeditform", "#"+dialogEditBodyID, "outerHtml", dialogEditID)
formEditBtnClose := dev_mdpasienview.BtnCloseFormPasien("/dev/md/pasien/closeeditform", "#"+dialogEditBodyID, "outerHtml", dialogEditID)
formEditCmp := dev_mdpasienview.PasienForm(models.PasienFormComponent{
IDComponent: "",
Link: "/dev/md/pasien/edit",
HxTarget: "#" + dialogEditBodyID,
HxSwap: "outerHTML",
HxInclude: "#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage" + paginationID,
ModalID: dialogEditID,
ModalTitle: "Edit-Pasien",
DialogBody: formEditBodyCmp,
DialogAction: formEditAction,
ButtonCLose: formEditBtnClose,
})
//Delete
formDeleteBodyCmp := dev_mdpasienview.DeleteConfirmationBody("", dialogDeleteBodyID, "Apakah anda yakin menghapus pasien berikut ?", []string{"PID", "NAMA"}, []string{"", ""}, dev_mdpasienview.JsHideModal(""))
formDeleteAction := dev_mdpasienview.ActionFormPasien("/dev/md/pasien/closeeditform", "#"+dialogEditBodyID, "outerHtml", dialogEditID)
formDeleteBtnClose := dev_mdpasienview.BtnCloseFormPasien("/dev/md/pasien/closeeditform", "#"+dialogEditBodyID, "outerHtml", dialogEditID)
formDeleteCmp := dev_mdpasienview.PasienForm(models.PasienFormComponent{
IDComponent: "",
Link: "",
HxTarget: "#" + dialogDeleteBodyID,
HxSwap: "outerHTML",
HxInclude: "#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage" + paginationID,
ModalID: dialogDeleteID,
ModalTitle: "Edit-Pasien",
DialogBody: formDeleteBodyCmp,
DialogAction: formDeleteAction,
ButtonCLose: formDeleteBtnClose,
})
//Pasien Screen
cmpPasienContent := dev_mdpasienview.MdPasienScreen(
tablePasienID,
@@ -146,9 +267,9 @@ func (lh *MdPasienHandler) HandleShowMdPasienScreen(c echo.Context) error {
tablePasien,
filterPasien,
paginationPasien,
breadcrumbComponent,
breadcrumbComponent,
breadcrumbComponent)
formAddCmp,
formEditCmp,
formDeleteCmp)
jsMDpasien := dev_mdpasienview.JsMdPasien()
cssMdPasien := dev_mdpasienview.CssMdPasien()
viewMdPasienScreen := dev_mdpasienview.ShowMdPasienScreen("Master Pasien",
@@ -163,7 +284,7 @@ func (lh *MdPasienHandler) HandleSearchMdPasien(c echo.Context) error {
logger, _ := zap.NewProduction()
var retval []templ.Component
search := c.QueryParam("search")
// dialogEditBodyID := c.QueryParam("dialogEditBodyID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
// dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
tableID := c.QueryParam("tableID")
paginationID := c.QueryParam("paginationID")
@@ -178,9 +299,9 @@ func (lh *MdPasienHandler) HandleSearchMdPasien(c echo.Context) error {
//Bahan Table
tablePasien := dev_mdpasienview.TablePasien(pasienList, tableID,
"getEdit",
"trgtedt",
"swpedt",
"/dev/md/pasien/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
"getdlt",
"trgtdlt",
@@ -206,7 +327,7 @@ func (lh *MdPasienHandler) HandlePaginationMdPasien(c echo.Context) error {
logger, _ := zap.NewProduction()
var retval []templ.Component
search := c.QueryParam("search")
// dialogEditBodyID := c.QueryParam("dialogEditBodyID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
// dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
pageparam := c.QueryParam("page")
tableID := c.QueryParam("tableID")
@@ -229,9 +350,9 @@ func (lh *MdPasienHandler) HandlePaginationMdPasien(c echo.Context) error {
zap.Any("totalPage", totalPage),
)
tablePasien := dev_mdpasienview.TablePasien(pasienList, tableID,
"getEdit",
"trgtedt",
"swpedt",
"/dev/md/pasien/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
"getdlt",
"trgtdlt",
@@ -253,3 +374,640 @@ func (lh *MdPasienHandler) HandlePaginationMdPasien(c echo.Context) error {
retval = append(retval, paginationPasien)
return utils.ViewMulti(c, retval)
}
func (lh *MdPasienHandler) HandleAddMdPasien(c echo.Context) error {
dialogAddBodyID := c.FormValue("dialogAddBodyID")
dialogEditBodyID := c.FormValue("dialogEditBodyID")
dialogAddID := c.FormValue("dialogAddID")
paginationID := c.FormValue("paginationID")
tableID := c.FormValue("tableID")
search := c.FormValue("search")
currpagePrm := c.FormValue("currpage" + paginationID)
page, err := strconv.Atoi(currpagePrm)
if err != nil {
toast := customtoastv2.CustomToastV2Show("Gagal", err.Error(), "danger")
return utils.View(c, toast)
}
logger, _ := zap.NewProduction()
file, err := c.FormFile("pasienprofile")
if err != nil && err != http.ErrMissingFile {
toast := customtoastv2.CustomToastV2Show("Gagal", err.Error(), "danger")
return utils.View(c, toast)
}
prm := models.PasienFormServicesPrm{
Sapaan: c.FormValue("sapaan"),
Imbuhanawal: c.FormValue("imbuhanawal"),
Nama: c.FormValue("nama"),
Imbuhanakhir: c.FormValue("imbuhanakhir"),
Gender: c.FormValue("gender"),
Dob: c.FormValue("dob"),
Goldar: c.FormValue("goldar"),
Rhesus: c.FormValue("rhesus"),
Pekerjaan: c.FormValue("pekerjaan"),
Departement: c.FormValue("departement"),
Posisi: c.FormValue("posisi"),
Pendidikan: c.FormValue("pendidikan"),
Nationality: c.FormValue("nationality"),
Etnis: c.FormValue("etnis"),
Identitas: c.FormValue("identitas"),
Nomoridentitas: c.FormValue("nomoridentitas"),
Hp: c.FormValue("hp"),
Tahun: c.FormValue("tahun"),
Bulan: c.FormValue("bulan"),
Hari: c.FormValue("hari"),
Email: c.FormValue("email"),
UserID: "1",
Foto: file,
}
defer logger.Sync()
logger.Info("PARAM ADD PASIEN",
zap.Any("error", prm),
)
validationArr := []string{}
sapaanValidation := ""
// imbuhanawalValidation := ""
namaValidation := ""
// imbuhanakhirValidation := ""
genderValidation := ""
dobValidation := ""
// goldarValidation := ""
// rhesusValidation := ""
// pekerjaanValidation := ""
// departementValidation := ""
// posisiValidation := ""
// pendidikanValidation := ""
nationalityValidation := ""
// etnisValidation := ""
identitasValidation := ""
nomoridentitasValidation := ""
hpValidation := ""
// emailValidation := ""
// userIDValidation := ""
formValidation := ""
if strings.TrimSpace(prm.Nama) == "" {
namaValidation = "Nama tidak boleh kosong"
validationArr = append(validationArr, namaValidation)
}
if strings.TrimSpace(prm.Gender) == "" {
genderValidation = "Gender tidak boleh kosong"
validationArr = append(validationArr, genderValidation)
}
if strings.TrimSpace(prm.Dob) == "" {
dobValidation = "Tanggal Lahir tidak boleh kosong"
validationArr = append(validationArr, dobValidation)
}
if prm.Sapaan == "" {
sapaanValidation = "Sapaan tidak boleh kosong"
validationArr = append(validationArr, sapaanValidation)
}
if prm.Hp == "" {
hpValidation = "No Hp tidak boleh kosong"
validationArr = append(validationArr, hpValidation)
}
if prm.Identitas == "" {
identitasValidation = "Pilih salah satu tipe identitas"
validationArr = append(validationArr, identitasValidation)
}
if strings.TrimSpace(prm.Nomoridentitas) == "" {
nomoridentitasValidation = "Nomor identitas tidak boleh kosong"
validationArr = append(validationArr, nomoridentitasValidation)
}
if prm.Nationality == "" {
nationalityValidation = "Pilih kewarganegaraan"
validationArr = append(validationArr, nationalityValidation)
}
selectedSapaan := 0
if prm.Sapaan != "" {
selectedSapaan, err = strconv.Atoi(prm.Sapaan)
if err != nil {
defer logger.Sync()
logger.Info("ERRO SELECTED SAPAAN",
zap.Any("error", err),
)
return err
}
}
sapaanList, genderList, goldarList, rhesusList, pendidikanList, etnisList, idTypeList, err := lh.MdPasienServices.GetPasienTermonology()
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET PASIEN TERMINOLOGY",
zap.Any("error", err),
)
return err
}
sapaanOpt := dev_mdpasienview.ListItemSapaan(sapaanList, selectedSapaan)
genderOpt := dev_mdpasienview.ListItemTerminology(genderList, prm.Gender)
goldarOpt := dev_mdpasienview.ListItemTerminology(goldarList, prm.Goldar)
rhesusOpt := dev_mdpasienview.ListItemTerminology(rhesusList, prm.Rhesus)
pendidikanOpt := dev_mdpasienview.ListItemTerminology(pendidikanList, prm.Pendidikan)
etnisOpt := dev_mdpasienview.ListItemTerminology(etnisList, prm.Etnis)
idTypeOpt := dev_mdpasienview.ListItemTerminology(idTypeList, prm.Identitas)
if len(validationArr) > 0 {
formValidation = "Silahkan cek ulang form"
formAddBodyCmp := dev_mdpasienview.BodyFormPasien(
models.PasineFormBodyComponent{
IDComponentUpload: utils.GenerateRandomID("k"),
HxSwapOOB: "true",
IDForm: dialogAddBodyID,
SapaanErr: sapaanValidation,
ImbuhanAwalErr: "",
ImbuhanAwalVal: prm.Imbuhanawal,
NamaVal: prm.Nama,
NamaErr: namaValidation,
ImbuhanAkhirErr: "",
ImbuhanAkhirVal: prm.Imbuhanakhir,
DobErr: dobValidation,
DobVal: prm.Dob,
YearVal: prm.Tahun,
MonthVal: prm.Bulan,
DayVal: prm.Hari,
HpErr: hpValidation,
IDErr: identitasValidation,
NoIDhVal: prm.Nomoridentitas,
NoIDErr: nomoridentitasValidation,
SapaanItems: sapaanOpt,
GenderItems: genderOpt,
GoldarItems: goldarOpt,
GenderErr: genderValidation,
RhesusItems: rhesusOpt,
PendidikanItems: pendidikanOpt,
EtnisItems: etnisOpt,
IDItems: idTypeOpt,
PekerjaanVal: prm.Pekerjaan,
DepartementVal: prm.Departement,
PosisiVal: prm.Posisi,
HpVal: prm.Hp,
EmailVal: prm.Email,
CitizenshipVal: prm.Nationality,
},
)
defer logger.Sync()
logger.Info("WARNING FORM",
zap.Any("Warning", validationArr),
)
toast := customtoastv2.CustomToastV2Show("Warning", formValidation, "warning")
return utils.ViewMulti(c, []templ.Component{toast, formAddBodyCmp})
}
numbering, err := lh.MdPasienServices.Addpasien(prm)
if err != nil {
toast := customtoastv2.CustomToastV2Show("Gagal", err.Error(), "danger")
return utils.View(c, toast)
}
sapaanOptReset := dev_mdpasienview.ListItemSapaan(sapaanList, 0)
genderOptReset := dev_mdpasienview.ListItemTerminology(genderList, "")
goldarOptReset := dev_mdpasienview.ListItemTerminology(goldarList, "")
rhesusOptReset := dev_mdpasienview.ListItemTerminology(rhesusList, "")
pendidikanOptReset := dev_mdpasienview.ListItemTerminology(pendidikanList, "")
etnisOptReset := dev_mdpasienview.ListItemTerminology(etnisList, "")
idTypeOptReset := dev_mdpasienview.ListItemTerminology(idTypeList, "")
formAddBodyCmp := dev_mdpasienview.BodyFormPasien(
models.PasineFormBodyComponent{
IDComponentUpload: utils.GenerateRandomID("k"),
HxSwapOOB: "true",
IDForm: dialogAddBodyID,
SapaanItems: sapaanOptReset,
GenderItems: genderOptReset,
GoldarItems: goldarOptReset,
RhesusItems: rhesusOptReset,
PendidikanItems: pendidikanOptReset,
EtnisItems: etnisOptReset,
IDItems: idTypeOptReset,
HxOnLoad: dev_mdpasienview.JsHideModal("#" + dialogAddID),
},
)
//table component
pasienlist, totalPage, err := lh.MdPasienServices.GetListMdPasien(search, page, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERRO GET DATA PASIEN",
zap.Any("error", err),
)
return err
}
tablePasien := dev_mdpasienview.TablePasien(pasienlist, tableID,
"/dev/md/pasien/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
"getdlt",
"trgtdlt",
"swpdlt",
"#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID)
//Pagination
paginationPasien := pagination.PaginationV3(totalPage, page,
"/dev/md/pasien/pagination",
paginationID,
"#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
"#"+paginationID,
"outerHTML",
"",
"true",
dev_mdpasienview.BeforeRequestContent(),
dev_mdpasienview.AfterRequestContent())
toast := customtoastv2.CustomToastV2Show("Success", "Berhasil Add Pasien "+numbering, "success")
return utils.ViewMulti(c, []templ.Component{toast, tablePasien, paginationPasien, formAddBodyCmp})
}
func (lh *MdPasienHandler) HandleCloseModalMdPasien(c echo.Context) error {
logger, _ := zap.NewProduction()
dialogAddBodyID := c.FormValue("dialogAddBodyID")
dialogAddID := c.FormValue("dialogAddID")
selectedSapaan := 0
sapaanList, genderList, goldarList, rhesusList, pendidikanList, etnisList, idTypeList, err := lh.MdPasienServices.GetPasienTermonology()
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET PASIEN TERMINOLOGY",
zap.Any("error", err),
)
return err
}
sapaanOpt := dev_mdpasienview.ListItemSapaan(sapaanList, selectedSapaan)
genderOpt := dev_mdpasienview.ListItemTerminology(genderList, "")
goldarOpt := dev_mdpasienview.ListItemTerminology(goldarList, "")
rhesusOpt := dev_mdpasienview.ListItemTerminology(rhesusList, "")
pendidikanOpt := dev_mdpasienview.ListItemTerminology(pendidikanList, "")
etnisOpt := dev_mdpasienview.ListItemTerminology(etnisList, "")
idTypeOpt := dev_mdpasienview.ListItemTerminology(idTypeList, "")
formAddBodyCmp := dev_mdpasienview.BodyFormPasien(
models.PasineFormBodyComponent{
IDComponentUpload: utils.GenerateRandomID("kjh"),
HxSwapOOB: "true",
IDForm: dialogAddBodyID,
SapaanItems: sapaanOpt,
GenderItems: genderOpt,
GoldarItems: goldarOpt,
RhesusItems: rhesusOpt,
PendidikanItems: pendidikanOpt,
EtnisItems: etnisOpt,
IDItems: idTypeOpt,
HxOnLoad: dev_mdpasienview.JsHideModal("#" + dialogAddID),
},
)
return utils.ViewMulti(c, []templ.Component{formAddBodyCmp})
}
func (lh *MdPasienHandler) HandleOpenEditMdPasien(c echo.Context) error {
logger, _ := zap.NewProduction()
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
dialogEditID := c.QueryParam("dialogEditID")
id := c.QueryParam("id")
logger.Info("prm open edit",
zap.Any("prm", c.QueryParams()),
)
pasien, err := lh.MdPasienServices.GetPasienByID(id)
if err != nil {
toast := customtoastv2.CustomToastV2Show("Error", "Error get data Pasien ", "danger")
return utils.View(c, toast)
}
sapaanList, genderList, goldarList, rhesusList, pendidikanList, etnisList, idTypeList, err := lh.MdPasienServices.GetPasienTermonology()
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET PASIEN TERMINOLOGY",
zap.Any("error", err),
)
return err
}
selectedSapaan := 0
if pasien.M_PatientM_TitleID != "" {
selectedSapaan, err = strconv.Atoi(pasien.M_PatientM_TitleID)
if err != nil {
defer logger.Sync()
logger.Info("ERRO SELECTED SAPAAN",
zap.Any("error", err),
)
return err
}
}
years, month, day, err := utils.CalculateStringAge(pasien.M_PatientDOB)
if err != nil {
defer logger.Sync()
logger.Info("ERRO CALCULATE AGE",
zap.Any("error", err),
)
return err
}
sapaanOpt := dev_mdpasienview.ListItemSapaan(sapaanList, selectedSapaan)
genderOpt := dev_mdpasienview.ListItemTerminology(genderList, pasien.M_PatientGender+"@")
goldarOpt := dev_mdpasienview.ListItemTerminology(goldarList, pasien.M_PatientBloodTypeCode+"@"+pasien.M_PatientBloodTypeSystem)
rhesusOpt := dev_mdpasienview.ListItemTerminology(rhesusList, pasien.M_PatientBloodRhCode+"@"+pasien.M_PatientBloodRhSystem)
pendidikanOpt := dev_mdpasienview.ListItemTerminology(pendidikanList, pasien.M_PatientEducationCode+"@"+pasien.M_PatientEducationSystem)
etnisOpt := dev_mdpasienview.ListItemTerminology(etnisList, pasien.M_PatientEtnicCode+"@"+pasien.M_PatientEtnicSystem)
idTypeOpt := dev_mdpasienview.ListItemTerminology(idTypeList, pasien.M_PatientIdentifierCode+"@"+pasien.M_PatientIdentifierSystem)
linkFoto := ""
if pasien.M_PatientPhoto != "" {
linkFoto = "/dev/md/pasien/foto/" + pasien.M_PatientPhoto
}
formEditBodyCmp := dev_mdpasienview.BodyFormPasien(
models.PasineFormBodyComponent{
IDComponentUpload: utils.GenerateRandomID("kjh"),
YearVal: strconv.Itoa(years),
MonthVal: strconv.Itoa(month),
DayVal: strconv.Itoa(day),
IDForm: dialogEditBodyID,
ImbuhanAwalVal: pasien.M_PatientPrefix,
NamaVal: pasien.M_PatientName,
ImbuhanAkhirVal: pasien.M_PatientSuffix,
DobVal: pasien.M_PatientDOB,
NoIDhVal: pasien.M_PatientIdentifierValue,
SapaanItems: sapaanOpt,
GenderItems: genderOpt,
GoldarItems: goldarOpt,
RhesusItems: rhesusOpt,
PendidikanItems: pendidikanOpt,
EtnisItems: etnisOpt,
IDItems: idTypeOpt,
PekerjaanVal: pasien.M_PatientJob,
DepartementVal: pasien.M_PatientDivisi,
PosisiVal: pasien.M_PatientPosisi,
HpVal: pasien.M_PatientHp,
EmailVal: pasien.M_PatientEmail,
LinkFoto: linkFoto,
IDPasien: strconv.Itoa(pasien.M_PatientID),
HxOnLoad: dev_mdpasienview.JsShowModal("#" + dialogEditID),
CitizenshipVal: pasien.M_PatientCitizenship,
})
return utils.View(c, formEditBodyCmp)
}
func (lh *MdPasienHandler) HandleCloseModalEditMdPasien(c echo.Context) error {
logger, _ := zap.NewProduction()
dialogEditBodyID := c.FormValue("dialogEditBodyID")
dialogEditID := c.FormValue("dialogEditID")
selectedSapaan := 0
sapaanList, genderList, goldarList, rhesusList, pendidikanList, etnisList, idTypeList, err := lh.MdPasienServices.GetPasienTermonology()
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET PASIEN TERMINOLOGY",
zap.Any("error", err),
)
return err
}
sapaanOpt := dev_mdpasienview.ListItemSapaan(sapaanList, selectedSapaan)
genderOpt := dev_mdpasienview.ListItemTerminology(genderList, "")
goldarOpt := dev_mdpasienview.ListItemTerminology(goldarList, "")
rhesusOpt := dev_mdpasienview.ListItemTerminology(rhesusList, "")
pendidikanOpt := dev_mdpasienview.ListItemTerminology(pendidikanList, "")
etnisOpt := dev_mdpasienview.ListItemTerminology(etnisList, "")
idTypeOpt := dev_mdpasienview.ListItemTerminology(idTypeList, "")
formEditBodyCmp := dev_mdpasienview.BodyFormPasien(
models.PasineFormBodyComponent{
IDComponentUpload: utils.GenerateRandomID("kjh"),
IDForm: dialogEditBodyID,
SapaanItems: sapaanOpt,
GenderItems: genderOpt,
GoldarItems: goldarOpt,
RhesusItems: rhesusOpt,
PendidikanItems: pendidikanOpt,
EtnisItems: etnisOpt,
IDItems: idTypeOpt,
HxOnLoad: dev_mdpasienview.JsHideModal("#" + dialogEditID),
},
)
return utils.ViewMulti(c, []templ.Component{formEditBodyCmp})
}
func (lh *MdPasienHandler) HandleEditMdPasien(c echo.Context) error {
dialogEditBodyID := c.FormValue("dialogEditBodyID")
dialogEditID := c.FormValue("dialogEditID")
paginationID := c.FormValue("paginationID")
tableID := c.FormValue("tableID")
search := c.FormValue("search")
currpagePrm := c.FormValue("currpage" + paginationID)
page, err := strconv.Atoi(currpagePrm)
if err != nil {
toast := customtoastv2.CustomToastV2Show("Gagal", err.Error(), "danger")
return utils.View(c, toast)
}
logger, _ := zap.NewProduction()
file, err := c.FormFile("pasienprofile")
if err != nil && err != http.ErrMissingFile {
toast := customtoastv2.CustomToastV2Show("Gagal", err.Error(), "danger")
return utils.View(c, toast)
}
prm := models.PasienFormServicesPrm{
Sapaan: c.FormValue("sapaan"),
Imbuhanawal: c.FormValue("imbuhanawal"),
Nama: c.FormValue("nama"),
Imbuhanakhir: c.FormValue("imbuhanakhir"),
Gender: c.FormValue("gender"),
Dob: c.FormValue("dob"),
Goldar: c.FormValue("goldar"),
Rhesus: c.FormValue("rhesus"),
Pekerjaan: c.FormValue("pekerjaan"),
Departement: c.FormValue("departement"),
Posisi: c.FormValue("posisi"),
Pendidikan: c.FormValue("pendidikan"),
Nationality: c.FormValue("nationality"),
Etnis: c.FormValue("etnis"),
Identitas: c.FormValue("identitas"),
Nomoridentitas: c.FormValue("nomoridentitas"),
Hp: c.FormValue("hp"),
Tahun: c.FormValue("tahun"),
Bulan: c.FormValue("bulan"),
Hari: c.FormValue("hari"),
Email: c.FormValue("email"),
UserID: "1",
Foto: file,
PasienID: c.FormValue("pasienid"),
}
defer logger.Sync()
logger.Info("PARAM Edit PASIEN",
zap.Any("error", prm),
)
validationArr := []string{}
sapaanValidation := ""
// imbuhanawalValidation := ""
namaValidation := ""
// imbuhanakhirValidation := ""
genderValidation := ""
dobValidation := ""
// goldarValidation := ""
// rhesusValidation := ""
// pekerjaanValidation := ""
// departementValidation := ""
// posisiValidation := ""
// pendidikanValidation := ""
nationalityValidation := ""
// etnisValidation := ""
identitasValidation := ""
nomoridentitasValidation := ""
hpValidation := ""
// emailValidation := ""
// userIDValidation := ""
formValidation := ""
if strings.TrimSpace(prm.Nama) == "" {
namaValidation = "Nama tidak boleh kosong"
validationArr = append(validationArr, namaValidation)
}
if strings.TrimSpace(prm.Gender) == "" {
genderValidation = "Gender tidak boleh kosong"
validationArr = append(validationArr, genderValidation)
}
if strings.TrimSpace(prm.Dob) == "" {
dobValidation = "Tanggal Lahir tidak boleh kosong"
validationArr = append(validationArr, dobValidation)
}
if prm.Sapaan == "" {
sapaanValidation = "Sapaan tidak boleh kosong"
validationArr = append(validationArr, sapaanValidation)
}
if prm.Hp == "" {
hpValidation = "No Hp tidak boleh kosong"
validationArr = append(validationArr, hpValidation)
}
if prm.Identitas == "" {
identitasValidation = "Pilih salah satu tipe identitas"
validationArr = append(validationArr, identitasValidation)
}
if strings.TrimSpace(prm.Nomoridentitas) == "" {
nomoridentitasValidation = "Nomor identitas tidak boleh kosong"
validationArr = append(validationArr, nomoridentitasValidation)
}
if prm.Nationality == "" {
nationalityValidation = "Pilih kewarganegaraan"
validationArr = append(validationArr, nationalityValidation)
}
selectedSapaan := 0
if prm.Sapaan != "" {
selectedSapaan, err = strconv.Atoi(prm.Sapaan)
if err != nil {
defer logger.Sync()
logger.Info("ERRO SELECTED SAPAAN",
zap.Any("error", err),
)
return err
}
}
sapaanList, genderList, goldarList, rhesusList, pendidikanList, etnisList, idTypeList, err := lh.MdPasienServices.GetPasienTermonology()
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET PASIEN TERMINOLOGY",
zap.Any("error", err),
)
return err
}
sapaanOpt := dev_mdpasienview.ListItemSapaan(sapaanList, selectedSapaan)
genderOpt := dev_mdpasienview.ListItemTerminology(genderList, prm.Gender)
goldarOpt := dev_mdpasienview.ListItemTerminology(goldarList, prm.Goldar)
rhesusOpt := dev_mdpasienview.ListItemTerminology(rhesusList, prm.Rhesus)
pendidikanOpt := dev_mdpasienview.ListItemTerminology(pendidikanList, prm.Pendidikan)
etnisOpt := dev_mdpasienview.ListItemTerminology(etnisList, prm.Etnis)
idTypeOpt := dev_mdpasienview.ListItemTerminology(idTypeList, prm.Identitas)
formEditBodyCmp := dev_mdpasienview.BodyFormPasien(
models.PasineFormBodyComponent{
IDPasien: prm.PasienID,
IDComponentUpload: utils.GenerateRandomID("k"),
IDForm: dialogEditBodyID,
SapaanErr: sapaanValidation,
ImbuhanAwalErr: "",
ImbuhanAwalVal: prm.Imbuhanawal,
NamaVal: prm.Nama,
NamaErr: namaValidation,
ImbuhanAkhirErr: "",
ImbuhanAkhirVal: prm.Imbuhanakhir,
DobErr: dobValidation,
DobVal: prm.Dob,
YearVal: prm.Tahun,
MonthVal: prm.Bulan,
DayVal: prm.Hari,
HpErr: hpValidation,
IDErr: identitasValidation,
NoIDhVal: prm.Nomoridentitas,
NoIDErr: nomoridentitasValidation,
SapaanItems: sapaanOpt,
GenderItems: genderOpt,
GoldarItems: goldarOpt,
GenderErr: genderValidation,
RhesusItems: rhesusOpt,
PendidikanItems: pendidikanOpt,
EtnisItems: etnisOpt,
IDItems: idTypeOpt,
PekerjaanVal: prm.Pekerjaan,
DepartementVal: prm.Departement,
PosisiVal: prm.Posisi,
HpVal: prm.Hp,
EmailVal: prm.Email,
CitizenshipVal: prm.Nationality,
},
)
if len(validationArr) > 0 {
formValidation = "Silahkan cek ulang form"
defer logger.Sync()
logger.Info("WARNING FORM",
zap.Any("Warning", validationArr),
)
toast := customtoastv2.CustomToastV2Show("Warning", formValidation, "warning")
return utils.ViewMulti(c, []templ.Component{toast, formEditBodyCmp})
}
_, err = lh.MdPasienServices.EditPasien(prm)
if err != nil {
toast := customtoastv2.CustomToastV2Show("Gagal", err.Error(), "danger")
return utils.ViewMulti(c, []templ.Component{toast, formEditBodyCmp})
}
sapaanOptReset := dev_mdpasienview.ListItemSapaan(sapaanList, 0)
genderOptReset := dev_mdpasienview.ListItemTerminology(genderList, "")
goldarOptReset := dev_mdpasienview.ListItemTerminology(goldarList, "")
rhesusOptReset := dev_mdpasienview.ListItemTerminology(rhesusList, "")
pendidikanOptReset := dev_mdpasienview.ListItemTerminology(pendidikanList, "")
etnisOptReset := dev_mdpasienview.ListItemTerminology(etnisList, "")
idTypeOptReset := dev_mdpasienview.ListItemTerminology(idTypeList, "")
formEditBodyCmp = dev_mdpasienview.BodyFormPasien(
models.PasineFormBodyComponent{
IDPasien: prm.PasienID,
IDComponentUpload: utils.GenerateRandomID("k"),
IDForm: dialogEditBodyID,
SapaanItems: sapaanOptReset,
GenderItems: genderOptReset,
GoldarItems: goldarOptReset,
RhesusItems: rhesusOptReset,
PendidikanItems: pendidikanOptReset,
EtnisItems: etnisOptReset,
IDItems: idTypeOptReset,
HxOnLoad: dev_mdpasienview.JsHideModal("#" + dialogEditID),
},
)
//table component
pasienlist, totalPage, err := lh.MdPasienServices.GetListMdPasien(search, page, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERRO GET DATA PASIEN",
zap.Any("error", err),
)
return err
}
tablePasien := dev_mdpasienview.TablePasien(pasienlist, tableID,
"/dev/md/pasien/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
"getdlt",
"trgtdlt",
"swpdlt",
"#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID)
//Pagination
paginationPasien := pagination.PaginationV3(totalPage, page,
"/dev/md/pasien/pagination",
paginationID,
"#filtersearch, #tableID, #paginationID, #dialogAddID, #dialogAddBodyID, #dialogEditID, #dialogEditBodyID, #dialogDeleteBodyID, #dialogDeleteID, #currpage"+paginationID,
"#"+paginationID,
"outerHTML",
"",
"true",
dev_mdpasienview.BeforeRequestContent(),
dev_mdpasienview.AfterRequestContent())
toast := customtoastv2.CustomToastV2Show("Success", "Berhasil Edit Pasien "+prm.Nama, "success")
return utils.ViewMulti(c, []templ.Component{toast, tablePasien, paginationPasien, formEditBodyCmp})
}

View File

@@ -328,5 +328,11 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
dev.GET("/md/pasien", devMdPasienHandlers.HandleShowMdPasienScreen)
dev.GET("/md/pasien/filter", devMdPasienHandlers.HandleSearchMdPasien)
dev.GET("/md/pasien/pagination", devMdPasienHandlers.HandlePaginationMdPasien)
dev.POST("/md/pasien/add", devMdPasienHandlers.HandleAddMdPasien)
dev.POST("/md/pasien/closeaddform", devMdPasienHandlers.HandleCloseModalMdPasien)
dev.GET("/md/pasien/openedit", devMdPasienHandlers.HandleOpenEditMdPasien)
dev.POST("/md/pasien/closeeditform", devMdPasienHandlers.HandleCloseModalEditMdPasien)
dev.GET("/md/pasien/foto/:filename", devMdPasienHandlers.GetFotoProfile)
dev.POST("/md/pasien/edit", devMdPasienHandlers.HandleEditMdPasien)
}