From 97a6780b6b90acc65903922fca92d9581e5c0b127b20bdfc4055935a59dbb902 Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 30 Sep 2024 15:22:25 +0700 Subject: [PATCH] add code for get nomor surat kontrol --- .env | 10 +--- config/config.go | 15 ------ handlers/bpjs/surat_kontrol/response.go | 53 ++++++++++++++++++++ handlers/bpjs/surat_kontrol/surat_kontrol.go | 28 +++++++++++ main.go | 1 + models/bpjs/surat_kontrol/surat_kontrol.go | 53 ++++++++++++++++++++ 6 files changed, 137 insertions(+), 23 deletions(-) diff --git a/.env b/.env index afc5b58..cdd52ae 100644 --- a/.env +++ b/.env @@ -1,10 +1,3 @@ -# POSTGRES_DSN="postgres://sa:password@localhost:5432/postgres?sslmode=disable" -DB_HOST=localhost -DB_USERNAME=sa -DB_PASSWORD=password -DB_NAME=postgres -DB_PORT=5432 - SATUDATA_HOST=10.10.123.165 SATUDATA_USERNAME=stim SATUDATA_PASSWORD=stim*RS54 @@ -19,4 +12,5 @@ SECRET_KEY=1bV363512D BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/ SURAT_KONTROL_RS_DEV=vclaim-rest-dev -INSERT_SURAT_KONTROL=/RencanaKontrol/insert \ No newline at end of file +INSERT_SURAT_KONTROL=/RencanaKontrol/insert +GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol \ No newline at end of file diff --git a/config/config.go b/config/config.go index d874030..4282459 100644 --- a/config/config.go +++ b/config/config.go @@ -21,29 +21,14 @@ var SatuDataDB *gorm.DB var err error func ConnectDB() { - hostDB := os.Getenv("DB_HOST") - usernameDB := os.Getenv("DB_USERNAME") - passwordDB := os.Getenv("DB_PASSWORD") - dbName := os.Getenv("DB_NAME") - portDB := os.Getenv("DB_PORT") - hostSatuData := os.Getenv("SATUDATA_HOST") userNameSatuData := os.Getenv("SATUDATA_USERNAME") passwordSatuData := os.Getenv("SATUDATA_PASSWORD") dbNameSatuData := os.Getenv("SATUDATA_NAME") portSatuData := os.Getenv("SATUDATA_PORT") - local := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostDB, usernameDB, passwordDB, dbName, portDB) - satuData := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSatuData, userNameSatuData, passwordSatuData, dbNameSatuData, portSatuData) - localDB, err = gorm.Open(postgres.Open(local), &gorm.Config{}) - if err != nil { - log.Fatal("Failed to connect to Satu Data database: ", err) - } else { - log.Println("Successfully connected to the database") - } - SatuDataDB, err = gorm.Open(postgres.Open(satuData), &gorm.Config{}) if err != nil { log.Fatal("Failed to connect to Satu Data database: ", err) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index 372dfac..bbbcfd9 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -83,3 +83,56 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return resSuratKontrol, nil } + +func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map[string]string) (*suratkontrol.ResponseNomorSuratKontrol, error) { + log.Println("URL", url) + + req, err := http.NewRequest("GET", url, nil) + if err != nil { + log.Printf("Error creating request: %v", err) + } + + for key, value := range headers { + req.Header.Set(key, value) + } + + log.Println("REQ", req.Header) + client := http.Client{} + response, err := client.Do(req) + if err != nil { + log.Printf("Error making external API request: %v", err) + } + log.Println("RESPONSE: ", response) + + key := header.ConsID + header.SecretKey + header.TimeStamp + res, err := io.ReadAll(response.Body) + if err != nil { + log.Println(err) + } + + var resNoSuratKontrolRaw suratkontrol.ResponseRaw + err = json.Unmarshal([]byte(res), &resNoSuratKontrolRaw) + if err != nil { + log.Printf("Error Unmarshaling: %v", err) + return nil, err + } + + dataResp, err := docs.StringDecrypt(key, resNoSuratKontrolRaw.Response) + if err != nil { + log.Printf("Error Decrypt: %v", err) + return nil, err + } + + var responseNoSuratKontrol *suratkontrol.ResponseNomorSuratKontrol + log.Println("dataresp: ", dataResp) + + err = json.Unmarshal([]byte(dataResp), &resNoSuratKontrolRaw) + if err != nil { + log.Printf("Error Decode: %v", err) + return nil, err + } + + log.Println("res: ", resNoSuratKontrolRaw) + + return responseNoSuratKontrol, nil +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 0821e43..cbef0c7 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -60,3 +60,31 @@ func InsertSuratKontrol(c *gin.Context) { c.JSON(http.StatusOK, res) } + +func GetNomorSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("GET_NOMOR_SURAT_KONTROL") + noSurat := c.Param("noSuratKontrol") + url := baseUrl + endpoint + param + noSurat + + conf := config.ConfigBpjs{} + + header := cfg.SetHeader(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + } + log.Println("Headers : ", headers) + + res, err := ResponseGetNomorSuratKontrol(url, header, headers) + if err != nil { + log.Fatalf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + } + + c.JSON(http.StatusOK, res) +} diff --git a/main.go b/main.go index 256c111..e22837a 100644 --- a/main.go +++ b/main.go @@ -48,6 +48,7 @@ func main() { suratKontrol := v1.Group("/suratkontrol") { suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) + suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 6535e0a..6503ec5 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -17,6 +17,11 @@ type ResponseInsertSuratKontrolRaw struct { MetaData Metadata `json:"metadata"` } +type ResponseRaw struct { + Response string `json:"response"` + MetaData Metadata `json:"metadata"` +} + type Metadata struct { Code int `json:"code"` Message string `json:"message"` @@ -38,3 +43,51 @@ type RequestInsertRencanaKontrol struct { KodePoli string `json:"kodePoli"` User string `json:"user"` } + +type ResponseNomorSuratKontrol struct { + NoSuratKontrol string `json:"noSuratKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + TglTerbit string `json:"tglTerbit"` + JnsKontrol string `json:"jnsKontrol"` + PoliTujuan string `json:"poliTujuan"` + NamaPoliTujuan string `json:"namaPoliTujuan"` + KodeDokter string `json:"kodeDokter"` + NamaDokter string `json:"namaDokter"` + FlagKontrol string `json:"flagKontrol"` + KodeDokterPembuat string `json:"kodeDokterPembuat"` + NamaDokterPembuat string `json:"namaDokterPembuat"` + NamaJnsKontrol string `json:"namaJnsKontrol"` + Sep Sep `json:"sep"` +} + +type Sep struct { + NoSep string `json:"noSep"` + TglSep string `json:"tglSep"` + JnsPelayanan string `json:"jnsPelayanan"` + Poli string `json:"poli"` + Diagnosa string `json:"diagnosa"` + Peserta Peserta `json:"peserta"` + ProvUmum ProvUmum `json:"provUmum"` + ProvPerujuk ProvPerujuk `json:"provPerujuk"` +} + +type Peserta struct { + NoKartu string `json:"noKartu"` + Nama string `json:"nama"` + TglLahir string `json:"tglLahir"` + Kelamin string `json:"kelamin"` + HakKelas string `json:"hakKelas"` +} + +type ProvUmum struct { + KodedProvider string `json:"kdProvider"` + NamaProvider string `json:"nmProvider"` +} + +type ProvPerujuk struct { + KodeProviderPerujuk string `json:"kdProviderPerujuk"` + NamaProviderPerujuk string `json:"nmProviderPerujuk"` + AsalRujukan string `json:"asalRujukan"` + NoRujukan string `json:"noRujukan"` + TglRujukan string `json:"tglRujukan"` +}