api list tindakan

This commit is contained in:
renaldybrada
2026-02-05 10:16:31 +07:00
parent 18a3509933
commit 0cbaba6a4d
9 changed files with 253 additions and 2 deletions

No files matched your search

+44
View File
@@ -353,6 +353,39 @@ const docTemplate = `{
} }
} }
} }
},
"/reference/tindakan/": {
"get": {
"tags": [
"Reference"
],
"summary": "Get List Tindakan",
"parameters": [
{
"type": "string",
"description": "Search keyword",
"name": "search",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/tindakan.TindakanModel"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/shared.BaseErrorResponse"
}
}
}
}
} }
}, },
"definitions": { "definitions": {
@@ -753,6 +786,17 @@ const docTemplate = `{
"type": "string" "type": "string"
} }
} }
},
"tindakan.TindakanModel": {
"type": "object",
"properties": {
"KodeTindakan": {
"type": "string"
},
"Tindakan": {
"type": "string"
}
}
} }
} }
}` }`
+44
View File
@@ -347,6 +347,39 @@
} }
} }
} }
},
"/reference/tindakan/": {
"get": {
"tags": [
"Reference"
],
"summary": "Get List Tindakan",
"parameters": [
{
"type": "string",
"description": "Search keyword",
"name": "search",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/tindakan.TindakanModel"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/shared.BaseErrorResponse"
}
}
}
}
} }
}, },
"definitions": { "definitions": {
@@ -747,6 +780,17 @@
"type": "string" "type": "string"
} }
} }
},
"tindakan.TindakanModel": {
"type": "object",
"properties": {
"KodeTindakan": {
"type": "string"
},
"Tindakan": {
"type": "string"
}
}
} }
} }
} }
+28
View File
@@ -263,6 +263,13 @@ definitions:
sub_spesialis: sub_spesialis:
type: string type: string
type: object type: object
tindakan.TindakanModel:
properties:
KodeTindakan:
type: string
Tindakan:
type: string
type: object
host: localhost:8080 host: localhost:8080
info: info:
contact: {} contact: {}
@@ -489,4 +496,25 @@ paths:
summary: Get List Sub Spesialis summary: Get List Sub Spesialis
tags: tags:
- Reference - Reference
/reference/tindakan/:
get:
parameters:
- description: Search keyword
in: query
name: search
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/tindakan.TindakanModel'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/shared.BaseErrorResponse'
summary: Get List Tindakan
tags:
- Reference
swagger: "2.0" swagger: "2.0"
+2 -2
View File
@@ -10,8 +10,8 @@ func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
diagnosaRepo := NewRepository(dbService) diagnosaRepo := NewRepository(dbService)
DiagnosaHandler := NewDiagnosaHandler(diagnosaRepo) 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)
}
}
+2
View File
@@ -10,6 +10,7 @@ import (
"antrian-operasi/internal/domain/reference/kategori" "antrian-operasi/internal/domain/reference/kategori"
"antrian-operasi/internal/domain/reference/pasien" "antrian-operasi/internal/domain/reference/pasien"
"antrian-operasi/internal/domain/reference/spesialis" "antrian-operasi/internal/domain/reference/spesialis"
"antrian-operasi/internal/domain/reference/tindakan"
"antrian-operasi/internal/middleware" "antrian-operasi/internal/middleware"
"net/http" "net/http"
@@ -44,6 +45,7 @@ func RegisterRoutes(cfg *config.Config, dbService database.Service) *gin.Engine
dokter.RegisterRoutes(reference, dbService) dokter.RegisterRoutes(reference, dbService)
pasien.RegisterRoutes(reference, dbService) pasien.RegisterRoutes(reference, dbService)
diagnosa.RegisterRoutes(reference, dbService) diagnosa.RegisterRoutes(reference, dbService)
tindakan.RegisterRoutes(reference, dbService)
} }
dboard := api.Group("dashboard") dboard := api.Group("dashboard")
{ {