add nomor urut list antrian
This commit is contained in:
No files matched your search
@@ -80,6 +80,7 @@ func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
|
||||
// @Summary Get List Antrian Operasi
|
||||
// @Tags Antrian Operasi
|
||||
// @Param search query string false "Search Keyword"
|
||||
// @Param type query string false "Type antrian : all, kategori, spesialis, sub-spesialis"
|
||||
// @Success 200 {object} []PasienOperasi
|
||||
// @Failure 500 {object} shared.BaseErrorResponse
|
||||
// @Router /antrian-operasi/ [get]
|
||||
|
||||
@@ -3,14 +3,17 @@ package antrianoperasi
|
||||
import "time"
|
||||
|
||||
type PasienOperasi struct {
|
||||
ID string `db:"id" json:"id"`
|
||||
TglDaftar time.Time `db:"tanggal_daftar"`
|
||||
NoKtp *string `db:"no_ktp"`
|
||||
NoRekamMedis *string `db:"no_rekam_medis"`
|
||||
NamaPasien *string `db:"nama_pasien"`
|
||||
Spesialis *string `db:"spesialis"`
|
||||
SubSpesialis *string `db:"subspesialis"`
|
||||
KodeDiagnosa *string `db:"kode_diagnosa"`
|
||||
Diagnosa *string `db:"diagnosa"`
|
||||
Kategori *string `db:"kategori"`
|
||||
ID string `db:"id" json:"id"`
|
||||
TglDaftar time.Time `db:"tanggal_daftar"`
|
||||
NoKtp *string `db:"no_ktp"`
|
||||
NoRekamMedis *string `db:"no_rekam_medis"`
|
||||
NamaPasien *string `db:"nama_pasien"`
|
||||
Spesialis *string `db:"spesialis"`
|
||||
SubSpesialis *string `db:"subspesialis"`
|
||||
KodeDiagnosa *string `db:"kode_diagnosa"`
|
||||
Diagnosa *string `db:"diagnosa"`
|
||||
Kategori *string `db:"kategori"`
|
||||
NoUrutKategori int `db:"no_urut_kategori"`
|
||||
NoUrutSpesialis int `db:"no_urut_spesialis"`
|
||||
NoUrutSubSpesialis int `db:"no_urut_sub_spesialis"`
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"antrian-operasi/internal/database"
|
||||
queryUtils "antrian-operasi/internal/utils/query"
|
||||
"log"
|
||||
"slices"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -269,6 +270,12 @@ func (r antrianOperasiRepo) CreateAntrianOperasi(c *gin.Context, req CreatePasie
|
||||
func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) ([]PasienOperasi, error) {
|
||||
var result []PasienOperasi
|
||||
search := c.Query("search")
|
||||
availableType := []string{"all", "kategori", "spesialis", "sub-spesialis"}
|
||||
antrianType := c.Query("type")
|
||||
|
||||
if !slices.Contains(availableType, antrianType) {
|
||||
antrianType = "all"
|
||||
}
|
||||
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: TBL_NAME,
|
||||
@@ -287,7 +294,38 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) ([]Pasi
|
||||
},
|
||||
Limit: 10,
|
||||
Sort: []queryUtils.SortField{
|
||||
{Column: "created_at", Order: "DESC"}},
|
||||
{Column: "dpo.Tanggal_daftar", Order: "ASC"}},
|
||||
}
|
||||
|
||||
wfKategori := queryUtils.WindowFunction{
|
||||
Function: "ROW_NUMBER",
|
||||
Over: "\"dpo\".\"Kategori_operasi\"",
|
||||
OrderBy: "\"dpo\".\"Tanggal_daftar\"",
|
||||
Alias: "no_urut_kategori",
|
||||
}
|
||||
|
||||
wfSpesialis := queryUtils.WindowFunction{
|
||||
Function: "ROW_NUMBER",
|
||||
Over: "\"dpo\".\"Kategori_operasi\", \"dpo\".\"Spesialis\"",
|
||||
OrderBy: "\"dpo\".\"Tanggal_daftar\"",
|
||||
Alias: "no_urut_spesialis",
|
||||
}
|
||||
wfSubSpesialis := queryUtils.WindowFunction{
|
||||
Function: "ROW_NUMBER",
|
||||
Over: "\"dpo\".\"Kategori_operasi\", \"dpo\".\"Spesialis\", \"dpo\".\"Sub_spesialis\"",
|
||||
OrderBy: "\"dpo\".\"Tanggal_daftar\"",
|
||||
Alias: "no_urut_sub_spesialis",
|
||||
}
|
||||
|
||||
switch antrianType {
|
||||
case "kategori":
|
||||
query.WindowFunctions = append(query.WindowFunctions, wfKategori, wfSpesialis, wfSubSpesialis)
|
||||
case "spesialis":
|
||||
query.WindowFunctions = append(query.WindowFunctions, wfSpesialis, wfSubSpesialis)
|
||||
case "sub-spesialis":
|
||||
query.WindowFunctions = append(query.WindowFunctions, wfSubSpesialis)
|
||||
default:
|
||||
query.WindowFunctions = append(query.WindowFunctions, wfKategori, wfSpesialis, wfSubSpesialis)
|
||||
}
|
||||
|
||||
query.Joins = []queryUtils.Join{
|
||||
|
||||
Reference in New Issue
Block a user