From ff7d766f23a2de5c98e8b54a1c9868f256c16211c56b726344241023c555e1d5 Mon Sep 17 00:00:00 2001 From: mirza Date: Fri, 25 Apr 2025 11:10:31 +0700 Subject: [PATCH] update code --- handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 228 ++++++++----------- handlers/bpjs/jadwal_dokter/response.go | 4 +- main.go | 14 +- 3 files changed, 94 insertions(+), 152 deletions(-) diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 97acd18..a7fbede 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -25,27 +25,15 @@ import ( "github.com/gin-gonic/gin" ) -func GetJadwalDokter() bool { +func GetJadwalDokter(c *gin.Context) { baseUrl := os.Getenv("BASEURL_BPJS") endpoint := os.Getenv("ANTREAN_RS") - url := baseUrl + endpoint - - errTruncate := dokter.DeleteJadwalDokter() - if errTruncate != nil { - log.Println(errTruncate) - return false - } - - errTruncateTemp := dokter.DeleteJadwalDokterTemp() - if errTruncateTemp != nil { - log.Println(errTruncateTemp) - return false - } + tanggal := c.Param("tanggal") // Select from daftar spesialis spesialis, err := dokter.GetSpesialis() if err != nil { - return false + c.JSON(http.StatusInternalServerError, err) } var listIdSpesialis = make(map[string]int) @@ -55,7 +43,7 @@ func GetJadwalDokter() bool { subspesialis, err := dokter.GetSubspesialis() if err != nil { - return false + c.JSON(http.StatusInternalServerError, err) } var listIdSubspesialis = make(map[string]int) @@ -65,7 +53,7 @@ func GetJadwalDokter() bool { listDokter, err := dokter.GetDokter() if err != nil { - return false + c.JSON(http.StatusInternalServerError, err) } var listIddokter = make(map[int]string) @@ -74,115 +62,104 @@ func GetJadwalDokter() bool { } var reqInsert *jadwal_dokter.JadwalDokterSatuData - + var response []*jadwal_dokter.JadwalDokterSatuData for _, value := range spesialis { + conf := config.ConfigBpjs{} - tanggal := time.Now().Format("2006-01-02") - // tanggal := "2025-04-11" - for i := 0; i < 7; i++ { - conf := config.ConfigBpjs{} + header := cfg.SetHeader(false, conf) - header := cfg.SetHeader(false, conf) - - headers := map[string]string{ - "X-cons-id": header.ConsID, - "X-timestamp": header.TimeStamp, - "X-signature": header.XSignature, - "user_key": header.UserKey, + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + } + kdPoly := value.Kode + url := baseUrl + endpoint + "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal + res, err := JadwalDokterGetResponse(url, header, headers) + if err != nil { + log.Println("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + } + log.Println("Tanggal :", tanggal) + if res == nil { + log.Println("Skip Proses") + continue + } + jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggal) + if errLibur != nil { + log.Println(errLibur) + c.JSON(http.StatusInternalServerError, err) + } + if isLibur { + tanggalTemp, errParseTemp := time.Parse("2006-01-02", tanggal) + if errParseTemp != nil { + log.Println(errParseTemp) + c.JSON(http.StatusInternalServerError, err) } - kdPoly := value.Kode - res, err := JadwalDokterGetResponse(url, header, kdPoly, tanggal, headers) - if err != nil { - log.Println("Error making external API request: %v", err) - return false + isLibur = false + log.Println(jadwalLibur.NamaLiburPelayanan) + tanggalTemp = tanggalTemp.AddDate(0, 0, 7) + tanggalTempString := tanggalTemp.Format("2006-01-02") + log.Println(tanggalTempString) + url += "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalTempString + resNew, errRes := JadwalDokterGetResponse(url, header, headers) + if errRes != nil { + log.Println("Error making external API request: ", errRes) + c.JSON(http.StatusInternalServerError, err) } - date, errParse := time.Parse("2006-01-02", tanggal) - if errParse != nil { - return false - } - tanggal = date.AddDate(0, 0, 1).Format("2006-01-02") - log.Println("Tanggal :", tanggal) - if res == nil { - log.Println("Skip Proses") + if resNew != nil { + for _, v := range resNew.Response { + res.Response = append(res.Response, &jadwal_dokter.ListDokter{ + KodeSubspesialis: v.KodeSubspesialis, + Hari: v.Hari, + KapasitasPasien: v.KapasitasPasien, + Libur: v.Libur, + NamaHari: v.NamaHari, + Jadwal: v.Jadwal, + NamaSubspesialis: v.NamaSubspesialis, + NamaDokter: v.NamaDokter, + KodePoli: v.KodePoli, + NamaPoli: v.NamaPoli, + KodeDokter: v.KodeDokter, + }) + } + } else { + log.Println("Tidak ada data pada tanggal ", tanggalTempString) continue } - jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggal) - if errLibur != nil { - log.Println(errLibur) - return false + } + for _, v := range res.Response { + idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis) + idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis) + idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter) + reqInsert = &jadwal_dokter.JadwalDokterSatuData{ + Hari: v.Hari, + NamaHari: v.NamaHari, + Waktu: v.Jadwal, + Dokter: idDokter, + Spesialis: idSpesialis, + SubSpesialis: idSubspesialis, + Status: 1, // When available always set to 1 } - if isLibur { - tanggalTemp, errParseTemp := time.Parse("2006-01-02", tanggal) - if errParseTemp != nil { - log.Println(errParseTemp) - return false + if reqInsert.Dokter != "" { + errInsert := dokter.InsertJadwalDokter(reqInsert) + if errInsert != nil { + log.Println(errInsert) + c.JSON(http.StatusInternalServerError, err) } - isLibur = false - for i := 0; i < 7; i++ { - log.Println(jadwalLibur.NamaLiburPelayanan) - tanggalTemp = tanggalTemp.AddDate(0, 0, 7) - tanggalTempString := tanggalTemp.Format("2006-01-02") - log.Println(tanggalTempString) - resNew, errRes := JadwalDokterGetResponse(url, header, kdPoly, tanggal, headers) - if errRes != nil { - log.Println("Error making external API request: ", errRes) - return false - } - if resNew != nil { - for _, v := range resNew.Response { - res.Response = append(res.Response, &jadwal_dokter.ListDokter{ - KodeSubspesialis: v.KodeSubspesialis, - Hari: v.Hari, - KapasitasPasien: v.KapasitasPasien, - Libur: v.Libur, - NamaHari: v.NamaHari, - Jadwal: v.Jadwal, - NamaSubspesialis: v.NamaSubspesialis, - NamaDokter: v.NamaDokter, - KodePoli: v.KodePoli, - NamaPoli: v.NamaPoli, - KodeDokter: v.KodeDokter, - }) - } - log.Println("Ada data pada tanggal ", tanggalTempString) - break - } else { - log.Println("Tidak ada data pada tanggal ", tanggalTempString) - continue - } - } - } - for _, v := range res.Response { - idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis) - idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis) - idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter) - reqInsert = &jadwal_dokter.JadwalDokterSatuData{ - Hari: v.Hari, - NamaHari: v.NamaHari, - Waktu: v.Jadwal, - Dokter: idDokter, - Spesialis: idSpesialis, - SubSpesialis: idSubspesialis, - Status: 1, // When available always set to 1 - } - if reqInsert.Dokter != "" { - errInsert := dokter.InsertJadwalDokter(reqInsert) - if errInsert != nil { - log.Println(errInsert) - return false - } - } else { - reqInsert.Dokter = strconv.Itoa(v.KodeDokter) - errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert) - if errInsertTemp != nil { - log.Println(errInsertTemp) - return false - } + } else { + reqInsert.Dokter = strconv.Itoa(v.KodeDokter) + errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert) + if errInsertTemp != nil { + log.Println(errInsertTemp) + c.JSON(http.StatusInternalServerError, err) } } + response = append(response, reqInsert) } } - return true + c.JSON(http.StatusOK, response) } func GetDokterByDPJP(c *gin.Context) { @@ -252,25 +229,6 @@ func GetDokterByDPJP(c *gin.Context) { c.JSON(http.StatusOK, res) } -func GetSpesialisByDate(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) - idSpesialis, err := dokter.GetJadwalDokterByDate(hari) - if err != nil { - c.JSON(http.StatusInternalServerError, err) - } - listSpesialis, err := dokter.GetSpesialisByID(idSpesialis) - if err != nil { - c.JSON(http.StatusInternalServerError, err) - } - c.JSON(http.StatusOK, listSpesialis) -} - func GetJadwalSubspesialisByDate(c *gin.Context) { tanggal := c.Param("tanggal") date, err := time.Parse("2006-01-02", tanggal) @@ -386,8 +344,6 @@ func GetDataJadwalDokter() bool { baseUrl := os.Getenv("BASEURL_BPJS") endpoint := os.Getenv("ANTREAN_RS") - url := baseUrl + endpoint - log.Println("url", url) conf := config.ConfigBpjs{} spesialis, err := dokter.GetSpesialis() @@ -449,7 +405,7 @@ func GetDataJadwalDokter() bool { headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ") startDate := time.Now() - endDate := startDate.AddDate(0, 1, 0) + endDate := startDate.AddDate(0, 3, 0) logTimeStart := time.Now().Format("2006-01-02 15:04:05") var res *jadwal_dokter.JadwalDokter var reqLog []*jadwal_dokter.RequestJadwalDokter @@ -460,7 +416,7 @@ func GetDataJadwalDokter() bool { log.Println("Tanggal :", tanggal) urlReq := url + "/tanggal/" + tanggal - res, err = JadwalDokterGetResponse(urlReq, header, value.Kode, tanggal, headers) + res, err = JadwalDokterGetResponse(urlReq, header, headers) if err != nil { log.Printf("Error making external API request: %v", err) return err diff --git a/handlers/bpjs/jadwal_dokter/response.go b/handlers/bpjs/jadwal_dokter/response.go index ca12a23..d5c81d5 100644 --- a/handlers/bpjs/jadwal_dokter/response.go +++ b/handlers/bpjs/jadwal_dokter/response.go @@ -11,9 +11,7 @@ import ( "net/http" ) -func JadwalDokterGetResponse(url string, header *config.Header, kdPoly string, tanggal string, headers map[string]string) (*jadwal_dokter.JadwalDokter, error) { - param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal - url += param +func JadwalDokterGetResponse(url string, header *config.Header, headers map[string]string) (*jadwal_dokter.JadwalDokter, error) { log.Println("URL", url) req, err := http.NewRequest("GET", url, nil) if err != nil { diff --git a/main.go b/main.go index e3fe6ee..384ab26 100644 --- a/main.go +++ b/main.go @@ -38,17 +38,6 @@ func main() { defer scheduler.Stop() - // scheduler.AddFunc("0 2 * * *", func() { - // log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===") - // for { - // success := jadwal_dokter.GetJadwalDokter() - // if success { - // log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===") - // break - // } - // } - // }) - scheduler.AddFunc("0 2 * * *", func() { log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===") for { @@ -82,9 +71,8 @@ func main() { jadwalDokter := v1.Group("/jadwaldokter") { - // jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter) + jadwalDokter.GET("/date/:tanggal", jadwal_dokter.GetJadwalDokter) jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP) - // 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)