fix insert daftar jadwal dokter

This commit is contained in:
2024-09-24 11:45:22 +07:00
parent d39d254be8
commit 41a622fda4
11 changed files with 172 additions and 30 deletions

No files matched your search

+42
View File
@@ -0,0 +1,42 @@
package dokter
import (
"bridging-rssa/config"
"bridging-rssa/models/dokter"
"errors"
"log"
"strconv"
"strings"
"gorm.io/gorm"
)
func GetDokter() ([]dokter.DaftarDokterRes, error) {
var listDokter []dokter.DaftarDokter
var res []dokter.DaftarDokterRes
result := config.SatuDataDB.Debug().Raw(`select "id", "HFIS_code" from "data_pegawai" where "HFIS_code" is not null`).Scan(&listDokter)
if result.Error != nil {
if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
log.Fatalf("Error get data : %v", result.Error)
return nil, result.Error
}
log.Fatalf("Data kosong: %v", result.Error)
return nil, nil
}
log.Println("Data Pegawai: ", listDokter)
for _, v := range listDokter {
v.HfisCode = strings.TrimSpace(v.HfisCode)
hfisCode, err := strconv.Atoi(v.HfisCode)
if err != nil {
log.Fatalf("Failed Convert ID to Int %v", err)
return nil, err
}
res = append(res, dokter.DaftarDokterRes{
ID: v.ID,
HfisCode: hfisCode,
})
}
log.Println("Data Pegawai: ", res)
return res, nil
}
+23 -8
View File
@@ -3,20 +3,35 @@ package dokter
import (
"bridging-rssa/config"
"bridging-rssa/models/bpjs/jadwal_dokter"
"log"
)
func InsertJadwalDokter(reqInsert *jadwal_dokter.JadwalDokterSatuData) (error) {
func DeleteJadwalDokter() error {
err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter"`).Error
if err != nil {
log.Fatalf("Failed insert data : %v", err)
return err
}
log.Println("Success insert data")
return nil
}
func UpdateJadwalDokter(reqInsert *jadwal_dokter.JadwalDokterSatuData) (error) {
func InsertJadwalDokter(reqInsert *jadwal_dokter.JadwalDokterSatuData) error {
err := config.SatuDataDB.Debug().Exec(`insert into "daftar_jadwal_dokter" ("Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Status") values ?`, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, reqInsert.Spesialis, reqInsert.SubSpesialis, reqInsert.Status).Error
if err != nil {
log.Fatalf("Failed insert data : %v", err)
return err
}
log.Println("Success insert data")
return nil
}
func GetJadwalDokter(req *jadwal_dokter.JadwalDokterSatuData) (error) {
var jadwalDokter *[]jadwal_dokter.JadwalDokterSatuData
result := config.SatuDataDB.Debug().Raw(`select * from "daftar_jadwal_dokter"`).Find(&)
func InsertJadwalDokterTemp(reqInsert *jadwal_dokter.JadwalDokterSatuData) error {
err := config.SatuDataDB.Debug().Exec(`insert into "daftar_jadwal_dokter_temp" ("Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Status") values (?, ? ,?, ?, ?, ?, ?)`, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, reqInsert.Spesialis, reqInsert.SubSpesialis, reqInsert.Status).Error
if err != nil {
log.Fatalf("Failed insert data : %v", err)
return err
}
log.Println("Success insert data")
return nil
}
}
+2 -3
View File
@@ -9,8 +9,8 @@ import (
"gorm.io/gorm"
)
func GetSpesialis() (*[]dokter.DaftarSpesialis, error) {
var daftarSpesialis *[]dokter.DaftarSpesialis
func GetSpesialis() ([]dokter.DaftarSpesialis, error) {
var daftarSpesialis []dokter.DaftarSpesialis
result := config.SatuDataDB.Debug().Raw(`select * from "daftar_spesialis"`).Find(&daftarSpesialis)
if result.Error != nil {
@@ -22,6 +22,5 @@ func GetSpesialis() (*[]dokter.DaftarSpesialis, error) {
return daftarSpesialis, nil
}
log.Print(&daftarSpesialis)
return daftarSpesialis, nil
}
+3 -3
View File
@@ -9,8 +9,8 @@ import (
"gorm.io/gorm"
)
func GetSubspesialis() (*[]dokter.DaftarSubspesialis, error) {
var daftarSubspesialis *[]dokter.DaftarSubspesialis
func GetSubspesialis() ([]dokter.DaftarSubspesialis, error) {
var daftarSubspesialis []dokter.DaftarSubspesialis
result := config.SatuDataDB.Debug().Raw(`select * from "daftar_subspesialis"`).Find(&daftarSubspesialis)
if result.Error != nil {
@@ -22,6 +22,6 @@ func GetSubspesialis() (*[]dokter.DaftarSubspesialis, error) {
return daftarSubspesialis, nil
}
log.Print(&daftarSubspesialis)
log.Println(daftarSubspesialis)
return daftarSubspesialis, nil
}
+13
View File
@@ -0,0 +1,13 @@
package utils
// Function to convert Kode to ID
func KodeToIDConverter(kode string, kodeDokter map[string]int) int {
id := kodeDokter[kode]
return id
}
// Convert Hfis Code to ID Satu Data
func HfisCodeToIDConverter(kode int, kodeDokter map[int]string) string {
id := kodeDokter[kode]
return id
}
+61 -5
View File
@@ -3,6 +3,7 @@ package jadwal_dokter
import (
cfg "bridging-rssa/config"
"bridging-rssa/database/satu_data/dokter"
"bridging-rssa/docs/utils"
"bridging-rssa/models/bpjs/jadwal_dokter"
"bridging-rssa/models/config"
"log"
@@ -18,17 +19,42 @@ func GetJadwalDokter(c *gin.Context) {
endpoint := os.Getenv("ANTREAN_RS")
url := baseUrl + endpoint
errTruncate := dokter.DeleteJadwalDokter()
if errTruncate != nil {
log.Fatal(errTruncate)
c.JSON(http.StatusInternalServerError, errTruncate)
}
// Select from daftar spesialis
spesialis, err := dokter.GetSpesialis()
if err != nil {
c.JSON(http.StatusInternalServerError, err)
}
var listIdSpesialis = make(map[string]int)
for _, kodeDokter := range spesialis {
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
}
subspesialis, err := dokter.GetSubspesialis()
if err != nil {
c.JSON(http.StatusInternalServerError, err)
}
var listIdSubspesialis = make(map[string]int)
for _, kodeDokter := range subspesialis {
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
}
listDokter, err := dokter.GetDokter()
if err != nil {
c.JSON(http.StatusInternalServerError, err)
}
var listIddokter = make(map[int]string)
for _, kodeDokter := range listDokter {
listIddokter[kodeDokter.HfisCode] = kodeDokter.ID
}
conf := config.ConfigBpjs{}
cons_id, secretKey, User_key, tstamp, X_signature := cfg.SetHeader(conf)
@@ -41,8 +67,11 @@ func GetJadwalDokter(c *gin.Context) {
}
var res *[]jadwal_dokter.ListDokter
log.Println("Headers : ", headers)
tanggal := time.Now().Format("2006-01-02")
for _, value := range *spesialis {
// var reqSelect *jadwal_dokter.JadwalDokterSatuData
var reqInsert *jadwal_dokter.JadwalDokterSatuData
for _, value := range spesialis {
tanggal := time.Now().Format("2006-01-02")
for i := 0; i < 7; i++ {
kdPoly := value.Kode
res, err = JadwalDokterGetResponse(url, secretKey, cons_id, User_key, tstamp, X_signature, kdPoly, tanggal, headers)
@@ -50,15 +79,42 @@ func GetJadwalDokter(c *gin.Context) {
log.Fatalf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, err)
}
err = dokter.
if res == nil {
log.Println("Skip Proses")
continue
}
idSpesialis := utils.KodeToIDConverter(kdPoly, listIdSpesialis)
idSubspesialis := utils.KodeToIDConverter(kdPoly, listIdSubspesialis)
for _, v := range *res {
idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter)
reqInsert = &jadwal_dokter.JadwalDokterSatuData{
Hari: v.Hari,
NamaHari: v.NamaHari,
Waktu: v.Jadwal,
Dokter: idDokter,
Spesialis: idSpesialis,
SubSpesialis: idSubspesialis,
Status: 1, // When available always set to 1
}
if reqInsert.Dokter == "" {
errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert)
if errInsertTemp != nil {
log.Println(errInsertTemp)
}
}
errInsert := dokter.InsertJadwalDokter(reqInsert)
if errInsert != nil {
log.Println(errInsert)
c.JSON(http.StatusInternalServerError, errInsert)
}
}
date, errParse := time.Parse("2006-01-02", tanggal)
if errParse != nil {
c.JSON(http.StatusInternalServerError, errParse)
}
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
log.Println("Tanggal :", tanggal)
}
}
c.JSON(http.StatusOK, res)
}
+5
View File
@@ -43,6 +43,11 @@ func JadwalDokterGetResponse(url string, secretKey string, cons_id string, User_
log.Fatalf("Error Unmarshaling: %v", err)
}
if jadwalDokterRaw.MetaData.Code == 201 {
log.Println("No Data Found")
return nil, nil
}
dataResp, err := docs.StringDecrypt(key, jadwalDokterRaw.Response)
if err != nil {
log.Fatalf("Error Decrypt: %v", err)
+2 -2
View File
@@ -39,7 +39,7 @@ func main() {
jadwalDokter := v1.Group("/jadwaldokter")
{
jadwalDokter.GET("/kdpoly/:kdpoly/tanggal/:tanggal", jadwal_dokter.GetJadwalDokter)
jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter)
}
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
@@ -47,7 +47,7 @@ func main() {
r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.DELETE("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
log.Println("JALAN DI PORT : 8081")
err = r.Run(":8080")
err = r.Run(":8081")
if err != nil {
log.Fatal(err)
}
+9 -8
View File
@@ -31,11 +31,12 @@ type DaftarSpesialis struct {
}
type JadwalDokterSatuData struct {
ID int `json:"id"`
Hari int `json:"Hari"`
NamaHari string `json:"Nama_hari"`
Waktu string `json:"Waktu"`
Spesialis int `json:"Spesialis"`
SubSpesialis int `json:"Sub_spesialis"`
Status int `json:"Status"`
}
ID int `gorm:"id" json:"id"`
Hari int `gorm:"Hari" json:"Hari"`
NamaHari string `gorm:"Nama_hari" json:"Nama_hari"`
Waktu string `gorm:"Waktu" json:"Waktu"`
Dokter string `gorm:"Dokter" json:"Dokter"`
Spesialis int `gorm:"Spesialis" json:"Spesialis"`
SubSpesialis int `gorm:"Sub_spesialis" json:"Sub_spesialis"`
Status int `gorm:"Status" json:"Status"`
}
+11
View File
@@ -0,0 +1,11 @@
package dokter
type DaftarDokter struct {
ID string `gorm:"column:id" json:"id"`
HfisCode string `gorm:"column:HFIS_code" json:"HFIS_code"`
}
type DaftarDokterRes struct {
ID string `gorm:"column:id" json:"id"`
HfisCode int `gorm:"column:HFIS_code" json:"HFIS_code"`
}
+1 -1
View File
@@ -4,4 +4,4 @@ type DaftarSpesialis struct {
ID int `json:"id"`
Kode string `json:"Kode"`
Spesialis string `json:"Spesialis"`
}
}