bridging-bpjs #2
@@ -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
|
||||
}
|
||||
@@ -3,20 +3,51 @@ package dokter
|
||||
import (
|
||||
"bridging-rssa/config"
|
||||
"bridging-rssa/models/bpjs/jadwal_dokter"
|
||||
"log"
|
||||
"strconv"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
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 truncate data : %v", err)
|
||||
return err
|
||||
}
|
||||
log.Println("Success truncate data")
|
||||
return nil
|
||||
}
|
||||
|
||||
func UpdateJadwalDokter(reqInsert *jadwal_dokter.JadwalDokterSatuData) (error) {
|
||||
|
||||
func DeleteJadwalDokterTemp() error {
|
||||
err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter_temp"`).Error
|
||||
if err != nil {
|
||||
log.Fatalf("Failed truncate data : %v", err)
|
||||
return err
|
||||
}
|
||||
log.Println("Success truncate 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 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 InsertJadwalDokterTemp(reqInsert *jadwal_dokter.JadwalDokterSatuData) error {
|
||||
spesialis := strconv.Itoa(reqInsert.Spesialis)
|
||||
subspesialis := strconv.Itoa(reqInsert.SubSpesialis)
|
||||
id := uuid.New()
|
||||
err := config.SatuDataDB.Debug().Exec(`insert into "daftar_jadwal_dokter_temp" ("id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Status") values (?, ?, ?, ?, ?, ?, ?, ?)`, id, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, spesialis, subspesialis, reqInsert.Status).Error
|
||||
if err != nil {
|
||||
log.Fatalf("Failed insert data : %v", err)
|
||||
return err
|
||||
}
|
||||
log.Println("Success insert data")
|
||||
return nil
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package utils
|
||||
|
||||
import "log"
|
||||
|
||||
// Function to convert Kode to ID
|
||||
func KodeToIDConverter(kode string, kodeDokter map[string]int) int {
|
||||
log.Println("Kode :", kode)
|
||||
id := kodeDokter[kode]
|
||||
log.Println("ID :", id)
|
||||
return id
|
||||
}
|
||||
|
||||
// Convert Hfis Code to ID Satu Data
|
||||
func HfisCodeToIDConverter(kode int, kodeDokter map[int]string) string {
|
||||
id := kodeDokter[kode]
|
||||
return id
|
||||
}
|
||||
@@ -61,6 +61,7 @@ require (
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||
github.com/jinzhu/now v1.1.5 // indirect
|
||||
golang.org/x/text v0.18.0 // indirect
|
||||
|
||||
@@ -46,6 +46,8 @@ github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PU
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
|
||||
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
||||
|
||||
@@ -3,11 +3,13 @@ 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"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -18,17 +20,49 @@ 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)
|
||||
}
|
||||
|
||||
errTruncateTemp := dokter.DeleteJadwalDokterTemp()
|
||||
if errTruncateTemp != nil {
|
||||
log.Fatal(errTruncateTemp)
|
||||
c.JSON(http.StatusInternalServerError, errTruncateTemp)
|
||||
}
|
||||
|
||||
// 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 +75,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 +87,45 @@ 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
|
||||
}
|
||||
for _, v := range *res {
|
||||
idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis)
|
||||
idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis)
|
||||
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 != "" {
|
||||
errInsert := dokter.InsertJadwalDokter(reqInsert)
|
||||
if errInsert != nil {
|
||||
log.Println(errInsert)
|
||||
c.JSON(http.StatusInternalServerError, errInsert)
|
||||
}
|
||||
} else {
|
||||
reqInsert.Dokter = strconv.Itoa(v.KodeDokter)
|
||||
errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert)
|
||||
if errInsertTemp != nil {
|
||||
log.Println(errInsertTemp)
|
||||
c.JSON(http.StatusInternalServerError, errInsertTemp)
|
||||
}
|
||||
}
|
||||
}
|
||||
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)
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -31,11 +31,23 @@ 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"`
|
||||
}
|
||||
|
||||
type JadwalDokterTempSatuData struct {
|
||||
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 string `gorm:"Spesialis" json:"Spesialis"`
|
||||
SubSpesialis string `gorm:"Sub_spesialis" json:"Sub_spesialis"`
|
||||
Status int `gorm:"Status" json:"Status"`
|
||||
}
|
||||
@@ -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"`
|
||||
}
|
||||
@@ -4,4 +4,4 @@ type DaftarSpesialis struct {
|
||||
ID int `json:"id"`
|
||||
Kode string `json:"Kode"`
|
||||
Spesialis string `json:"Spesialis"`
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user