diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index e423340..a8d2fd3 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -58,6 +58,16 @@ func GetJadwalDokterByDate(hari string) ([]string, error) { return spesialis, nil } +func GetJadwalSubspesialisByDate(hari string) ([]int, error) { + var subspesialis []int + errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Sub_spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Sub_spesialis"`, hari).Scan(&subspesialis).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return nil, errSelect + } + return subspesialis, nil +} + func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error) { var listDokter []string errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Spesialis" = ? order by "Spesialis"`, hari, spesialis).Scan(&listDokter).Error @@ -68,6 +78,16 @@ func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error) return listDokter, nil } +func GetJadwalDokterBySubpesialis(hari string, subspesialis string) ([]string, error) { + var listDokter []string + errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Sub_spesialis" = ? order by "Sub_spesialis"`, hari, subspesialis).Scan(&listDokter).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return nil, errSelect + } + return listDokter, nil +} + func DeleteJadwalDokter() error { err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter"`).Error if err != nil { diff --git a/database/satu_data/dokter/subspesialis.go b/database/satu_data/dokter/subspesialis.go index 1c68632..7d976bb 100644 --- a/database/satu_data/dokter/subspesialis.go +++ b/database/satu_data/dokter/subspesialis.go @@ -26,13 +26,33 @@ func GetSubspesialis() ([]dokter.DaftarSubspesialis, error) { return daftarSubspesialis, nil } -func GetSubspesialisByID(idSubspesialis int) ([]dokter.DaftarSubspesialis, error) { - var daftarSubspesialis []dokter.DaftarSubspesialis +func GetSubspesialisByID(idSubspesialis int) (*dokter.DaftarSubspesialis, error) { + var daftarSubspesialis *dokter.DaftarSubspesialis result := config.SatuDataDB.Debug().Raw(`select dss.*, ds."Spesialis" from "daftar_subspesialis" dss left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID" - where dss.id = ?`, idSubspesialis).Find(&daftarSubspesialis) + where dss.id = ?`, idSubspesialis).First(&daftarSubspesialis) + if result.Error != nil { + if !errors.Is(result.Error, gorm.ErrRecordNotFound) { + log.Printf("Error get data : %v", result.Error) + return nil, result.Error + } + log.Printf("Data kosong: %v", result.Error) + return daftarSubspesialis, nil + } + + log.Println(daftarSubspesialis) + return daftarSubspesialis, nil +} + +func GetSubspesialisByIDBatch(idSubspesialis []int) ([]dokter.DaftarSubspesialis, error) { + var daftarSubspesialis []dokter.DaftarSubspesialis + result := config.SatuDataDB.Debug().Raw(`select dss.*, ds."Spesialis" + from "daftar_subspesialis" dss + left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID" + where dss.id in ? + order by dss."id"`, idSubspesialis).Find(&daftarSubspesialis) if result.Error != nil { if !errors.Is(result.Error, gorm.ErrRecordNotFound) { log.Printf("Error get data : %v", result.Error) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 7a6655e..2503606 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -155,7 +155,8 @@ func GetIDXDaftarBySurKon(idSurKon string) (string, error) { var idxDaftar string err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" from "data_surat_kontrol" dsk - left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien"`).First(&idxDaftar).Error + left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien" + where dsk."id" = ?`, idSurKon).First(&idxDaftar).Error if err != nil { log.Println(err) return "", err diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 5c758b3..319a9b7 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -175,36 +175,33 @@ func GetDokterByDPJP(c *gin.Context) { var res *jadwal_dokter.ResponseListHari - for _, v := range listSubspesialis { - for _, k := range namaDokter { - var jadwalDokter []jadwal_dokter.ListJadwalDokter - for _, key := range listHari { - jadwalDokter = append(jadwalDokter, jadwal_dokter.ListJadwalDokter{ - NamaHari: key.NamaHari, - KodeHari: key.Hari, - Waktu: key.Waktu, - }) - } - gelarDepan := utils.ReplaceGelar(k.GelarDepan) - gelarBelakang := utils.ReplaceGelar(k.GelarBelakang) - namaLengkap := gelarDepan + " " + k.NamaLengkap + " " + gelarBelakang - namaLengkap = strings.TrimPrefix(namaLengkap, " ") - namaLengkap = strings.TrimSuffix(namaLengkap, " ") - hfisCode := strings.TrimSpace(k.HFISCode) - res = &jadwal_dokter.ResponseListHari{ - IDSpesialis: v.IDSpesialis, - Kode: v.Kode, - Spesialis: v.Spesialis, - Subspesialis: v.Subspesialis, - IDSubspesialis: v.Kode, - NamaLengkap: namaLengkap, - HFISCode: hfisCode, - KodeDPJP: dpjp, - JadwalDokter: jadwalDokter, - } + for _, k := range namaDokter { + var jadwalDokter []jadwal_dokter.ListJadwalDokter + for _, key := range listHari { + jadwalDokter = append(jadwalDokter, jadwal_dokter.ListJadwalDokter{ + NamaHari: key.NamaHari, + KodeHari: key.Hari, + Waktu: key.Waktu, + }) + } + gelarDepan := utils.ReplaceGelar(k.GelarDepan) + gelarBelakang := utils.ReplaceGelar(k.GelarBelakang) + namaLengkap := gelarDepan + " " + k.NamaLengkap + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + hfisCode := strings.TrimSpace(k.HFISCode) + res = &jadwal_dokter.ResponseListHari{ + IDSpesialis: listSubspesialis.IDSpesialis, + Kode: listSubspesialis.Kode, + Spesialis: listSubspesialis.Spesialis, + Subspesialis: listSubspesialis.Subspesialis, + IDSubspesialis: listSubspesialis.Kode, + NamaLengkap: namaLengkap, + HFISCode: hfisCode, + KodeDPJP: dpjp, + JadwalDokter: jadwalDokter, } } - log.Println("Response :", res) c.JSON(http.StatusOK, res) } @@ -228,6 +225,25 @@ func GetSpesialisByDate(c *gin.Context) { c.JSON(http.StatusOK, listSpesialis) } +func GetJadwalSubspesialisByDate(c *gin.Context) { + tanggal := c.Param("tanggal") + date, err := time.Parse("2006-01-02", tanggal) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + hari := date.Local().Weekday().String() + hari = utils.ConvertDay(hari) + idsubspesialis, err := dokter.GetJadwalSubspesialisByDate(hari) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + listSpesialis, err := dokter.GetSubspesialisByIDBatch(idsubspesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + c.JSON(http.StatusOK, listSpesialis) +} + func GetDokterBySpesialis(c *gin.Context) { spesialis := c.Param("spesialis") tanggal := c.Param("tanggal") @@ -266,3 +282,49 @@ func GetDokterBySpesialis(c *gin.Context) { log.Println("Response :", resDokter) c.JSON(http.StatusOK, resDokter) } + +func GetDokterBySubspesialis(c *gin.Context) { + subspesialis := c.Param("subspesialis") + tanggal := c.Param("tanggal") + date, err := time.Parse("2006-01-02", tanggal) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + hari := date.Local().Weekday().String() + hari = utils.ConvertDay(hari) + idDokter, err := dokter.GetJadwalDokterBySubpesialis(hari, subspesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + namaDokter, err := dokter.GetNamaLengkapDokter(idDokter) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + var resDokter []dktr.ResponseDokterNew + idSubspesialis, err := strconv.Atoi(subspesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + + listSubspesialis, err := dokter.GetSubspesialisByID(idSubspesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + + for _, v := range namaDokter { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaLengkap + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + resDokter = append(resDokter, dktr.ResponseDokterNew{ + ID: v.ID, + NamaLengkap: namaLengkap, + Subspesialis: idSubspesialis, + HFISCode: v.HFISCode, + KodePoli: listSubspesialis.Kode, + }) + } + log.Println("Response :", resDokter) + c.JSON(http.StatusOK, resDokter) +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index acd5306..42f4992 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -160,6 +160,8 @@ func UpdateSuratKontrol(c *gin.Context) { return } + log.Println("Request: ", req) + timeNow := time.Now().Format("2006-01-02 15:04:05") kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) @@ -184,6 +186,18 @@ func UpdateSuratKontrol(c *gin.Context) { UserCreatedSurKon: req.User, TipeSurKon: tipeSurKon, } + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDSurKon, + StatusSurKon: 2, + } + + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { log.Println(err) diff --git a/main.go b/main.go index bee039b..6aaafcc 100644 --- a/main.go +++ b/main.go @@ -43,8 +43,10 @@ func main() { { jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter) jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP) - jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate) + // jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate) + jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate) jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) + jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis) } suratKontrol := v1.Group("/suratkontrol") @@ -70,8 +72,8 @@ func main() { AllowCredentials: true, })) - log.Println("JALAN DI PORT : 8080") - err = r.Run(":8080") + log.Println("JALAN DI PORT : 8082") + err = r.Run(":8082") if err != nil { log.Fatal(err) } diff --git a/models/dokter/dokter.go b/models/dokter/dokter.go index 6b37bc3..fb228b8 100644 --- a/models/dokter/dokter.go +++ b/models/dokter/dokter.go @@ -24,3 +24,11 @@ type ResponseDokter struct { Spesialis int `json:"spesialis"` HFISCode string `json:"HFIS_code"` } + +type ResponseDokterNew struct { + ID string `json:"id"` + NamaLengkap string `json:"nama_lengkap"` + Subspesialis int `json:"subspesialis"` + HFISCode string `json:"HFIS_code"` + KodePoli string `json:"kode_poli"` +}