add nomor urut list antrian

This commit is contained in:
renaldybrada
2026-02-02 13:09:03 +07:00
parent 3edbd8b193
commit 564b24b343
6 changed files with 93 additions and 11 deletions

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]
+13 -10
View File
@@ -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"`
}
+39 -1
View File
@@ -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{