diff --git a/.env b/.env index cdd52ae..8a2c4d6 100644 --- a/.env +++ b/.env @@ -13,4 +13,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 +UPDATE_SURAT_KONTROL=/RencanaKontrol/Update GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol \ No newline at end of file diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index bbbcfd9..a80a422 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -50,16 +50,78 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } - var resSuratKontrolRaw suratkontrol.ResponseInsertSuratKontrolRaw + var resSuratKontrolRaw suratkontrol.ResponseRaw err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) if err != nil { log.Printf("Error Unmarshaling: %v", err) return nil, err } - if resSuratKontrolRaw.MetaData.Code == 201 { - log.Println("No Data Found") - return nil, nil + dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) + if err != nil { + log.Printf("Error Decrypt: %v", err) + log.Println("res: ", dataResp) + return nil, err + } + + var resSuratKontrol []suratkontrol.ResponseInsertSuratKontrol + + log.Println("dataresp: ", dataResp) + + err = json.Unmarshal([]byte(dataResp), &resSuratKontrol) + if err != nil { + log.Printf("Error Decode: %v", err) + return nil, err + } + + log.Println("res: ", resSuratKontrol) + + return resSuratKontrol, nil +} + +func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { + log.Println("URL", url) + + requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ + Request: *request, + } + + reqMarshall, err := json.Marshal(requestBody) + if err != nil { + log.Printf("Error json marshal: %v", err) + } + + req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall)) + if err != nil { + log.Printf("Error creating request: %v", err) + return nil, 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) + return nil, err + } + log.Println("RESPONSE: ", response) + + key := header.ConsID + header.SecretKey + header.TimeStamp + res, err := io.ReadAll(response.Body) + if err != nil { + fmt.Println(err) + return nil, err + } + + var resSuratKontrolRaw suratkontrol.ResponseRaw + err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) + if err != nil { + log.Printf("Error Unmarshaling: %v", err) + return nil, err } dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index cbef0c7..07efe3d 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -61,6 +61,55 @@ func InsertSuratKontrol(c *gin.Context) { c.JSON(http.StatusOK, res) } +func UpdateSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("UPDATE_SURAT_KONTROL") + url := baseUrl + endpoint + param + + var req sk.RequestInsertRencanaKontrol + + err := c.Bind(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + } + + 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, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + kunjuganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + } + + reqSuratKontrol := &sk.RequestRencanaKontrol{ + NoSEP: kunjuganPasien.NomorSEP, + KodeDokter: kunjuganPasien.KodeHfisDokter, + PoliKontrol: req.KodePoli, + TglRencanaKontrol: req.Tanggal, + User: req.User, + } + + res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + } + + c.JSON(http.StatusOK, res) +} + func GetNomorSuratKontrol(c *gin.Context) { baseUrl := os.Getenv("BASEURL_BPJS_DEV") endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 6503ec5..b03bbc9 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -5,16 +5,12 @@ type RequestHeaderRencanaKontrol struct { } type RequestRencanaKontrol struct { - NoSEP string `json:"noSEP"` - KodeDokter string `json:"kodeDokter"` - PoliKontrol string `json:"poliKontrol"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - User string `json:"user"` -} - -type ResponseInsertSuratKontrolRaw struct { - Response string `json:"response"` - MetaData Metadata `json:"metadata"` + NoSuratKontrol *string `json:"noSuratKontrol"` + NoSEP string `json:"noSEP"` + KodeDokter string `json:"kodeDokter"` + PoliKontrol string `json:"poliKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` } type ResponseRaw struct {