Files
api-bpjs-surkon/handlers/bpjs/surat_kontrol/surat_kontrol.go
2024-10-03 15:24:29 +07:00

216 lines
5.4 KiB
Go

package suratkontrol
import (
cfg "bridging-rssa/config"
suratkontrol "bridging-rssa/database/satu_data/surat_kontrol"
sk "bridging-rssa/models/bpjs/surat_kontrol"
"bridging-rssa/models/config"
"log"
"net/http"
"os"
"time"
"github.com/gin-gonic/gin"
)
func InsertSuratKontrol(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS_DEV")
endpoint := os.Getenv("SURAT_KONTROL_RS_DEV")
param := os.Getenv("INSERT_SURAT_KONTROL")
url := baseUrl + endpoint + param
dateNow := time.Now().Format("2006-01-02")
var req sk.RequestInsertRencanaKontrol
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
return
}
log.Println("Request: ", req)
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)
kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
}
reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{
Request: &sk.RequestRencanaKontrol{
NoSEP: req.NoSEP,
KodeDokter: req.KodeDokter,
PoliKontrol: req.PoliKontrol,
TglRencanaKontrol: req.TglRencanaKontrol,
User: req.User,
},
}
res, err := PostData(url, header, headers, reqSuratKontrol)
if err != nil {
c.JSON(http.StatusInternalServerError, res)
return
}
reqInsert := &sk.InsertDataSuratKontrol{
Status: "1", // First Insert status always set to 1
UserCreated: req.User,
TglCetakSurKon: dateNow,
TglRencanaKontrol: res.Response.TglRencanaKontrol,
NomorSurKon: res.Response.NoSuratKontrol,
KunjunganPasien: kunjunganPasien.IDKlinikSimgos,
RuanganSurKon: kunjunganPasien.Ruangan,
DPJPSurKon: kunjunganPasien.DPJP,
StatusSurKon: 0, // TODO CARI DARIMANA
UserCreatedSurKon: req.User,
}
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
return
}
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)
return
}
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)
kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, err)
return
}
reqSuratKontrol := &sk.RequestRencanaKontrol{
NoSEP: kunjunganPasien.NomorSEP,
KodeDokter: kunjunganPasien.KodeHfisDokter,
PoliKontrol: req.PoliKontrol,
TglRencanaKontrol: req.TglRencanaKontrol,
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)
return
}
c.JSON(http.StatusOK, res)
}
func DeleteSuratKontrol(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)
return
}
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)
request := &sk.RequestHeaderRencanaKontrol{
Request: &sk.RequestDeleteRencanaKontrol{
NoSuratKontrol: "",
User: "",
},
}
res, err := ResponseDeleteSuratKontrol(url, header, headers, request)
if err != nil {
log.Printf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, err)
return
}
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)
return
}
c.JSON(http.StatusOK, res)
}