api list tindakan
This commit is contained in:
No files matched your search
@@ -10,8 +10,8 @@ func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
|
||||
diagnosaRepo := NewRepository(dbService)
|
||||
DiagnosaHandler := NewDiagnosaHandler(diagnosaRepo)
|
||||
|
||||
kategori := r.Group("/diagnosa")
|
||||
diagnosa := r.Group("/diagnosa")
|
||||
{
|
||||
kategori.GET("", DiagnosaHandler.ListDiagnosa)
|
||||
diagnosa.GET("", DiagnosaHandler.ListDiagnosa)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package tindakan
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
baseResponse "antrian-operasi/internal/shared"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type TindakanHandler struct {
|
||||
repo ITindakanRepository
|
||||
}
|
||||
|
||||
func NewTindakanHandler(repo ITindakanRepository) TindakanHandler {
|
||||
return TindakanHandler{repo}
|
||||
}
|
||||
|
||||
// List Tindakan godoc
|
||||
// @Summary Get List Tindakan
|
||||
// @Tags Reference
|
||||
// @Param search query string false "Search keyword"
|
||||
// @Success 200 {object} []TindakanModel
|
||||
// @Failure 500 {object} shared.BaseErrorResponse
|
||||
// @Router /reference/tindakan/ [get]
|
||||
func (h TindakanHandler) ListDiagnosa(c *gin.Context) {
|
||||
list, err := h.repo.SearchableListTindakan(c)
|
||||
if err != nil {
|
||||
errorResponse := baseResponse.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 500,
|
||||
Message: err.Error(),
|
||||
}
|
||||
c.JSON(http.StatusInternalServerError, errorResponse)
|
||||
return
|
||||
}
|
||||
|
||||
response := baseResponse.ToBaseResponse(list, true, 200, "success get diagnosa")
|
||||
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package tindakan
|
||||
|
||||
type TindakanModel struct {
|
||||
KodeTindakan string `db:"kode" json:"KodeTindakan"`
|
||||
Keterangan string `db:"keterangan" json:"Tindakan"`
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package tindakan
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
|
||||
queryUtils "antrian-operasi/internal/utils/query"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
const DB_NAME = "db_simrs"
|
||||
const TBL_NAME = "icd_cm"
|
||||
|
||||
type ITindakanRepository interface {
|
||||
SearchableListTindakan(c *gin.Context) ([]TindakanModel, error)
|
||||
}
|
||||
|
||||
type diagnosaRepo struct {
|
||||
queryBuilder *queryUtils.QueryBuilder
|
||||
db database.Service
|
||||
}
|
||||
|
||||
func NewRepository(dbService database.Service) ITindakanRepository {
|
||||
queryBuilder := queryUtils.NewQueryBuilder(queryUtils.DBTypePostgreSQL).
|
||||
SetAllowedColumns([]string{
|
||||
"kode", "keterangan",
|
||||
}).
|
||||
SetSecurityOptions(false, 100)
|
||||
|
||||
return diagnosaRepo{
|
||||
queryBuilder: queryBuilder,
|
||||
db: dbService,
|
||||
}
|
||||
}
|
||||
|
||||
func (r diagnosaRepo) SearchableListTindakan(c *gin.Context) ([]TindakanModel, error) {
|
||||
var result []TindakanModel
|
||||
search := c.Query("search")
|
||||
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: TBL_NAME,
|
||||
Fields: []queryUtils.SelectField{
|
||||
{Expression: "kode"},
|
||||
{Expression: "keterangan"},
|
||||
},
|
||||
Limit: 10,
|
||||
}
|
||||
|
||||
if search != "" {
|
||||
searchFilters := []queryUtils.DynamicFilter{
|
||||
{Column: "kode", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
||||
{Column: "keterangan", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
||||
}
|
||||
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: searchFilters, LogicOp: "OR"})
|
||||
}
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &result)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package tindakan
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
|
||||
tindakanRepo := NewRepository(dbService)
|
||||
tindakanHandler := NewTindakanHandler(tindakanRepo)
|
||||
|
||||
tindakan := r.Group("/tindakan")
|
||||
{
|
||||
tindakan.GET("", tindakanHandler.ListDiagnosa)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user