Merge pull request 'bridging-bpjs' (#4) from bridging-bpjs into master
Reviewed-on: mirza.millahsyafiq.0912/bridging-rssa#4
This commit was merged in pull request #4.
This commit is contained in:
No files matched your search
@@ -13,12 +13,23 @@ SECRET_KEY=1bV363512D
|
||||
CONS_ID_DEV=16041
|
||||
USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c
|
||||
SECRET_KEY_DEV=8pP3D5431E
|
||||
USER_KEY_ICARE=1cd65acaa349684be6353bea5149e2e2
|
||||
|
||||
BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/
|
||||
VCLAIM_RS_DEV=vclaim-rest-dev
|
||||
SURAT_KONTROL_RS=vclaim-rest
|
||||
I_CARE_JKN=wsihs
|
||||
I_CARE_JKN_DEV=ihs_dev
|
||||
|
||||
INSERT_SURAT_KONTROL=/RencanaKontrol/insert
|
||||
UPDATE_SURAT_KONTROL=/RencanaKontrol/Update
|
||||
DELETE_SURAT_KONTROL=/RencanaKontrol/Delete
|
||||
GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol/
|
||||
GET_SURAT_KONTROL_SEP=/RencanaKontrol/nosep/
|
||||
GET_NOMOR_RUJUKAN=/Rujukan/
|
||||
GET_NOMOR_RUJUKAN_BATCH=/Rujukan/List/Peserta/
|
||||
|
||||
GET_FKRTL=/api/rs/validate
|
||||
GET_FKTP=/api/pcare/validate
|
||||
|
||||
|
||||
+4
-5
@@ -36,20 +36,19 @@ func ConnectDB() {
|
||||
}
|
||||
}
|
||||
|
||||
func SetHeader(cfg config.ConfigBpjs) *config.Header {
|
||||
func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header {
|
||||
|
||||
timenow := time.Now().UTC()
|
||||
time := time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
tstamp := timenow.Unix() - time.Unix()
|
||||
|
||||
// cfg.Cons_id = os.Getenv("CONS_ID_DEV")
|
||||
// cfg.User_key = os.Getenv("USER_KEY_DEV")
|
||||
// cfg.Secret_key = os.Getenv("SECRET_KEY_DEV")
|
||||
|
||||
cfg.Cons_id = os.Getenv("CONS_ID")
|
||||
cfg.User_key = os.Getenv("USER_KEY")
|
||||
cfg.Secret_key = os.Getenv("SECRET_KEY")
|
||||
|
||||
if isIcare {
|
||||
cfg.User_key = os.Getenv("USER_KEY_ICARE")
|
||||
}
|
||||
secret := []byte(cfg.Secret_key)
|
||||
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp))
|
||||
hash := hmac.New(sha256.New, secret)
|
||||
|
||||
@@ -55,7 +55,8 @@ func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) {
|
||||
from data_pegawai_daftar_gelar_belakang dpdgb
|
||||
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id
|
||||
) AS gelarbelakang,
|
||||
dp."HFIS_code"
|
||||
dp."HFIS_code",
|
||||
dp."Code_dpjp" as "DPJP_code"
|
||||
from "data_pegawai" dp
|
||||
left join data_ktp dk on dp."KTP" = dk.id
|
||||
WHERE dp.id in ?`, idDokter).Find(&namaDokter)
|
||||
@@ -70,3 +71,19 @@ func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) {
|
||||
|
||||
return namaDokter, nil
|
||||
}
|
||||
|
||||
func GetHFISCode(dpjp string) (*dokter.DaftarDokter, error) {
|
||||
var dataDokter *dokter.DaftarDokter
|
||||
err := config.SatuDataDB.Debug().Raw(`select dp."id", dp."HFIS_code" from data_pegawai dp where dp."Code_dpjp" = ?`, dpjp).First(&dataDokter).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
errMsg := errors.New("Data tidak ditemukan")
|
||||
log.Println("error :", errMsg)
|
||||
return nil, errMsg
|
||||
}
|
||||
log.Println("error :", err)
|
||||
return nil, err
|
||||
}
|
||||
log.Println("Daftar Dokter :", dataDokter)
|
||||
return dataDokter, nil
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package logapi
|
||||
|
||||
import (
|
||||
"bridging-rssa/config"
|
||||
logapi "bridging-rssa/models/log_api"
|
||||
"log"
|
||||
)
|
||||
|
||||
func InsertLogAPI(reqInsert *logapi.DataLogAPI) error {
|
||||
query := `insert into "data_log_api" (
|
||||
"id", "date_created", "User_agent", "IP", "Parameter", "Header", "Method", "URL", "Request", "Respon", "Respon_code", "Respontime_start", "Respontime_end", "Comment"
|
||||
) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
err := config.SatuDataDB.Debug().Exec(query,
|
||||
reqInsert.ID,
|
||||
reqInsert.DateCreated,
|
||||
reqInsert.UserAgent,
|
||||
reqInsert.IP,
|
||||
reqInsert.Parameter,
|
||||
reqInsert.Header,
|
||||
reqInsert.Method,
|
||||
reqInsert.Url,
|
||||
reqInsert.Request,
|
||||
reqInsert.Respon,
|
||||
reqInsert.ResponCode,
|
||||
reqInsert.ResponTimeStart,
|
||||
reqInsert.ResponTimeEnd,
|
||||
reqInsert.Comment,
|
||||
).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package logapi
|
||||
|
||||
import (
|
||||
"bridging-rssa/config"
|
||||
logapi "bridging-rssa/models/log_api"
|
||||
"log"
|
||||
)
|
||||
|
||||
func InsertLogICare(reqInsert *logapi.InsertLogICare) error {
|
||||
query := `insert into "data_log_icare_bpjs" ("id", "date_created", "Ruangan", "Dokter", "Kunjungan_pasien", "Waktu_transaksi")
|
||||
values (?, ?, ?, ?, ?, ?)`
|
||||
errInsert := config.SatuDataDB.Debug().Exec(query,
|
||||
reqInsert.ID,
|
||||
reqInsert.DateCreated,
|
||||
reqInsert.Ruangan,
|
||||
reqInsert.Dokter,
|
||||
reqInsert.Kunjungan_pasien,
|
||||
reqInsert.WaktuTransaksi).Error
|
||||
if errInsert != nil {
|
||||
log.Println(errInsert)
|
||||
return errInsert
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package pasien
|
||||
|
||||
import (
|
||||
"bridging-rssa/config"
|
||||
"bridging-rssa/models/pasien"
|
||||
"errors"
|
||||
"log"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func GetDataKunjunganPasien(idxdaftar string) (*pasien.KunjunganPasien, error) {
|
||||
var kunjunganPasien *pasien.KunjunganPasien
|
||||
query := `select dks."id", dks."Ruangan" from "data_kunjungan_pasien" dks where dks."IDXDAFTAR" = ?`
|
||||
err := config.SatuDataDB.Debug().Raw(query, idxdaftar).First(&kunjunganPasien).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
errMsg := errors.New("Data Tidak Ditemukan")
|
||||
log.Println(errMsg)
|
||||
return nil, errMsg
|
||||
}
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
log.Println("Data Kunjungan Pasien : ", kunjunganPasien)
|
||||
return kunjunganPasien, nil
|
||||
}
|
||||
@@ -30,7 +30,8 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er
|
||||
where dpdgb.data_pegawai_id = dp.id
|
||||
) AS gelarbelakang,
|
||||
dkp."Ruangan" as ruangan,
|
||||
dkp."DPJP" as id_dokter
|
||||
dkp."DPJP" as id_dokter,
|
||||
dkp."NOMR" as "No_rm"
|
||||
from data_kunjungan_pasien dkp
|
||||
left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id
|
||||
left join data_pegawai dp on dkp."DPJP" = dp.id
|
||||
@@ -78,7 +79,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) {
|
||||
func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKontrol, error) {
|
||||
var dataSurKon []*suratkontrol.GetDataSuratKontrol
|
||||
err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
|
||||
dsk."Nomor_surat_kontrol",
|
||||
@@ -103,6 +104,7 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) {
|
||||
ds."id" as "ID_poli",
|
||||
dp."HFIS_code" as "Kode_dokter",
|
||||
dp."id" as "id_dokter",
|
||||
dp."Code_dpjp" as "Kode_dpjp",
|
||||
dkp2."NOMR" as "No_rm",
|
||||
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
|
||||
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
||||
@@ -113,17 +115,14 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) {
|
||||
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
|
||||
left join data_ktp dk on dp."KTP" = dk. "id"
|
||||
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
|
||||
where dsk."Status_surat_kontrol" = '1'`).Scan(&dataSurKon).Error
|
||||
where dsk."Status_surat_kontrol" = '1' offset ? limit ?`, offset, limit).Scan(&dataSurKon).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
errMsg := errors.New("DPJP anda belum ada subspesialis")
|
||||
log.Println(errMsg)
|
||||
return nil, errMsg
|
||||
}
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
log.Println("Data Surat Kontrol : ", dataSurKon)
|
||||
return dataSurKon, nil
|
||||
}
|
||||
|
||||
@@ -152,10 +151,12 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro
|
||||
ds."id" as "ID_poli",
|
||||
dp."HFIS_code" as "Kode_dokter",
|
||||
dp."id" as "id_dokter",
|
||||
dp."Code_dpjp" as "Kode_dpjp",
|
||||
dkp2."NOMR" as "No_rm",
|
||||
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
|
||||
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
||||
dsk."Tipe_surat_kontrol" as "Tipe_SurKon"
|
||||
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
|
||||
dsk."User_created_surat_kontrol" as "User"
|
||||
from data_surat_kontrol dsk
|
||||
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
|
||||
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
|
||||
@@ -169,10 +170,7 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro
|
||||
log.Println(errMsg)
|
||||
return nil, errMsg
|
||||
}
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
log.Println("Data Surat Kontrol : ", dataSurKon)
|
||||
return dataSurKon, nil
|
||||
}
|
||||
|
||||
@@ -184,6 +182,7 @@ func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
|
||||
var idxDaftar string
|
||||
err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR"
|
||||
@@ -209,7 +208,7 @@ func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, er
|
||||
|
||||
func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) {
|
||||
var dataSurKon []*suratkontrol.GetDataSuratKontrol
|
||||
query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
|
||||
query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?`
|
||||
querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
|
||||
dsk."Nomor_surat_kontrol",
|
||||
(select dlr."Nama"
|
||||
@@ -233,6 +232,7 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
|
||||
ds."id" as "ID_poli",
|
||||
dp."HFIS_code" as "Kode_dokter",
|
||||
dp."id" as "id_dokter",
|
||||
dp."Code_dpjp" as "Kode_dpjp",
|
||||
dkp2."NOMR" as "No_rm",
|
||||
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
|
||||
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
|
||||
@@ -243,13 +243,44 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
|
||||
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
|
||||
left join data_ktp dk on dp."KTP" = dk. "id"
|
||||
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
|
||||
where dsk."Status_surat_kontrol" = '1' `
|
||||
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
|
||||
querySelect += query
|
||||
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
log.Println("Data Surat Kontrol : ", dataSurKon)
|
||||
return dataSurKon, nil
|
||||
}
|
||||
|
||||
func CountDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) (int, error) {
|
||||
var jumlahData int
|
||||
query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
|
||||
querySelect := `select count(dsk.*)
|
||||
from data_surat_kontrol dsk
|
||||
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
|
||||
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
|
||||
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
|
||||
left join data_ktp dk on dp."KTP" = dk. "id"
|
||||
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
|
||||
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
|
||||
querySelect += query
|
||||
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&jumlahData).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return 0, err
|
||||
}
|
||||
return jumlahData, nil
|
||||
}
|
||||
|
||||
func GetNomorSurKon(idPasien string) (string, error) {
|
||||
var noSurKon string
|
||||
querySelect := `select dsk."Nomor_surat_kontrol" from data_surat_kontrol dsk where dsk."Kunjungan_pasien" = ? and dsk."Tipe_surat_kontrol" <> '1' order by dsk."date_created"`
|
||||
err := config.SatuDataDB.Debug().Raw(querySelect, idPasien).Scan(&noSurKon).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return "", err
|
||||
}
|
||||
log.Println("Nomor SurKon :", noSurKon)
|
||||
return noSurKon, nil
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -43,3 +45,17 @@ func ReplaceGelar(gelar string) string {
|
||||
gelar = strings.ReplaceAll(gelar, ",", " ")
|
||||
return gelar
|
||||
}
|
||||
|
||||
func GetNoUrut(noSurKon string) (string, error) {
|
||||
noSurKonSlice := strings.Split(noSurKon, "/")
|
||||
noUrut := noSurKonSlice[3]
|
||||
noUrutInt, err := strconv.Atoi(noUrut)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
noUrutInt++
|
||||
noUrutStr := fmt.Sprintf("%03d", noUrutInt)
|
||||
log.Println("No Urut: ", noUrutStr)
|
||||
return noUrutStr, nil
|
||||
}
|
||||
@@ -65,6 +65,7 @@ require (
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||
github.com/jinzhu/now v1.1.5 // indirect
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
golang.org/x/text v0.18.0 // indirect
|
||||
gorm.io/driver/postgres v1.5.9
|
||||
)
|
||||
@@ -96,6 +96,8 @@ github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xl
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
||||
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
|
||||
|
||||
@@ -0,0 +1,264 @@
|
||||
package icare
|
||||
|
||||
import (
|
||||
"bridging-rssa/database/satu_data/dokter"
|
||||
log_api "bridging-rssa/database/satu_data/log_api"
|
||||
"bridging-rssa/database/satu_data/pasien"
|
||||
"bridging-rssa/models/config"
|
||||
logapi "bridging-rssa/models/log_api"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
cfg "bridging-rssa/config"
|
||||
ic "bridging-rssa/models/bpjs/i_care"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func GetFKRTL(c *gin.Context) {
|
||||
baseUrl := os.Getenv("BASEURL_BPJS")
|
||||
endpoint := os.Getenv("I_CARE_JKN")
|
||||
param := os.Getenv("GET_FKRTL")
|
||||
url := baseUrl + endpoint + param
|
||||
|
||||
log.Println("URL :", url)
|
||||
var req *ic.ReqICare
|
||||
|
||||
err := c.Bind(&req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
reqICare := &ic.RequestICare{
|
||||
Param: req.Param,
|
||||
KodeDokter: req.KodeDokter,
|
||||
}
|
||||
|
||||
reqJson, errMarshal := json.Marshal(reqICare)
|
||||
if errMarshal != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: errMarshal.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
log.Println("REQUEST: ", string(reqJson))
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
icare := true
|
||||
header := cfg.SetHeader(icare, 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/json",
|
||||
}
|
||||
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(), "; ")
|
||||
|
||||
dpjp := strconv.Itoa(req.KodeDokter)
|
||||
|
||||
dataDokter, err := dokter.GetHFISCode(dpjp)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
reqICare.KodeDokter, err = strconv.Atoi(dataDokter.HfisCode)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
kunjunganPasien, err := pasien.GetDataKunjunganPasien(req.IDXDaftar)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
uuid := uuid.New().String()
|
||||
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
|
||||
res, err := ResponseGetFKRTL(url, header, headers, reqICare)
|
||||
if err != nil {
|
||||
responJson, errMarshal2 := json.Marshal(res)
|
||||
if errMarshal2 != nil {
|
||||
log.Println(errMarshal2)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: errMarshal2.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
|
||||
reqInsertLog := &logapi.DataLogAPI{
|
||||
ID: uuid,
|
||||
DateCreated: logTimeEnd,
|
||||
UserAgent: req.User,
|
||||
IP: c.ClientIP(),
|
||||
Parameter: "BPJS-ICare-FKRTL",
|
||||
Header: headerString,
|
||||
Method: "POST",
|
||||
Url: url,
|
||||
Request: reqJson,
|
||||
Respon: responJson,
|
||||
ResponCode: strconv.Itoa(res.MetaData.Code),
|
||||
ResponTimeStart: logTimeStart,
|
||||
ResponTimeEnd: logTimeEnd,
|
||||
Comment: res.MetaData.Message,
|
||||
}
|
||||
|
||||
errInsert := log_api.InsertLogAPI(reqInsertLog)
|
||||
if errInsert != nil {
|
||||
log.Println(errInsert)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: errInsert.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
responJson, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
|
||||
reqInsertLog := &logapi.DataLogAPI{
|
||||
ID: uuid,
|
||||
DateCreated: logTimeEnd,
|
||||
UserAgent: req.User,
|
||||
IP: c.ClientIP(),
|
||||
Parameter: "BPJS-ICare-FKRTL",
|
||||
Header: headerString,
|
||||
Method: "POST",
|
||||
Url: url,
|
||||
Request: reqJson,
|
||||
Respon: responJson,
|
||||
ResponCode: strconv.Itoa(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, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
reqInsert := &logapi.InsertLogICare{
|
||||
ID: uuid,
|
||||
DateCreated: logTimeEnd,
|
||||
Ruangan: kunjunganPasien.Ruangan,
|
||||
Dokter: dataDokter.ID,
|
||||
Kunjungan_pasien: kunjunganPasien.ID,
|
||||
WaktuTransaksi: logTimeEnd,
|
||||
}
|
||||
|
||||
errInsert := log_api.InsertLogICare(reqInsert)
|
||||
if errInsert != nil {
|
||||
log.Println(errInsert)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: errInsert.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, res)
|
||||
}
|
||||
|
||||
func GetFKTP(c *gin.Context) {
|
||||
baseUrl := os.Getenv("BASEURL_BPJS")
|
||||
endpoint := os.Getenv("I_CARE_JKN")
|
||||
param := os.Getenv("GET_FKRTL")
|
||||
url := baseUrl + endpoint + param
|
||||
|
||||
log.Println("URL :", url)
|
||||
var req *ic.RequestICare
|
||||
|
||||
err := c.Bind(&req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
log.Println("REQUEST: ", req)
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
header := cfg.SetHeaderDev(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/json",
|
||||
}
|
||||
log.Println("Headers : ", headers)
|
||||
|
||||
res, err := ResponseGetFKRTL(url, header, headers, req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &ic.Metadata{
|
||||
Code: 0,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, res)
|
||||
}
|
||||
@@ -0,0 +1,222 @@
|
||||
package icare
|
||||
|
||||
import (
|
||||
"bridging-rssa/docs"
|
||||
ic "bridging-rssa/models/bpjs/i_care"
|
||||
"bridging-rssa/models/config"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
func ResponseGetFKRTL(url string, header *config.Header, headers map[string]string, request *ic.RequestICare) (*ic.ResponseGet, error) {
|
||||
log.Println("URL", url)
|
||||
|
||||
reqMarshall, err := json.Marshal(request)
|
||||
if err != nil {
|
||||
log.Printf("Error json marshal: %v", err)
|
||||
}
|
||||
|
||||
log.Println("REQUEST: ", string(reqMarshall))
|
||||
|
||||
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{
|
||||
Timeout: 10 * time.Second,
|
||||
}
|
||||
|
||||
responses := &ic.ResponseGet{}
|
||||
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
|
||||
}
|
||||
log.Printf("Error making external API request: %v", err)
|
||||
return responses, err
|
||||
}
|
||||
log.Println("RESPONSE: ", response)
|
||||
|
||||
if response.StatusCode == http.StatusGatewayTimeout { // 504
|
||||
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = 504
|
||||
responses.MetaData.Message = errMsg.Error()
|
||||
log.Println("responses: ", responses)
|
||||
return responses, err
|
||||
}
|
||||
|
||||
key := header.ConsID + header.SecretKey + header.TimeStamp
|
||||
res, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Println("Res:", string(res))
|
||||
|
||||
var resFkrtlRaw ic.ResponseGetRaw
|
||||
err = json.Unmarshal([]byte(string(res)), &resFkrtlRaw)
|
||||
if err != nil {
|
||||
log.Printf("Error Unmarshaling: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Println("ResponseRaw : ", resFkrtlRaw)
|
||||
|
||||
if resFkrtlRaw.MetaData.Code != 200 {
|
||||
errMsg := errors.New(resFkrtlRaw.MetaData.Message)
|
||||
if strings.Contains(strings.ToLower(resFkrtlRaw.MetaData.Message), "Gagal simpan!") {
|
||||
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
|
||||
resFkrtlRaw.MetaData.Message = message
|
||||
}
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = resFkrtlRaw.MetaData.Code
|
||||
responses.MetaData.Message = resFkrtlRaw.MetaData.Message
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
dataResp, err := docs.StringDecrypt(key, resFkrtlRaw.Response)
|
||||
if err != nil {
|
||||
log.Printf("Error Decrypt: %v", err)
|
||||
log.Println("res: ", dataResp)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var resFkrtl ic.Response
|
||||
|
||||
log.Println("dataresp: ", dataResp)
|
||||
|
||||
err = json.Unmarshal([]byte(dataResp), &resFkrtl)
|
||||
if err != nil {
|
||||
log.Printf("Error Decode: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
responses = &ic.ResponseGet{
|
||||
Response: resFkrtl,
|
||||
MetaData: resFkrtlRaw.MetaData,
|
||||
}
|
||||
return responses, nil
|
||||
}
|
||||
|
||||
func ResponseGetFKTP(url string, header *config.Header, headers map[string]string, request *ic.ReqFKTP) (*ic.ResponseGet, error) {
|
||||
log.Println("URL", url)
|
||||
|
||||
reqMarshall, err := json.Marshal(request)
|
||||
if err != nil {
|
||||
log.Printf("Error json marshal: %v", err)
|
||||
}
|
||||
|
||||
log.Println("REQUEST: ", string(reqMarshall))
|
||||
|
||||
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{
|
||||
Timeout: 10 * time.Second,
|
||||
}
|
||||
|
||||
responses := &ic.ResponseGet{}
|
||||
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
|
||||
}
|
||||
log.Printf("Error making external API request: %v", err)
|
||||
return responses, err
|
||||
}
|
||||
log.Println("RESPONSE: ", response)
|
||||
|
||||
if response.StatusCode == http.StatusGatewayTimeout { // 504
|
||||
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = 504
|
||||
responses.MetaData.Message = errMsg.Error()
|
||||
log.Println("responses: ", responses)
|
||||
return responses, err
|
||||
}
|
||||
|
||||
key := header.ConsID + header.SecretKey + header.TimeStamp
|
||||
res, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Println("Res:", string(res))
|
||||
|
||||
var resFkrtlRaw ic.ResponseGetRaw
|
||||
err = json.Unmarshal([]byte(string(res)), &resFkrtlRaw)
|
||||
if err != nil {
|
||||
log.Printf("Error Unmarshaling: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Println("ResponseRaw : ", resFkrtlRaw)
|
||||
|
||||
if resFkrtlRaw.MetaData.Code != 200 {
|
||||
errMsg := errors.New(resFkrtlRaw.MetaData.Message)
|
||||
if strings.Contains(strings.ToLower(resFkrtlRaw.MetaData.Message), "Gagal simpan!") {
|
||||
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
|
||||
resFkrtlRaw.MetaData.Message = message
|
||||
}
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = resFkrtlRaw.MetaData.Code
|
||||
responses.MetaData.Message = resFkrtlRaw.MetaData.Message
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
dataResp, err := docs.StringDecrypt(key, resFkrtlRaw.Response)
|
||||
if err != nil {
|
||||
log.Printf("Error Decrypt: %v", err)
|
||||
log.Println("res: ", dataResp)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var resFkrtl ic.Response
|
||||
|
||||
log.Println("dataresp: ", dataResp)
|
||||
|
||||
err = json.Unmarshal([]byte(dataResp), &resFkrtl)
|
||||
if err != nil {
|
||||
log.Printf("Error Decode: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
responses = &ic.ResponseGet{
|
||||
Response: resFkrtl,
|
||||
MetaData: resFkrtlRaw.MetaData,
|
||||
}
|
||||
return responses, nil
|
||||
}
|
||||
@@ -17,14 +17,14 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func GetJadwalDokter(c *gin.Context) {
|
||||
func GetJadwalDokter() bool {
|
||||
baseUrl := os.Getenv("BASEURL_BPJS")
|
||||
endpoint := os.Getenv("ANTREAN_RS")
|
||||
url := baseUrl + endpoint
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
header := cfg.SetHeader(conf)
|
||||
header := cfg.SetHeader(false, conf)
|
||||
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
@@ -36,20 +36,20 @@ func GetJadwalDokter(c *gin.Context) {
|
||||
|
||||
errTruncate := dokter.DeleteJadwalDokter()
|
||||
if errTruncate != nil {
|
||||
log.Fatal(errTruncate)
|
||||
c.JSON(http.StatusInternalServerError, errTruncate)
|
||||
log.Println(errTruncate)
|
||||
return false
|
||||
}
|
||||
|
||||
errTruncateTemp := dokter.DeleteJadwalDokterTemp()
|
||||
if errTruncateTemp != nil {
|
||||
log.Fatal(errTruncateTemp)
|
||||
c.JSON(http.StatusInternalServerError, errTruncateTemp)
|
||||
log.Println(errTruncateTemp)
|
||||
return false
|
||||
}
|
||||
|
||||
// Select from daftar spesialis
|
||||
spesialis, err := dokter.GetSpesialis()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
return false
|
||||
}
|
||||
|
||||
var listIdSpesialis = make(map[string]int)
|
||||
@@ -59,7 +59,7 @@ func GetJadwalDokter(c *gin.Context) {
|
||||
|
||||
subspesialis, err := dokter.GetSubspesialis()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
return false
|
||||
}
|
||||
|
||||
var listIdSubspesialis = make(map[string]int)
|
||||
@@ -69,7 +69,7 @@ func GetJadwalDokter(c *gin.Context) {
|
||||
|
||||
listDokter, err := dokter.GetDokter()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
return false
|
||||
}
|
||||
|
||||
var listIddokter = make(map[int]string)
|
||||
@@ -86,9 +86,15 @@ func GetJadwalDokter(c *gin.Context) {
|
||||
kdPoly := value.Kode
|
||||
res, err = JadwalDokterGetResponse(url, header, kdPoly, tanggal, headers)
|
||||
if err != nil {
|
||||
log.Fatalf("Error making external API request: %v", err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
log.Println("Error making external API request: %v", err)
|
||||
return false
|
||||
}
|
||||
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")
|
||||
continue
|
||||
@@ -110,27 +116,20 @@ func GetJadwalDokter(c *gin.Context) {
|
||||
errInsert := dokter.InsertJadwalDokter(reqInsert)
|
||||
if errInsert != nil {
|
||||
log.Println(errInsert)
|
||||
c.JSON(http.StatusInternalServerError, errInsert)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
reqInsert.Dokter = strconv.Itoa(v.KodeDokter)
|
||||
errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert)
|
||||
if errInsertTemp != nil {
|
||||
log.Println(errInsertTemp)
|
||||
c.JSON(http.StatusInternalServerError, errInsertTemp)
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
date, errParse := time.Parse("2006-01-02", tanggal)
|
||||
if errParse != nil {
|
||||
c.JSON(http.StatusInternalServerError, errParse)
|
||||
return
|
||||
}
|
||||
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
|
||||
log.Println("Tanggal :", tanggal)
|
||||
}
|
||||
}
|
||||
c.JSON(http.StatusOK, res)
|
||||
return true
|
||||
}
|
||||
|
||||
func GetDokterByDPJP(c *gin.Context) {
|
||||
@@ -189,7 +188,7 @@ func GetDokterByDPJP(c *gin.Context) {
|
||||
Kode: listSubspesialis.Kode,
|
||||
Spesialis: listSubspesialis.Spesialis,
|
||||
Subspesialis: listSubspesialis.Subspesialis,
|
||||
IDSubspesialis: listSubspesialis.Kode,
|
||||
IDSubspesialis: listSubspesialis.ID,
|
||||
NamaLengkap: namaLengkap,
|
||||
HFISCode: hfisCode,
|
||||
KodeDPJP: dpjp,
|
||||
|
||||
@@ -36,14 +36,34 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
|
||||
}
|
||||
|
||||
log.Println("REQ", req.Header)
|
||||
client := http.Client{}
|
||||
client := http.Client{
|
||||
Timeout: 10 * time.Second,
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
log.Printf("Error making external API request: %v", err)
|
||||
return nil, err
|
||||
return responses, err
|
||||
}
|
||||
log.Println("RESPONSE: ", response)
|
||||
|
||||
if response.StatusCode == http.StatusGatewayTimeout { // 504
|
||||
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = "504"
|
||||
responses.MetaData.Message = errMsg.Error()
|
||||
log.Println("responses: ", responses)
|
||||
return responses, err
|
||||
}
|
||||
|
||||
key := header.ConsID + header.SecretKey + header.TimeStamp
|
||||
res, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
@@ -62,12 +82,19 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
|
||||
|
||||
log.Println("ResponseRaw : ", resSuratKontrolRaw)
|
||||
|
||||
responses := &suratkontrol.Response{}
|
||||
if resSuratKontrolRaw.MetaData.Code != "200" {
|
||||
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
|
||||
log.Printf("error : %v", errMsg)
|
||||
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
|
||||
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") {
|
||||
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
|
||||
resSuratKontrolRaw.MetaData.Message = message
|
||||
}
|
||||
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message)
|
||||
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
|
||||
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
|
||||
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
@@ -125,7 +152,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
|
||||
response, err := client.Do(req)
|
||||
if err != nil {
|
||||
if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") {
|
||||
errMsg := errors.New("Gagal Proses Selama 10 Detik, Silahkan Coba Lagi")
|
||||
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Message = errMsg.Error()
|
||||
log.Println("responses: ", responses)
|
||||
@@ -137,7 +164,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
|
||||
log.Println("RESPONSE: ", response)
|
||||
|
||||
if response.StatusCode == http.StatusGatewayTimeout { // 504
|
||||
errMsg := errors.New("Gagal Proses Selama 10 Detik, Silahkan Coba Lagi")
|
||||
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = "504"
|
||||
responses.MetaData.Message = errMsg.Error()
|
||||
@@ -162,10 +189,18 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
|
||||
}
|
||||
|
||||
if resSuratKontrolRaw.MetaData.Code != "200" {
|
||||
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
|
||||
log.Printf("error : %v", errMsg)
|
||||
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
|
||||
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") {
|
||||
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
|
||||
resSuratKontrolRaw.MetaData.Message = message
|
||||
}
|
||||
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message)
|
||||
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
|
||||
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
|
||||
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
@@ -237,7 +272,17 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s
|
||||
return nil, err
|
||||
}
|
||||
|
||||
responses := &suratkontrol.Response{
|
||||
responses := &suratkontrol.Response{}
|
||||
if resSuratKontrolRaw.MetaData.Code != "200" {
|
||||
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
|
||||
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
responses = &suratkontrol.Response{
|
||||
MetaData: resSuratKontrolRaw.MetaData,
|
||||
}
|
||||
|
||||
@@ -280,6 +325,16 @@ func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map
|
||||
return nil, err
|
||||
}
|
||||
|
||||
responses := &suratkontrol.ResponseGetSuratKontrol{}
|
||||
if resNoSuratKontrolRaw.MetaData.Code != "200" {
|
||||
errMsg := errors.New(resNoSuratKontrolRaw.MetaData.Message)
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = resNoSuratKontrolRaw.MetaData.Code
|
||||
responses.MetaData.Message = resNoSuratKontrolRaw.MetaData.Message
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
dataResp, err := docs.StringDecrypt(key, resNoSuratKontrolRaw.Response)
|
||||
if err != nil {
|
||||
log.Printf("Error Decrypt: %v", err)
|
||||
@@ -295,7 +350,7 @@ func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map
|
||||
return nil, err
|
||||
}
|
||||
|
||||
responses := &suratkontrol.ResponseGetSuratKontrol{
|
||||
responses = &suratkontrol.ResponseGetSuratKontrol{
|
||||
MetaData: resNoSuratKontrolRaw.MetaData,
|
||||
Response: responseNoSuratKontrol,
|
||||
}
|
||||
@@ -337,6 +392,16 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map
|
||||
return nil, err
|
||||
}
|
||||
|
||||
responses := &suratkontrol.ResponseGetSuratKontrolBySEP{}
|
||||
if resSurKonSEP.MetaData.Code != "200" {
|
||||
errMsg := errors.New(resSurKonSEP.MetaData.Message)
|
||||
log.Printf("error : %v", errMsg)
|
||||
responses.MetaData.Code = resSurKonSEP.MetaData.Code
|
||||
responses.MetaData.Message = resSurKonSEP.MetaData.Message
|
||||
log.Println("responses: ", responses)
|
||||
return responses, errMsg
|
||||
}
|
||||
|
||||
dataResp, err := docs.StringDecrypt(key, resSurKonSEP.Response)
|
||||
if err != nil {
|
||||
log.Printf("Error Decrypt: %v", err)
|
||||
@@ -354,7 +419,7 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map
|
||||
|
||||
log.Println("res: ", resSurKonSEP)
|
||||
|
||||
responses := &suratkontrol.ResponseGetSuratKontrolBySEP{
|
||||
responses = &suratkontrol.ResponseGetSuratKontrolBySEP{
|
||||
MetaData: resSurKonSEP.MetaData,
|
||||
Response: responseNoSuratKontrol,
|
||||
}
|
||||
|
||||
@@ -2,10 +2,14 @@ package suratkontrol
|
||||
|
||||
import (
|
||||
cfg "bridging-rssa/config"
|
||||
log_api "bridging-rssa/database/satu_data/log_api"
|
||||
suratkontrol "bridging-rssa/database/satu_data/surat_kontrol"
|
||||
"bridging-rssa/docs/utils"
|
||||
sk "bridging-rssa/models/bpjs/surat_kontrol"
|
||||
"bridging-rssa/models/config"
|
||||
logapi "bridging-rssa/models/log_api"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
@@ -29,15 +33,28 @@ func InsertSuratKontrol(c *gin.Context) {
|
||||
err := c.Bind(&req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
log.Println("Request: ", req)
|
||||
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: ", string(reqJson))
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
header := cfg.SetHeader(conf)
|
||||
header := cfg.SetHeader(false, conf)
|
||||
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
@@ -48,7 +65,11 @@ func InsertSuratKontrol(c *gin.Context) {
|
||||
}
|
||||
log.Println("Headers : ", headers)
|
||||
|
||||
tipeSurKon := "1"
|
||||
var headerStringBuilder strings.Builder
|
||||
for key, value := range headers {
|
||||
headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value))
|
||||
}
|
||||
headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ")
|
||||
|
||||
kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
|
||||
if err != nil {
|
||||
@@ -61,28 +82,67 @@ func InsertSuratKontrol(c *gin.Context) {
|
||||
}
|
||||
|
||||
uuid := uuid.New().String()
|
||||
if req.NoSEP == "" {
|
||||
tipeSurKon = "0"
|
||||
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(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
noUrut := "001"
|
||||
if dataSurkon != "" {
|
||||
noUrut, err = utils.GetNoUrut(dataSurkon)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
noSurKon := "SI/" + req.TipeRawat + "/" + kunjunganPasien.NomorRM + "/" + noUrut
|
||||
reqInsert := &sk.DataSuratKontrol{
|
||||
ID: uuid,
|
||||
DateCreated: timeNow,
|
||||
TglCetakSurKon: timeNow,
|
||||
TglRencanaKontrol: req.TglRencanaKontrol,
|
||||
NomorSurKon: "", //TODO How to get Nomor SurKon
|
||||
NomorSurKon: noSurKon,
|
||||
KunjunganPasien: kunjunganPasien.ID,
|
||||
RuanganSurKon: kunjunganPasien.Ruangan,
|
||||
DPJPSurKon: req.IDDokter,
|
||||
StatusSurKon: 1, // First Insert status always set to 1
|
||||
UserCreatedSurKon: req.User,
|
||||
TipeSurKon: tipeSurKon,
|
||||
TipeSurKon: req.TipeSurKon,
|
||||
}
|
||||
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, nil)
|
||||
|
||||
err = suratkontrol.UpdateKunjunganPasien(req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, &sk.MetadataString{
|
||||
Code: "200",
|
||||
Message: "Berhasil Insert Surat Kontrol",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -95,13 +155,60 @@ func InsertSuratKontrol(c *gin.Context) {
|
||||
User: req.User,
|
||||
},
|
||||
}
|
||||
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
|
||||
res, err := PostData(url, header, headers, reqSuratKontrol)
|
||||
if err != nil {
|
||||
responJson, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
|
||||
reqInsertLog := &logapi.DataLogAPI{
|
||||
ID: uuid,
|
||||
DateCreated: logTimeEnd,
|
||||
UserAgent: req.User,
|
||||
IP: c.ClientIP(),
|
||||
Parameter: "BPJS-VClaim-RencanaKontrol",
|
||||
Header: headerString,
|
||||
Method: "POST",
|
||||
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.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, res.MetaData)
|
||||
return
|
||||
}
|
||||
|
||||
responJson, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
|
||||
reqInsert := &sk.DataSuratKontrol{
|
||||
ID: uuid,
|
||||
DateCreated: timeNow,
|
||||
@@ -113,13 +220,16 @@ func InsertSuratKontrol(c *gin.Context) {
|
||||
DPJPSurKon: req.IDDokter,
|
||||
StatusSurKon: 1, // First Insert status always set to 1
|
||||
UserCreatedSurKon: req.User,
|
||||
TipeSurKon: tipeSurKon,
|
||||
TipeSurKon: "1",
|
||||
}
|
||||
|
||||
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -132,7 +242,37 @@ func InsertSuratKontrol(c *gin.Context) {
|
||||
err = suratkontrol.UpdateKunjunganPasien(req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
reqInsertLog := &logapi.DataLogAPI{
|
||||
ID: uuid,
|
||||
DateCreated: logTimeEnd,
|
||||
UserAgent: req.User,
|
||||
IP: c.ClientIP(),
|
||||
Parameter: "BPJS-VClaim-RencanaKontrol",
|
||||
Header: headerString,
|
||||
Method: "POST",
|
||||
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
|
||||
}
|
||||
|
||||
@@ -167,11 +307,24 @@ func UpdateSuratKontrol(c *gin.Context) {
|
||||
err := c.Bind(&req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
log.Println("Request: ", req)
|
||||
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: ", string(reqJson))
|
||||
|
||||
timeNow := time.Now().Format("2006-01-02 15:04:05")
|
||||
|
||||
@@ -184,48 +337,69 @@ func UpdateSuratKontrol(c *gin.Context) {
|
||||
})
|
||||
return
|
||||
}
|
||||
uuid := uuid.New().String()
|
||||
tipeSurKon := "1"
|
||||
|
||||
if req.NoSEP == "" {
|
||||
tipeSurKon = "0"
|
||||
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(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
reqInsert := &sk.DataSuratKontrol{
|
||||
ID: uuid,
|
||||
DateCreated: timeNow,
|
||||
TglCetakSurKon: timeNow,
|
||||
TglRencanaKontrol: req.TglRencanaKontrol,
|
||||
NomorSurKon: "", //TODO How to get Nomor SurKon
|
||||
NomorSurKon: dataSurkon, //TODO How to get Nomor SurKon
|
||||
KunjunganPasien: kunjunganPasien.ID,
|
||||
RuanganSurKon: kunjunganPasien.Ruangan,
|
||||
DPJPSurKon: req.IDDokter,
|
||||
StatusSurKon: 1, // First Insert status always set to 1
|
||||
TipeSurKon: tipeSurKon,
|
||||
TipeSurKon: req.TipeSurKon,
|
||||
UserUpdatedSurKon: req.User,
|
||||
}
|
||||
reqUpdate := &sk.DataSuratKontrol{
|
||||
DateUpdated: timeNow,
|
||||
ID: req.IDSurKon,
|
||||
StatusSurKon: 2,
|
||||
DateUpdated: timeNow,
|
||||
ID: req.IDSurKon,
|
||||
StatusSurKon: 2,
|
||||
UserUpdatedSurKon: req.User,
|
||||
}
|
||||
|
||||
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, nil)
|
||||
c.JSON(http.StatusOK, &sk.MetadataString{
|
||||
Code: "200",
|
||||
Message: "Berhasil Update Surat Kontrol",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
log.Println("Request: ", reqJson)
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
header := cfg.SetHeader(conf)
|
||||
header := cfg.SetHeader(false, conf)
|
||||
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
@@ -236,6 +410,12 @@ func UpdateSuratKontrol(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(), "; ")
|
||||
|
||||
reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{
|
||||
Request: &sk.ReqUpdateRencanaKontrol{
|
||||
NoSuratKontrol: req.NoSuratKontrol,
|
||||
@@ -246,27 +426,80 @@ func UpdateSuratKontrol(c *gin.Context) {
|
||||
User: req.User,
|
||||
},
|
||||
}
|
||||
|
||||
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
|
||||
res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol)
|
||||
if err != nil {
|
||||
responJson, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
|
||||
if res.MetaData.Code == "504" {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusGatewayTimeout, res.MetaData)
|
||||
return
|
||||
}
|
||||
reqInsertLog := &logapi.DataLogAPI{
|
||||
ID: uuid,
|
||||
DateCreated: logTimeEnd,
|
||||
UserAgent: req.User,
|
||||
IP: c.ClientIP(),
|
||||
Parameter: "BPJS-VClaim-RencanaKontrol",
|
||||
Header: headerString,
|
||||
Method: "PUT",
|
||||
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.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, res.MetaData)
|
||||
return
|
||||
}
|
||||
responJson, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
|
||||
|
||||
reqUpdate := &sk.DataSuratKontrol{
|
||||
DateUpdated: timeNow,
|
||||
ID: req.IDSurKon,
|
||||
StatusSurKon: 2,
|
||||
DateUpdated: timeNow,
|
||||
ID: req.IDSurKon,
|
||||
StatusSurKon: 2,
|
||||
UserUpdatedSurKon: req.User,
|
||||
}
|
||||
|
||||
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -280,7 +513,7 @@ func UpdateSuratKontrol(c *gin.Context) {
|
||||
RuanganSurKon: kunjunganPasien.Ruangan,
|
||||
DPJPSurKon: req.IDDokter,
|
||||
StatusSurKon: 1, // Insert status always set to 1
|
||||
TipeSurKon: tipeSurKon,
|
||||
TipeSurKon: "1",
|
||||
UserUpdatedSurKon: req.User,
|
||||
}
|
||||
|
||||
@@ -291,7 +524,36 @@ func UpdateSuratKontrol(c *gin.Context) {
|
||||
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
reqInsertLog := &logapi.DataLogAPI{
|
||||
ID: uuid,
|
||||
DateCreated: logTimeEnd,
|
||||
UserAgent: req.User,
|
||||
IP: c.ClientIP(),
|
||||
Parameter: "BPJS-VClaim-RencanaKontrol",
|
||||
Header: headerString,
|
||||
Method: "PUT",
|
||||
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
|
||||
}
|
||||
|
||||
@@ -309,7 +571,10 @@ func DeleteSuratKontrol(c *gin.Context) {
|
||||
err := c.Bind(&req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -317,7 +582,7 @@ func DeleteSuratKontrol(c *gin.Context) {
|
||||
|
||||
timeNow := time.Now().Format("2006-01-02 15:04:05")
|
||||
|
||||
if req.NomorSurKon == "" {
|
||||
if req.TipeSurKon != "1" {
|
||||
reqUpdate := &sk.DataSuratKontrol{
|
||||
DateUpdated: timeNow,
|
||||
ID: req.IDDataSurKon,
|
||||
@@ -328,7 +593,10 @@ func DeleteSuratKontrol(c *gin.Context) {
|
||||
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
res := &sk.MetadataString{
|
||||
@@ -336,11 +604,12 @@ func DeleteSuratKontrol(c *gin.Context) {
|
||||
Message: "Berhasil Hapus Data",
|
||||
}
|
||||
c.JSON(http.StatusOK, res)
|
||||
return
|
||||
}
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
header := cfg.SetHeader(conf)
|
||||
header := cfg.SetHeader(false, conf)
|
||||
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
@@ -377,7 +646,10 @@ func DeleteSuratKontrol(c *gin.Context) {
|
||||
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, res)
|
||||
@@ -392,7 +664,7 @@ func GetNomorSuratKontrol(c *gin.Context) {
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
header := cfg.SetHeader(conf)
|
||||
header := cfg.SetHeader(false, conf)
|
||||
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
@@ -422,7 +694,7 @@ func GetSuratKontrolBySEP(c *gin.Context) {
|
||||
|
||||
conf := config.ConfigBpjs{}
|
||||
|
||||
header := cfg.SetHeader(conf)
|
||||
header := cfg.SetHeader(false, conf)
|
||||
|
||||
headers := map[string]string{
|
||||
"X-cons-id": header.ConsID,
|
||||
@@ -444,7 +716,9 @@ func GetSuratKontrolBySEP(c *gin.Context) {
|
||||
}
|
||||
|
||||
func GetDataSurKon(c *gin.Context) {
|
||||
data, err := suratkontrol.GetDataSuratKontrol()
|
||||
offset := c.Param("offset")
|
||||
limit := c.Param("limit")
|
||||
data, err := suratkontrol.GetDataSuratKontrol(offset, limit)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
@@ -479,6 +753,8 @@ func GetDataSurKon(c *gin.Context) {
|
||||
Subspesialis: v.Subspesialis,
|
||||
KodePoli: v.KodePoli,
|
||||
KodeDokter: v.KodeDokter,
|
||||
IDDokter: v.IDDokter,
|
||||
KodeDPJP: v.KodeDPJP,
|
||||
NoRM: v.NoRM,
|
||||
KodeDiagnosa: v.KodeDiagnosa,
|
||||
NamaDiagnosa: v.NamaDiagnosa,
|
||||
@@ -493,7 +769,10 @@ func GetDataSurKonByID(c *gin.Context) {
|
||||
data, err := suratkontrol.GetDataSuratKontrolByID(id)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -523,10 +802,12 @@ func GetDataSurKonByID(c *gin.Context) {
|
||||
KodeDokter: data.KodeDokter,
|
||||
IDPoli: data.IDPoli,
|
||||
IDDokter: data.IDDokter,
|
||||
KodeDPJP: data.KodeDPJP,
|
||||
NoRM: data.NoRM,
|
||||
KodeDiagnosa: data.KodeDiagnosa,
|
||||
NamaDiagnosa: data.NamaDiagnosa,
|
||||
TipeSurKon: data.TipeSurKon,
|
||||
User: data.User,
|
||||
}
|
||||
c.JSON(http.StatusOK, resSurKon)
|
||||
}
|
||||
@@ -576,7 +857,10 @@ func CariPasienTPP(c *gin.Context) {
|
||||
err := c.ShouldBindJSON(&req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -584,45 +868,98 @@ func CariPasienTPP(c *gin.Context) {
|
||||
|
||||
query := ``
|
||||
var args []interface{}
|
||||
var argsCount []interface{}
|
||||
var data []*sk.GetDataSuratKontrol
|
||||
var count int
|
||||
if req.NoRM != "" {
|
||||
query += `and dkp2."NOMR" = ?`
|
||||
args = append(args, req.NoRM, req.TanggalAwal, req.TanggalAkhir)
|
||||
argsCount = append(argsCount, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir)
|
||||
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
args = append(args, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit)
|
||||
data, err = suratkontrol.SearchDataSurKon(req, query, args)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
} else if req.NoSEP != "" {
|
||||
query += `and dkp2."Nomor_sep" = ?`
|
||||
args = append(args, req.NoSEP, req.TanggalAwal, req.TanggalAkhir)
|
||||
argsCount = append(argsCount, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir)
|
||||
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
args = append(args, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit)
|
||||
data, err = suratkontrol.SearchDataSurKon(req, query, args)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
} else if req.PoliKlinik != "" {
|
||||
query += `and ds."id" = ?`
|
||||
args = append(args, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir)
|
||||
argsCount = append(argsCount, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir)
|
||||
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
args = append(args, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit)
|
||||
data, err = suratkontrol.SearchDataSurKon(req, query, args)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
} else {
|
||||
args = append(args, req.TanggalAwal, req.TanggalAkhir)
|
||||
argsCount = append(argsCount, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir)
|
||||
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
args = append(args, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir, req.Offset, req.Limit)
|
||||
data, err = suratkontrol.SearchDataSurKon(req, query, args)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
|
||||
Code: "",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var resSurKon []*sk.ResponseGetDataSuratKontrol
|
||||
var listData []*sk.ResponseGetDataSuratKontrol
|
||||
for _, v := range data {
|
||||
gelarDepan := utils.ReplaceGelar(v.GelarDepan)
|
||||
gelarBelakang := utils.ReplaceGelar(v.GelarBelakang)
|
||||
@@ -633,7 +970,7 @@ func CariPasienTPP(c *gin.Context) {
|
||||
dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02")
|
||||
dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol)
|
||||
dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02")
|
||||
resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{
|
||||
listData = append(listData, &sk.ResponseGetDataSuratKontrol{
|
||||
IDDataSurKon: v.IDDataSurKon,
|
||||
IDXDaftar: v.IDXDaftar,
|
||||
TglCetakSurKon: dateCetakSurkonString,
|
||||
@@ -648,11 +985,18 @@ func CariPasienTPP(c *gin.Context) {
|
||||
Subspesialis: v.Subspesialis,
|
||||
KodePoli: v.KodePoli,
|
||||
KodeDokter: v.KodeDokter,
|
||||
IDDokter: v.IDDokter,
|
||||
KodeDPJP: v.KodeDPJP,
|
||||
NoRM: v.NoRM,
|
||||
KodeDiagnosa: v.KodeDiagnosa,
|
||||
NamaDiagnosa: v.NamaDiagnosa,
|
||||
TipeSurKon: v.TipeSurKon,
|
||||
})
|
||||
}
|
||||
|
||||
resSurKon := &sk.ResponseCariDataSuratKontrol{
|
||||
JumlahData: count,
|
||||
ListDataSuratKontrol: listData,
|
||||
}
|
||||
c.JSON(http.StatusOK, resSurKon)
|
||||
}
|
||||
@@ -3,15 +3,18 @@ package main
|
||||
import (
|
||||
"bridging-rssa/config"
|
||||
"bridging-rssa/handlers/bpjs"
|
||||
icare "bridging-rssa/handlers/bpjs/i_care"
|
||||
"bridging-rssa/handlers/bpjs/jadwal_dokter"
|
||||
suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
_ "bridging-rssa/docs"
|
||||
|
||||
"github.com/gin-contrib/cors"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/joho/godotenv"
|
||||
cron "github.com/robfig/cron/v3"
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
)
|
||||
@@ -32,6 +35,24 @@ func main() {
|
||||
|
||||
r := gin.Default()
|
||||
|
||||
jakartaTime, _ := time.LoadLocation("Asia/Jakarta")
|
||||
scheduler := cron.New(cron.WithLocation(jakartaTime))
|
||||
|
||||
defer scheduler.Stop()
|
||||
|
||||
scheduler.AddFunc("* 02 * * *", func() {
|
||||
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===")
|
||||
for {
|
||||
success := jadwal_dokter.GetJadwalDokter()
|
||||
if success {
|
||||
log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===")
|
||||
break
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
go scheduler.Start()
|
||||
|
||||
v1 := r.Group("/api")
|
||||
|
||||
subspesialis := v1.Group("/subspesialis")
|
||||
@@ -41,7 +62,7 @@ func main() {
|
||||
|
||||
jadwalDokter := v1.Group("/jadwaldokter")
|
||||
{
|
||||
jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter)
|
||||
// jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter)
|
||||
jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP)
|
||||
// jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate)
|
||||
jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate)
|
||||
@@ -51,7 +72,7 @@ func main() {
|
||||
|
||||
suratKontrol := v1.Group("/suratkontrol")
|
||||
{
|
||||
suratKontrol.GET("/", suratkontrol.GetDataSurKon)
|
||||
suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon)
|
||||
suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID)
|
||||
suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol)
|
||||
suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP)
|
||||
@@ -62,6 +83,11 @@ func main() {
|
||||
suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol)
|
||||
}
|
||||
|
||||
iCare := v1.Group("/icare")
|
||||
{
|
||||
iCare.POST("/rs/validate", icare.GetFKRTL)
|
||||
iCare.POST("/pcare/validate", icare.GetFKTP)
|
||||
}
|
||||
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package icare
|
||||
|
||||
type ReqICare struct {
|
||||
IDXDaftar string `json:"idxdaftar"`
|
||||
Param string `json:"param"`
|
||||
KodeDokter int `json:"kodedokter"`
|
||||
User string `json:"user"`
|
||||
}
|
||||
|
||||
type RequestICare struct {
|
||||
Param string `json:"param"`
|
||||
KodeDokter int `json:"kodedokter"`
|
||||
}
|
||||
|
||||
type ReqFKTP struct {
|
||||
Param string `json:"param"`
|
||||
}
|
||||
|
||||
type Metadata struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type Response struct {
|
||||
Url string `json:"url"`
|
||||
}
|
||||
|
||||
type ResponseGet struct {
|
||||
Response Response `json:"response"`
|
||||
MetaData Metadata `json:"metaData"`
|
||||
}
|
||||
|
||||
type ResponseGetRaw struct {
|
||||
Response string `json:"response"`
|
||||
MetaData Metadata `json:"metaData"`
|
||||
}
|
||||
@@ -57,7 +57,7 @@ type ResponseListHari struct {
|
||||
Kode string `json:"Kode"`
|
||||
Spesialis string `json:"Spesialis"`
|
||||
Subspesialis string `json:"Subspesialis"`
|
||||
IDSubspesialis string `json:"id_subspesialis"`
|
||||
IDSubspesialis int `json:"id_subspesialis"`
|
||||
NamaLengkap string `json:"nama_lengkap"`
|
||||
HFISCode string `json:"HFIS_code"`
|
||||
KodeDPJP string `json:"DPJP_code"`
|
||||
|
||||
@@ -21,4 +21,5 @@ type KunjunganPasien struct {
|
||||
DisplayDiagnosisAkhirKeluar string `gorm:"column:Display_diagnosis_akhir_keluar" json:"Display_diagnosis_akhir_keluar"`
|
||||
DiagnosisPrimerUtama string `gorm:"column:Diagnosis_primer_utama" json:"Diagnosis_primer_utama"`
|
||||
DisplayDiagnosisPrimerUtama string `gorm:"column:Display_diagnosis_primer_utama" json:"Display_diagnosis_primer_utama"`
|
||||
NomorRM string `gorm:"column:No_rm" json:"No_rm"`
|
||||
}
|
||||
@@ -30,14 +30,17 @@ type RequestInsertRencanaKontrol struct {
|
||||
TglRencanaKontrol string `json:"tglRencanaKontrol"`
|
||||
User string `json:"user"`
|
||||
IDDokter string `json:"id_dokter"`
|
||||
KodeDiagnosa string `json:"kode_diagnosa"`
|
||||
NamaDiagnosa string `json:"nama_diagnosa"`
|
||||
KodeDiagnosa string `json:"Kode_diagnosa"`
|
||||
NamaDiagnosa string `json:"Nama_diagnosa"`
|
||||
TipeSurKon string `json:"tipe_surkon"`
|
||||
TipeRawat string `json:"tipe_rawat"`
|
||||
}
|
||||
|
||||
type ReqDeleteRencanaKontrol struct {
|
||||
IDDataSurKon string `json:"id_surat_kontrol"`
|
||||
NomorSurKon string `json:"Nomor_surat_kontrol"`
|
||||
User string `json:"user"`
|
||||
TipeSurKon string `json:"tipe_surkon"`
|
||||
}
|
||||
|
||||
type RequestUpdateRencanaKontrol struct {
|
||||
@@ -52,6 +55,8 @@ type RequestUpdateRencanaKontrol struct {
|
||||
User string `json:"user"`
|
||||
KodeDiagnosa string `json:"Kode_diagnosa"`
|
||||
NamaDiagnosa string `json:"Nama_diagnosa"`
|
||||
TipeSurKon string `json:"tipe_surkon"`
|
||||
TipeRawat string `json:"tipe_rawat"`
|
||||
}
|
||||
|
||||
type TSuratKontrol struct {
|
||||
@@ -181,8 +186,8 @@ type Peserta struct {
|
||||
}
|
||||
|
||||
type ProvUmum struct {
|
||||
KodedProvider string `json:"kdProvider"`
|
||||
NamaProvider string `json:"nmProvider"`
|
||||
KodeProvider string `json:"kdProvider"`
|
||||
NamaProvider string `json:"nmProvider"`
|
||||
}
|
||||
|
||||
type ProvPerujuk struct {
|
||||
@@ -243,10 +248,12 @@ type GetDataSuratKontrol struct {
|
||||
NomorKartu string `gorm:"column:No_kartu" json:"No_kartu"`
|
||||
IDPoli string `gorm:"column:ID_poli" json:"id_poli"`
|
||||
IDDokter string `gorm:"column:id_dokter" json:"id_dokter"`
|
||||
KodeDPJP string `gorm:"column:Kode_dpjp" json:"Kode_dpjp"`
|
||||
NoRM string `gorm:"column:No_rm" json:"No_rm"`
|
||||
KodeDiagnosa string `gorm:"column:Kode_diagnosa" json:"Kode_diagnosa"`
|
||||
NamaDiagnosa string `gorm:"column:Nama_diagnosa" json:"Nama_diagnosa"`
|
||||
TipeSurKon string `gorm:"column:Tipe_SurKon" json:"Tipe_SurKon"`
|
||||
User string `gorm:"column:User" json:"User"`
|
||||
}
|
||||
|
||||
type ResponseGetDataSuratKontrol struct {
|
||||
@@ -264,12 +271,19 @@ type ResponseGetDataSuratKontrol struct {
|
||||
Subspesialis string `json:"Subspesialis"`
|
||||
KodePoli string `json:"Kode_poli"`
|
||||
KodeDokter string `json:"Kode_dokter"`
|
||||
KodeDPJP string `json:"Kode_dpjp"`
|
||||
IDPoli string `json:"id_poli"`
|
||||
IDDokter string `json:"id_dokter"`
|
||||
NoRM string `json:"No_rm"`
|
||||
KodeDiagnosa string `json:"Kode_diagnosa"`
|
||||
NamaDiagnosa string `json:"Nama_diagnosa"`
|
||||
TipeSurKon string `json:"Tipe_SurKon"`
|
||||
User string `json:"User"`
|
||||
}
|
||||
|
||||
type ResponseCariDataSuratKontrol struct {
|
||||
JumlahData int `json:"jumlah_data"`
|
||||
ListDataSuratKontrol []*ResponseGetDataSuratKontrol `json:"list_data"`
|
||||
}
|
||||
|
||||
type RequestCariPasien struct {
|
||||
@@ -278,4 +292,7 @@ type RequestCariPasien struct {
|
||||
PoliKlinik string `json:"poliklinik"`
|
||||
TanggalAwal string `json:"tanggal_awal"`
|
||||
TanggalAkhir string `json:"tanggal_akhir"`
|
||||
TipeSurKon string `json:"tipe_surkon"`
|
||||
Offset string `json:"offset"`
|
||||
Limit string `json:"limit"`
|
||||
}
|
||||
@@ -16,6 +16,7 @@ type NamaLengkap struct {
|
||||
NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"`
|
||||
GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"`
|
||||
HFISCode string `gorm:"column:HFIS_code" json:"HFIS_code"`
|
||||
DPJPCode string `gorm:"column:DPJP_code" json:"DPJP_code"`
|
||||
}
|
||||
|
||||
type ResponseDokter struct {
|
||||
@@ -31,4 +32,5 @@ type ResponseDokterNew struct {
|
||||
Subspesialis int `json:"subspesialis"`
|
||||
HFISCode string `json:"HFIS_code"`
|
||||
KodePoli string `json:"kode_poli"`
|
||||
DPJPCode string `json:"DPJP_code"`
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package logapi
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type DataLogAPI struct {
|
||||
ID string `gorm:"column:id" json:"ID"`
|
||||
DateCreated string `gorm:"column:date_created" json:"date_created"`
|
||||
UserAgent string `gorm:"column:User_agent" json:"User_agent"`
|
||||
IP string `gorm:"column:IP" json:"IP"`
|
||||
Parameter string `gorm:"column:Parameter" json:"Parameter"`
|
||||
Header string `gorm:"column:Header" json:"Header"`
|
||||
Method string `gorm:"column:Method" json:"Method"`
|
||||
Url string `gorm:"column:URL" json:"URL"`
|
||||
Request json.RawMessage `gorm:"column:Request" json:"Request"`
|
||||
Respon json.RawMessage `gorm:"column:Respon" json:"Respon"`
|
||||
ResponCode string `gorm:"column:Respon_code" json:"Respon_code"`
|
||||
ResponTimeStart string `gorm:"column:Respontime_start" json:"Respontime_start"`
|
||||
ResponTimeEnd string `gorm:"column:Respontime_end" json:"Respontime_end"`
|
||||
Comment string `gorm:"column:Comment" json:"Comment"`
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package logapi
|
||||
|
||||
type InsertLogICare struct {
|
||||
ID string `gorm:"column:id" json:"id"`
|
||||
DateCreated string `gorm:"column:date_created" json:"date_created"`
|
||||
Ruangan int `gorm:"column:Ruangan" json:"Ruangan"`
|
||||
Dokter string `gorm:"column:Dokter" json:"Dokter"`
|
||||
Kunjungan_pasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"`
|
||||
WaktuTransaksi string `gorm:"column:Waktu_transaksi" json:"Waktu_transaksi"`
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package pasien
|
||||
|
||||
type KunjunganPasien struct {
|
||||
ID string `gorm:"column:id" json:"id"`
|
||||
Ruangan int `gorm:"column:Ruangan" json:"Ruangan"`
|
||||
}
|
||||
Reference in New Issue
Block a user