add filter status list antrian, add filter by type id

This commit is contained in:
renaldybrada
2026-02-03 09:16:09 +07:00
parent 046903c7a1
commit f9bdde187e
6 changed files with 76 additions and 3 deletions
+18
View File
@@ -34,6 +34,18 @@ const docTemplate = `{
"name": "type",
"in": "query"
},
{
"type": "string",
"description": "Type id :id kategori, id spesialis, id sub-spesialis",
"name": "type_id",
"in": "query"
},
{
"type": "string",
"description": "Status : 1, 2, 3, 4",
"name": "status",
"in": "query"
},
{
"type": "string",
"default": "10",
@@ -343,6 +355,9 @@ const docTemplate = `{
"id": {
"type": "string"
},
"jenisKelamin": {
"type": "string"
},
"kategori": {
"type": "string"
},
@@ -370,6 +385,9 @@ const docTemplate = `{
"spesialis": {
"type": "string"
},
"statusOperasi": {
"type": "string"
},
"subSpesialis": {
"type": "string"
},
+18
View File
@@ -28,6 +28,18 @@
"name": "type",
"in": "query"
},
{
"type": "string",
"description": "Type id :id kategori, id spesialis, id sub-spesialis",
"name": "type_id",
"in": "query"
},
{
"type": "string",
"description": "Status : 1, 2, 3, 4",
"name": "status",
"in": "query"
},
{
"type": "string",
"default": "10",
@@ -337,6 +349,9 @@
"id": {
"type": "string"
},
"jenisKelamin": {
"type": "string"
},
"kategori": {
"type": "string"
},
@@ -364,6 +379,9 @@
"spesialis": {
"type": "string"
},
"statusOperasi": {
"type": "string"
},
"subSpesialis": {
"type": "string"
},
+12
View File
@@ -68,6 +68,8 @@ definitions:
type: string
id:
type: string
jenisKelamin:
type: string
kategori:
type: string
kodeDiagnosa:
@@ -86,6 +88,8 @@ definitions:
type: integer
spesialis:
type: string
statusOperasi:
type: string
subSpesialis:
type: string
tglDaftar:
@@ -219,6 +223,14 @@ paths:
in: query
name: type
type: string
- description: Type id :id kategori, id spesialis, id sub-spesialis
in: query
name: type_id
type: string
- description: 'Status : 1, 2, 3, 4'
in: query
name: status
type: string
- default: "10"
description: Limit
in: query
@@ -81,6 +81,8 @@ func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
// @Tags Antrian Operasi
// @Param search query string false "Search Keyword"
// @Param type query string false "Type antrian : all, kategori, spesialis, sub-spesialis"
// @Param type_id query string false "Type id :id kategori, id spesialis, id sub-spesialis"
// @Param status query string false "Status : 1, 2, 3, 4"
// @Param limit query string false "Limit" default(10)
// @Param offset query string false "Offset" default(0)
// @Success 200 {object} []PasienOperasi
+2
View File
@@ -16,6 +16,8 @@ type PasienOperasi struct {
KodeDiagnosa *string `db:"kode_diagnosa"`
Diagnosa *string `db:"diagnosa"`
Kategori *string `db:"kategori"`
StatusOperasi *string `db:"status_operasi"`
JenisKelamin *string `db:"jenis_kelamin"`
NoUrutKategori int `db:"no_urut_kategori"`
NoUrutSpesialis int `db:"no_urut_spesialis"`
NoUrutSubSpesialis int `db:"no_urut_sub_spesialis"`
+24 -3
View File
@@ -6,6 +6,7 @@ import (
queryUtils "antrian-operasi/internal/utils/query"
"log"
"slices"
"strconv"
"time"
"github.com/gin-gonic/gin"
@@ -273,13 +274,16 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) (ListPa
search := c.Query("search")
availableType := []string{"all", "kategori", "spesialis", "sub-spesialis"}
antrianType := c.Query("type")
antrianTypeId, err := strconv.Atoi(c.Query("type_id"))
if err != nil {
antrianTypeId = 0
}
if !slices.Contains(availableType, antrianType) {
antrianType = "all"
}
limit := shared.ParseQueryLimit(c)
offset := shared.ParseQueryOffset(c)
statusOp := c.Query("status")
query := queryUtils.DynamicQuery{
From: TBL_NAME,
@@ -290,6 +294,8 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) (ListPa
{Expression: "dpo.No_KTP", Alias: "no_ktp"},
{Expression: "dpo.No_rekam_medis", Alias: "no_rekam_medis"},
{Expression: "dpo.Nama_pasien", Alias: "nama_pasien"},
{Expression: "dpo.Status_operasi", Alias: "status_operasi"},
{Expression: "dpo.Jenis_kelamin", Alias: "jenis_kelamin"},
{Expression: "ds.Spesialis", Alias: "spesialis"},
{Expression: "dss.Subspesialis", Alias: "subspesialis"},
{Expression: "ddpo.Kode_diagnosa", Alias: "kode_diagnosa"},
@@ -320,17 +326,27 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) (ListPa
Alias: "no_urut_sub_spesialis",
}
var selectFilter []queryUtils.DynamicFilter
typeIdColumn := ""
switch antrianType {
case "kategori":
typeIdColumn = "dko.id"
query.WindowFunctions = append(query.WindowFunctions, wfKategori, wfSpesialis, wfSubSpesialis)
case "spesialis":
typeIdColumn = "ds.id"
query.WindowFunctions = append(query.WindowFunctions, wfSpesialis, wfSubSpesialis)
case "sub-spesialis":
typeIdColumn = "dss.id"
query.WindowFunctions = append(query.WindowFunctions, wfSubSpesialis)
default:
query.WindowFunctions = append(query.WindowFunctions, wfKategori, wfSpesialis, wfSubSpesialis)
}
if antrianTypeId != 0 && antrianType != "all" {
selectFilter = append(selectFilter, queryUtils.DynamicFilter{Column: typeIdColumn, Operator: queryUtils.OpEqual, Value: antrianTypeId})
}
query.Joins = []queryUtils.Join{
{
Type: "LEFT",
@@ -393,7 +409,12 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) (ListPa
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: searchFilters, LogicOp: "OR"})
}
// TODO Filtering status
if statusOp != "" {
selectFilter = append(selectFilter, queryUtils.DynamicFilter{Column: "dpo.Status_operasi", Operator: queryUtils.OpEqual, Value: statusOp})
}
// wiring all select filter
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: selectFilter, LogicOp: "AND"})
dbconn, err := r.db.GetSQLXDB(DB_NAME)
if err != nil {