add nomor urut list antrian
This commit is contained in:
@@ -27,6 +27,12 @@ const docTemplate = `{
|
||||
"description": "Search Keyword",
|
||||
"name": "search",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "Type antrian : all, kategori, spesialis, sub-spesialis",
|
||||
"name": "type",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
@@ -338,6 +344,15 @@ const docTemplate = `{
|
||||
"noRekamMedis": {
|
||||
"type": "string"
|
||||
},
|
||||
"noUrutKategori": {
|
||||
"type": "integer"
|
||||
},
|
||||
"noUrutSpesialis": {
|
||||
"type": "integer"
|
||||
},
|
||||
"noUrutSubSpesialis": {
|
||||
"type": "integer"
|
||||
},
|
||||
"spesialis": {
|
||||
"type": "string"
|
||||
},
|
||||
|
||||
@@ -21,6 +21,12 @@
|
||||
"description": "Search Keyword",
|
||||
"name": "search",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "Type antrian : all, kategori, spesialis, sub-spesialis",
|
||||
"name": "type",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
@@ -332,6 +338,15 @@
|
||||
"noRekamMedis": {
|
||||
"type": "string"
|
||||
},
|
||||
"noUrutKategori": {
|
||||
"type": "integer"
|
||||
},
|
||||
"noUrutSpesialis": {
|
||||
"type": "integer"
|
||||
},
|
||||
"noUrutSubSpesialis": {
|
||||
"type": "integer"
|
||||
},
|
||||
"spesialis": {
|
||||
"type": "string"
|
||||
},
|
||||
|
||||
@@ -78,6 +78,12 @@ definitions:
|
||||
type: string
|
||||
noRekamMedis:
|
||||
type: string
|
||||
noUrutKategori:
|
||||
type: integer
|
||||
noUrutSpesialis:
|
||||
type: integer
|
||||
noUrutSubSpesialis:
|
||||
type: integer
|
||||
spesialis:
|
||||
type: string
|
||||
subSpesialis:
|
||||
@@ -209,6 +215,10 @@ paths:
|
||||
in: query
|
||||
name: search
|
||||
type: string
|
||||
- description: 'Type antrian : all, kategori, spesialis, sub-spesialis'
|
||||
in: query
|
||||
name: type
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
||||
@@ -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