add filter status list antrian, add filter by type id
This commit is contained in:
No files matched your search
@@ -34,6 +34,18 @@ const docTemplate = `{
|
|||||||
"name": "type",
|
"name": "type",
|
||||||
"in": "query"
|
"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",
|
"type": "string",
|
||||||
"default": "10",
|
"default": "10",
|
||||||
@@ -343,6 +355,9 @@ const docTemplate = `{
|
|||||||
"id": {
|
"id": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"jenisKelamin": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"kategori": {
|
"kategori": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
@@ -370,6 +385,9 @@ const docTemplate = `{
|
|||||||
"spesialis": {
|
"spesialis": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"statusOperasi": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"subSpesialis": {
|
"subSpesialis": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -28,6 +28,18 @@
|
|||||||
"name": "type",
|
"name": "type",
|
||||||
"in": "query"
|
"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",
|
"type": "string",
|
||||||
"default": "10",
|
"default": "10",
|
||||||
@@ -337,6 +349,9 @@
|
|||||||
"id": {
|
"id": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"jenisKelamin": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"kategori": {
|
"kategori": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
@@ -364,6 +379,9 @@
|
|||||||
"spesialis": {
|
"spesialis": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"statusOperasi": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"subSpesialis": {
|
"subSpesialis": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -68,6 +68,8 @@ definitions:
|
|||||||
type: string
|
type: string
|
||||||
id:
|
id:
|
||||||
type: string
|
type: string
|
||||||
|
jenisKelamin:
|
||||||
|
type: string
|
||||||
kategori:
|
kategori:
|
||||||
type: string
|
type: string
|
||||||
kodeDiagnosa:
|
kodeDiagnosa:
|
||||||
@@ -86,6 +88,8 @@ definitions:
|
|||||||
type: integer
|
type: integer
|
||||||
spesialis:
|
spesialis:
|
||||||
type: string
|
type: string
|
||||||
|
statusOperasi:
|
||||||
|
type: string
|
||||||
subSpesialis:
|
subSpesialis:
|
||||||
type: string
|
type: string
|
||||||
tglDaftar:
|
tglDaftar:
|
||||||
@@ -219,6 +223,14 @@ paths:
|
|||||||
in: query
|
in: query
|
||||||
name: type
|
name: type
|
||||||
type: string
|
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"
|
- default: "10"
|
||||||
description: Limit
|
description: Limit
|
||||||
in: query
|
in: query
|
||||||
|
|||||||
@@ -81,6 +81,8 @@ func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
|
|||||||
// @Tags Antrian Operasi
|
// @Tags Antrian Operasi
|
||||||
// @Param search query string false "Search Keyword"
|
// @Param search query string false "Search Keyword"
|
||||||
// @Param type query string false "Type antrian : all, kategori, spesialis, sub-spesialis"
|
// @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 limit query string false "Limit" default(10)
|
||||||
// @Param offset query string false "Offset" default(0)
|
// @Param offset query string false "Offset" default(0)
|
||||||
// @Success 200 {object} []PasienOperasi
|
// @Success 200 {object} []PasienOperasi
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ type PasienOperasi struct {
|
|||||||
KodeDiagnosa *string `db:"kode_diagnosa"`
|
KodeDiagnosa *string `db:"kode_diagnosa"`
|
||||||
Diagnosa *string `db:"diagnosa"`
|
Diagnosa *string `db:"diagnosa"`
|
||||||
Kategori *string `db:"kategori"`
|
Kategori *string `db:"kategori"`
|
||||||
|
StatusOperasi *string `db:"status_operasi"`
|
||||||
|
JenisKelamin *string `db:"jenis_kelamin"`
|
||||||
NoUrutKategori int `db:"no_urut_kategori"`
|
NoUrutKategori int `db:"no_urut_kategori"`
|
||||||
NoUrutSpesialis int `db:"no_urut_spesialis"`
|
NoUrutSpesialis int `db:"no_urut_spesialis"`
|
||||||
NoUrutSubSpesialis int `db:"no_urut_sub_spesialis"`
|
NoUrutSubSpesialis int `db:"no_urut_sub_spesialis"`
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
queryUtils "antrian-operasi/internal/utils/query"
|
queryUtils "antrian-operasi/internal/utils/query"
|
||||||
"log"
|
"log"
|
||||||
"slices"
|
"slices"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@@ -273,13 +274,16 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) (ListPa
|
|||||||
search := c.Query("search")
|
search := c.Query("search")
|
||||||
availableType := []string{"all", "kategori", "spesialis", "sub-spesialis"}
|
availableType := []string{"all", "kategori", "spesialis", "sub-spesialis"}
|
||||||
antrianType := c.Query("type")
|
antrianType := c.Query("type")
|
||||||
|
antrianTypeId, err := strconv.Atoi(c.Query("type_id"))
|
||||||
|
if err != nil {
|
||||||
|
antrianTypeId = 0
|
||||||
|
}
|
||||||
if !slices.Contains(availableType, antrianType) {
|
if !slices.Contains(availableType, antrianType) {
|
||||||
antrianType = "all"
|
antrianType = "all"
|
||||||
}
|
}
|
||||||
|
|
||||||
limit := shared.ParseQueryLimit(c)
|
limit := shared.ParseQueryLimit(c)
|
||||||
offset := shared.ParseQueryOffset(c)
|
offset := shared.ParseQueryOffset(c)
|
||||||
|
statusOp := c.Query("status")
|
||||||
|
|
||||||
query := queryUtils.DynamicQuery{
|
query := queryUtils.DynamicQuery{
|
||||||
From: TBL_NAME,
|
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_KTP", Alias: "no_ktp"},
|
||||||
{Expression: "dpo.No_rekam_medis", Alias: "no_rekam_medis"},
|
{Expression: "dpo.No_rekam_medis", Alias: "no_rekam_medis"},
|
||||||
{Expression: "dpo.Nama_pasien", Alias: "nama_pasien"},
|
{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: "ds.Spesialis", Alias: "spesialis"},
|
||||||
{Expression: "dss.Subspesialis", Alias: "subspesialis"},
|
{Expression: "dss.Subspesialis", Alias: "subspesialis"},
|
||||||
{Expression: "ddpo.Kode_diagnosa", Alias: "kode_diagnosa"},
|
{Expression: "ddpo.Kode_diagnosa", Alias: "kode_diagnosa"},
|
||||||
@@ -320,17 +326,27 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) (ListPa
|
|||||||
Alias: "no_urut_sub_spesialis",
|
Alias: "no_urut_sub_spesialis",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var selectFilter []queryUtils.DynamicFilter
|
||||||
|
typeIdColumn := ""
|
||||||
|
|
||||||
switch antrianType {
|
switch antrianType {
|
||||||
case "kategori":
|
case "kategori":
|
||||||
|
typeIdColumn = "dko.id"
|
||||||
query.WindowFunctions = append(query.WindowFunctions, wfKategori, wfSpesialis, wfSubSpesialis)
|
query.WindowFunctions = append(query.WindowFunctions, wfKategori, wfSpesialis, wfSubSpesialis)
|
||||||
case "spesialis":
|
case "spesialis":
|
||||||
|
typeIdColumn = "ds.id"
|
||||||
query.WindowFunctions = append(query.WindowFunctions, wfSpesialis, wfSubSpesialis)
|
query.WindowFunctions = append(query.WindowFunctions, wfSpesialis, wfSubSpesialis)
|
||||||
case "sub-spesialis":
|
case "sub-spesialis":
|
||||||
|
typeIdColumn = "dss.id"
|
||||||
query.WindowFunctions = append(query.WindowFunctions, wfSubSpesialis)
|
query.WindowFunctions = append(query.WindowFunctions, wfSubSpesialis)
|
||||||
default:
|
default:
|
||||||
query.WindowFunctions = append(query.WindowFunctions, wfKategori, wfSpesialis, wfSubSpesialis)
|
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{
|
query.Joins = []queryUtils.Join{
|
||||||
{
|
{
|
||||||
Type: "LEFT",
|
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"})
|
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)
|
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user