This commit is contained in:
usman
2024-12-06 10:41:40 +07:00
5 changed files with 223 additions and 69 deletions

No files matched your search

@@ -0,0 +1,24 @@
package lokasiruang
import (
"bridging-rssa/config"
"errors"
"log"
"gorm.io/gorm"
)
func GetDaftarLokasiRuang(idSimgos string) (int, error) {
var idRuangan int
query := `select dlr."id" from "daftar_lokasi_ruang" dlr where dlr."Id_location_simgos" = ?`
err := config.SatuDataDB.Debug().Raw(query, idSimgos).First(&idRuangan).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
log.Println(err)
return 128, nil
}
log.Println(err)
return 0, err
}
return idRuangan, nil
}
@@ -323,6 +323,7 @@ func GetDokterBySubspesialis(c *gin.Context) {
Subspesialis: idSubspesialis,
HFISCode: v.HFISCode,
KodePoli: listSubspesialis.Kode,
DPJPCode: v.DPJPCode,
})
}
log.Println("Response :", resDokter)
+10 -23
View File
@@ -12,7 +12,6 @@ import (
"log"
"net/http"
"strings"
"time"
)
func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) {
@@ -36,21 +35,15 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
}
log.Println("REQ", req.Header)
client := http.Client{
Timeout: 10 * time.Second,
}
client := http.Client{}
responses := &suratkontrol.Response{}
response, err := client.Do(req)
if err != nil {
if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") {
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, err
}
responses.MetaData.Code = "203"
responses.MetaData.Message = err.Error()
log.Printf("Error making external API request: %v", err)
log.Println("responses: ", responses)
return responses, err
}
log.Println("RESPONSE: ", response)
@@ -61,7 +54,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
responses.MetaData.Code = "504"
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, err
return responses, errMsg
}
key := header.ConsID + header.SecretKey + header.TimeStamp
@@ -87,7 +80,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!."
resSuratKontrolRaw.MetaData.Message = message
log.Println("masuk sini kan")
} else if strings.Contains(strings.ToLower(resSuratKontrolRaw.MetaData.Message), "gagal simpan") {
} else if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Poli Tujuan Kontrol tidak sama dengan Poli Asal Rujukan Awal." {
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
resSuratKontrolRaw.MetaData.Message = message
}
@@ -145,19 +138,13 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
}
log.Println("REQ", req.Header)
client := http.Client{
Timeout: 10 * time.Second,
}
client := http.Client{}
responses := &suratkontrol.Response{}
response, err := client.Do(req)
if err != nil {
if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") {
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, err
}
responses.MetaData.Code = "504"
responses.MetaData.Message = err.Error()
log.Println("responses: ", responses)
log.Printf("Error making external API request: %v", err)
return responses, err
}
+187 -46
View File
@@ -3,6 +3,7 @@ package suratkontrol
import (
cfg "bridging-rssa/config"
log_api "bridging-rssa/database/satu_data/log_api"
lokasiruang "bridging-rssa/database/satu_data/lokasi_ruang"
suratkontrol "bridging-rssa/database/satu_data/surat_kontrol"
"bridging-rssa/docs/utils"
sk "bridging-rssa/models/bpjs/surat_kontrol"
@@ -33,9 +34,11 @@ func InsertSuratKontrol(c *gin.Context) {
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -43,9 +46,11 @@ func InsertSuratKontrol(c *gin.Context) {
reqJson, err := json.Marshal(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -74,21 +79,42 @@ func InsertSuratKontrol(c *gin.Context) {
kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
var idRuangan int
if kunjunganPasien.Ruangan != 0 {
idRuangan = kunjunganPasien.Ruangan
} else {
idRuangan, err = lokasiruang.GetDaftarLokasiRuang(req.Ruangan)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
}
uuid := uuid.New().String()
if req.TipeSurKon != "1" {
dataSurkon, err := suratkontrol.GetNomorSurKon(kunjunganPasien.ID)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -98,9 +124,11 @@ func InsertSuratKontrol(c *gin.Context) {
noUrut, err = utils.GetNoUrut(dataSurkon)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -114,7 +142,7 @@ func InsertSuratKontrol(c *gin.Context) {
TglRencanaKontrol: req.TglRencanaKontrol,
NomorSurKon: noSurKon,
KunjunganPasien: kunjunganPasien.ID,
RuanganSurKon: kunjunganPasien.Ruangan,
RuanganSurKon: idRuangan,
DPJPSurKon: req.IDDokter,
StatusSurKon: 1, // First Insert status always set to 1
UserCreatedSurKon: req.User,
@@ -123,9 +151,11 @@ func InsertSuratKontrol(c *gin.Context) {
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -133,15 +163,19 @@ func InsertSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateKunjunganPasien(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "200",
Message: "Berhasil Insert Surat Kontrol",
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "200",
Message: "Berhasil Insert Surat Kontrol",
},
})
return
}
@@ -161,9 +195,11 @@ func InsertSuratKontrol(c *gin.Context) {
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -188,23 +224,29 @@ func InsertSuratKontrol(c *gin.Context) {
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
log.Println(err)
c.JSON(http.StatusInternalServerError, res.MetaData)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{
MetaData: res.MetaData,
})
return
}
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -216,7 +258,7 @@ func InsertSuratKontrol(c *gin.Context) {
TglRencanaKontrol: res.Response.TglRencanaKontrol,
NomorSurKon: res.Response.NoSuratKontrol,
KunjunganPasien: kunjunganPasien.ID,
RuanganSurKon: kunjunganPasien.Ruangan,
RuanganSurKon: idRuangan,
DPJPSurKon: req.IDDokter,
StatusSurKon: 1, // First Insert status always set to 1
UserCreatedSurKon: req.User,
@@ -226,9 +268,11 @@ func InsertSuratKontrol(c *gin.Context) {
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -242,9 +286,11 @@ func InsertSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateKunjunganPasien(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -269,9 +315,11 @@ func InsertSuratKontrol(c *gin.Context) {
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
@@ -292,7 +340,6 @@ func InsertSuratKontrol(c *gin.Context) {
}
log.Println("Response: ", response)
c.JSON(http.StatusOK, response)
}
@@ -577,6 +624,15 @@ func DeleteSuratKontrol(c *gin.Context) {
})
return
}
reqJson, err := json.Marshal(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
log.Println("REQUEST: ", req)
@@ -620,6 +676,12 @@ func DeleteSuratKontrol(c *gin.Context) {
}
log.Println("Headers : ", headers)
var headerStringBuilder strings.Builder
for key, value := range headers {
headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value))
}
headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ")
request := &sk.RequestHeaderRencanaKontrol{
Request: &sk.TSuratKontrol{
RequestDelete: sk.RequestDeleteRencanaKontrol{
@@ -629,12 +691,91 @@ func DeleteSuratKontrol(c *gin.Context) {
},
}
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
res, err := ResponseDeleteSuratKontrol(url, header, headers, request)
if err != nil {
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
uuid := uuid.New().String()
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "BPJS-VClaim-RencanaKontrol",
Header: headerString,
Method: "DELETE",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: res.MetaData.Code,
ResponTimeStart: logTimeStart,
ResponTimeEnd: logTimeEnd,
Comment: res.MetaData.Message,
}
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
log.Printf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, err)
return
}
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
uuid := uuid.New().String()
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "BPJS-VClaim-RencanaKontrol",
Header: headerString,
Method: "DELETE",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: res.MetaData.Code,
ResponTimeStart: logTimeStart,
ResponTimeEnd: logTimeEnd,
Comment: res.MetaData.Message,
}
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
reqUpdate := &sk.DataSuratKontrol{
DateUpdated: timeNow,
@@ -34,6 +34,7 @@ type RequestInsertRencanaKontrol struct {
NamaDiagnosa string `json:"Nama_diagnosa"`
TipeSurKon string `json:"tipe_surkon"`
TipeRawat string `json:"tipe_rawat"`
Ruangan string `json:"ruangan"`
}
type ReqDeleteRencanaKontrol struct {