diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 617cfc1..f3003db 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -333,3 +333,38 @@ func GetNomorSurKon(idPasien string) (string, error) { log.Println("Nomor SurKon :", noSurKon) return noSurKon, nil } + +func Getdatahistori(norm string, offset, limit string) ([]*suratkontrol.HistoriSurkon, error) { + var dataHistoriSurKon []*suratkontrol.HistoriSurkon + err := config.SatuDataDB.Raw(`select dkp2."Nama_lengkap",dkp2."Nomor_sep", dsk."Nomor_surat_kontrol",dsk."Tanggal_rencana_kontrol",dsk."Tanggal_cetak_surat_kontrol", + (select dlr."Nama" + from data_kunjungan_pasien dkp + left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_tuju", + array( + select dgd. "Gelar_depan" + from data_pegawai_daftar_gelar_depan dpdgd + left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id + ) AS gelardepan , + dk."Nama_lengkap" as "Nama_lengkap_dokter", + array( + select dgb. "Gelar_belakang" + from data_pegawai_daftar_gelar_belakang dpdgb + left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id + ) AS gelarbelakang, dsk."User_created_surat_kontrol", dsk."User_updated_surat_kontrol",dsk."Tipe_rawat" , + dsk."Status_surat_kontrol" + from data_surat_kontrol dsk + left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien" + left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id" + left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id" + left join data_ktp dk on dp."KTP" = dk. "id" + left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" + where dkp2."NOMR" = ? order by dsk."Tanggal_rencana_kontrol" DESC offset ? limit ?`, norm, offset, limit).Scan(&dataHistoriSurKon).Error + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + errMsg := errors.New("data tidak ada") + log.Println(errMsg) + return nil, errMsg + } + } + return dataHistoriSurKon, nil +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 8ca16b4..f696835 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -1198,3 +1198,44 @@ func CariPasienTPP(c *gin.Context) { } c.JSON(http.StatusOK, resSurKon) } + +func GethistoribyNorm(c *gin.Context) { + norm := c.Param("norm") + offset := c.Param("offset") + limit := c.Param("limit") + data, err := suratkontrol.Getdatahistori(norm, offset, limit) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return + } + var resHisSurKon []*sk.Dataresponse + for _, v := range data { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaDokter + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TanggalCetak) + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") + dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TanggalRencana) + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") + resHisSurKon = append(resHisSurKon, &sk.Dataresponse{ + NamaPasien: v.NamaPasien, + NoSEP: v.NoSEP, + NomorSuratkontrol: v.NomorSuratkontrol, + TanggalRencana: dateRencanaSurkonString, + TanggalCetak: dateCetakSurkonString, + PoliTuju: v.PoliTuju, + NamaLengkap: namaLengkap, + Tiperawat: v.Tiperawat, + UserCreate: v.UserCreate, + UserUpdate: v.UserUpdate, + Status: v.Status, + }) + } + c.JSON(http.StatusOK, resHisSurKon) +} diff --git a/main.go b/main.go index 589317d..0c5d179 100644 --- a/main.go +++ b/main.go @@ -93,6 +93,7 @@ func main() { suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol) + suratKontrol.GET("/norm/:norm/limit/:limit/offset/:offset", suratkontrol.GethistoribyNorm) } iCare := v1.Group("/icare") diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 72e9a8f..4ef8f26 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -298,3 +298,33 @@ type RequestCariPasien struct { Offset string `json:"offset"` Limit string `json:"limit"` } + +type HistoriSurkon struct { + NamaPasien string `gorm:"column:Nama_lengkap" json:"Nama_pasien"` + NoSEP string `gorm:"column:Nomor_sep" json:"No_SEP"` + NomorSuratkontrol string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` + TanggalRencana string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` + TanggalCetak string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` + PoliTuju string `gorm:"column:Poli_tuju" json:"Poli_tuju"` + GelarDepan string `gorm:"column:gelardepan" json:"Gelar_depan"` + NamaDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_dokter"` + GelarBelakang string `gorm:"column:gelarbelakang" json:"Gelar_belakang"` + Tiperawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"` + UserCreate string `gorm:"column:User_created_surat_kontrol" json:"User_create"` + UserUpdate string `gorm:"column:User_updated_surat_kontrol" json:"User_update"` + Status string `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` +} + +type Dataresponse struct { + NamaPasien string `json:"Nama_pasien"` + NoSEP string `json:"No_SEP"` + NomorSuratkontrol string `json:"Nomor_surat_kontrol"` + TanggalRencana string `json:"Tanggal_rencana_kontrol"` + TanggalCetak string `json:"Tanggal_cetak_surat_kontrol"` + PoliTuju string `json:"Poli_tujuan"` + NamaLengkap string `json:"Dpjp"` + Tiperawat string `json:"Tipe_rawat"` + UserCreate string `json:"User_create"` + UserUpdate string `json:"User_update"` + Status string `json:"Status_surat_kontrol"` +}