add filter kategori & dokter

This commit is contained in:
2026-04-29 15:30:17 +07:00
parent ff011081fc
commit d6d4ff2c96
3 changed files with 58 additions and 9 deletions
+5
View File
@@ -81,3 +81,8 @@ type DetailPasienOperasi struct {
RencanaOperasi *string `db:"rencana_operasi"`
KeteranganStatusPasien *string `db:"keterangan_status_pasien"`
}
type DokterOperasi struct {
IDDokter string `db:"data_pegawai_id"`
IDAntrianOperasi string `db:"data_pasien_operasi_id"`
}
@@ -1145,6 +1145,48 @@ func (r antrianOperasiRepo) getNumberedListAntrianV2(c context.Context, dbconn *
selectFilter = append(selectFilter, queryUtils.DynamicFilter{Column: typeIdColumn, Operator: queryUtils.OpEqual, Value: q.TypeID})
}
if q.KategoriId != 0 {
selectFilter = append(selectFilter, queryUtils.DynamicFilter{Column: "dpo.Kategori_operasi", Operator: queryUtils.OpEqual, Value: q.KategoriId})
}
// filter by dokter id
if q.DokterId != "" {
var resultDokterOperasi []DokterOperasi
queryDokter := queryUtils.DynamicQuery{
From: TBL_DOKTER_OPERASI,
Aliases: "dpodp",
Fields: []queryUtils.SelectField{
{Expression: "dpodp.id"},
{Expression: "dpodp.data_pegawai_id"},
{Expression: "dpodp.data_pasien_operasi_id"},
},
Filters: []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "data_pegawai_id", Operator: queryUtils.OpEqual, Value: q.DokterId},
}, LogicOp: "AND",
},
},
}
err := r.queryBuilder.ExecuteQuery(c, dbconn, queryDokter, &resultDokterOperasi)
if err != nil {
log.Printf("Unable to execute dokter query : %s", err)
return result, err
}
//
// filtering antrian ids
var operasiIDFilteredByDokter []string
for _, item := range resultDokterOperasi {
operasiIDFilteredByDokter = append(operasiIDFilteredByDokter, item.IDAntrianOperasi)
}
if len(operasiIDFilteredByDokter) > 0 {
selectFilter = append(selectFilter, queryUtils.DynamicFilter{Column: "dpo.id", Operator: queryUtils.OpIn, Value: operasiIDFilteredByDokter})
}
}
if q.Status != "" {
selectFilter = append(selectFilter, queryUtils.DynamicFilter{Column: "dpo.Status_operasi", Operator: queryUtils.OpEqual, Value: q.Status})
}
+11 -9
View File
@@ -62,13 +62,15 @@ type CreatePasienOperasiRequest struct {
}
type AntrianQuery struct {
Id string `form:"id"`
Search string `form:"search"`
Type string `form:"type,default=all" binding:"omitempty,oneof=all kategori spesialis sub-spesialis"`
TypeID int `form:"type_id,default=0"`
Status string `form:"status" binding:"omitempty,oneof=1 2 3 4"`
Limit int `form:"limit,default=10"`
Offset int `form:"offset,default=0"`
SortBy string `form:"sort_by" binding:"omitempty,oneof=tanggal_daftar no_urut_kategori no_urut_spesialis"`
SortOrder string `form:"sort_order" binding:"omitempty,oneof=ASC DESC"`
Id string `form:"id"`
Search string `form:"search"`
Type string `form:"type,default=all" binding:"omitempty,oneof=all kategori spesialis sub-spesialis"`
TypeID int `form:"type_id,default=0"`
Status string `form:"status" binding:"omitempty,oneof=1 2 3 4"`
Limit int `form:"limit,default=10"`
Offset int `form:"offset,default=0"`
SortBy string `form:"sort_by" binding:"omitempty,oneof=tanggal_daftar no_urut_kategori no_urut_spesialis"`
SortOrder string `form:"sort_order" binding:"omitempty,oneof=ASC DESC"`
KategoriId int `form:"kategori_id"`
DokterId string `form:"dokter_id"`
}