list antrian operasi
This commit is contained in:
@@ -68,3 +68,17 @@ func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
|
||||
|
||||
c.JSON(201, shared.ToBaseResponse(res, true, 201, "success insert antrian operasi"))
|
||||
}
|
||||
|
||||
func (h AntrianOperasiHandler) GetListAntrianOperasi(c *gin.Context) {
|
||||
res, err := h.repo.SearchableListAntrianOperasi(c)
|
||||
if err != nil {
|
||||
c.JSON(500, shared.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 500,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(200, shared.ToBaseResponse(res, true, 200, "success get list antrian operasi"))
|
||||
}
|
||||
|
||||
@@ -1,50 +1,16 @@
|
||||
package antrianoperasi
|
||||
|
||||
import "database/sql"
|
||||
import "time"
|
||||
|
||||
type ListDiagnosaPasienOperasi struct {
|
||||
ID int `json:"id" db:"id"`
|
||||
KodeDiagnosa string `json:"kode_diagnosa" db:"Kode_diagnosa"`
|
||||
Diagnosa string `json:"diagnosa" db:"Diagnosa"`
|
||||
Keterangan string `json:"keterangan" db:"Keterangan"`
|
||||
JenisDiagnosa string `json:"jenis_diagnosa" db:"Jenis_diagnosa"`
|
||||
}
|
||||
|
||||
type ListTindakanPasienOperasi struct {
|
||||
ID int `json:"id" db:"id"`
|
||||
KodeTindakan string `json:"kode_tindakan" db:"Kode_tindakan"`
|
||||
Tindakan string `json:"tindakan" db:"Tindakan"`
|
||||
TindakanTambahan string `json:"tindakan_tambahan" db:"Tindakan_tambahan"`
|
||||
}
|
||||
|
||||
type ListTeleponPasienOperasi struct {
|
||||
ID int `json:"id" db:"id"`
|
||||
NoTelepon string `json:"no_telepon" db:"Nomor_telepon"`
|
||||
}
|
||||
|
||||
type ListPasienOperasi struct {
|
||||
ID string `db:"id"`
|
||||
Status string `db:"status"`
|
||||
NoRekamMedis string `db:"No_rekam_medis"`
|
||||
NoKtp string `db:"No_KTP"`
|
||||
NamaPasien string `db:"Nama_pasien"`
|
||||
JenisKelamin string `db:"Jenis_kelamin"`
|
||||
TglLahir sql.NullTime `db:"Tanggal_lahir"`
|
||||
Umur string `db:"Umur"`
|
||||
Alamat string `db:"Alamat"`
|
||||
TglDaftar sql.NullTime `db:"Tanggal_daftar"`
|
||||
IdKategoriOperasi int `db:"Kategori_operasi"`
|
||||
RencanaOperasi string `db:"Rencana_operasi"`
|
||||
Keterangan string `db:"Keterangan"`
|
||||
TglSelesaiOperasi sql.NullTime `db:"Tanggal_selesai_operasi"`
|
||||
StatusOperasi string `db:"Status_operasi"`
|
||||
Nomor int `db:"Nomor"`
|
||||
OldKategori int `db:"Old_kategori"`
|
||||
IdSpesialis int `db:"Spesialis"`
|
||||
IdSubSpesialis int `db:"Sub_spesialis"`
|
||||
KeteranganStatusPasien string `db:"Keterangan_status_pasien"`
|
||||
NomorSpesialis int `db:"Nomor_spesialis"`
|
||||
NomorSubSpesialis int `db:"Nomor_sub_spesialis"`
|
||||
OldSpesialis int `db:"Old_spesialis"`
|
||||
OldSubSpesialis int `db:"Old_sub_spesialis"`
|
||||
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"`
|
||||
}
|
||||
|
||||
@@ -11,10 +11,11 @@ import (
|
||||
)
|
||||
|
||||
const DB_NAME = "db_antrian"
|
||||
const TABLE_NAME = "data_pasien_operasi"
|
||||
const TBL_NAME = "data_pasien_operasi"
|
||||
|
||||
type IAntrianOperasiRepository interface {
|
||||
CreateAntrianOperasi(c *gin.Context, req CreatePasienOperasiRequest) (CreatePasienOperasiRequest, error)
|
||||
SearchableListAntrianOperasi(c *gin.Context) ([]PasienOperasi, error)
|
||||
}
|
||||
|
||||
type antrianOperasiRepo struct {
|
||||
@@ -264,3 +265,105 @@ func (r antrianOperasiRepo) CreateAntrianOperasi(c *gin.Context, req CreatePasie
|
||||
|
||||
return req, nil
|
||||
}
|
||||
|
||||
func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) ([]PasienOperasi, error) {
|
||||
var result []PasienOperasi
|
||||
search := c.Query("search")
|
||||
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: TBL_NAME,
|
||||
Aliases: "dpo",
|
||||
Fields: []queryUtils.SelectField{
|
||||
{Expression: "dpo.id"},
|
||||
{Expression: "dpo.Tanggal_daftar", Alias: "tanggal_daftar"},
|
||||
{Expression: "dpo.No_KTP", Alias: "no_ktp"},
|
||||
{Expression: "dpo.No_rekam_medis", Alias: "no_rekam_medis"},
|
||||
{Expression: "dpo.Nama_pasien", Alias: "nama_pasien"},
|
||||
{Expression: "ds.Spesialis", Alias: "spesialis"},
|
||||
{Expression: "dss.Subspesialis", Alias: "subspesialis"},
|
||||
{Expression: "ddpo.Kode_diagnosa", Alias: "kode_diagnosa"},
|
||||
{Expression: "ddpo.Diagnosa", Alias: "diagnosa"},
|
||||
{Expression: "dko.Kategori", Alias: "kategori"},
|
||||
},
|
||||
Limit: 10,
|
||||
Sort: []queryUtils.SortField{
|
||||
{Column: "created_at", Order: "DESC"}},
|
||||
}
|
||||
|
||||
query.Joins = []queryUtils.Join{
|
||||
{
|
||||
Type: "LEFT",
|
||||
Table: "daftar_spesialis",
|
||||
Alias: "ds",
|
||||
OnConditions: queryUtils.FilterGroup{
|
||||
Filters: []queryUtils.DynamicFilter{
|
||||
{
|
||||
Column: "ds.id", Operator: queryUtils.OpEqual, Value: "dpo.Spesialis",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "LEFT",
|
||||
Table: "daftar_subspesialis",
|
||||
Alias: "dss",
|
||||
OnConditions: queryUtils.FilterGroup{
|
||||
Filters: []queryUtils.DynamicFilter{
|
||||
{
|
||||
Column: "dpo.Sub_spesialis", Operator: queryUtils.OpEqual, Value: "dss.id",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "LEFT",
|
||||
Table: "daftar_kategori_operasi",
|
||||
Alias: "dko",
|
||||
OnConditions: queryUtils.FilterGroup{
|
||||
Filters: []queryUtils.DynamicFilter{
|
||||
{
|
||||
Column: "dpo.Kategori_operasi", Operator: queryUtils.OpEqual, Value: "dko.id",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "LEFT",
|
||||
Table: "data_diagnosa_pasien_operasi",
|
||||
Alias: "ddpo",
|
||||
OnConditions: queryUtils.FilterGroup{
|
||||
Filters: []queryUtils.DynamicFilter{
|
||||
{
|
||||
Column: "dpo.id", Operator: queryUtils.OpEqual, Value: "ddpo.FK_pasien_operasi_diagnosa_pasien_operasi_ID",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// filtering search results
|
||||
if search != "" {
|
||||
searchFilters := []queryUtils.DynamicFilter{
|
||||
{Column: "dpo.No_KTP", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
||||
{Column: "dpo.No_rekam_medis", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
||||
{Column: "dpo.Nama_pasien", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
||||
}
|
||||
|
||||
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: searchFilters, LogicOp: "OR"})
|
||||
}
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
log.Printf("Unable to connect db : %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &result)
|
||||
if err != nil {
|
||||
log.Printf("Unable to execute query : %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
@@ -19,4 +19,5 @@ func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
|
||||
antrianOperasiRepo, kategoriRepo, spesialisRepo, dokterRepo)
|
||||
|
||||
r.POST("/antrian-operasi", antrianOperasiHandler.CreateAntrianOperasi)
|
||||
r.GET("/antrian-operasi", antrianOperasiHandler.GetListAntrianOperasi)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user