add filter status list antrian, add filter by type id
This commit is contained in:
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"`
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user