From 8f606982faa6044ee26ea25dc2934d5aaa78983f16aa1d41ef767e94acc8654b Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 25 Sep 2024 11:53:50 +0700 Subject: [PATCH 01/40] get spesialis --- database/satu_data/dokter/dokter.go | 15 +++++++++ database/satu_data/dokter/jadwal_dokter.go | 28 ++++++++++++++--- database/satu_data/dokter/spesialis.go | 19 +++++++++-- docs/utils/utils.go | 23 +++++++++++++- handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 33 ++++++++++++++++++++ main.go | 1 + models/dokter/dokter.go | 4 +++ 7 files changed, 116 insertions(+), 7 deletions(-) diff --git a/database/satu_data/dokter/dokter.go b/database/satu_data/dokter/dokter.go index 79ddcb9..9bebfaa 100644 --- a/database/satu_data/dokter/dokter.go +++ b/database/satu_data/dokter/dokter.go @@ -40,3 +40,18 @@ func GetDokter() ([]dokter.DaftarDokterRes, error) { log.Println("Data Pegawai: ", res) return res, nil } + +func GetDotkerByID(idDokter []string) ([]dokter.DaftarSpesialis, error) { + var daftarDokter []dokter.DaftarSpesialis + result := config.SatuDataDB.Debug().Raw(`select * from "data_pegawai" where "id" in ?`, idDokter).Find(&daftarDokter) + if result.Error != nil { + if !errors.Is(result.Error, gorm.ErrRecordNotFound) { + log.Printf("Error get data : %v", result.Error) + return nil, result.Error + } + log.Printf("Data kosong: %v", result.Error) + return daftarDokter, nil + } + + return daftarDokter, nil +} diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index 1b4aff7..ebb0239 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -9,10 +9,30 @@ import ( "github.com/google/uuid" ) +func GetJadwalDokterByDate(hari string) ([]string, error) { + var spesialis []string + errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return nil, errSelect + } + return spesialis, nil +} + +func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error) { + var listDokter []string + errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and Spesialis = ? order by "Spesialis"`, hari, spesialis).Scan(&listDokter).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return nil, errSelect + } + return listDokter, nil +} + func DeleteJadwalDokter() error { err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter"`).Error if err != nil { - log.Fatalf("Failed truncate data : %v", err) + log.Printf("Failed truncate data : %v", err) return err } log.Println("Success truncate data") @@ -22,7 +42,7 @@ func DeleteJadwalDokter() 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) + log.Printf("Failed truncate data : %v", err) return err } log.Println("Success truncate data") @@ -32,7 +52,7 @@ func DeleteJadwalDokterTemp() 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) + log.Printf("Failed insert data : %v", err) return err } log.Println("Success insert data") @@ -45,7 +65,7 @@ func InsertJadwalDokterTemp(reqInsert *jadwal_dokter.JadwalDokterSatuData) error 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) + log.Printf("Failed insert data : %v", err) return err } log.Println("Success insert data") diff --git a/database/satu_data/dokter/spesialis.go b/database/satu_data/dokter/spesialis.go index 873e554..1ac6d6b 100644 --- a/database/satu_data/dokter/spesialis.go +++ b/database/satu_data/dokter/spesialis.go @@ -15,10 +15,25 @@ func GetSpesialis() ([]dokter.DaftarSpesialis, error) { result := config.SatuDataDB.Debug().Raw(`select * from "daftar_spesialis"`).Find(&daftarSpesialis) if result.Error != nil { if !errors.Is(result.Error, gorm.ErrRecordNotFound) { - log.Fatalf("Error get data : %v", result.Error) + log.Printf("Error get data : %v", result.Error) return nil, result.Error } - log.Fatalf("Data kosong: %v", result.Error) + log.Printf("Data kosong: %v", result.Error) + return daftarSpesialis, nil + } + + return daftarSpesialis, nil +} + +func GetSpesialisByID(idSpesialis []string) ([]dokter.DaftarSpesialis, error) { + var daftarSpesialis []dokter.DaftarSpesialis + result := config.SatuDataDB.Debug().Raw(`select * from "daftar_spesialis" where "id" in ?`, idSpesialis).Find(&daftarSpesialis) + if result.Error != nil { + if !errors.Is(result.Error, gorm.ErrRecordNotFound) { + log.Printf("Error get data : %v", result.Error) + return nil, result.Error + } + log.Printf("Data kosong: %v", result.Error) return daftarSpesialis, nil } diff --git a/docs/utils/utils.go b/docs/utils/utils.go index 70f4cd9..d0e571f 100644 --- a/docs/utils/utils.go +++ b/docs/utils/utils.go @@ -1,6 +1,9 @@ package utils -import "log" +import ( + "log" + "strings" +) // Function to convert Kode to ID func KodeToIDConverter(kode string, kodeDokter map[string]int) int { @@ -15,3 +18,21 @@ func HfisCodeToIDConverter(kode int, kodeDokter map[int]string) string { id := kodeDokter[kode] return id } + +func ConvertDay(day string) string { + dayTranslations := map[string]string{ + "sunday": "MINGGU", + "monday": "SENIN", + "tuesday": "SELASA", + "wednesday": "RABU", + "thursday": "KAMIS", + "friday": "JUMAT", + "saturday": "SABTU", + } + + dayLower := strings.ToLower(day) + if translatedDay, exists := dayTranslations[dayLower]; exists { + return translatedDay + } + return day +} diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index abc1f8b..1eaca31 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -129,3 +129,36 @@ func GetJadwalDokter(c *gin.Context) { } c.JSON(http.StatusOK, res) } + +func GetSpesialisByDate(c *gin.Context) { + tanggal := c.Param("tanggal") + date, err := time.Parse("2006-01-02", tanggal) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + hari := date.Local().Weekday().String() + hari = utils.ConvertDay(hari) + idSpesialis, err := dokter.GetJadwalDokterByDate(hari) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + listSpesialis, err := dokter.GetSpesialisByID(idSpesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + c.JSON(http.StatusOK, listSpesialis) +} + +func GetDokterBySpesialis(c *gin.Context) { + spesialis := c.Param("spesialis") + hari := c.Param("hari") + idDokter, err := dokter.GetJadwalDokterBySpesialis(hari, spesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + listSpesialis, err := dokter.GetDotkerByID(idDokter) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + c.JSON(http.StatusOK, listSpesialis) +} diff --git a/main.go b/main.go index 5d6bc41..1eef75e 100644 --- a/main.go +++ b/main.go @@ -40,6 +40,7 @@ func main() { jadwalDokter := v1.Group("/jadwaldokter") { jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter) + jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate) } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/models/dokter/dokter.go b/models/dokter/dokter.go index d17a114..aa4ca38 100644 --- a/models/dokter/dokter.go +++ b/models/dokter/dokter.go @@ -9,3 +9,7 @@ type DaftarDokterRes struct { ID string `gorm:"column:id" json:"id"` HfisCode int `gorm:"column:HFIS_code" json:"HFIS_code"` } + +type NamaLengkap struct { + +} \ No newline at end of file From d5b06ff328f9ab18b3ded48a996461b7f46239e9967a23346198bce046e25bc8 Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 25 Sep 2024 15:11:33 +0700 Subject: [PATCH 02/40] update progress get dokter --- database/satu_data/dokter/dokter.go | 23 +++++++++++++---- handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 27 +++++++++++++++++--- main.go | 5 ++-- models/dokter/dokter.go | 13 ++++++++-- models/dokter/spesialis.go | 2 +- 5 files changed, 56 insertions(+), 14 deletions(-) diff --git a/database/satu_data/dokter/dokter.go b/database/satu_data/dokter/dokter.go index 9bebfaa..aa22295 100644 --- a/database/satu_data/dokter/dokter.go +++ b/database/satu_data/dokter/dokter.go @@ -41,17 +41,30 @@ func GetDokter() ([]dokter.DaftarDokterRes, error) { return res, nil } -func GetDotkerByID(idDokter []string) ([]dokter.DaftarSpesialis, error) { - var daftarDokter []dokter.DaftarSpesialis - result := config.SatuDataDB.Debug().Raw(`select * from "data_pegawai" where "id" in ?`, idDokter).Find(&daftarDokter) +func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) { + var namaDokter []dokter.NamaLengkap + result := config.SatuDataDB.Debug().Raw(`select dp.id + array( + select dgd. "Gelar_depan" + from data_pegawai_daftar_gelar_depan dpdgd + left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id + ) AS gelardepan,dk."Nama_lengkap" , + array( + select dgb. "Gelar_belakang" + 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 + from "data_pegawai" dp + left join data_ktp dk on dp."KTP" = dk.id + WHERE dp.id in ?`, idDokter).Find(&namaDokter) if result.Error != nil { if !errors.Is(result.Error, gorm.ErrRecordNotFound) { log.Printf("Error get data : %v", result.Error) return nil, result.Error } log.Printf("Data kosong: %v", result.Error) - return daftarDokter, nil + return namaDokter, nil } - return daftarDokter, nil + return namaDokter, nil } diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 1eaca31..bf237a4 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -6,6 +6,7 @@ import ( "bridging-rssa/docs/utils" "bridging-rssa/models/bpjs/jadwal_dokter" "bridging-rssa/models/config" + dktr "bridging-rssa/models/dokter" "log" "net/http" "os" @@ -151,14 +152,32 @@ func GetSpesialisByDate(c *gin.Context) { func GetDokterBySpesialis(c *gin.Context) { spesialis := c.Param("spesialis") - hari := c.Param("hari") + tanggal := c.Param("tanggal") + date, err := time.Parse("2006-01-02", tanggal) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + hari := date.Local().Weekday().String() + hari = utils.ConvertDay(hari) idDokter, err := dokter.GetJadwalDokterBySpesialis(hari, spesialis) if err != nil { c.JSON(http.StatusInternalServerError, err) } - listSpesialis, err := dokter.GetDotkerByID(idDokter) + namaDokter, err := dokter.GetNamaLengkapDokter(idDokter) if err != nil { c.JSON(http.StatusInternalServerError, err) } - c.JSON(http.StatusOK, listSpesialis) -} + var resDokter []dktr.ResponseDokter + idSpesialis, err := strconv.Atoi(spesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + for i, v := range namaDokter { + resDokter = append(resDokter, dktr.ResponseDokter{ + ID: v.ID, + NamaLengkap: v.GelarDepan[i] + " " + v.NamaLengkap + " " + v.GelarBelakang[i], + Spesialis: idSpesialis, + }) + } + c.JSON(http.StatusOK, resDokter) +} \ No newline at end of file diff --git a/main.go b/main.go index 1eef75e..a470195 100644 --- a/main.go +++ b/main.go @@ -41,14 +41,15 @@ func main() { { jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter) jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate) + jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) 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(":8081") + log.Println("JALAN DI PORT : 8080") + err = r.Run(":8080") if err != nil { log.Fatal(err) } diff --git a/models/dokter/dokter.go b/models/dokter/dokter.go index aa4ca38..b18ce13 100644 --- a/models/dokter/dokter.go +++ b/models/dokter/dokter.go @@ -11,5 +11,14 @@ type DaftarDokterRes struct { } type NamaLengkap struct { - -} \ No newline at end of file + ID string `gorm:"column:id" json:"id"` + GelarDepan []string `gorm:"column:gelardepan" json:"gelardepan"` + NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` + GelarBelakang []string `gorm:"column:gelarbelakang" json:"gelarbelakang"` +} + +type ResponseDokter struct { + ID string `json:"id"` + NamaLengkap string `json:"nama_lengkap"` + Spesialis int `json:"spesialis"` +} diff --git a/models/dokter/spesialis.go b/models/dokter/spesialis.go index 3e161c3..9ceaa3f 100644 --- a/models/dokter/spesialis.go +++ b/models/dokter/spesialis.go @@ -4,4 +4,4 @@ type DaftarSpesialis struct { ID int `json:"id"` Kode string `json:"Kode"` Spesialis string `json:"Spesialis"` -} \ No newline at end of file +} From 7a508c66911b7e1c234c280e760c2515e91efc2e5f1c52fc4ae1af56d4aa4bb7 Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 26 Sep 2024 07:53:33 +0700 Subject: [PATCH 03/40] fix get dokter --- database/satu_data/dokter/dokter.go | 5 +++-- database/satu_data/dokter/jadwal_dokter.go | 2 +- docs/utils/utils.go | 7 +++++++ handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 12 +++++++++--- models/dokter/dokter.go | 8 ++++---- 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/database/satu_data/dokter/dokter.go b/database/satu_data/dokter/dokter.go index aa22295..688617a 100644 --- a/database/satu_data/dokter/dokter.go +++ b/database/satu_data/dokter/dokter.go @@ -43,12 +43,13 @@ func GetDokter() ([]dokter.DaftarDokterRes, error) { func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) { var namaDokter []dokter.NamaLengkap - result := config.SatuDataDB.Debug().Raw(`select dp.id + result := config.SatuDataDB.Debug().Raw(`select dp.id, array( select dgd. "Gelar_depan" from data_pegawai_daftar_gelar_depan dpdgd left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id - ) AS gelardepan,dk."Nama_lengkap" , + ) AS gelardepan , + dk."Nama_lengkap" , array( select dgb. "Gelar_belakang" from data_pegawai_daftar_gelar_belakang dpdgb diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index ebb0239..bc765c9 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -21,7 +21,7 @@ func GetJadwalDokterByDate(hari string) ([]string, error) { func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error) { var listDokter []string - errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and Spesialis = ? order by "Spesialis"`, hari, spesialis).Scan(&listDokter).Error + errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Spesialis" = ? order by "Spesialis"`, hari, spesialis).Scan(&listDokter).Error if errSelect != nil { log.Printf("Failed get data : %v", errSelect) return nil, errSelect diff --git a/docs/utils/utils.go b/docs/utils/utils.go index d0e571f..2a5f1d1 100644 --- a/docs/utils/utils.go +++ b/docs/utils/utils.go @@ -36,3 +36,10 @@ func ConvertDay(day string) string { } return day } + +func ReplaceGelar(gelar string) string { + gelar = strings.ReplaceAll(gelar, "{", "") + gelar = strings.ReplaceAll(gelar, "}", "") + gelar = strings.ReplaceAll(gelar, ",", " ") + return gelar +} diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index bf237a4..0655f36 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -11,6 +11,7 @@ import ( "net/http" "os" "strconv" + "strings" "time" "github.com/gin-gonic/gin" @@ -172,12 +173,17 @@ func GetDokterBySpesialis(c *gin.Context) { if err != nil { c.JSON(http.StatusInternalServerError, err) } - for i, v := range namaDokter { + for _, v := range namaDokter { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaLengkap + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") resDokter = append(resDokter, dktr.ResponseDokter{ ID: v.ID, - NamaLengkap: v.GelarDepan[i] + " " + v.NamaLengkap + " " + v.GelarBelakang[i], + NamaLengkap: namaLengkap, Spesialis: idSpesialis, }) } c.JSON(http.StatusOK, resDokter) -} \ No newline at end of file +} diff --git a/models/dokter/dokter.go b/models/dokter/dokter.go index b18ce13..3b0f884 100644 --- a/models/dokter/dokter.go +++ b/models/dokter/dokter.go @@ -11,10 +11,10 @@ type DaftarDokterRes struct { } type NamaLengkap struct { - ID string `gorm:"column:id" json:"id"` - GelarDepan []string `gorm:"column:gelardepan" json:"gelardepan"` - NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` - GelarBelakang []string `gorm:"column:gelarbelakang" json:"gelarbelakang"` + ID string `gorm:"column:id" json:"id"` + GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` + NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` + GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` } type ResponseDokter struct { From 5a86adfa963b29d5c8e3f868234d08f64e9d96af58e68e98ff43891123e82b80 Mon Sep 17 00:00:00 2001 From: mirza Date: Fri, 27 Sep 2024 14:12:00 +0700 Subject: [PATCH 04/40] insert surat kontrol --- .env | 6 +- config/config.go | 16 +++- .../satu_data/surat_kontrol/surat_kontrol.go | 41 +++++++++ handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 28 +++--- handlers/bpjs/jadwal_dokter/response.go | 5 +- handlers/bpjs/surat_kontrol/response.go | 85 +++++++++++++++++++ handlers/bpjs/surat_kontrol/surat_kontrol.go | 62 ++++++++++++++ main.go | 6 ++ models/bpjs/surat_kontrol/kunjugan_pasien.go | 17 ++++ models/bpjs/surat_kontrol/surat_kontrol.go | 40 +++++++++ models/config/config.go | 8 ++ 11 files changed, 293 insertions(+), 21 deletions(-) create mode 100644 database/satu_data/surat_kontrol/surat_kontrol.go create mode 100644 handlers/bpjs/surat_kontrol/response.go create mode 100644 handlers/bpjs/surat_kontrol/surat_kontrol.go create mode 100644 models/bpjs/surat_kontrol/kunjugan_pasien.go create mode 100644 models/bpjs/surat_kontrol/surat_kontrol.go diff --git a/.env b/.env index e0189b4..afc5b58 100644 --- a/.env +++ b/.env @@ -15,4 +15,8 @@ BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id/ ANTREAN_RS=antreanrs CONS_ID=5257 USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482 -SECRET_KEY=1bV363512D \ No newline at end of file +SECRET_KEY=1bV363512D + +BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/ +SURAT_KONTROL_RS_DEV=vclaim-rest-dev +INSERT_SURAT_KONTROL=/RencanaKontrol/insert \ No newline at end of file diff --git a/config/config.go b/config/config.go index b5e1e50..d874030 100644 --- a/config/config.go +++ b/config/config.go @@ -36,14 +36,14 @@ func ConnectDB() { local := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostDB, usernameDB, passwordDB, dbName, portDB) satuData := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSatuData, userNameSatuData, passwordSatuData, dbNameSatuData, portSatuData) - + localDB, err = gorm.Open(postgres.Open(local), &gorm.Config{}) if err != nil { log.Fatal("Failed to connect to Satu Data database: ", err) } else { log.Println("Successfully connected to the database") } - + SatuDataDB, err = gorm.Open(postgres.Open(satuData), &gorm.Config{}) if err != nil { log.Fatal("Failed to connect to Satu Data database: ", err) @@ -52,7 +52,7 @@ func ConnectDB() { } } -func SetHeader(cfg config.ConfigBpjs) (string, string, string, string, string) { +func SetHeader(cfg config.ConfigBpjs) *config.Header { timenow := time.Now().UTC() time := time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC) @@ -71,6 +71,14 @@ func SetHeader(cfg config.ConfigBpjs) (string, string, string, string, string) { // to base64 X_signature := base64.StdEncoding.EncodeToString(hash.Sum(nil)) - return cfg.Cons_id, cfg.Secret_key, cfg.User_key, fmt.Sprint(tstamp), X_signature + header := &config.Header{ + ConsID: cfg.Cons_id, + SecretKey: cfg.Secret_key, + UserKey: cfg.User_key, + TimeStamp: fmt.Sprint(tstamp), + XSignature: X_signature, + } + + return header } diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go new file mode 100644 index 0000000..6f186b9 --- /dev/null +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -0,0 +1,41 @@ +package suratkontrol + +import ( + "bridging-rssa/config" + suratkontrol "bridging-rssa/models/bpjs/surat_kontrol" + "log" +) + +func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjuganPasien, error) { + var kunjuganPasien *suratkontrol.KunjuganPasien + err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep, + dlr."Nama" as namaklinik, dlr."Id_location_simgos" as idkliniksimgos, dlr."Kode_hfis_bpjs" as kodehfisklinik, + dk."Nama_lengkap" as namadokter, + dp."KDDOKTER" as kodedokter, dp."HFIS_code" as kodehfisdokter, + dsu."Kode" as kodesubspesialis, dsu."Subspesialis" as subspesialis, + ds."Spesialis" as spesialis, + array( + select dgd."Gelar_depan" + from data_pegawai_daftar_gelar_depan dpdgd + left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id + where dpdgd.data_pegawai_id = dp.id + ) AS gelardepan, + array( + select dgb."Gelar_belakang" + 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 + 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 + left join data_ktp dk on dp."KTP" = dk.id + left join daftar_subspesialis dsu on dp."Subspesialis" = dsu.id + left join daftar_spesialis ds on dsu."FK_daftar_spesialis_ID" = ds.id + where dkp."IDXDAFTAR" = ?`, idxdaftar).First(&kunjuganPasien).Error + if err != nil { + log.Println(err) + } + log.Println("Data Kunjungan Pasien : ", kunjuganPasien) + return kunjuganPasien, err +} diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 0655f36..7e7d1e3 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -22,6 +22,18 @@ func GetJadwalDokter(c *gin.Context) { endpoint := os.Getenv("ANTREAN_RS") url := baseUrl + endpoint + conf := config.ConfigBpjs{} + + header := cfg.SetHeader(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + } + log.Println("Headers : ", headers) + errTruncate := dokter.DeleteJadwalDokter() if errTruncate != nil { log.Fatal(errTruncate) @@ -65,26 +77,14 @@ func GetJadwalDokter(c *gin.Context) { listIddokter[kodeDokter.HfisCode] = kodeDokter.ID } - conf := config.ConfigBpjs{} - - cons_id, secretKey, User_key, tstamp, X_signature := cfg.SetHeader(conf) - - headers := map[string]string{ - "X-cons-id": cons_id, - "X-timestamp": tstamp, - "X-signature": X_signature, - "user_key": User_key, - } - var res *[]jadwal_dokter.ListDokter - log.Println("Headers : ", headers) - // var reqSelect *jadwal_dokter.JadwalDokterSatuData var reqInsert *jadwal_dokter.JadwalDokterSatuData + var res *[]jadwal_dokter.ListDokter 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) + 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) diff --git a/handlers/bpjs/jadwal_dokter/response.go b/handlers/bpjs/jadwal_dokter/response.go index 7f9b053..d539271 100644 --- a/handlers/bpjs/jadwal_dokter/response.go +++ b/handlers/bpjs/jadwal_dokter/response.go @@ -3,6 +3,7 @@ package jadwal_dokter import ( "bridging-rssa/docs" "bridging-rssa/models/bpjs/jadwal_dokter" + "bridging-rssa/models/config" "encoding/json" "fmt" "io" @@ -10,7 +11,7 @@ import ( "net/http" ) -func JadwalDokterGetResponse(url string, secretKey string, cons_id string, User_keys string, tstamp string, X_signature string, kdPoly string, tanggal string, headers map[string]string) (*[]jadwal_dokter.ListDokter, error) { +func JadwalDokterGetResponse(url string, header *config.Header, kdPoly string, tanggal string, headers map[string]string) (*[]jadwal_dokter.ListDokter, error) { param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal url += param log.Println("URL", url) @@ -31,7 +32,7 @@ func JadwalDokterGetResponse(url string, secretKey string, cons_id string, User_ } log.Println("RESPONSE: ", response) - key := cons_id + secretKey + tstamp + key := header.ConsID + header.SecretKey + header.TimeStamp res, err := io.ReadAll(response.Body) if err != nil { fmt.Println(err) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go new file mode 100644 index 0000000..372dfac --- /dev/null +++ b/handlers/bpjs/surat_kontrol/response.go @@ -0,0 +1,85 @@ +package suratkontrol + +import ( + "bridging-rssa/docs" + suratkontrol "bridging-rssa/models/bpjs/surat_kontrol" + "bridging-rssa/models/config" + "bytes" + "encoding/json" + "fmt" + "io" + "log" + "net/http" +) + +func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { + log.Println("URL", url) + + requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ + Request: *request, + } + + reqMarshall, err := json.Marshal(requestBody) + if err != nil { + log.Printf("Error json marshal: %v", err) + } + + 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{} + response, err := client.Do(req) + if err != nil { + log.Printf("Error making external API request: %v", err) + return nil, err + } + log.Println("RESPONSE: ", response) + + key := header.ConsID + header.SecretKey + header.TimeStamp + res, err := io.ReadAll(response.Body) + if err != nil { + fmt.Println(err) + return nil, err + } + + var resSuratKontrolRaw suratkontrol.ResponseInsertSuratKontrolRaw + err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) + if err != nil { + log.Printf("Error Unmarshaling: %v", err) + return nil, err + } + + if resSuratKontrolRaw.MetaData.Code == 201 { + log.Println("No Data Found") + return nil, nil + } + + dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) + if err != nil { + log.Printf("Error Decrypt: %v", err) + log.Println("res: ", dataResp) + return nil, err + } + + var resSuratKontrol []suratkontrol.ResponseInsertSuratKontrol + + log.Println("dataresp: ", dataResp) + + err = json.Unmarshal([]byte(dataResp), &resSuratKontrol) + if err != nil { + log.Printf("Error Decode: %v", err) + return nil, err + } + + log.Println("res: ", resSuratKontrol) + + return resSuratKontrol, nil +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go new file mode 100644 index 0000000..0821e43 --- /dev/null +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -0,0 +1,62 @@ +package suratkontrol + +import ( + cfg "bridging-rssa/config" + suratkontrol "bridging-rssa/database/satu_data/surat_kontrol" + sk "bridging-rssa/models/bpjs/surat_kontrol" + "bridging-rssa/models/config" + "log" + "net/http" + "os" + + "github.com/gin-gonic/gin" +) + +func InsertSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("INSERT_SURAT_KONTROL") + url := baseUrl + endpoint + param + + var req sk.RequestInsertRencanaKontrol + + err := c.Bind(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + } + + conf := config.ConfigBpjs{} + + header := cfg.SetHeader(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + kunjuganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + } + + reqSuratKontrol := &sk.RequestRencanaKontrol{ + NoSEP: kunjuganPasien.NomorSEP, + KodeDokter: kunjuganPasien.KodeHfisDokter, + PoliKontrol: req.KodePoli, + TglRencanaKontrol: req.Tanggal, + User: req.User, + } + + res, err := PostData(url, header, headers, reqSuratKontrol) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + } + + c.JSON(http.StatusOK, res) +} diff --git a/main.go b/main.go index a470195..256c111 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,7 @@ import ( "bridging-rssa/config" "bridging-rssa/handlers/bpjs" "bridging-rssa/handlers/bpjs/jadwal_dokter" + suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol" "log" _ "bridging-rssa/docs" @@ -44,6 +45,11 @@ func main() { jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) } + suratKontrol := v1.Group("/suratkontrol") + { + suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) + } + r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/models/bpjs/surat_kontrol/kunjugan_pasien.go b/models/bpjs/surat_kontrol/kunjugan_pasien.go new file mode 100644 index 0000000..1b1f027 --- /dev/null +++ b/models/bpjs/surat_kontrol/kunjugan_pasien.go @@ -0,0 +1,17 @@ +package suratkontrol + +type KunjuganPasien struct { + IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` + NomorSEP string `gorm:"column:nomorsep" json:"nomorsep"` + NamaKlinik string `gorm:"column:namaklinik" json:"namaklinik"` + IDKlinikSimgos string `gorm:"column:idkliniksimgos" json:"idkliniksimgos"` + KodeHfisKlinik string `gorm:"column:kodehfisklinik" json:"kodehfisklinik"` + NamaDokter string `gorm:"column:namadokter" json:"namadokter"` + KodeDokter string `gorm:"column:kodedokter" json:"kodedokter"` + KodeHfisDokter string `gorm:"column:kodehfisdokter" json:"kodehfisdokter"` + KodeSubspesialis string `gorm:"column:kodesubspesialis" json:"kodesubspesialis"` + Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"` + Spesialis string `gorm:"column:spesialis" json:"spesialis"` + GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` + GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` +} diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go new file mode 100644 index 0000000..6535e0a --- /dev/null +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -0,0 +1,40 @@ +package suratkontrol + +type RequestHeaderRencanaKontrol struct { + Request RequestRencanaKontrol `json:"request"` +} + +type RequestRencanaKontrol struct { + NoSEP string `json:"noSEP"` + KodeDokter string `json:"kodeDokter"` + PoliKontrol string `json:"poliKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` +} + +type ResponseInsertSuratKontrolRaw struct { + Response string `json:"response"` + MetaData Metadata `json:"metadata"` +} + +type Metadata struct { + Code int `json:"code"` + Message string `json:"message"` +} + +type ResponseInsertSuratKontrol struct { + NoSuratKontrol string `json:"noSuratKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + NamaDokter string `json:"namaDokter"` + NoKartu string `json:"noKartu"` + Nama string `json:"nama"` + Kelamin string `json:"kelamin"` + TglLahir string `json:"tglLahir"` +} + +type RequestInsertRencanaKontrol struct { + IDXDaftar string `json:"idxdaftar"` + Tanggal string `json:"tanggal"` + KodePoli string `json:"kodePoli"` + User string `json:"user"` +} diff --git a/models/config/config.go b/models/config/config.go index c6e2f86..3777845 100644 --- a/models/config/config.go +++ b/models/config/config.go @@ -5,3 +5,11 @@ type ConfigBpjs struct { Secret_key string User_key string } + +type Header struct { + ConsID string + SecretKey string + UserKey string + TimeStamp string + XSignature string +} From 97a6780b6b90acc65903922fca92d9581e5c0b127b20bdfc4055935a59dbb902 Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 30 Sep 2024 15:22:25 +0700 Subject: [PATCH 05/40] add code for get nomor surat kontrol --- .env | 10 +--- config/config.go | 15 ------ handlers/bpjs/surat_kontrol/response.go | 53 ++++++++++++++++++++ handlers/bpjs/surat_kontrol/surat_kontrol.go | 28 +++++++++++ main.go | 1 + models/bpjs/surat_kontrol/surat_kontrol.go | 53 ++++++++++++++++++++ 6 files changed, 137 insertions(+), 23 deletions(-) diff --git a/.env b/.env index afc5b58..cdd52ae 100644 --- a/.env +++ b/.env @@ -1,10 +1,3 @@ -# POSTGRES_DSN="postgres://sa:password@localhost:5432/postgres?sslmode=disable" -DB_HOST=localhost -DB_USERNAME=sa -DB_PASSWORD=password -DB_NAME=postgres -DB_PORT=5432 - SATUDATA_HOST=10.10.123.165 SATUDATA_USERNAME=stim SATUDATA_PASSWORD=stim*RS54 @@ -19,4 +12,5 @@ SECRET_KEY=1bV363512D BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/ SURAT_KONTROL_RS_DEV=vclaim-rest-dev -INSERT_SURAT_KONTROL=/RencanaKontrol/insert \ No newline at end of file +INSERT_SURAT_KONTROL=/RencanaKontrol/insert +GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol \ No newline at end of file diff --git a/config/config.go b/config/config.go index d874030..4282459 100644 --- a/config/config.go +++ b/config/config.go @@ -21,29 +21,14 @@ var SatuDataDB *gorm.DB var err error func ConnectDB() { - hostDB := os.Getenv("DB_HOST") - usernameDB := os.Getenv("DB_USERNAME") - passwordDB := os.Getenv("DB_PASSWORD") - dbName := os.Getenv("DB_NAME") - portDB := os.Getenv("DB_PORT") - hostSatuData := os.Getenv("SATUDATA_HOST") userNameSatuData := os.Getenv("SATUDATA_USERNAME") passwordSatuData := os.Getenv("SATUDATA_PASSWORD") dbNameSatuData := os.Getenv("SATUDATA_NAME") portSatuData := os.Getenv("SATUDATA_PORT") - local := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostDB, usernameDB, passwordDB, dbName, portDB) - satuData := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSatuData, userNameSatuData, passwordSatuData, dbNameSatuData, portSatuData) - localDB, err = gorm.Open(postgres.Open(local), &gorm.Config{}) - if err != nil { - log.Fatal("Failed to connect to Satu Data database: ", err) - } else { - log.Println("Successfully connected to the database") - } - SatuDataDB, err = gorm.Open(postgres.Open(satuData), &gorm.Config{}) if err != nil { log.Fatal("Failed to connect to Satu Data database: ", err) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index 372dfac..bbbcfd9 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -83,3 +83,56 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return resSuratKontrol, nil } + +func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map[string]string) (*suratkontrol.ResponseNomorSuratKontrol, error) { + log.Println("URL", url) + + req, err := http.NewRequest("GET", url, nil) + if err != nil { + log.Printf("Error creating request: %v", err) + } + + for key, value := range headers { + req.Header.Set(key, value) + } + + log.Println("REQ", req.Header) + client := http.Client{} + response, err := client.Do(req) + if err != nil { + log.Printf("Error making external API request: %v", err) + } + log.Println("RESPONSE: ", response) + + key := header.ConsID + header.SecretKey + header.TimeStamp + res, err := io.ReadAll(response.Body) + if err != nil { + log.Println(err) + } + + var resNoSuratKontrolRaw suratkontrol.ResponseRaw + err = json.Unmarshal([]byte(res), &resNoSuratKontrolRaw) + if err != nil { + log.Printf("Error Unmarshaling: %v", err) + return nil, err + } + + dataResp, err := docs.StringDecrypt(key, resNoSuratKontrolRaw.Response) + if err != nil { + log.Printf("Error Decrypt: %v", err) + return nil, err + } + + var responseNoSuratKontrol *suratkontrol.ResponseNomorSuratKontrol + log.Println("dataresp: ", dataResp) + + err = json.Unmarshal([]byte(dataResp), &resNoSuratKontrolRaw) + if err != nil { + log.Printf("Error Decode: %v", err) + return nil, err + } + + log.Println("res: ", resNoSuratKontrolRaw) + + return responseNoSuratKontrol, nil +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 0821e43..cbef0c7 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -60,3 +60,31 @@ func InsertSuratKontrol(c *gin.Context) { c.JSON(http.StatusOK, res) } + +func GetNomorSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("GET_NOMOR_SURAT_KONTROL") + noSurat := c.Param("noSuratKontrol") + url := baseUrl + endpoint + param + noSurat + + conf := config.ConfigBpjs{} + + header := cfg.SetHeader(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + } + log.Println("Headers : ", headers) + + res, err := ResponseGetNomorSuratKontrol(url, header, headers) + if err != nil { + log.Fatalf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + } + + c.JSON(http.StatusOK, res) +} diff --git a/main.go b/main.go index 256c111..e22837a 100644 --- a/main.go +++ b/main.go @@ -48,6 +48,7 @@ func main() { suratKontrol := v1.Group("/suratkontrol") { suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) + suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 6535e0a..6503ec5 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -17,6 +17,11 @@ type ResponseInsertSuratKontrolRaw struct { MetaData Metadata `json:"metadata"` } +type ResponseRaw struct { + Response string `json:"response"` + MetaData Metadata `json:"metadata"` +} + type Metadata struct { Code int `json:"code"` Message string `json:"message"` @@ -38,3 +43,51 @@ type RequestInsertRencanaKontrol struct { KodePoli string `json:"kodePoli"` User string `json:"user"` } + +type ResponseNomorSuratKontrol struct { + NoSuratKontrol string `json:"noSuratKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + TglTerbit string `json:"tglTerbit"` + JnsKontrol string `json:"jnsKontrol"` + PoliTujuan string `json:"poliTujuan"` + NamaPoliTujuan string `json:"namaPoliTujuan"` + KodeDokter string `json:"kodeDokter"` + NamaDokter string `json:"namaDokter"` + FlagKontrol string `json:"flagKontrol"` + KodeDokterPembuat string `json:"kodeDokterPembuat"` + NamaDokterPembuat string `json:"namaDokterPembuat"` + NamaJnsKontrol string `json:"namaJnsKontrol"` + Sep Sep `json:"sep"` +} + +type Sep struct { + NoSep string `json:"noSep"` + TglSep string `json:"tglSep"` + JnsPelayanan string `json:"jnsPelayanan"` + Poli string `json:"poli"` + Diagnosa string `json:"diagnosa"` + Peserta Peserta `json:"peserta"` + ProvUmum ProvUmum `json:"provUmum"` + ProvPerujuk ProvPerujuk `json:"provPerujuk"` +} + +type Peserta struct { + NoKartu string `json:"noKartu"` + Nama string `json:"nama"` + TglLahir string `json:"tglLahir"` + Kelamin string `json:"kelamin"` + HakKelas string `json:"hakKelas"` +} + +type ProvUmum struct { + KodedProvider string `json:"kdProvider"` + NamaProvider string `json:"nmProvider"` +} + +type ProvPerujuk struct { + KodeProviderPerujuk string `json:"kdProviderPerujuk"` + NamaProviderPerujuk string `json:"nmProviderPerujuk"` + AsalRujukan string `json:"asalRujukan"` + NoRujukan string `json:"noRujukan"` + TglRujukan string `json:"tglRujukan"` +} From 6654bb3d28dc06b2357e58746ec947f5282f1ef198a18cd0238677dc6233e3cc Mon Sep 17 00:00:00 2001 From: mirza Date: Tue, 1 Oct 2024 09:18:44 +0700 Subject: [PATCH 06/40] update code --- .env | 1 + handlers/bpjs/surat_kontrol/response.go | 70 ++++++++++++++++++-- handlers/bpjs/surat_kontrol/surat_kontrol.go | 49 ++++++++++++++ models/bpjs/surat_kontrol/surat_kontrol.go | 16 ++--- 4 files changed, 122 insertions(+), 14 deletions(-) diff --git a/.env b/.env index cdd52ae..8a2c4d6 100644 --- a/.env +++ b/.env @@ -13,4 +13,5 @@ SECRET_KEY=1bV363512D BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/ SURAT_KONTROL_RS_DEV=vclaim-rest-dev INSERT_SURAT_KONTROL=/RencanaKontrol/insert +UPDATE_SURAT_KONTROL=/RencanaKontrol/Update GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol \ No newline at end of file diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index bbbcfd9..a80a422 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -50,16 +50,78 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } - var resSuratKontrolRaw suratkontrol.ResponseInsertSuratKontrolRaw + var resSuratKontrolRaw suratkontrol.ResponseRaw err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) if err != nil { log.Printf("Error Unmarshaling: %v", err) return nil, err } - if resSuratKontrolRaw.MetaData.Code == 201 { - log.Println("No Data Found") - return nil, nil + dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) + if err != nil { + log.Printf("Error Decrypt: %v", err) + log.Println("res: ", dataResp) + return nil, err + } + + var resSuratKontrol []suratkontrol.ResponseInsertSuratKontrol + + log.Println("dataresp: ", dataResp) + + err = json.Unmarshal([]byte(dataResp), &resSuratKontrol) + if err != nil { + log.Printf("Error Decode: %v", err) + return nil, err + } + + log.Println("res: ", resSuratKontrol) + + return resSuratKontrol, nil +} + +func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { + log.Println("URL", url) + + requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ + Request: *request, + } + + reqMarshall, err := json.Marshal(requestBody) + if err != nil { + log.Printf("Error json marshal: %v", err) + } + + 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{} + response, err := client.Do(req) + if err != nil { + log.Printf("Error making external API request: %v", err) + return nil, err + } + log.Println("RESPONSE: ", response) + + key := header.ConsID + header.SecretKey + header.TimeStamp + res, err := io.ReadAll(response.Body) + if err != nil { + fmt.Println(err) + return nil, err + } + + var resSuratKontrolRaw suratkontrol.ResponseRaw + err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) + if err != nil { + log.Printf("Error Unmarshaling: %v", err) + return nil, err } dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index cbef0c7..07efe3d 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -61,6 +61,55 @@ func InsertSuratKontrol(c *gin.Context) { c.JSON(http.StatusOK, res) } +func UpdateSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("UPDATE_SURAT_KONTROL") + url := baseUrl + endpoint + param + + var req sk.RequestInsertRencanaKontrol + + err := c.Bind(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + } + + conf := config.ConfigBpjs{} + + header := cfg.SetHeader(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + kunjuganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + } + + reqSuratKontrol := &sk.RequestRencanaKontrol{ + NoSEP: kunjuganPasien.NomorSEP, + KodeDokter: kunjuganPasien.KodeHfisDokter, + PoliKontrol: req.KodePoli, + TglRencanaKontrol: req.Tanggal, + User: req.User, + } + + res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + } + + c.JSON(http.StatusOK, res) +} + func GetNomorSuratKontrol(c *gin.Context) { baseUrl := os.Getenv("BASEURL_BPJS_DEV") endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 6503ec5..b03bbc9 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -5,16 +5,12 @@ type RequestHeaderRencanaKontrol struct { } type RequestRencanaKontrol struct { - NoSEP string `json:"noSEP"` - KodeDokter string `json:"kodeDokter"` - PoliKontrol string `json:"poliKontrol"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - User string `json:"user"` -} - -type ResponseInsertSuratKontrolRaw struct { - Response string `json:"response"` - MetaData Metadata `json:"metadata"` + NoSuratKontrol *string `json:"noSuratKontrol"` + NoSEP string `json:"noSEP"` + KodeDokter string `json:"kodeDokter"` + PoliKontrol string `json:"poliKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` } type ResponseRaw struct { From 363d9d7847321b04879369c219fc4533bc3601666173427baa1ed16c4302d854 Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 2 Oct 2024 13:33:51 +0700 Subject: [PATCH 07/40] update insert and get dokter --- .env | 1 + database/satu_data/dokter/dokter.go | 3 +- .../satu_data/surat_kontrol/surat_kontrol.go | 14 ++-- go.mod | 1 + go.sum | 2 + handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 1 + handlers/bpjs/surat_kontrol/response.go | 79 ++++++++++++++++-- handlers/bpjs/surat_kontrol/surat_kontrol.go | 83 ++++++++++++++++--- main.go | 9 ++ models/bpjs/surat_kontrol/kunjugan_pasien.go | 2 +- models/bpjs/surat_kontrol/surat_kontrol.go | 27 +++++- models/dokter/dokter.go | 2 + 12 files changed, 197 insertions(+), 27 deletions(-) diff --git a/.env b/.env index 8a2c4d6..09627c1 100644 --- a/.env +++ b/.env @@ -14,4 +14,5 @@ BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/ SURAT_KONTROL_RS_DEV=vclaim-rest-dev INSERT_SURAT_KONTROL=/RencanaKontrol/insert UPDATE_SURAT_KONTROL=/RencanaKontrol/Update +DELETE_SURAT_KONTROL=/RencanaKontrol/Delete GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol \ No newline at end of file diff --git a/database/satu_data/dokter/dokter.go b/database/satu_data/dokter/dokter.go index 688617a..ea9a295 100644 --- a/database/satu_data/dokter/dokter.go +++ b/database/satu_data/dokter/dokter.go @@ -54,7 +54,8 @@ func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) { select dgb. "Gelar_belakang" 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 + ) AS gelarbelakang, + dp."HFIS_code" from "data_pegawai" dp left join data_ktp dk on dp."KTP" = dk.id WHERE dp.id in ?`, idDokter).Find(&namaDokter) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 6f186b9..658cc77 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -6,8 +6,8 @@ import ( "log" ) -func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjuganPasien, error) { - var kunjuganPasien *suratkontrol.KunjuganPasien +func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) { + var kunjunganPasien *suratkontrol.KunjunganPasien err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep, dlr."Nama" as namaklinik, dlr."Id_location_simgos" as idkliniksimgos, dlr."Kode_hfis_bpjs" as kodehfisklinik, dk."Nama_lengkap" as namadokter, @@ -32,10 +32,14 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjuganPasien, err left join data_ktp dk on dp."KTP" = dk.id left join daftar_subspesialis dsu on dp."Subspesialis" = dsu.id left join daftar_spesialis ds on dsu."FK_daftar_spesialis_ID" = ds.id - where dkp."IDXDAFTAR" = ?`, idxdaftar).First(&kunjuganPasien).Error + where dkp."IDXDAFTAR" = ?`, idxdaftar).First(&kunjunganPasien).Error if err != nil { log.Println(err) } - log.Println("Data Kunjungan Pasien : ", kunjuganPasien) - return kunjuganPasien, err + log.Println("Data Kunjungan Pasien : ", kunjunganPasien) + return kunjunganPasien, err +} + +func InsertDataSuratKontrol(reqInsert suratkontrol.InsertDataSuratKontrol) error { + return nil } diff --git a/go.mod b/go.mod index 4c17746..4874b1d 100644 --- a/go.mod +++ b/go.mod @@ -23,6 +23,7 @@ require ( github.com/cloudwego/iasm v0.2.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gabriel-vasile/mimetype v1.4.5 // indirect + github.com/gin-contrib/cors v1.7.2 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect diff --git a/go.sum b/go.sum index 2e8ae1b..9b93f1e 100644 --- a/go.sum +++ b/go.sum @@ -19,6 +19,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4= github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4= +github.com/gin-contrib/cors v1.7.2 h1:oLDHxdg8W/XDoN/8zamqk/Drgt4oVZDvaV0YmvVICQw= +github.com/gin-contrib/cors v1.7.2/go.mod h1:SUJVARKgQ40dmrzgXEVxj2m7Ig1v1qIboQkPDTQ9t2E= github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 7e7d1e3..06eaf8b 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -183,6 +183,7 @@ func GetDokterBySpesialis(c *gin.Context) { ID: v.ID, NamaLengkap: namaLengkap, Spesialis: idSpesialis, + HFISCode: v.HFISCode, }) } c.JSON(http.StatusOK, resDokter) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index a80a422..e35cbe5 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -12,7 +12,72 @@ import ( "net/http" ) -func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { +func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.ResponseInsertSuratKontrol, error) { + log.Println("URL", url) + + reqMarshall, err := json.Marshal(request) + if err != nil { + log.Printf("Error json marshal: %v", err) + } + + log.Println("REQUEST: ", 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{} + response, err := client.Do(req) + if err != nil { + log.Printf("Error making external API request: %v", err) + return nil, err + } + log.Println("RESPONSE: ", response) + + key := header.ConsID + header.SecretKey + header.TimeStamp + res, err := io.ReadAll(response.Body) + if err != nil { + fmt.Println(err) + return nil, err + } + + var resSuratKontrolRaw suratkontrol.ResponseRaw + err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) + if err != nil { + log.Printf("Error Unmarshaling: %v", err) + return nil, err + } + + dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) + if err != nil { + log.Printf("Error Decrypt: %v", err) + log.Println("res: ", dataResp) + return nil, err + } + + var resSuratKontrol *suratkontrol.ResponseInsertSuratKontrol + + log.Println("dataresp: ", dataResp) + + err = json.Unmarshal([]byte(dataResp), &resSuratKontrol) + if err != nil { + log.Printf("Error Decode: %v", err) + return nil, err + } + + log.Println("res: ", resSuratKontrol) + + return resSuratKontrol, nil +} + +func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { log.Println("URL", url) requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ @@ -24,7 +89,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Printf("Error json marshal: %v", err) } - req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall)) + req, err := http.NewRequest("PUT", url, bytes.NewReader(reqMarshall)) if err != nil { log.Printf("Error creating request: %v", err) return nil, err @@ -79,19 +144,15 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return resSuratKontrol, nil } -func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { +func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (interface{}, error) { log.Println("URL", url) - requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ - Request: *request, - } - - reqMarshall, err := json.Marshal(requestBody) + reqMarshall, err := json.Marshal(request) if err != nil { log.Printf("Error json marshal: %v", err) } - req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall)) + req, err := http.NewRequest("PUT", url, bytes.NewReader(reqMarshall)) if err != nil { log.Printf("Error creating request: %v", err) return nil, err diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 07efe3d..1ae0c8b 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -38,18 +38,20 @@ func InsertSuratKontrol(c *gin.Context) { "Content-Type": "Application/x-www-form-urlencoded", } log.Println("Headers : ", headers) - kunjuganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) } - reqSuratKontrol := &sk.RequestRencanaKontrol{ - NoSEP: kunjuganPasien.NomorSEP, - KodeDokter: kunjuganPasien.KodeHfisDokter, - PoliKontrol: req.KodePoli, - TglRencanaKontrol: req.Tanggal, - User: req.User, + reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.RequestRencanaKontrol{ + NoSEP: kunjunganPasien.NomorSEP, + KodeDokter: kunjunganPasien.KodeHfisDokter, + PoliKontrol: req.KodePoli, + TglRencanaKontrol: req.Tanggal, + User: req.User, + }, } res, err := PostData(url, header, headers, reqSuratKontrol) @@ -87,15 +89,15 @@ func UpdateSuratKontrol(c *gin.Context) { "Content-Type": "Application/x-www-form-urlencoded", } log.Println("Headers : ", headers) - kunjuganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) } reqSuratKontrol := &sk.RequestRencanaKontrol{ - NoSEP: kunjuganPasien.NomorSEP, - KodeDokter: kunjuganPasien.KodeHfisDokter, + NoSEP: kunjunganPasien.NomorSEP, + KodeDokter: kunjunganPasien.KodeHfisDokter, PoliKontrol: req.KodePoli, TglRencanaKontrol: req.Tanggal, User: req.User, @@ -107,6 +109,67 @@ func UpdateSuratKontrol(c *gin.Context) { c.JSON(http.StatusInternalServerError, err) } + // reqInsert := &sk.InsertDataSuratKontrol{ + // ID: "", + // Status: "", + // Sort: 0, + // UserCreated: "", + // DateCreated: "", + // UserUpdated: "", + // DateUpdated: "", + // TglCetakSurKon: "", + // TglRencanaKontrol: "", + // NomorSurKon: "", + // KunjunganPasien: "", + // RuanganSurKon: 0, + // DPJPSurKon: "", + // StatusSurKon: 0, + // UserCreatedSurKon: "", + // } + + c.JSON(http.StatusOK, res) +} + +func DeleteSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("UPDATE_SURAT_KONTROL") + url := baseUrl + endpoint + param + + var req sk.RequestInsertRencanaKontrol + + err := c.Bind(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + } + + conf := config.ConfigBpjs{} + + header := cfg.SetHeader(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + + request := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.RequestDeleteRencanaKontrol{ + NoSuratKontrol: "", + User: "", + }, + } + + res, err := ResponseDeleteSuratKontrol(url, header, headers, request) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + } + c.JSON(http.StatusOK, res) } diff --git a/main.go b/main.go index e22837a..ba7c344 100644 --- a/main.go +++ b/main.go @@ -9,6 +9,7 @@ import ( _ "bridging-rssa/docs" + "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "github.com/joho/godotenv" swaggerFiles "github.com/swaggo/files" @@ -48,6 +49,8 @@ func main() { suratKontrol := v1.Group("/suratkontrol") { suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) + suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) + suratKontrol.DELETE("/delete", suratkontrol.UpdateSuratKontrol) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) } @@ -55,6 +58,12 @@ func main() { r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.DELETE("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + r.Use(cors.New(cors.Config{ + AllowOrigins: []string{"*"}, // or specific domains like "http://example.com" + AllowMethods: []string{"GET", "POST", "PUT", "DELETE"}, + AllowHeaders: []string{"Origin", "Content-Type"}, + AllowCredentials: true, + })) log.Println("JALAN DI PORT : 8080") err = r.Run(":8080") if err != nil { diff --git a/models/bpjs/surat_kontrol/kunjugan_pasien.go b/models/bpjs/surat_kontrol/kunjugan_pasien.go index 1b1f027..9478c76 100644 --- a/models/bpjs/surat_kontrol/kunjugan_pasien.go +++ b/models/bpjs/surat_kontrol/kunjugan_pasien.go @@ -1,6 +1,6 @@ package suratkontrol -type KunjuganPasien struct { +type KunjunganPasien struct { IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` NomorSEP string `gorm:"column:nomorsep" json:"nomorsep"` NamaKlinik string `gorm:"column:namaklinik" json:"namaklinik"` diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index b03bbc9..2fa2474 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -1,7 +1,7 @@ package suratkontrol type RequestHeaderRencanaKontrol struct { - Request RequestRencanaKontrol `json:"request"` + Request interface{} `json:"request"` } type RequestRencanaKontrol struct { @@ -13,6 +13,12 @@ type RequestRencanaKontrol struct { User string `json:"user"` } +type RequestDeleteRencanaKontrol struct { + TSuratKontrol string `json:"t_suratkontrol"` + NoSuratKontrol string `json:"noSuratKontrol"` + User string `json:"user"` +} + type ResponseRaw struct { Response string `json:"response"` MetaData Metadata `json:"metadata"` @@ -34,6 +40,7 @@ type ResponseInsertSuratKontrol struct { } type RequestInsertRencanaKontrol struct { + NoSEP string `json:"noSEP"` IDXDaftar string `json:"idxdaftar"` Tanggal string `json:"tanggal"` KodePoli string `json:"kodePoli"` @@ -87,3 +94,21 @@ type ProvPerujuk struct { NoRujukan string `json:"noRujukan"` TglRujukan string `json:"tglRujukan"` } + +type InsertDataSuratKontrol struct { + ID string `gorm:"column:id" json:"id"` + Status string `gorm:"column:status" json:"status"` + Sort int `gorm:"column:sort" json:"sort"` + UserCreated string `gorm:"column:user_created" json:"user_created"` + DateCreated string `gorm:"column:date_created" json:"date_created"` + UserUpdated string `gorm:"column:user_updated" json:"user_updated"` + DateUpdated string `gorm:"column:date_updated" json:"date_updated"` + TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` + TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` + NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` + KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"` + RuanganSurKon int `gorm:"column:Ruangan_surat_kontrol" json:"Ruangan_surat_kontrol"` + DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_surat_kontrol"` + StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` + UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` +} diff --git a/models/dokter/dokter.go b/models/dokter/dokter.go index 3b0f884..6b37bc3 100644 --- a/models/dokter/dokter.go +++ b/models/dokter/dokter.go @@ -15,10 +15,12 @@ type NamaLengkap struct { GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` 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"` } type ResponseDokter struct { ID string `json:"id"` NamaLengkap string `json:"nama_lengkap"` Spesialis int `json:"spesialis"` + HFISCode string `json:"HFIS_code"` } From 9fe51bd269598fdff5de9e1282a9c1204e12a7c9584234010d656d464c7a1775 Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 2 Oct 2024 14:33:14 +0700 Subject: [PATCH 08/40] add code insert into data rencana control --- .../satu_data/surat_kontrol/surat_kontrol.go | 30 +++++++++-- handlers/bpjs/surat_kontrol/surat_kontrol.go | 53 ++++++++++--------- models/bpjs/surat_kontrol/kunjugan_pasien.go | 2 + models/bpjs/surat_kontrol/surat_kontrol.go | 11 ++-- 4 files changed, 63 insertions(+), 33 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 658cc77..fdcf633 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -8,7 +8,7 @@ import ( func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) { var kunjunganPasien *suratkontrol.KunjunganPasien - err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep, + err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep, dlr."Nama" as namaklinik, dlr."Id_location_simgos" as idkliniksimgos, dlr."Kode_hfis_bpjs" as kodehfisklinik, dk."Nama_lengkap" as namadokter, dp."KDDOKTER" as kodedokter, dp."HFIS_code" as kodehfisdokter, @@ -25,7 +25,9 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er 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 + ) AS gelarbelakang, + dkp."Ruangan" as ruangan, + dkp."DPJP" 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 @@ -35,11 +37,33 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er where dkp."IDXDAFTAR" = ?`, idxdaftar).First(&kunjunganPasien).Error if err != nil { log.Println(err) + return nil, err } log.Println("Data Kunjungan Pasien : ", kunjunganPasien) return kunjunganPasien, err } -func InsertDataSuratKontrol(reqInsert suratkontrol.InsertDataSuratKontrol) error { +func InsertDataSuratKontrol(reqInsert *suratkontrol.InsertDataSuratKontrol) error { + log.Println("Req Insert Database : ", reqInsert) + insertQuery := `insert into data_surat_kontrol ("status", "user_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", + "Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol", + "User_created_surat_kontrol") + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` + err := config.SatuDataDB.Debug().Exec(insertQuery, + reqInsert.Status, + reqInsert.UserCreated, + reqInsert.TglCetakSurKon, + reqInsert.TglRencanaKontrol, + reqInsert.NomorSurKon, + reqInsert.KunjunganPasien, + reqInsert.RuanganSurKon, + reqInsert.DPJPSurKon, + reqInsert.StatusSurKon, + reqInsert.UserCreatedSurKon, + ).Error + if err != nil { + log.Println(err) + return err + } return nil } diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 1ae0c8b..6346d10 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -8,6 +8,7 @@ import ( "log" "net/http" "os" + "time" "github.com/gin-gonic/gin" ) @@ -18,6 +19,8 @@ func InsertSuratKontrol(c *gin.Context) { param := os.Getenv("INSERT_SURAT_KONTROL") url := baseUrl + endpoint + param + dateNow := time.Now().Format("2006-01-02") + var req sk.RequestInsertRencanaKontrol err := c.Bind(req) @@ -46,20 +49,38 @@ func InsertSuratKontrol(c *gin.Context) { reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ Request: &sk.RequestRencanaKontrol{ - NoSEP: kunjunganPasien.NomorSEP, - KodeDokter: kunjunganPasien.KodeHfisDokter, - PoliKontrol: req.KodePoli, - TglRencanaKontrol: req.Tanggal, + NoSEP: req.NoSEP, + KodeDokter: req.KodeDokter, + PoliKontrol: req.PoliKontrol, + TglRencanaKontrol: req.TglRencanaKontrol, User: req.User, }, } - res, err := PostData(url, header, headers, reqSuratKontrol) if err != nil { log.Printf("Error making external API request: %v", err) c.JSON(http.StatusInternalServerError, err) } + reqInsert := &sk.InsertDataSuratKontrol{ + Status: "1", // First Insert status always set to 1 + UserCreated: req.User, + TglCetakSurKon: dateNow, + TglRencanaKontrol: res.TglRencanaKontrol, + NomorSurKon: res.NoSuratKontrol, + KunjunganPasien: kunjunganPasien.IDKlinikSimgos, + RuanganSurKon: kunjunganPasien.Ruangan, + DPJPSurKon: kunjunganPasien.DPJP, + StatusSurKon: 0, // TODO CARI DARIMANA + UserCreatedSurKon: req.User, + } + + err = suratkontrol.InsertDataSuratKontrol(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + } + c.JSON(http.StatusOK, res) } @@ -98,8 +119,8 @@ func UpdateSuratKontrol(c *gin.Context) { reqSuratKontrol := &sk.RequestRencanaKontrol{ NoSEP: kunjunganPasien.NomorSEP, KodeDokter: kunjunganPasien.KodeHfisDokter, - PoliKontrol: req.KodePoli, - TglRencanaKontrol: req.Tanggal, + PoliKontrol: req.PoliKontrol, + TglRencanaKontrol: req.TglRencanaKontrol, User: req.User, } @@ -109,24 +130,6 @@ func UpdateSuratKontrol(c *gin.Context) { c.JSON(http.StatusInternalServerError, err) } - // reqInsert := &sk.InsertDataSuratKontrol{ - // ID: "", - // Status: "", - // Sort: 0, - // UserCreated: "", - // DateCreated: "", - // UserUpdated: "", - // DateUpdated: "", - // TglCetakSurKon: "", - // TglRencanaKontrol: "", - // NomorSurKon: "", - // KunjunganPasien: "", - // RuanganSurKon: 0, - // DPJPSurKon: "", - // StatusSurKon: 0, - // UserCreatedSurKon: "", - // } - c.JSON(http.StatusOK, res) } diff --git a/models/bpjs/surat_kontrol/kunjugan_pasien.go b/models/bpjs/surat_kontrol/kunjugan_pasien.go index 9478c76..e8ba479 100644 --- a/models/bpjs/surat_kontrol/kunjugan_pasien.go +++ b/models/bpjs/surat_kontrol/kunjugan_pasien.go @@ -14,4 +14,6 @@ type KunjunganPasien struct { Spesialis string `gorm:"column:spesialis" json:"spesialis"` GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` + Ruangan int `gorm:"column:ruangan" json:"ruangan"` + DPJP string `gorm:"column:DPJP" json:"DPJP"` } diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 2fa2474..891a9da 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -40,11 +40,12 @@ type ResponseInsertSuratKontrol struct { } type RequestInsertRencanaKontrol struct { - NoSEP string `json:"noSEP"` - IDXDaftar string `json:"idxdaftar"` - Tanggal string `json:"tanggal"` - KodePoli string `json:"kodePoli"` - User string `json:"user"` + IDXDaftar string `json:"idxdaftar"` + NoSEP string `json:"noSEP"` + KodeDokter string `json:"kodeDokter"` + PoliKontrol string `json:"poliKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` } type ResponseNomorSuratKontrol struct { From 89173e78035f239b184433279a427a719f6451179e3b7b1ce34d621dc6ae2309 Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 2 Oct 2024 15:12:57 +0700 Subject: [PATCH 09/40] fix code --- .env | 4 ++++ config/config.go | 7 +++---- handlers/bpjs/surat_kontrol/surat_kontrol.go | 4 +++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.env b/.env index 09627c1..0d44fe4 100644 --- a/.env +++ b/.env @@ -10,6 +10,10 @@ CONS_ID=5257 USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482 SECRET_KEY=1bV363512D +CONS_ID_DEV=16041 +USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c +SECRET_KEY_DEV=8pP3D5431E + BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/ SURAT_KONTROL_RS_DEV=vclaim-rest-dev INSERT_SURAT_KONTROL=/RencanaKontrol/insert diff --git a/config/config.go b/config/config.go index 4282459..de4b369 100644 --- a/config/config.go +++ b/config/config.go @@ -16,7 +16,6 @@ import ( ) var DB *gorm.DB -var localDB *gorm.DB var SatuDataDB *gorm.DB var err error @@ -43,9 +42,9 @@ func SetHeader(cfg config.ConfigBpjs) *config.Header { time := time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC) tstamp := timenow.Unix() - time.Unix() - cfg.Cons_id = os.Getenv("CONS_ID") - cfg.User_key = os.Getenv("USER_KEY") - cfg.Secret_key = os.Getenv("SECRET_KEY") + cfg.Cons_id = os.Getenv("CONS_ID_DEV") + cfg.User_key = os.Getenv("USER_KEY_DEV") + cfg.Secret_key = os.Getenv("SECRET_KEY_DEV") secret := []byte(cfg.Secret_key) message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp)) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 6346d10..1c74ece 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -23,11 +23,13 @@ func InsertSuratKontrol(c *gin.Context) { var req sk.RequestInsertRencanaKontrol - err := c.Bind(req) + err := c.Bind(&req) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) } + + log.Println("Request: ", req) conf := config.ConfigBpjs{} From da0817cfd632104924468ec6b11c4012c79fd326f5c370b1f7cf210f315db238 Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 3 Oct 2024 13:56:22 +0700 Subject: [PATCH 10/40] fix code insert surkon --- handlers/bpjs/surat_kontrol/response.go | 15 +++++++++++--- handlers/bpjs/surat_kontrol/surat_kontrol.go | 14 +++++++++++-- models/bpjs/surat_kontrol/surat_kontrol.go | 21 ++++++++++++++------ 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index e35cbe5..3d9a037 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -6,6 +6,7 @@ import ( "bridging-rssa/models/config" "bytes" "encoding/json" + "errors" "fmt" "io" "log" @@ -20,7 +21,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Printf("Error json marshal: %v", err) } - log.Println("REQUEST: ", reqMarshall) + log.Println("REQUEST: ", string(reqMarshall)) req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall)) if err != nil { @@ -48,13 +49,21 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } - var resSuratKontrolRaw suratkontrol.ResponseRaw - err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) + log.Println("Res: ", string(res)) + + var resSuratKontrolRaw suratkontrol.ResponseInsertRaw + err = json.Unmarshal([]byte(string(res)), &resSuratKontrolRaw) if err != nil { log.Printf("Error Unmarshaling: %v", err) return nil, err } + if resSuratKontrolRaw.MetaData.Code == "201" { + errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) + log.Printf("error : %v", errMsg) + return nil, errMsg + } + dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) if err != nil { log.Printf("Error Decrypt: %v", err) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 1c74ece..73711b6 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -27,8 +27,9 @@ func InsertSuratKontrol(c *gin.Context) { if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) + return } - + log.Println("Request: ", req) conf := config.ConfigBpjs{} @@ -60,10 +61,12 @@ func InsertSuratKontrol(c *gin.Context) { } res, err := PostData(url, header, headers, reqSuratKontrol) if err != nil { - log.Printf("Error making external API request: %v", err) c.JSON(http.StatusInternalServerError, err) + return } + log.Println("Masuk sini?") + reqInsert := &sk.InsertDataSuratKontrol{ Status: "1", // First Insert status always set to 1 UserCreated: req.User, @@ -81,6 +84,7 @@ func InsertSuratKontrol(c *gin.Context) { if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) + return } c.JSON(http.StatusOK, res) @@ -98,6 +102,7 @@ func UpdateSuratKontrol(c *gin.Context) { if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) + return } conf := config.ConfigBpjs{} @@ -116,6 +121,7 @@ func UpdateSuratKontrol(c *gin.Context) { if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) + return } reqSuratKontrol := &sk.RequestRencanaKontrol{ @@ -130,6 +136,7 @@ func UpdateSuratKontrol(c *gin.Context) { if err != nil { log.Printf("Error making external API request: %v", err) c.JSON(http.StatusInternalServerError, err) + return } c.JSON(http.StatusOK, res) @@ -147,6 +154,7 @@ func DeleteSuratKontrol(c *gin.Context) { if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) + return } conf := config.ConfigBpjs{} @@ -173,6 +181,7 @@ func DeleteSuratKontrol(c *gin.Context) { if err != nil { log.Printf("Error making external API request: %v", err) c.JSON(http.StatusInternalServerError, err) + return } c.JSON(http.StatusOK, res) @@ -201,6 +210,7 @@ func GetNomorSuratKontrol(c *gin.Context) { if err != nil { log.Fatalf("Error making external API request: %v", err) c.JSON(http.StatusInternalServerError, err) + return } c.JSON(http.StatusOK, res) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 891a9da..e2a3973 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -5,12 +5,11 @@ type RequestHeaderRencanaKontrol struct { } type RequestRencanaKontrol struct { - NoSuratKontrol *string `json:"noSuratKontrol"` - NoSEP string `json:"noSEP"` - KodeDokter string `json:"kodeDokter"` - PoliKontrol string `json:"poliKontrol"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - User string `json:"user"` + NoSEP string `json:"noSEP"` + KodeDokter string `json:"kodeDokter"` + PoliKontrol string `json:"poliKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` } type RequestDeleteRencanaKontrol struct { @@ -29,6 +28,16 @@ type Metadata struct { Message string `json:"message"` } +type ResponseInsertRaw struct { + Response string `json:"response"` + MetaData MetadataString `json:"metadata"` +} + +type MetadataString struct { + Code interface{} `json:"code"` + Message string `json:"message"` +} + type ResponseInsertSuratKontrol struct { NoSuratKontrol string `json:"noSuratKontrol"` TglRencanaKontrol string `json:"tglRencanaKontrol"` From 6a4c99b0623837d2314cc01532b06690f4979d0e407f148e531c65e61f0f84fb Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 3 Oct 2024 15:24:29 +0700 Subject: [PATCH 11/40] fix code insert surkon --- handlers/bpjs/surat_kontrol/response.go | 18 ++++++++++++++---- handlers/bpjs/surat_kontrol/surat_kontrol.go | 8 +++----- models/bpjs/surat_kontrol/surat_kontrol.go | 9 +++++++-- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index 3d9a037..7e033e0 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -13,7 +13,7 @@ import ( "net/http" ) -func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.ResponseInsertSuratKontrol, error) { +func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.ResponseInsert, error) { log.Println("URL", url) reqMarshall, err := json.Marshal(request) @@ -21,6 +21,8 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Printf("Error json marshal: %v", err) } + responses := &suratkontrol.ResponseInsert{} + log.Println("REQUEST: ", string(reqMarshall)) req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall)) @@ -58,10 +60,15 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } + log.Println("metadata : ", resSuratKontrolRaw.MetaData.Code) + if resSuratKontrolRaw.MetaData.Code == "201" { errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) log.Printf("error : %v", errMsg) - return nil, errMsg + responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code + responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message + log.Println("responses: ", responses) + return responses, errMsg } dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) @@ -81,9 +88,12 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } - log.Println("res: ", resSuratKontrol) + responses = &suratkontrol.ResponseInsert{ + MetaData: resSuratKontrolRaw.MetaData, + Response: *resSuratKontrol, + } - return resSuratKontrol, nil + return responses, nil } func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 73711b6..a2e9258 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -61,18 +61,16 @@ func InsertSuratKontrol(c *gin.Context) { } res, err := PostData(url, header, headers, reqSuratKontrol) if err != nil { - c.JSON(http.StatusInternalServerError, err) + c.JSON(http.StatusInternalServerError, res) return } - log.Println("Masuk sini?") - reqInsert := &sk.InsertDataSuratKontrol{ Status: "1", // First Insert status always set to 1 UserCreated: req.User, TglCetakSurKon: dateNow, - TglRencanaKontrol: res.TglRencanaKontrol, - NomorSurKon: res.NoSuratKontrol, + TglRencanaKontrol: res.Response.TglRencanaKontrol, + NomorSurKon: res.Response.NoSuratKontrol, KunjunganPasien: kunjunganPasien.IDKlinikSimgos, RuanganSurKon: kunjunganPasien.Ruangan, DPJPSurKon: kunjunganPasien.DPJP, diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index e2a3973..fccdc99 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -34,8 +34,13 @@ type ResponseInsertRaw struct { } type MetadataString struct { - Code interface{} `json:"code"` - Message string `json:"message"` + Code string `json:"code"` + Message string `json:"message"` +} + +type ResponseInsert struct { + MetaData MetadataString `json:"metadata"` + Response ResponseInsertSuratKontrol `json:"response"` } type ResponseInsertSuratKontrol struct { From cff6639073d93522440f33552881ec007848cdb1f4ef2e4c9609650a197fd1a7 Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 7 Oct 2024 08:55:22 +0700 Subject: [PATCH 12/40] fix code get jadwal dokter --- config/config.go | 39 ++++++++++ database/satu_data/dokter/jadwal_dokter.go | 39 ++++++++++ handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 49 +++++++++++++ handlers/bpjs/surat_kontrol/surat_kontrol.go | 76 ++++++++++---------- main.go | 1 + models/bpjs/jadwal_dokter/jadwal_dokter.go | 13 ++++ models/config/config.go | 9 ++- 7 files changed, 185 insertions(+), 41 deletions(-) diff --git a/config/config.go b/config/config.go index de4b369..3bd7076 100644 --- a/config/config.go +++ b/config/config.go @@ -42,9 +42,48 @@ func SetHeader(cfg config.ConfigBpjs) *config.Header { 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") + + secret := []byte(cfg.Secret_key) + message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp)) + hash := hmac.New(sha256.New, secret) + hash.Write(message) + // to lowercase hexits + hex.EncodeToString(hash.Sum(nil)) + // to base64 + X_signature := base64.StdEncoding.EncodeToString(hash.Sum(nil)) + + header := &config.Header{ + ConsID: cfg.Cons_id, + SecretKey: cfg.Secret_key, + UserKey: cfg.User_key, + TimeStamp: fmt.Sprint(tstamp), + XSignature: X_signature, + } + + return header + +} + +func SetHeaderDev(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") secret := []byte(cfg.Secret_key) message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp)) diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index bc765c9..9afe391 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -9,6 +9,45 @@ import ( "github.com/google/uuid" ) +func GetJadwalDokterByDPJP(dpjp string) (string, error) { + var id string + errSelect := config.SatuDataDB.Debug().Raw(`select "id" from "data_pegawai" where "Code_dpjp" = ?`, dpjp).First(&id).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return "", errSelect + } + return id, nil +} + +func GetJadwalSpesialisDokterByID(id string) (string, error) { + var spesialis string + errSelect := config.SatuDataDB.Debug().Raw(`select "Spesialis" from "daftar_jadwal_dokter" where "Dokter" = ? order by "Spesialis"`, id).First(&spesialis).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return "", errSelect + } + return spesialis, nil +} + +func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.ListHari, error) { + var hari []jadwal_dokter.ListHari + errSelect := config.SatuDataDB.Debug().Raw(`select distinct "id", "Spesialis", "Nama_hari" from "daftar_jadwal_dokter" where "Spesialis" = ? order by "id"`, id).Scan(&hari).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return nil, errSelect + } + return hari, nil +} + +func GetJadwalDokterByIDDokter(hari string) ([]string, error) { + var spesialis []string + errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return nil, errSelect + } + return spesialis, nil +} func GetJadwalDokterByDate(hari string) ([]string, error) { var spesialis []string errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 06eaf8b..44a975a 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -124,6 +124,7 @@ func GetJadwalDokter(c *gin.Context) { 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) @@ -132,6 +133,54 @@ func GetJadwalDokter(c *gin.Context) { c.JSON(http.StatusOK, res) } +func GetDokterByDPJP(c *gin.Context) { + dpjp := c.Param("dpjp") + idDokter, err := dokter.GetJadwalDokterByDPJP(dpjp) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + return + } + + spesialis, err := dokter.GetJadwalSpesialisDokterByID(idDokter) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + return + } + + listHari, err := dokter.GetJadwalHariDokterBySpesialis(spesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + return + } + + var idSpesialis []string + idSpesialis = append(idSpesialis, spesialis) + + listSpesialis, err := dokter.GetSpesialisByID(idSpesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + + var res *jadwal_dokter.ResponseListHari + + for _, v := range listSpesialis { + for _, key := range listHari { + res = &jadwal_dokter.ResponseListHari{ + IDSpesialis: v.ID, + Kode: v.Kode, + Spesialis: v.Spesialis, + NamaHari: key.NamaHari, + } + } + } + // listSpesialis, err := dokter.GetSpesialisByID(listHari) + // if err != nil { + // c.JSON(http.StatusInternalServerError, err) + // return + // } + c.JSON(http.StatusOK, res) +} + func GetSpesialisByDate(c *gin.Context) { tanggal := c.Param("tanggal") date, err := time.Parse("2006-01-02", tanggal) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index a2e9258..607ccce 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -34,7 +34,7 @@ func InsertSuratKontrol(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + header := cfg.SetHeaderDev(conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -105,7 +105,7 @@ func UpdateSuratKontrol(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + header := cfg.SetHeaderDev(conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -140,50 +140,50 @@ func UpdateSuratKontrol(c *gin.Context) { c.JSON(http.StatusOK, res) } -func DeleteSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") - param := os.Getenv("UPDATE_SURAT_KONTROL") - url := baseUrl + endpoint + param +// func DeleteSuratKontrol(c *gin.Context) { +// baseUrl := os.Getenv("BASEURL_BPJS_DEV") +// endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") +// param := os.Getenv("UPDATE_SURAT_KONTROL") +// url := baseUrl + endpoint + param - var req sk.RequestInsertRencanaKontrol +// var req sk.RequestInsertRencanaKontrol - err := c.Bind(req) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } +// err := c.Bind(req) +// if err != nil { +// log.Println(err) +// c.JSON(http.StatusInternalServerError, err) +// return +// } - conf := config.ConfigBpjs{} +// conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) +// 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/x-www-form-urlencoded", - } - log.Println("Headers : ", headers) +// headers := map[string]string{ +// "X-cons-id": header.ConsID, +// "X-timestamp": header.TimeStamp, +// "X-signature": header.XSignature, +// "user_key": header.UserKey, +// "Content-Type": "Application/x-www-form-urlencoded", +// } +// log.Println("Headers : ", headers) - request := &sk.RequestHeaderRencanaKontrol{ - Request: &sk.RequestDeleteRencanaKontrol{ - NoSuratKontrol: "", - User: "", - }, - } +// request := &sk.RequestHeaderRencanaKontrol{ +// Request: &sk.RequestDeleteRencanaKontrol{ +// NoSuratKontrol: "", +// User: "", +// }, +// } - res, err := ResponseDeleteSuratKontrol(url, header, headers, request) - if err != nil { - log.Printf("Error making external API request: %v", err) - c.JSON(http.StatusInternalServerError, err) - return - } +// res, err := ResponseDeleteSuratKontrol(url, header, headers, request) +// if err != nil { +// log.Printf("Error making external API request: %v", err) +// c.JSON(http.StatusInternalServerError, err) +// return +// } - c.JSON(http.StatusOK, res) -} +// c.JSON(http.StatusOK, res) +// } func GetNomorSuratKontrol(c *gin.Context) { baseUrl := os.Getenv("BASEURL_BPJS_DEV") diff --git a/main.go b/main.go index ba7c344..23d2874 100644 --- a/main.go +++ b/main.go @@ -42,6 +42,7 @@ func main() { jadwalDokter := v1.Group("/jadwaldokter") { jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter) + jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP) jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate) jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) } diff --git a/models/bpjs/jadwal_dokter/jadwal_dokter.go b/models/bpjs/jadwal_dokter/jadwal_dokter.go index 9d5611a..d58f174 100644 --- a/models/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/models/bpjs/jadwal_dokter/jadwal_dokter.go @@ -51,3 +51,16 @@ type JadwalDokterTempSatuData struct { SubSpesialis string `gorm:"Sub_spesialis" json:"Sub_spesialis"` Status int `gorm:"Status" json:"Status"` } + +type ResponseListHari struct { + IDSpesialis int `json:"id_spesialis"` + Kode string `json:"Kode"` + Spesialis string `json:"Spesialis"` + NamaHari string `json:"Nama_hari"` +} + +type ListHari struct { + ID int `gorm:"column:id" json:"id"` + Spesialis int `gorm:"column:Spesialis" json:"Spesialis"` + NamaHari string `gorm:"column:Nama_hari" json:"Nama_hari"` +} diff --git a/models/config/config.go b/models/config/config.go index 3777845..4105bfe 100644 --- a/models/config/config.go +++ b/models/config/config.go @@ -1,9 +1,12 @@ package config type ConfigBpjs struct { - Cons_id string - Secret_key string - User_key string + Cons_id string + Secret_key string + User_key string + Cons_id_dev string + Secret_key_dev string + User_key_dev string } type Header struct { From 30851f56abebb61dae5d60db830fbc00e5b4c617239650cafdfc2a53976a2e4c Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 7 Oct 2024 09:38:00 +0700 Subject: [PATCH 13/40] fix response --- database/satu_data/dokter/jadwal_dokter.go | 2 +- handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 56 +++++++++++++++----- main.go | 4 +- models/bpjs/jadwal_dokter/jadwal_dokter.go | 24 +++++++-- 4 files changed, 66 insertions(+), 20 deletions(-) diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index 9afe391..697fc05 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -31,7 +31,7 @@ func GetJadwalSpesialisDokterByID(id string) (string, error) { func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.ListHari, error) { var hari []jadwal_dokter.ListHari - errSelect := config.SatuDataDB.Debug().Raw(`select distinct "id", "Spesialis", "Nama_hari" from "daftar_jadwal_dokter" where "Spesialis" = ? order by "id"`, id).Scan(&hari).Error + errSelect := config.SatuDataDB.Debug().Raw(`select "id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis" from "daftar_jadwal_dokter" where "Spesialis" = ? order by "id"`, id).Scan(&hari).Error if errSelect != nil { log.Printf("Failed get data : %v", errSelect) return nil, errSelect diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 44a975a..cf8e322 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -152,6 +152,17 @@ func GetDokterByDPJP(c *gin.Context) { c.JSON(http.StatusInternalServerError, err) return } + log.Println("listHari: ", listHari) + + var listIDDokter []string + for _, v := range listHari { + listIDDokter = append(listIDDokter, v.IDDokter) + } + namaDokter, err := dokter.GetNamaLengkapDokter(listIDDokter) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + return + } var idSpesialis []string idSpesialis = append(idSpesialis, spesialis) @@ -161,23 +172,42 @@ func GetDokterByDPJP(c *gin.Context) { c.JSON(http.StatusInternalServerError, err) } - var res *jadwal_dokter.ResponseListHari + var res []*jadwal_dokter.ResponseListHari - for _, v := range listSpesialis { - for _, key := range listHari { - res = &jadwal_dokter.ResponseListHari{ - IDSpesialis: v.ID, - Kode: v.Kode, - Spesialis: v.Spesialis, - NamaHari: key.NamaHari, + for _, key := range listHari { + for _, v := range listSpesialis { + for _, k := range namaDokter { + if key.IDDokter != k.ID { + log.Println("Skip Proses") + continue + } + gelarDepan := utils.ReplaceGelar(k.GelarDepan) + gelarBelakang := utils.ReplaceGelar(k.GelarBelakang) + namaLengkap := gelarDepan + " " + k.NamaLengkap + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + + var jadwalDokter []jadwal_dokter.ListJadwalDokter + jadwalDokter = append(jadwalDokter, jadwal_dokter.ListJadwalDokter{ + NamaHari: key.NamaHari, + KodeHari: key.KodeHari, + Waktu: key.Waktu, + DataDokter: jadwal_dokter.DataDokter{ + NamaLengkap: namaLengkap, + HFISCode: k.HFISCode, + }, + }) + res = append(res, &jadwal_dokter.ResponseListHari{ + IDSpesialis: v.ID, + Kode: v.Kode, + Spesialis: v.Spesialis, + NamaHari: key.NamaHari, + JadwalDokter: jadwalDokter, + }) } } } - // listSpesialis, err := dokter.GetSpesialisByID(listHari) - // if err != nil { - // c.JSON(http.StatusInternalServerError, err) - // return - // } + c.JSON(http.StatusOK, res) } diff --git a/main.go b/main.go index 23d2874..c4de254 100644 --- a/main.go +++ b/main.go @@ -65,8 +65,8 @@ func main() { AllowHeaders: []string{"Origin", "Content-Type"}, AllowCredentials: true, })) - log.Println("JALAN DI PORT : 8080") - err = r.Run(":8080") + log.Println("JALAN DI PORT : 8081") + err = r.Run(":8081") if err != nil { log.Fatal(err) } diff --git a/models/bpjs/jadwal_dokter/jadwal_dokter.go b/models/bpjs/jadwal_dokter/jadwal_dokter.go index d58f174..fcf6ce9 100644 --- a/models/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/models/bpjs/jadwal_dokter/jadwal_dokter.go @@ -53,14 +53,30 @@ type JadwalDokterTempSatuData struct { } type ResponseListHari struct { - IDSpesialis int `json:"id_spesialis"` - Kode string `json:"Kode"` - Spesialis string `json:"Spesialis"` - NamaHari string `json:"Nama_hari"` + IDSpesialis int `json:"id_spesialis"` + Kode string `json:"Kode"` + Spesialis string `json:"Spesialis"` + NamaHari string `json:"Nama_hari"` + JadwalDokter []ListJadwalDokter `json:"Jadwal_dokter"` +} + +type ListJadwalDokter struct { + NamaHari string `json:"Nama_hari"` + KodeHari int `json:"Kode_hari"` + Waktu string `json:"Waktu"` + DataDokter DataDokter `json:"Data_dokter"` +} + +type DataDokter struct { + NamaLengkap string `json:"nama_lengkap"` + HFISCode string `json:"HFIS_code"` } type ListHari struct { ID int `gorm:"column:id" json:"id"` Spesialis int `gorm:"column:Spesialis" json:"Spesialis"` + KodeHari int `gorm:"column:Hari" json:"Kode_hari"` NamaHari string `gorm:"column:Nama_hari" json:"Nama_hari"` + Waktu string `gorm:"column:Waktu" json:"Waktu"` + IDDokter string `gorm:"column:Dokter" json:"Dokter"` } From 1c76a2c1b840d7aa89ce4e156c628d1a06762d64a6fc2cc2cce0807aa0373137 Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 7 Oct 2024 09:50:47 +0700 Subject: [PATCH 14/40] fix response jadwal dokter --- database/satu_data/dokter/jadwal_dokter.go | 20 ++++++------ handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 32 ++++++++++---------- models/bpjs/jadwal_dokter/jadwal_dokter.go | 14 +++------ 3 files changed, 31 insertions(+), 35 deletions(-) diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index 697fc05..5319589 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -19,19 +19,19 @@ func GetJadwalDokterByDPJP(dpjp string) (string, error) { return id, nil } -func GetJadwalSpesialisDokterByID(id string) (string, error) { - var spesialis string - errSelect := config.SatuDataDB.Debug().Raw(`select "Spesialis" from "daftar_jadwal_dokter" where "Dokter" = ? order by "Spesialis"`, id).First(&spesialis).Error - if errSelect != nil { - log.Printf("Failed get data : %v", errSelect) - return "", errSelect - } - return spesialis, nil -} +// func GetJadwalSpesialisDokterByID(id string) (string, error) { +// var spesialis string +// errSelect := config.SatuDataDB.Debug().Raw(`select "Spesialis" from "daftar_jadwal_dokter" where "Dokter" = ? order by "Spesialis"`, id).First(&spesialis).Error +// if errSelect != nil { +// log.Printf("Failed get data : %v", errSelect) +// return "", errSelect +// } +// return spesialis, nil +// } func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.ListHari, error) { var hari []jadwal_dokter.ListHari - errSelect := config.SatuDataDB.Debug().Raw(`select "id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis" from "daftar_jadwal_dokter" where "Spesialis" = ? order by "id"`, id).Scan(&hari).Error + errSelect := config.SatuDataDB.Debug().Raw(`select "id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis" from "daftar_jadwal_dokter" where "Dokter" = ? order by "id"`, id).Scan(&hari).Error if errSelect != nil { log.Printf("Failed get data : %v", errSelect) return nil, errSelect diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index cf8e322..2401001 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -141,32 +141,34 @@ func GetDokterByDPJP(c *gin.Context) { return } - spesialis, err := dokter.GetJadwalSpesialisDokterByID(idDokter) - if err != nil { - c.JSON(http.StatusInternalServerError, err) - return - } + // spesialis, err := dokter.GetJadwalSpesialisDokterByID(idDokter) + // if err != nil { + // c.JSON(http.StatusInternalServerError, err) + // return + // } - listHari, err := dokter.GetJadwalHariDokterBySpesialis(spesialis) + listHari, err := dokter.GetJadwalHariDokterBySpesialis(idDokter) if err != nil { c.JSON(http.StatusInternalServerError, err) return } log.Println("listHari: ", listHari) - var listIDDokter []string + var IDDokter []string + var idSpesialis []string for _, v := range listHari { - listIDDokter = append(listIDDokter, v.IDDokter) + IDDokter = append(IDDokter, v.IDDokter) + spesialis := strconv.Itoa(v.Spesialis) + idSpesialis = append(idSpesialis, spesialis) + break } - namaDokter, err := dokter.GetNamaLengkapDokter(listIDDokter) + + namaDokter, err := dokter.GetNamaLengkapDokter(IDDokter) if err != nil { c.JSON(http.StatusInternalServerError, err) return } - var idSpesialis []string - idSpesialis = append(idSpesialis, spesialis) - listSpesialis, err := dokter.GetSpesialisByID(idSpesialis) if err != nil { c.JSON(http.StatusInternalServerError, err) @@ -192,16 +194,14 @@ func GetDokterByDPJP(c *gin.Context) { NamaHari: key.NamaHari, KodeHari: key.KodeHari, Waktu: key.Waktu, - DataDokter: jadwal_dokter.DataDokter{ - NamaLengkap: namaLengkap, - HFISCode: k.HFISCode, - }, }) res = append(res, &jadwal_dokter.ResponseListHari{ IDSpesialis: v.ID, Kode: v.Kode, Spesialis: v.Spesialis, NamaHari: key.NamaHari, + NamaLengkap: namaLengkap, + HFISCode: k.HFISCode, JadwalDokter: jadwalDokter, }) } diff --git a/models/bpjs/jadwal_dokter/jadwal_dokter.go b/models/bpjs/jadwal_dokter/jadwal_dokter.go index fcf6ce9..aa256ce 100644 --- a/models/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/models/bpjs/jadwal_dokter/jadwal_dokter.go @@ -57,19 +57,15 @@ type ResponseListHari struct { Kode string `json:"Kode"` Spesialis string `json:"Spesialis"` NamaHari string `json:"Nama_hari"` + NamaLengkap string `json:"nama_lengkap"` + HFISCode string `json:"HFIS_code"` JadwalDokter []ListJadwalDokter `json:"Jadwal_dokter"` } type ListJadwalDokter struct { - NamaHari string `json:"Nama_hari"` - KodeHari int `json:"Kode_hari"` - Waktu string `json:"Waktu"` - DataDokter DataDokter `json:"Data_dokter"` -} - -type DataDokter struct { - NamaLengkap string `json:"nama_lengkap"` - HFISCode string `json:"HFIS_code"` + NamaHari string `json:"Nama_hari"` + KodeHari int `json:"Kode_hari"` + Waktu string `json:"Waktu"` } type ListHari struct { From 83b106a7333465e714ab12128224e89b9103cb60cf974bfe63c620f694f26870 Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 7 Oct 2024 13:59:02 +0700 Subject: [PATCH 15/40] fix get dokter --- .env | 4 +- handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 41 +++--- handlers/bpjs/surat_kontrol/response.go | 55 +++++++- handlers/bpjs/surat_kontrol/surat_kontrol.go | 125 ++++++++++++------- main.go | 1 + models/bpjs/jadwal_dokter/jadwal_dokter.go | 2 +- models/bpjs/surat_kontrol/surat_kontrol.go | 48 ++++++- 7 files changed, 200 insertions(+), 76 deletions(-) diff --git a/.env b/.env index 0d44fe4..c8a87d2 100644 --- a/.env +++ b/.env @@ -19,4 +19,6 @@ SURAT_KONTROL_RS_DEV=vclaim-rest-dev INSERT_SURAT_KONTROL=/RencanaKontrol/insert UPDATE_SURAT_KONTROL=/RencanaKontrol/Update DELETE_SURAT_KONTROL=/RencanaKontrol/Delete -GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol \ No newline at end of file +GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol +GET_SURAT_KONTROL_SEP=/RencanaKontrol/nosep + diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 2401001..4420b59 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -176,35 +176,30 @@ func GetDokterByDPJP(c *gin.Context) { var res []*jadwal_dokter.ResponseListHari - for _, key := range listHari { - for _, v := range listSpesialis { - for _, k := range namaDokter { - if key.IDDokter != k.ID { - log.Println("Skip Proses") - continue - } - gelarDepan := utils.ReplaceGelar(k.GelarDepan) - gelarBelakang := utils.ReplaceGelar(k.GelarBelakang) - namaLengkap := gelarDepan + " " + k.NamaLengkap + " " + gelarBelakang - namaLengkap = strings.TrimPrefix(namaLengkap, " ") - namaLengkap = strings.TrimSuffix(namaLengkap, " ") - - var jadwalDokter []jadwal_dokter.ListJadwalDokter + for _, v := range listSpesialis { + for _, k := range namaDokter { + var jadwalDokter []jadwal_dokter.ListJadwalDokter + for _, key := range listHari { jadwalDokter = append(jadwalDokter, jadwal_dokter.ListJadwalDokter{ NamaHari: key.NamaHari, KodeHari: key.KodeHari, Waktu: key.Waktu, }) - res = append(res, &jadwal_dokter.ResponseListHari{ - IDSpesialis: v.ID, - Kode: v.Kode, - Spesialis: v.Spesialis, - NamaHari: key.NamaHari, - NamaLengkap: namaLengkap, - HFISCode: k.HFISCode, - JadwalDokter: jadwalDokter, - }) } + gelarDepan := utils.ReplaceGelar(k.GelarDepan) + gelarBelakang := utils.ReplaceGelar(k.GelarBelakang) + namaLengkap := gelarDepan + " " + k.NamaLengkap + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + res = append(res, &jadwal_dokter.ResponseListHari{ + IDSpesialis: v.ID, + Kode: v.Kode, + Spesialis: v.Spesialis, + NamaLengkap: namaLengkap, + HFISCode: k.HFISCode, + KodeDPJP: dpjp, + JadwalDokter: jadwalDokter, + }) } } diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index 7e033e0..e73f413 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -96,7 +96,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return responses, nil } -func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { +func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (interface{}, error) { log.Println("URL", url) requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ @@ -278,3 +278,56 @@ func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map return responseNoSuratKontrol, nil } + +func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map[string]string) (*suratkontrol.ResponseNomorSuratKontrol, error) { + log.Println("URL", url) + + req, err := http.NewRequest("GET", url, nil) + if err != nil { + log.Printf("Error creating request: %v", err) + } + + for key, value := range headers { + req.Header.Set(key, value) + } + + log.Println("REQ", req.Header) + client := http.Client{} + response, err := client.Do(req) + if err != nil { + log.Printf("Error making external API request: %v", err) + } + log.Println("RESPONSE: ", response) + + key := header.ConsID + header.SecretKey + header.TimeStamp + res, err := io.ReadAll(response.Body) + if err != nil { + log.Println(err) + } + + var resSurKonSEP suratkontrol.ResponseRawSEP + err = json.Unmarshal([]byte(res), &resSurKonSEP) + if err != nil { + log.Printf("Error Unmarshaling: %v", err) + return nil, err + } + + dataResp, err := docs.StringDecrypt(key, resSurKonSEP.Response) + if err != nil { + log.Printf("Error Decrypt: %v", err) + return nil, err + } + + var responseNoSuratKontrol *suratkontrol.ResponseNomorSuratKontrol + log.Println("dataresp: ", dataResp) + + err = json.Unmarshal([]byte(dataResp), &resSurKonSEP) + if err != nil { + log.Printf("Error Decode: %v", err) + return nil, err + } + + log.Println("res: ", resSurKonSEP) + + return responseNoSuratKontrol, nil +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 607ccce..bd1a806 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -51,10 +51,10 @@ func InsertSuratKontrol(c *gin.Context) { } reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ - Request: &sk.RequestRencanaKontrol{ + Request: &sk.RequestInsertRencanaKontrol{ NoSEP: req.NoSEP, - KodeDokter: req.KodeDokter, - PoliKontrol: req.PoliKontrol, + KodeHFIS: req.KodeHFIS, + KodePoli: req.KodePoli, TglRencanaKontrol: req.TglRencanaKontrol, User: req.User, }, @@ -88,57 +88,59 @@ func InsertSuratKontrol(c *gin.Context) { c.JSON(http.StatusOK, res) } -func UpdateSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") - param := os.Getenv("UPDATE_SURAT_KONTROL") - url := baseUrl + endpoint + param +// func UpdateSuratKontrol(c *gin.Context) { +// baseUrl := os.Getenv("BASEURL_BPJS_DEV") +// endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") +// param := os.Getenv("UPDATE_SURAT_KONTROL") +// url := baseUrl + endpoint + param - var req sk.RequestInsertRencanaKontrol +// var req sk.RequestInsertRencanaKontrol - err := c.Bind(req) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } +// err := c.Bind(req) +// if err != nil { +// log.Println(err) +// c.JSON(http.StatusInternalServerError, err) +// return +// } - conf := config.ConfigBpjs{} +// conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(conf) +// 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/x-www-form-urlencoded", - } - log.Println("Headers : ", headers) - kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } +// headers := map[string]string{ +// "X-cons-id": header.ConsID, +// "X-timestamp": header.TimeStamp, +// "X-signature": header.XSignature, +// "user_key": header.UserKey, +// "Content-Type": "Application/x-www-form-urlencoded", +// } +// log.Println("Headers : ", headers) +// // kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) +// // if err != nil { +// // log.Println(err) +// // c.JSON(http.StatusInternalServerError, err) +// // return +// // } - reqSuratKontrol := &sk.RequestRencanaKontrol{ - NoSEP: kunjunganPasien.NomorSEP, - KodeDokter: kunjunganPasien.KodeHfisDokter, - PoliKontrol: req.PoliKontrol, - TglRencanaKontrol: req.TglRencanaKontrol, - User: req.User, - } +// reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ +// Request: &sk.RequestUpdateRencanaKontrol{ +// NoSuratKontrol: req.NoSuratKo ntrol, +// NoSEP: req.NoSEP, +// KodeDokter: req.KodeHFIS, +// PoliKontrol: req.KodeHFIS, +// TglRencanaKontrol: req.TglRencanaKontrol, +// User: req.User, +// }, +// } +// res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) +// if err != nil { +// log.Printf("Error making external API request: %v", err) +// c.JSON(http.StatusInternalServerError, err) +// return +// } - res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) - if err != nil { - log.Printf("Error making external API request: %v", err) - c.JSON(http.StatusInternalServerError, err) - return - } - - c.JSON(http.StatusOK, res) -} +// c.JSON(http.StatusOK, res) +// } // func DeleteSuratKontrol(c *gin.Context) { // baseUrl := os.Getenv("BASEURL_BPJS_DEV") @@ -213,3 +215,32 @@ func GetNomorSuratKontrol(c *gin.Context) { c.JSON(http.StatusOK, res) } + +func GetSuratKontrolBySEP(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("GET_SURAT_KONTROL_SEP") + noSEP := c.Param("noSEP") + url := baseUrl + endpoint + param + noSEP + + conf := config.ConfigBpjs{} + + header := cfg.SetHeader(conf) + + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + } + log.Println("Headers : ", headers) + + res, err := ResponseGetSuratKontrolBySEP(url, header, headers) + if err != nil { + log.Fatalf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + return + } + + c.JSON(http.StatusOK, res) +} diff --git a/main.go b/main.go index c4de254..662d4ad 100644 --- a/main.go +++ b/main.go @@ -53,6 +53,7 @@ func main() { suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) suratKontrol.DELETE("/delete", suratkontrol.UpdateSuratKontrol) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) + suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/models/bpjs/jadwal_dokter/jadwal_dokter.go b/models/bpjs/jadwal_dokter/jadwal_dokter.go index aa256ce..635de18 100644 --- a/models/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/models/bpjs/jadwal_dokter/jadwal_dokter.go @@ -56,9 +56,9 @@ type ResponseListHari struct { IDSpesialis int `json:"id_spesialis"` Kode string `json:"Kode"` Spesialis string `json:"Spesialis"` - NamaHari string `json:"Nama_hari"` NamaLengkap string `json:"nama_lengkap"` HFISCode string `json:"HFIS_code"` + KodeDPJP string `json:"DPJP_code"` JadwalDokter []ListJadwalDokter `json:"Jadwal_dokter"` } diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index fccdc99..ea0081b 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -4,7 +4,24 @@ type RequestHeaderRencanaKontrol struct { Request interface{} `json:"request"` } -type RequestRencanaKontrol struct { +type RequestInsertDBRencanaKontrol struct { + NoSEP string `json:"noSEP"` + KodeDokter string `json:"kodeDokter"` + PoliKontrol string `json:"poliKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` +} + +type RequestUpdateDBRencanaKontrol struct { + NoSEP string `json:"noSEP"` + KodeDokter string `json:"kodeDokter"` + PoliKontrol string `json:"poliKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` +} + +type RequestUpdateRencanaKontrol struct { + NoSuratKontrol string `json:"noSuratKontrol"` NoSEP string `json:"noSEP"` KodeDokter string `json:"kodeDokter"` PoliKontrol string `json:"poliKontrol"` @@ -23,6 +40,11 @@ type ResponseRaw struct { MetaData Metadata `json:"metadata"` } +type ResponseRawSEP struct { + Response string `json:"response"` + MetaData Metadata `json:"metaData"` +} + type Metadata struct { Code int `json:"code"` Message string `json:"message"` @@ -56,8 +78,17 @@ type ResponseInsertSuratKontrol struct { type RequestInsertRencanaKontrol struct { IDXDaftar string `json:"idxdaftar"` NoSEP string `json:"noSEP"` - KodeDokter string `json:"kodeDokter"` - PoliKontrol string `json:"poliKontrol"` + KodeHFIS string `json:"kodeHFIS"` + KodePoli string `json:"kodePoli"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` +} + +type ReqUpdateRencanaKontrol struct { + IDXDaftar string `json:"idxdaftar"` + NoSEP string `json:"noSEP"` + KodeHFIS string `json:"kodeHFIS"` + KodePoli string `json:"kodePoli"` TglRencanaKontrol string `json:"tglRencanaKontrol"` User string `json:"user"` } @@ -127,3 +158,14 @@ type InsertDataSuratKontrol struct { StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` } + +type ResponseSuratKontrolBySEP struct { + NoSEP string `json:"noSep"` + TglSEP string `json:"tglSep"` + JenisPelayanan string `json:"jnsPelayanan"` + Poli string `json:"poli"` + Diagnosa string `json:"diagnosa"` + Peserta Peserta `json:"peserta"` + ProvUmum ProvUmum `json:"provUmum"` + ProvPerujuk ProvPerujuk `json:"provPerujuk"` +} From 82d518a5a1f51ab28952eb43b57b0de4dae9f01e234b664e80fbe0b424eea4ec Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 7 Oct 2024 13:59:20 +0700 Subject: [PATCH 16/40] fix get dokter --- main.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 662d4ad..3b5e903 100644 --- a/main.go +++ b/main.go @@ -50,8 +50,8 @@ func main() { suratKontrol := v1.Group("/suratkontrol") { suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) - suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) - suratKontrol.DELETE("/delete", suratkontrol.UpdateSuratKontrol) + // suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) + // suratKontrol.DELETE("/delete", suratkontrol.UpdateSuratKontrol) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) } From 6ee0400ba534bc984d91c3e07f21144647b7365ebaddd96ae515287b13dd22aa Mon Sep 17 00:00:00 2001 From: mirza Date: Tue, 8 Oct 2024 13:29:56 +0700 Subject: [PATCH 17/40] fix insert surkon --- .../satu_data/surat_kontrol/surat_kontrol.go | 42 ++++- handlers/bpjs/surat_kontrol/response.go | 2 +- handlers/bpjs/surat_kontrol/surat_kontrol.go | 158 ++++++++++++------ main.go | 9 +- models/bpjs/surat_kontrol/kunjugan_pasien.go | 1 + models/bpjs/surat_kontrol/surat_kontrol.go | 69 ++++++-- 6 files changed, 199 insertions(+), 82 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index fdcf633..0006066 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -8,7 +8,7 @@ import ( func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) { var kunjunganPasien *suratkontrol.KunjunganPasien - err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep, + err := config.SatuDataDB.Debug().Raw(`select dkp."id", dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep, dlr."Nama" as namaklinik, dlr."Id_location_simgos" as idkliniksimgos, dlr."Kode_hfis_bpjs" as kodehfisklinik, dk."Nama_lengkap" as namadokter, dp."KDDOKTER" as kodedokter, dp."HFIS_code" as kodehfisdokter, @@ -27,7 +27,7 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er where dpdgb.data_pegawai_id = dp.id ) AS gelarbelakang, dkp."Ruangan" as ruangan, - dkp."DPJP" + dkp."DPJP" as id_dokter 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 @@ -40,18 +40,16 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er return nil, err } log.Println("Data Kunjungan Pasien : ", kunjunganPasien) - return kunjunganPasien, err + return kunjunganPasien, nil } func InsertDataSuratKontrol(reqInsert *suratkontrol.InsertDataSuratKontrol) error { log.Println("Req Insert Database : ", reqInsert) - insertQuery := `insert into data_surat_kontrol ("status", "user_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", + insertQuery := `insert into data_surat_kontrol ("Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", "Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol", "User_created_surat_kontrol") values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` err := config.SatuDataDB.Debug().Exec(insertQuery, - reqInsert.Status, - reqInsert.UserCreated, reqInsert.TglCetakSurKon, reqInsert.TglRencanaKontrol, reqInsert.NomorSurKon, @@ -67,3 +65,35 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.InsertDataSuratKontrol) erro } return nil } + +func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { + var dataSurKon []*suratkontrol.GetDataSuratKontrol + err := config.SatuDataDB.Debug().Raw(`select dsk."status", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", + dsk."Nomor_surat_kontrol", dlr."Nama" as "Lokasi_ruang", + array( + select dgd. "Gelar_depan" + from data_pegawai_daftar_gelar_depan dpdgd + left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id + ) AS gelardepan , + dk."Nama_lengkap" , + array( + select dgb. "Gelar_belakang" + 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 + from data_surat_kontrol dsk + 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 + where dsk."Status_surat_kontrol" = '1'`).First(&dataSurKon).Error + if err != nil { + log.Println(err) + return nil, err + } + log.Println("Data Surat Kontrol : ", dataSurKon) + return dataSurKon, nil +} + +func UpdateDataSuratKontrol(reqUpdate *suratkontrol.UpdateDataSuratKontrol) error { + return nil +} diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index e73f413..f1ca4e9 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -62,7 +62,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Println("metadata : ", resSuratKontrolRaw.MetaData.Code) - if resSuratKontrolRaw.MetaData.Code == "201" { + if resSuratKontrolRaw.MetaData.Code != "200" { errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) log.Printf("error : %v", errMsg) responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index bd1a806..55ab85c 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -3,11 +3,13 @@ package suratkontrol import ( cfg "bridging-rssa/config" suratkontrol "bridging-rssa/database/satu_data/surat_kontrol" + "bridging-rssa/docs/utils" sk "bridging-rssa/models/bpjs/surat_kontrol" "bridging-rssa/models/config" "log" "net/http" "os" + "strings" "time" "github.com/gin-gonic/gin" @@ -51,10 +53,10 @@ func InsertSuratKontrol(c *gin.Context) { } reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ - Request: &sk.RequestInsertRencanaKontrol{ + Request: &sk.ReqInsertRencanaKontrol{ NoSEP: req.NoSEP, - KodeHFIS: req.KodeHFIS, - KodePoli: req.KodePoli, + KodeDokter: req.KodeHFIS, + PoliKontrol: req.KodePoli, TglRencanaKontrol: req.TglRencanaKontrol, User: req.User, }, @@ -66,15 +68,13 @@ func InsertSuratKontrol(c *gin.Context) { } reqInsert := &sk.InsertDataSuratKontrol{ - Status: "1", // First Insert status always set to 1 - UserCreated: req.User, TglCetakSurKon: dateNow, TglRencanaKontrol: res.Response.TglRencanaKontrol, NomorSurKon: res.Response.NoSuratKontrol, - KunjunganPasien: kunjunganPasien.IDKlinikSimgos, + KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, DPJPSurKon: kunjunganPasien.DPJP, - StatusSurKon: 0, // TODO CARI DARIMANA + StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, } @@ -88,59 +88,77 @@ func InsertSuratKontrol(c *gin.Context) { c.JSON(http.StatusOK, res) } -// func UpdateSuratKontrol(c *gin.Context) { -// baseUrl := os.Getenv("BASEURL_BPJS_DEV") -// endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") -// param := os.Getenv("UPDATE_SURAT_KONTROL") -// url := baseUrl + endpoint + param +func UpdateSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("UPDATE_SURAT_KONTROL") + url := baseUrl + endpoint + param -// var req sk.RequestInsertRencanaKontrol + var req sk.RequestUpdateRencanaKontrol -// err := c.Bind(req) -// if err != nil { -// log.Println(err) -// c.JSON(http.StatusInternalServerError, err) -// return -// } + err := c.Bind(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } -// conf := config.ConfigBpjs{} + // dateNow := time.Now().Format("2006-01-02") -// header := cfg.SetHeaderDev(conf) + conf := config.ConfigBpjs{} -// headers := map[string]string{ -// "X-cons-id": header.ConsID, -// "X-timestamp": header.TimeStamp, -// "X-signature": header.XSignature, -// "user_key": header.UserKey, -// "Content-Type": "Application/x-www-form-urlencoded", -// } -// log.Println("Headers : ", headers) -// // kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) -// // if err != nil { -// // log.Println(err) -// // c.JSON(http.StatusInternalServerError, err) -// // return -// // } + header := cfg.SetHeaderDev(conf) -// reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ -// Request: &sk.RequestUpdateRencanaKontrol{ -// NoSuratKontrol: req.NoSuratKo ntrol, -// NoSEP: req.NoSEP, -// KodeDokter: req.KodeHFIS, -// PoliKontrol: req.KodeHFIS, -// TglRencanaKontrol: req.TglRencanaKontrol, -// User: req.User, -// }, -// } -// res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) -// if err != nil { -// log.Printf("Error making external API request: %v", err) -// c.JSON(http.StatusInternalServerError, err) -// return -// } + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) + // kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + // if err != nil { + // log.Println(err) + // c.JSON(http.StatusInternalServerError, err) + // return + // } -// c.JSON(http.StatusOK, res) -// } + reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.ReqUpdateRencanaKontrol{ + NoSuratKontrol: req.NoSuratKontrol, + NoSEP: req.NoSEP, + KodeDokter: req.KodeHFIS, + PoliKontrol: req.KodeHFIS, + TglRencanaKontrol: req.TglRencanaKontrol, + User: req.User, + }, + } + res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + return + } + + // reqUpdate := &sk.UpdateDataSuratKontrol{ + // UserUpdated: req.User, + // DateUpdated: dateNow, + // TglCetakSurKon: dateNow, + // TglRencanaKontrol: res.Response.TglRencanaKontrol, + // NomorSurKon: res.Response.NoSuratKontrol, + // StatusSurKon: 1, // TODO CARI DARIMANA + // } + + // err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + // if err != nil { + // log.Println(err) + // c.JSON(http.StatusInternalServerError, err) + // return + // } + + c.JSON(http.StatusOK, res) +} // func DeleteSuratKontrol(c *gin.Context) { // baseUrl := os.Getenv("BASEURL_BPJS_DEV") @@ -208,7 +226,7 @@ func GetNomorSuratKontrol(c *gin.Context) { res, err := ResponseGetNomorSuratKontrol(url, header, headers) if err != nil { - log.Fatalf("Error making external API request: %v", err) + log.Printf("Error making external API request: %v", err) c.JSON(http.StatusInternalServerError, err) return } @@ -237,10 +255,40 @@ func GetSuratKontrolBySEP(c *gin.Context) { res, err := ResponseGetSuratKontrolBySEP(url, header, headers) if err != nil { - log.Fatalf("Error making external API request: %v", err) + log.Printf("Error making external API request: %v", err) c.JSON(http.StatusInternalServerError, err) return } c.JSON(http.StatusOK, res) } + +func GetDataSurKon(c *gin.Context) { + data, err := suratkontrol.GetDataSuratKontrol() + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + var resSurKon []*sk.ResponseGetDataSuratKontrol + for _, v := range data { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaLengkap + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TglCetakSurKon) + dateCetakSurkonString := dateCetakSurkon.Format("02/01/2006") + dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("02/01/2006") + resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ + Status: v.Status, + TglCetakSurKon: dateCetakSurkonString, + TglRencanaKontrol: dateRencanaSurkonString, + NomorSurKon: v.NomorSurKon, + LokasiRuang: v.LokasiRuang, + NamaLengkap: namaLengkap, + }) + } + c.JSON(http.StatusOK, resSurKon) +} diff --git a/main.go b/main.go index 3b5e903..098ae07 100644 --- a/main.go +++ b/main.go @@ -49,11 +49,12 @@ func main() { suratKontrol := v1.Group("/suratkontrol") { + suratKontrol.GET("/", suratkontrol.GetDataSurKon) + suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) + suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) // suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) // suratKontrol.DELETE("/delete", suratkontrol.UpdateSuratKontrol) - suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) - suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) @@ -66,8 +67,8 @@ func main() { AllowHeaders: []string{"Origin", "Content-Type"}, AllowCredentials: true, })) - log.Println("JALAN DI PORT : 8081") - err = r.Run(":8081") + log.Println("JALAN DI PORT : 8080") + err = r.Run(":8080") if err != nil { log.Fatal(err) } diff --git a/models/bpjs/surat_kontrol/kunjugan_pasien.go b/models/bpjs/surat_kontrol/kunjugan_pasien.go index e8ba479..bb72c2e 100644 --- a/models/bpjs/surat_kontrol/kunjugan_pasien.go +++ b/models/bpjs/surat_kontrol/kunjugan_pasien.go @@ -1,6 +1,7 @@ package suratkontrol type KunjunganPasien struct { + ID string `gorm:"column:id" json:"id"` IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` NomorSEP string `gorm:"column:nomorsep" json:"nomorsep"` NamaKlinik string `gorm:"column:namaklinik" json:"namaklinik"` diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index ea0081b..3120f30 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -4,7 +4,7 @@ type RequestHeaderRencanaKontrol struct { Request interface{} `json:"request"` } -type RequestInsertDBRencanaKontrol struct { +type ReqInsertRencanaKontrol struct { NoSEP string `json:"noSEP"` KodeDokter string `json:"kodeDokter"` PoliKontrol string `json:"poliKontrol"` @@ -12,7 +12,8 @@ type RequestInsertDBRencanaKontrol struct { User string `json:"user"` } -type RequestUpdateDBRencanaKontrol struct { +type ReqUpdateRencanaKontrol struct { + NoSuratKontrol string `json:"noSuratKontrol"` NoSEP string `json:"noSEP"` KodeDokter string `json:"kodeDokter"` PoliKontrol string `json:"poliKontrol"` @@ -20,11 +21,20 @@ type RequestUpdateDBRencanaKontrol struct { User string `json:"user"` } +type RequestInsertRencanaKontrol struct { + IDXDaftar string `json:"idxdaftar"` + NoSEP string `json:"noSEP"` + KodeHFIS string `json:"kodeHFIS"` + KodePoli string `json:"kodePoli"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + User string `json:"user"` +} + type RequestUpdateRencanaKontrol struct { NoSuratKontrol string `json:"noSuratKontrol"` NoSEP string `json:"noSEP"` - KodeDokter string `json:"kodeDokter"` - PoliKontrol string `json:"poliKontrol"` + KodeHFIS string `json:"kodeHFIS"` + KodePoli string `json:"kodePoli"` TglRencanaKontrol string `json:"tglRencanaKontrol"` User string `json:"user"` } @@ -75,20 +85,11 @@ type ResponseInsertSuratKontrol struct { TglLahir string `json:"tglLahir"` } -type RequestInsertRencanaKontrol struct { +type RequestRencanaKontrol struct { IDXDaftar string `json:"idxdaftar"` NoSEP string `json:"noSEP"` - KodeHFIS string `json:"kodeHFIS"` - KodePoli string `json:"kodePoli"` - TglRencanaKontrol string `json:"tglRencanaKontrol"` - User string `json:"user"` -} - -type ReqUpdateRencanaKontrol struct { - IDXDaftar string `json:"idxdaftar"` - NoSEP string `json:"noSEP"` - KodeHFIS string `json:"kodeHFIS"` - KodePoli string `json:"kodePoli"` + KodeHFIS string `json:"kodeHFIS"` + KodePoli string `json:"kodePoli"` TglRencanaKontrol string `json:"tglRencanaKontrol"` User string `json:"user"` } @@ -159,6 +160,21 @@ type InsertDataSuratKontrol struct { UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` } +type UpdateDataSuratKontrol struct { + ID string `gorm:"column:id" json:"id"` + Status string `gorm:"column:status" json:"status"` + Sort int `gorm:"column:sort" json:"sort"` + UserUpdated string `gorm:"column:user_updated" json:"user_updated"` + DateUpdated string `gorm:"column:date_updated" json:"date_updated"` + TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` + TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` + NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` + KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"` + RuanganSurKon int `gorm:"column:Ruangan_surat_kontrol" json:"Ruangan_surat_kontrol"` + DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_surat_kontrol"` + StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` +} + type ResponseSuratKontrolBySEP struct { NoSEP string `json:"noSep"` TglSEP string `json:"tglSep"` @@ -169,3 +185,24 @@ type ResponseSuratKontrolBySEP struct { ProvUmum ProvUmum `json:"provUmum"` ProvPerujuk ProvPerujuk `json:"provPerujuk"` } + +type GetDataSuratKontrol struct { + Status string `gorm:"column:status" json:"status"` + TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` + TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` + NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` + KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"` + LokasiRuang string `gorm:"column:Lokasi_ruang" json:"Lokasi_ruang"` + GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` + NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` + GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` +} + +type ResponseGetDataSuratKontrol struct { + Status string `gorm:"column:status" json:"status"` + TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` + TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` + NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` + LokasiRuang string `gorm:"column:Lokasi_ruang" json:"Lokasi_ruang"` + NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` +} \ No newline at end of file From 5c32ab9928e471c505bdb5e83514119cbb0a555f9b8fcdfe31d5fbc875d05df2 Mon Sep 17 00:00:00 2001 From: mirza Date: Tue, 8 Oct 2024 15:15:35 +0700 Subject: [PATCH 18/40] fix get data surkon --- .../satu_data/surat_kontrol/surat_kontrol.go | 18 ++++--- handlers/bpjs/surat_kontrol/response.go | 49 +++++++++++-------- handlers/bpjs/surat_kontrol/surat_kontrol.go | 46 ++++++++--------- models/bpjs/surat_kontrol/surat_kontrol.go | 43 +++++++++------- 4 files changed, 87 insertions(+), 69 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 0006066..f3f5219 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -68,24 +68,30 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.InsertDataSuratKontrol) erro func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { var dataSurKon []*suratkontrol.GetDataSuratKontrol - err := config.SatuDataDB.Debug().Raw(`select dsk."status", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", - dsk."Nomor_surat_kontrol", dlr."Nama" as "Lokasi_ruang", + err := config.SatuDataDB.Debug().Raw(`select dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", + dsk."Nomor_surat_kontrol", + (select dlr."Nama" + from data_kunjungan_pasien dkp + left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", + dlr."Nama" as "Poli_tuju", + dkp2."Nomor_sep", dkp2."Nama_lengkap", array( select dgd. "Gelar_depan" from data_pegawai_daftar_gelar_depan dpdgd left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id ) AS gelardepan , - dk."Nama_lengkap" , + dk."Nama_lengkap" as "Nama_lengkap_dokter", array( select dgb. "Gelar_belakang" 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 + ) AS gelarbelakang 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 - where dsk."Status_surat_kontrol" = '1'`).First(&dataSurKon).Error + left join data_ktp dk on dp."KTP" = dk. "id" + where dsk."Status_surat_kontrol" <> '0'`).First(&dataSurKon).Error if err != nil { log.Println(err) return nil, err diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index f1ca4e9..e53269c 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -21,8 +21,6 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Printf("Error json marshal: %v", err) } - responses := &suratkontrol.ResponseInsert{} - log.Println("REQUEST: ", string(reqMarshall)) req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall)) @@ -62,6 +60,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Println("metadata : ", resSuratKontrolRaw.MetaData.Code) + responses := &suratkontrol.ResponseInsert{} if resSuratKontrolRaw.MetaData.Code != "200" { errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) log.Printf("error : %v", errMsg) @@ -78,7 +77,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } - var resSuratKontrol *suratkontrol.ResponseInsertSuratKontrol + var resSuratKontrol *suratkontrol.ResponseSuratKontrol log.Println("dataresp: ", dataResp) @@ -96,7 +95,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return responses, nil } -func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (interface{}, error) { +func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.ResponseInsert, error) { log.Println("URL", url) requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ @@ -134,13 +133,23 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - var resSuratKontrolRaw suratkontrol.ResponseRaw + var resSuratKontrolRaw suratkontrol.ResponseRawUpper err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) if err != nil { log.Printf("Error Unmarshaling: %v", err) return nil, err } + responses := &suratkontrol.ResponseInsert{} + 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 + } + dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) if err != nil { log.Printf("Error Decrypt: %v", err) @@ -148,7 +157,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - var resSuratKontrol []suratkontrol.ResponseInsertSuratKontrol + var resSuratKontrol *suratkontrol.ResponseSuratKontrol log.Println("dataresp: ", dataResp) @@ -158,9 +167,12 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - log.Println("res: ", resSuratKontrol) + responses = &suratkontrol.ResponseInsert{ + MetaData: resSuratKontrolRaw.MetaData, + Response: *resSuratKontrol, + } - return resSuratKontrol, nil + return responses, nil } func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (interface{}, error) { @@ -171,7 +183,7 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s log.Printf("Error json marshal: %v", err) } - req, err := http.NewRequest("PUT", url, bytes.NewReader(reqMarshall)) + req, err := http.NewRequest("DELETE", url, bytes.NewReader(reqMarshall)) if err != nil { log.Printf("Error creating request: %v", err) return nil, err @@ -197,7 +209,7 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - var resSuratKontrolRaw suratkontrol.ResponseRaw + var resSuratKontrolRaw suratkontrol.ResponseRawUpper err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) if err != nil { log.Printf("Error Unmarshaling: %v", err) @@ -211,19 +223,14 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - var resSuratKontrol []suratkontrol.ResponseInsertSuratKontrol - - log.Println("dataresp: ", dataResp) - - err = json.Unmarshal([]byte(dataResp), &resSuratKontrol) - if err != nil { - log.Printf("Error Decode: %v", err) - return nil, err + responses := &suratkontrol.ResponseUpper{ + MetaData: resSuratKontrolRaw.MetaData, + Response: suratkontrol.ResponseSuratKontrol{}, } - log.Println("res: ", resSuratKontrol) + log.Println("res: ", responses) - return resSuratKontrol, nil + return responses, nil } func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map[string]string) (*suratkontrol.ResponseNomorSuratKontrol, error) { @@ -305,7 +312,7 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map log.Println(err) } - var resSurKonSEP suratkontrol.ResponseRawSEP + var resSurKonSEP suratkontrol.ResponseRawUpper err = json.Unmarshal([]byte(res), &resSurKonSEP) if err != nil { log.Printf("Error Unmarshaling: %v", err) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 55ab85c..9370e40 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -103,7 +103,7 @@ func UpdateSuratKontrol(c *gin.Context) { return } - // dateNow := time.Now().Format("2006-01-02") + dateNow := time.Now().Format("2006-01-02") conf := config.ConfigBpjs{} @@ -117,12 +117,6 @@ func UpdateSuratKontrol(c *gin.Context) { "Content-Type": "Application/x-www-form-urlencoded", } log.Println("Headers : ", headers) - // kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) - // if err != nil { - // log.Println(err) - // c.JSON(http.StatusInternalServerError, err) - // return - // } reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ Request: &sk.ReqUpdateRencanaKontrol{ @@ -141,21 +135,21 @@ func UpdateSuratKontrol(c *gin.Context) { return } - // reqUpdate := &sk.UpdateDataSuratKontrol{ - // UserUpdated: req.User, - // DateUpdated: dateNow, - // TglCetakSurKon: dateNow, - // TglRencanaKontrol: res.Response.TglRencanaKontrol, - // NomorSurKon: res.Response.NoSuratKontrol, - // StatusSurKon: 1, // TODO CARI DARIMANA - // } + reqUpdate := &sk.UpdateDataSuratKontrol{ + UserUpdated: req.User, + DateUpdated: dateNow, + TglCetakSurKon: dateNow, + TglRencanaKontrol: res.Response.TglRencanaKontrol, + NomorSurKon: res.Response.NoSuratKontrol, + StatusSurKon: 2, // Edit always 2 + } - // err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) - // if err != nil { - // log.Println(err) - // c.JSON(http.StatusInternalServerError, err) - // return - // } + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } c.JSON(http.StatusOK, res) } @@ -274,7 +268,7 @@ func GetDataSurKon(c *gin.Context) { for _, v := range data { gelarDepan := utils.ReplaceGelar(v.GelarDepan) gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) - namaLengkap := gelarDepan + " " + v.NamaLengkap + " " + gelarBelakang + namaLengkap := gelarDepan + " " + v.NamaLengkapDokter + " " + gelarBelakang namaLengkap = strings.TrimPrefix(namaLengkap, " ") namaLengkap = strings.TrimSuffix(namaLengkap, " ") dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TglCetakSurKon) @@ -282,12 +276,14 @@ func GetDataSurKon(c *gin.Context) { dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) dateRencanaSurkonString := dateRencanaSurkon.Format("02/01/2006") resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ - Status: v.Status, TglCetakSurKon: dateCetakSurkonString, TglRencanaKontrol: dateRencanaSurkonString, NomorSurKon: v.NomorSurKon, - LokasiRuang: v.LokasiRuang, - NamaLengkap: namaLengkap, + PoliAsal: v.PoliAsal, + PoliTujuan: v.PoliTujuan, + NomorSEP: v.NomorSEP, + NamaPasien: v.NamaPasien, + NamaDokter: namaLengkap, }) } c.JSON(http.StatusOK, resSurKon) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 3120f30..7e36a51 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -50,9 +50,9 @@ type ResponseRaw struct { MetaData Metadata `json:"metadata"` } -type ResponseRawSEP struct { - Response string `json:"response"` - MetaData Metadata `json:"metaData"` +type ResponseRawUpper struct { + Response string `json:"response"` + MetaData MetadataString `json:"metaData"` } type Metadata struct { @@ -71,11 +71,16 @@ type MetadataString struct { } type ResponseInsert struct { - MetaData MetadataString `json:"metadata"` - Response ResponseInsertSuratKontrol `json:"response"` + MetaData MetadataString `json:"metadata"` + Response ResponseSuratKontrol `json:"response"` } -type ResponseInsertSuratKontrol struct { +type ResponseUpper struct { + MetaData MetadataString `json:"metaData"` + Response ResponseSuratKontrol `json:"response"` +} + +type ResponseSuratKontrol struct { NoSuratKontrol string `json:"noSuratKontrol"` TglRencanaKontrol string `json:"tglRencanaKontrol"` NamaDokter string `json:"namaDokter"` @@ -83,6 +88,7 @@ type ResponseInsertSuratKontrol struct { Nama string `json:"nama"` Kelamin string `json:"kelamin"` TglLahir string `json:"tglLahir"` + NamaDiagnosa string `json:"namaDiagnosa"` } type RequestRencanaKontrol struct { @@ -187,22 +193,25 @@ type ResponseSuratKontrolBySEP struct { } type GetDataSuratKontrol struct { - Status string `gorm:"column:status" json:"status"` TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` - KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"` - LokasiRuang string `gorm:"column:Lokasi_ruang" json:"Lokasi_ruang"` + PoliAsal string `gorm:"column:Poli_asal" json:"Poli_asal"` + PoliTujuan string `gorm:"column:Poli_tuju" json:"Poli_tuju"` + NomorSEP string `gorm:"column:Nomor_sep" json:"Nomor_sep"` + NamaPasien string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` - NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` + NamaLengkapDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_lengkap_dokter"` GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` } type ResponseGetDataSuratKontrol struct { - Status string `gorm:"column:status" json:"status"` - TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` - TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` - NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` - LokasiRuang string `gorm:"column:Lokasi_ruang" json:"Lokasi_ruang"` - NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` -} \ No newline at end of file + TglCetakSurKon string `json:"Tanggal_cetak_surat_kontrol"` + TglRencanaKontrol string `json:"Tanggal_rencana_kontrol"` + NomorSurKon string `json:"Nomor_surat_kontrol"` + PoliAsal string `json:"Poli_asal"` + PoliTujuan string `json:"Poli_tuju"` + NomorSEP string `json:"Nomor_sep"` + NamaPasien string `json:"Nama_pasien"` + NamaDokter string `json:"NamaDokter"` +} From 3c3c26653624bcc67fa71fa7007547b97f2d6f5bf49d07e24fd9db37e2fb04fd Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 9 Oct 2024 09:36:56 +0700 Subject: [PATCH 19/40] update get data surkon and jadwal dokter --- database/satu_data/dokter/jadwal_dokter.go | 6 +- database/satu_data/dokter/subspesialis.go | 24 +++++++- .../satu_data/surat_kontrol/surat_kontrol.go | 2 +- handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 36 ++++++------ handlers/bpjs/surat_kontrol/surat_kontrol.go | 2 + models/bpjs/jadwal_dokter/jadwal_dokter.go | 57 ++++++++----------- models/bpjs/surat_kontrol/surat_kontrol.go | 3 + models/dokter/subspesialis.go | 10 ++-- 8 files changed, 80 insertions(+), 60 deletions(-) diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index 5319589..e423340 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -29,9 +29,9 @@ func GetJadwalDokterByDPJP(dpjp string) (string, error) { // return spesialis, nil // } -func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.ListHari, error) { - var hari []jadwal_dokter.ListHari - errSelect := config.SatuDataDB.Debug().Raw(`select "id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis" from "daftar_jadwal_dokter" where "Dokter" = ? order by "id"`, id).Scan(&hari).Error +func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.JadwalDokterSatuData, error) { + var hari []jadwal_dokter.JadwalDokterSatuData + errSelect := config.SatuDataDB.Debug().Raw(`select * from "daftar_jadwal_dokter" where "Dokter" = ? order by "id"`, id).Scan(&hari).Error if errSelect != nil { log.Printf("Failed get data : %v", errSelect) return nil, errSelect diff --git a/database/satu_data/dokter/subspesialis.go b/database/satu_data/dokter/subspesialis.go index 191fcba..1c68632 100644 --- a/database/satu_data/dokter/subspesialis.go +++ b/database/satu_data/dokter/subspesialis.go @@ -15,10 +15,30 @@ func GetSubspesialis() ([]dokter.DaftarSubspesialis, error) { result := config.SatuDataDB.Debug().Raw(`select * from "daftar_subspesialis"`).Find(&daftarSubspesialis) if result.Error != nil { if !errors.Is(result.Error, gorm.ErrRecordNotFound) { - log.Fatalf("Error get data : %v", result.Error) + log.Printf("Error get data : %v", result.Error) return nil, result.Error } - log.Fatalf("Data kosong: %v", result.Error) + log.Printf("Data kosong: %v", result.Error) + return daftarSubspesialis, nil + } + + log.Println(daftarSubspesialis) + return daftarSubspesialis, nil +} + +func GetSubspesialisByID(idSubspesialis int) ([]dokter.DaftarSubspesialis, error) { + var daftarSubspesialis []dokter.DaftarSubspesialis + + result := config.SatuDataDB.Debug().Raw(`select dss.*, ds."Spesialis" + from "daftar_subspesialis" dss + left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID" + where dss.id = ?`, idSubspesialis).Find(&daftarSubspesialis) + if result.Error != nil { + if !errors.Is(result.Error, gorm.ErrRecordNotFound) { + log.Printf("Error get data : %v", result.Error) + return nil, result.Error + } + log.Printf("Data kosong: %v", result.Error) return daftarSubspesialis, nil } diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index f3f5219..d78947d 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -68,7 +68,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.InsertDataSuratKontrol) erro func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { var dataSurKon []*suratkontrol.GetDataSuratKontrol - err := config.SatuDataDB.Debug().Raw(`select dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", + err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", dsk."Nomor_surat_kontrol", (select dlr."Nama" from data_kunjungan_pasien dkp diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 4420b59..443dbc7 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -155,11 +155,10 @@ func GetDokterByDPJP(c *gin.Context) { log.Println("listHari: ", listHari) var IDDokter []string - var idSpesialis []string + var idSubspesialis int for _, v := range listHari { - IDDokter = append(IDDokter, v.IDDokter) - spesialis := strconv.Itoa(v.Spesialis) - idSpesialis = append(idSpesialis, spesialis) + IDDokter = append(IDDokter, v.Dokter) + idSubspesialis = v.SubSpesialis break } @@ -169,20 +168,20 @@ func GetDokterByDPJP(c *gin.Context) { return } - listSpesialis, err := dokter.GetSpesialisByID(idSpesialis) + listSubspesialis, err := dokter.GetSubspesialisByID(idSubspesialis) if err != nil { c.JSON(http.StatusInternalServerError, err) } - var res []*jadwal_dokter.ResponseListHari + var res *jadwal_dokter.ResponseListHari - for _, v := range listSpesialis { + for _, v := range listSubspesialis { for _, k := range namaDokter { var jadwalDokter []jadwal_dokter.ListJadwalDokter for _, key := range listHari { jadwalDokter = append(jadwalDokter, jadwal_dokter.ListJadwalDokter{ NamaHari: key.NamaHari, - KodeHari: key.KodeHari, + KodeHari: key.Hari, Waktu: key.Waktu, }) } @@ -191,15 +190,18 @@ func GetDokterByDPJP(c *gin.Context) { namaLengkap := gelarDepan + " " + k.NamaLengkap + " " + gelarBelakang namaLengkap = strings.TrimPrefix(namaLengkap, " ") namaLengkap = strings.TrimSuffix(namaLengkap, " ") - res = append(res, &jadwal_dokter.ResponseListHari{ - IDSpesialis: v.ID, - Kode: v.Kode, - Spesialis: v.Spesialis, - NamaLengkap: namaLengkap, - HFISCode: k.HFISCode, - KodeDPJP: dpjp, - JadwalDokter: jadwalDokter, - }) + hfisCode := strings.TrimSpace(k.HFISCode) + res = &jadwal_dokter.ResponseListHari{ + IDSpesialis: v.IDSpesialis, + Kode: v.Kode, + Spesialis: v.Spesialis, + Subspesialis: v.Subspesialis, + IDSubspesialis: v.Kode, + NamaLengkap: namaLengkap, + HFISCode: hfisCode, + KodeDPJP: dpjp, + JadwalDokter: jadwalDokter, + } } } diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 9370e40..6ec8d8c 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -276,6 +276,7 @@ func GetDataSurKon(c *gin.Context) { dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) dateRencanaSurkonString := dateRencanaSurkon.Format("02/01/2006") resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ + IDDataSurKon: v.IDDataSurKon, TglCetakSurKon: dateCetakSurkonString, TglRencanaKontrol: dateRencanaSurkonString, NomorSurKon: v.NomorSurKon, @@ -284,6 +285,7 @@ func GetDataSurKon(c *gin.Context) { NomorSEP: v.NomorSEP, NamaPasien: v.NamaPasien, NamaDokter: namaLengkap, + NomorKartu: "", }) } c.JSON(http.StatusOK, resSurKon) diff --git a/models/bpjs/jadwal_dokter/jadwal_dokter.go b/models/bpjs/jadwal_dokter/jadwal_dokter.go index 635de18..2e70c67 100644 --- a/models/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/models/bpjs/jadwal_dokter/jadwal_dokter.go @@ -31,35 +31,37 @@ type DaftarSpesialis struct { } type JadwalDokterSatuData 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 int `gorm:"Spesialis" json:"Spesialis"` - SubSpesialis int `gorm:"Sub_spesialis" json:"Sub_spesialis"` - Status int `gorm:"Status" json:"Status"` + ID int `gorm:"column:id" json:"id"` + Hari int `gorm:"column:Hari" json:"Hari"` + NamaHari string `gorm:"column:Nama_hari" json:"Nama_hari"` + Waktu string `gorm:"column:Waktu" json:"Waktu"` + Dokter string `gorm:"column:Dokter" json:"Dokter"` + Spesialis int `gorm:"column:Spesialis" json:"Spesialis"` + SubSpesialis int `gorm:"column:Sub_spesialis" json:"Sub_spesialis"` + Status int `gorm:"column: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"` + ID int `gorm:"column:id" json:"id"` + Hari int `gorm:"column:Hari" json:"Hari"` + NamaHari string `gorm:"column:Nama_hari" json:"Nama_hari"` + Waktu string `gorm:"column:Waktu" json:"Waktu"` + Dokter string `gorm:"column:Dokter" json:"Dokter"` + Spesialis string `gorm:"column:Spesialis" json:"Spesialis"` + SubSpesialis string `gorm:"column:Sub_spesialis" json:"Sub_spesialis"` + Status int `gorm:"column:Status" json:"Status"` } type ResponseListHari struct { - IDSpesialis int `json:"id_spesialis"` - Kode string `json:"Kode"` - Spesialis string `json:"Spesialis"` - NamaLengkap string `json:"nama_lengkap"` - HFISCode string `json:"HFIS_code"` - KodeDPJP string `json:"DPJP_code"` - JadwalDokter []ListJadwalDokter `json:"Jadwal_dokter"` + IDSpesialis int `json:"id_spesialis"` + Kode string `json:"Kode"` + Spesialis string `json:"Spesialis"` + Subspesialis string `json:"Subspesialis"` + IDSubspesialis string `json:"id_subspesialis"` + NamaLengkap string `json:"nama_lengkap"` + HFISCode string `json:"HFIS_code"` + KodeDPJP string `json:"DPJP_code"` + JadwalDokter []ListJadwalDokter `json:"Jadwal_dokter"` } type ListJadwalDokter struct { @@ -67,12 +69,3 @@ type ListJadwalDokter struct { KodeHari int `json:"Kode_hari"` Waktu string `json:"Waktu"` } - -type ListHari struct { - ID int `gorm:"column:id" json:"id"` - Spesialis int `gorm:"column:Spesialis" json:"Spesialis"` - KodeHari int `gorm:"column:Hari" json:"Kode_hari"` - NamaHari string `gorm:"column:Nama_hari" json:"Nama_hari"` - Waktu string `gorm:"column:Waktu" json:"Waktu"` - IDDokter string `gorm:"column:Dokter" json:"Dokter"` -} diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 7e36a51..66b80bf 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -193,6 +193,7 @@ type ResponseSuratKontrolBySEP struct { } type GetDataSuratKontrol struct { + IDDataSurKon string `gorm:"column:id" json:"id"` TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` @@ -206,6 +207,7 @@ type GetDataSuratKontrol struct { } type ResponseGetDataSuratKontrol struct { + IDDataSurKon string `json:"id"` TglCetakSurKon string `json:"Tanggal_cetak_surat_kontrol"` TglRencanaKontrol string `json:"Tanggal_rencana_kontrol"` NomorSurKon string `json:"Nomor_surat_kontrol"` @@ -214,4 +216,5 @@ type ResponseGetDataSuratKontrol struct { NomorSEP string `json:"Nomor_sep"` NamaPasien string `json:"Nama_pasien"` NamaDokter string `json:"NamaDokter"` + NomorKartu string `json:"Nomor_kartu"` } diff --git a/models/dokter/subspesialis.go b/models/dokter/subspesialis.go index 1707bd8..c18278f 100644 --- a/models/dokter/subspesialis.go +++ b/models/dokter/subspesialis.go @@ -1,9 +1,9 @@ package dokter type DaftarSubspesialis struct { - ID int `json:"id"` - Kode string `json:"Kode"` - Subspesialis string `json:"Subspesialis"` - FKDaftarSpesialisID int `json:"FK_daftar_spesialis_ID" gorm:"column:FK_daftar_spesialis_ID"` + ID int `json:"id"` + Kode string `json:"Kode"` + Subspesialis string `json:"Subspesialis"` + IDSpesialis int `json:"FK_daftar_spesialis_ID" gorm:"column:FK_daftar_spesialis_ID"` + Spesialis string `gorm:"column:Spesialis" json:"Spesialis"` } - From 2a218dfe9e7419e4fc11a11774f5138dd5b3587f3da222a88b63e37c46fe252f Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 9 Oct 2024 10:02:43 +0700 Subject: [PATCH 20/40] fix insert request and response --- handlers/bpjs/surat_kontrol/surat_kontrol.go | 19 ++++++++++++++++++- models/bpjs/surat_kontrol/surat_kontrol.go | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 6ec8d8c..45be299 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -85,7 +85,24 @@ func InsertSuratKontrol(c *gin.Context) { return } - c.JSON(http.StatusOK, res) + response := &sk.ResponseInsertSuratKontrol{ + MetaData: res.MetaData, + Response: sk.ResponseData{ + NoSuratKontrol: res.Response.NoSuratKontrol, + TglRencanaKontrol: res.Response.TglRencanaKontrol, + NamaDokter: res.Response.NamaDokter, + NoKartu: res.Response.NoKartu, + Nama: res.Response.Nama, + Kelamin: res.Response.Kelamin, + TglLahir: res.Response.TglLahir, + NamaDiagnosa: res.Response.NamaDiagnosa, + SusSpesialis: req.Subspesialis, + }, + } + + log.Println("Response: ", response) + + c.JSON(http.StatusOK, response) } func UpdateSuratKontrol(c *gin.Context) { diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 66b80bf..2ef6dea 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -26,6 +26,7 @@ type RequestInsertRencanaKontrol struct { NoSEP string `json:"noSEP"` KodeHFIS string `json:"kodeHFIS"` KodePoli string `json:"kodePoli"` + Subspesialis string `json:"subspesialis"` TglRencanaKontrol string `json:"tglRencanaKontrol"` User string `json:"user"` } @@ -80,6 +81,23 @@ type ResponseUpper struct { Response ResponseSuratKontrol `json:"response"` } +type ResponseInsertSuratKontrol struct { + MetaData MetadataString `json:"metaData"` + Response ResponseData `json:"response"` +} + +type ResponseData struct { + NoSuratKontrol string `json:"noSuratKontrol"` + TglRencanaKontrol string `json:"tglRencanaKontrol"` + NamaDokter string `json:"namaDokter"` + NoKartu string `json:"noKartu"` + Nama string `json:"nama"` + Kelamin string `json:"kelamin"` + TglLahir string `json:"tglLahir"` + NamaDiagnosa string `json:"namaDiagnosa"` + SusSpesialis string `json:"subspesialis"` +} + type ResponseSuratKontrol struct { NoSuratKontrol string `json:"noSuratKontrol"` TglRencanaKontrol string `json:"tglRencanaKontrol"` From 6ff4efec2cbe1ea7ea1369d5108a2d19437dff27813c9503af74023463d04248 Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 10 Oct 2024 07:38:24 +0700 Subject: [PATCH 21/40] fix response postdata --- .../satu_data/surat_kontrol/surat_kontrol.go | 1 + handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 2 + handlers/bpjs/surat_kontrol/response.go | 8 +- handlers/bpjs/surat_kontrol/surat_kontrol.go | 93 ++++++++++--------- main.go | 12 ++- models/bpjs/surat_kontrol/surat_kontrol.go | 15 ++- 6 files changed, 80 insertions(+), 51 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index d78947d..f27c8a7 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -101,5 +101,6 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { } func UpdateDataSuratKontrol(reqUpdate *suratkontrol.UpdateDataSuratKontrol) error { + return nil } diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 443dbc7..5c758b3 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -205,6 +205,7 @@ func GetDokterByDPJP(c *gin.Context) { } } + log.Println("Response :", res) c.JSON(http.StatusOK, res) } @@ -262,5 +263,6 @@ func GetDokterBySpesialis(c *gin.Context) { HFISCode: v.HFISCode, }) } + log.Println("Response :", resDokter) c.JSON(http.StatusOK, resDokter) } diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index e53269c..7393528 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -49,7 +49,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } - log.Println("Res: ", string(res)) + log.Println("Res:", string(res)) var resSuratKontrolRaw suratkontrol.ResponseInsertRaw err = json.Unmarshal([]byte(string(res)), &resSuratKontrolRaw) @@ -58,7 +58,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } - log.Println("metadata : ", resSuratKontrolRaw.MetaData.Code) + log.Println("ResponseRaw : ", resSuratKontrolRaw) responses := &suratkontrol.ResponseInsert{} if resSuratKontrolRaw.MetaData.Code != "200" { @@ -77,7 +77,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } - var resSuratKontrol *suratkontrol.ResponseSuratKontrol + var resSuratKontrol suratkontrol.ResponseSuratKontrol log.Println("dataresp: ", dataResp) @@ -89,7 +89,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ responses = &suratkontrol.ResponseInsert{ MetaData: resSuratKontrolRaw.MetaData, - Response: *resSuratKontrol, + Response: resSuratKontrol, } return responses, nil diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 45be299..28a0c7b 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -49,7 +49,6 @@ func InsertSuratKontrol(c *gin.Context) { kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) - c.JSON(http.StatusInternalServerError, err) } reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ @@ -63,7 +62,8 @@ func InsertSuratKontrol(c *gin.Context) { } res, err := PostData(url, header, headers, reqSuratKontrol) if err != nil { - c.JSON(http.StatusInternalServerError, res) + log.Println(err) + c.JSON(http.StatusInternalServerError, res.MetaData) return } @@ -96,7 +96,7 @@ func InsertSuratKontrol(c *gin.Context) { Kelamin: res.Response.Kelamin, TglLahir: res.Response.TglLahir, NamaDiagnosa: res.Response.NamaDiagnosa, - SusSpesialis: req.Subspesialis, + SubSpesialis: req.Subspesialis, }, } @@ -111,7 +111,7 @@ func UpdateSuratKontrol(c *gin.Context) { param := os.Getenv("UPDATE_SURAT_KONTROL") url := baseUrl + endpoint + param - var req sk.RequestUpdateRencanaKontrol + var req sk.ReqUpdateRencanaKontrol err := c.Bind(req) if err != nil { @@ -139,8 +139,8 @@ func UpdateSuratKontrol(c *gin.Context) { Request: &sk.ReqUpdateRencanaKontrol{ NoSuratKontrol: req.NoSuratKontrol, NoSEP: req.NoSEP, - KodeDokter: req.KodeHFIS, - PoliKontrol: req.KodeHFIS, + KodeDokter: req.KodeDokter, + PoliKontrol: req.PoliKontrol, TglRencanaKontrol: req.TglRencanaKontrol, User: req.User, }, @@ -171,50 +171,59 @@ func UpdateSuratKontrol(c *gin.Context) { c.JSON(http.StatusOK, res) } -// func DeleteSuratKontrol(c *gin.Context) { -// baseUrl := os.Getenv("BASEURL_BPJS_DEV") -// endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") -// param := os.Getenv("UPDATE_SURAT_KONTROL") -// url := baseUrl + endpoint + param +func DeleteSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("DELETE_SURAT_KONTROL") + url := baseUrl + endpoint + param -// var req sk.RequestInsertRencanaKontrol + var req sk.ReqDeleteRencanaKontrol -// err := c.Bind(req) -// if err != nil { -// log.Println(err) -// c.JSON(http.StatusInternalServerError, err) -// return -// } + err := c.Bind(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } -// conf := config.ConfigBpjs{} + conf := config.ConfigBpjs{} -// header := cfg.SetHeaderDev(conf) + 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/x-www-form-urlencoded", -// } -// log.Println("Headers : ", headers) + headers := map[string]string{ + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", + } + log.Println("Headers : ", headers) -// request := &sk.RequestHeaderRencanaKontrol{ -// Request: &sk.RequestDeleteRencanaKontrol{ -// NoSuratKontrol: "", -// User: "", -// }, -// } + request := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.TSuratKontrol{ + RequestDelete: sk.RequestDeleteRencanaKontrol{ + NoSuratKontrol: req.NomorSurKon, + User: req.User, + }, + }, + } -// res, err := ResponseDeleteSuratKontrol(url, header, headers, request) -// if err != nil { -// log.Printf("Error making external API request: %v", err) -// c.JSON(http.StatusInternalServerError, err) -// return -// } + res, err := ResponseDeleteSuratKontrol(url, header, headers, request) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + return + } -// c.JSON(http.StatusOK, res) -// } + // err = suratkontrol.UpdateDataSuratKontrol() + // if err != nil { + // log.Println(err) + // c.JSON(http.StatusInternalServerError, err) + // return + // } + + c.JSON(http.StatusOK, res) +} func GetNomorSuratKontrol(c *gin.Context) { baseUrl := os.Getenv("BASEURL_BPJS_DEV") diff --git a/main.go b/main.go index 098ae07..d580a74 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,9 @@ import ( "bridging-rssa/handlers/bpjs" "bridging-rssa/handlers/bpjs/jadwal_dokter" suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol" + "errors" "log" + "net/http" _ "bridging-rssa/docs" @@ -33,6 +35,7 @@ func main() { r := gin.Default() v1 := r.Group("/api") + r.POST("/test", testHandler) subspesialis := v1.Group("/subspesialis") { @@ -53,8 +56,8 @@ func main() { suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) - // suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) - // suratKontrol.DELETE("/delete", suratkontrol.UpdateSuratKontrol) + suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) + suratKontrol.DELETE("/delete", suratkontrol.DeleteSuratKontrol) } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) @@ -67,9 +70,14 @@ func main() { AllowHeaders: []string{"Origin", "Content-Type"}, AllowCredentials: true, })) + log.Println("JALAN DI PORT : 8080") err = r.Run(":8080") if err != nil { log.Fatal(err) } } +func testHandler(c *gin.Context) { + err := errors.New("Nomor SEP tidak ditemukan") + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) +} diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 2ef6dea..e19c50b 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -31,6 +31,12 @@ type RequestInsertRencanaKontrol struct { User string `json:"user"` } +type ReqDeleteRencanaKontrol struct { + IDDataSurKon string `json:"id"` + NomorSurKon string `json:"Nomor_surat_kontrol"` + User string `json:"user"` +} + type RequestUpdateRencanaKontrol struct { NoSuratKontrol string `json:"noSuratKontrol"` NoSEP string `json:"noSEP"` @@ -40,8 +46,11 @@ type RequestUpdateRencanaKontrol struct { User string `json:"user"` } +type TSuratKontrol struct { + RequestDelete RequestDeleteRencanaKontrol `json:"t_suratkontrol"` +} + type RequestDeleteRencanaKontrol struct { - TSuratKontrol string `json:"t_suratkontrol"` NoSuratKontrol string `json:"noSuratKontrol"` User string `json:"user"` } @@ -63,7 +72,7 @@ type Metadata struct { type ResponseInsertRaw struct { Response string `json:"response"` - MetaData MetadataString `json:"metadata"` + MetaData MetadataString `json:"metaData"` } type MetadataString struct { @@ -95,7 +104,7 @@ type ResponseData struct { Kelamin string `json:"kelamin"` TglLahir string `json:"tglLahir"` NamaDiagnosa string `json:"namaDiagnosa"` - SusSpesialis string `json:"subspesialis"` + SubSpesialis string `json:"subspesialis"` } type ResponseSuratKontrol struct { From c744f8750133d58b413b72c0d1bd620330331ed4ffd6b1df5367417e452380c5 Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 10 Oct 2024 07:39:25 +0700 Subject: [PATCH 22/40] remove unused code --- main.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/main.go b/main.go index d580a74..1d217ba 100644 --- a/main.go +++ b/main.go @@ -35,7 +35,6 @@ func main() { r := gin.Default() v1 := r.Group("/api") - r.POST("/test", testHandler) subspesialis := v1.Group("/subspesialis") { @@ -76,8 +75,4 @@ func main() { if err != nil { log.Fatal(err) } -} -func testHandler(c *gin.Context) { - err := errors.New("Nomor SEP tidak ditemukan") - c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) -} +} \ No newline at end of file From a1f2481024a6f8a012ab7f51b048b5fe68dd91ab46cf028e8aa5c5aabc1e3754 Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 10 Oct 2024 07:39:52 +0700 Subject: [PATCH 23/40] remove unused code --- main.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/main.go b/main.go index 1d217ba..258c317 100644 --- a/main.go +++ b/main.go @@ -5,9 +5,7 @@ import ( "bridging-rssa/handlers/bpjs" "bridging-rssa/handlers/bpjs/jadwal_dokter" suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol" - "errors" "log" - "net/http" _ "bridging-rssa/docs" @@ -75,4 +73,4 @@ func main() { if err != nil { log.Fatal(err) } -} \ No newline at end of file +} From 75d45811d229d637dcf21b2222c73b44ef959301c5e1638cddcc6c358d91de87 Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 10 Oct 2024 12:10:38 +0700 Subject: [PATCH 24/40] fix insert and get surat kontrol --- .env | 4 +- .../satu_data/surat_kontrol/surat_kontrol.go | 13 ++-- handlers/bpjs/jadwal_dokter/response.go | 13 ++-- handlers/bpjs/surat_kontrol/response.go | 42 +++++++------ handlers/bpjs/surat_kontrol/surat_kontrol.go | 63 ++++++++++++------- models/bpjs/surat_kontrol/kunjugan_pasien.go | 2 +- models/bpjs/surat_kontrol/surat_kontrol.go | 27 ++++---- 7 files changed, 93 insertions(+), 71 deletions(-) diff --git a/.env b/.env index c8a87d2..b5d92d6 100644 --- a/.env +++ b/.env @@ -19,6 +19,6 @@ SURAT_KONTROL_RS_DEV=vclaim-rest-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_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol/ +GET_SURAT_KONTROL_SEP=/RencanaKontrol/nosep/ diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index f27c8a7..4bbd40b 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -45,11 +45,12 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er func InsertDataSuratKontrol(reqInsert *suratkontrol.InsertDataSuratKontrol) error { log.Println("Req Insert Database : ", reqInsert) - insertQuery := `insert into data_surat_kontrol ("Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", + insertQuery := `insert into "data_surat_kontrol" ("id", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", "Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol", "User_created_surat_kontrol") - values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` + values (?, ?, ?, ?, ?, ?, ?, ?, ?)` err := config.SatuDataDB.Debug().Exec(insertQuery, + reqInsert.ID, reqInsert.TglCetakSurKon, reqInsert.TglRencanaKontrol, reqInsert.NomorSurKon, @@ -100,7 +101,11 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { return dataSurKon, nil } -func UpdateDataSuratKontrol(reqUpdate *suratkontrol.UpdateDataSuratKontrol) error { - +func UpdateDataSuratKontrol(idSurKon string) error { + err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "Status_surat_kontrol" = 2 where "id" = ?`, idSurKon).Error + if err != nil { + log.Println(err) + return err + } return nil } diff --git a/handlers/bpjs/jadwal_dokter/response.go b/handlers/bpjs/jadwal_dokter/response.go index d539271..2bc311d 100644 --- a/handlers/bpjs/jadwal_dokter/response.go +++ b/handlers/bpjs/jadwal_dokter/response.go @@ -17,7 +17,7 @@ func JadwalDokterGetResponse(url string, header *config.Header, kdPoly string, t log.Println("URL", url) req, err := http.NewRequest("GET", url, nil) if err != nil { - log.Fatalf("Error creating request: %v", err) + log.Printf("Error creating request: %v", err) } for key, value := range headers { @@ -28,7 +28,7 @@ func JadwalDokterGetResponse(url string, header *config.Header, kdPoly string, t client := http.Client{} response, err := client.Do(req) if err != nil { - log.Fatalf("Error making external API request: %v", err) + log.Printf("Error making external API request: %v", err) } log.Println("RESPONSE: ", response) @@ -41,7 +41,7 @@ func JadwalDokterGetResponse(url string, header *config.Header, kdPoly string, t var jadwalDokterRaw jadwal_dokter.JadwalDokterRaw err = json.Unmarshal([]byte(res), &jadwalDokterRaw) if err != nil { - log.Fatalf("Error Unmarshaling: %v", err) + log.Printf("Error Unmarshaling: %v", err) } if jadwalDokterRaw.MetaData.Code == 201 { @@ -51,19 +51,16 @@ func JadwalDokterGetResponse(url string, header *config.Header, kdPoly string, t dataResp, err := docs.StringDecrypt(key, jadwalDokterRaw.Response) if err != nil { - log.Fatalf("Error Decrypt: %v", err) - log.Println("res: ", dataResp) - + log.Printf("Error Decrypt: %v", err) } var listDokter []jadwal_dokter.ListDokter log.Println("dataresp: ", dataResp) - // err = mapstructure.Decode(dataResp, &listDokter) err = json.Unmarshal([]byte(dataResp), &listDokter) if err != nil { - log.Fatalf("Error Decode: %v", err) + log.Printf("Error Decode: %v", err) } log.Println("res: ", &listDokter) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index 7393528..e304346 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -202,7 +202,6 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s } log.Println("RESPONSE: ", response) - key := header.ConsID + header.SecretKey + header.TimeStamp res, err := io.ReadAll(response.Body) if err != nil { fmt.Println(err) @@ -216,13 +215,6 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) - if err != nil { - log.Printf("Error Decrypt: %v", err) - log.Println("res: ", dataResp) - return nil, err - } - responses := &suratkontrol.ResponseUpper{ MetaData: resSuratKontrolRaw.MetaData, Response: suratkontrol.ResponseSuratKontrol{}, @@ -233,7 +225,7 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s return responses, nil } -func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map[string]string) (*suratkontrol.ResponseNomorSuratKontrol, error) { +func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map[string]string) (*suratkontrol.ResponseGetSuratKontrol, error) { log.Println("URL", url) req, err := http.NewRequest("GET", url, nil) @@ -258,9 +250,10 @@ func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map if err != nil { log.Println(err) } + log.Println("res: ", string(res)) - var resNoSuratKontrolRaw suratkontrol.ResponseRaw - err = json.Unmarshal([]byte(res), &resNoSuratKontrolRaw) + var resNoSuratKontrolRaw suratkontrol.ResponseRawUpper + err = json.Unmarshal([]byte(string(res)), &resNoSuratKontrolRaw) if err != nil { log.Printf("Error Unmarshaling: %v", err) return nil, err @@ -272,21 +265,25 @@ func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map return nil, err } - var responseNoSuratKontrol *suratkontrol.ResponseNomorSuratKontrol log.Println("dataresp: ", dataResp) - err = json.Unmarshal([]byte(dataResp), &resNoSuratKontrolRaw) + var responseNoSuratKontrol suratkontrol.ResponseNomorSuratKontrol + err = json.Unmarshal([]byte(dataResp), &responseNoSuratKontrol) if err != nil { log.Printf("Error Decode: %v", err) return nil, err } - log.Println("res: ", resNoSuratKontrolRaw) + responses := &suratkontrol.ResponseGetSuratKontrol{ + MetaData: resNoSuratKontrolRaw.MetaData, + Response: responseNoSuratKontrol, + } + log.Println("res: ", responses) - return responseNoSuratKontrol, nil + return responses, nil } -func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map[string]string) (*suratkontrol.ResponseNomorSuratKontrol, error) { +func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map[string]string) (*suratkontrol.ResponseGetSuratKontrolBySEP, error) { log.Println("URL", url) req, err := http.NewRequest("GET", url, nil) @@ -313,7 +310,7 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map } var resSurKonSEP suratkontrol.ResponseRawUpper - err = json.Unmarshal([]byte(res), &resSurKonSEP) + err = json.Unmarshal([]byte(string(res)), &resSurKonSEP) if err != nil { log.Printf("Error Unmarshaling: %v", err) return nil, err @@ -325,10 +322,10 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map return nil, err } - var responseNoSuratKontrol *suratkontrol.ResponseNomorSuratKontrol + var responseNoSuratKontrol suratkontrol.ResponseSuratKontrolBySEP log.Println("dataresp: ", dataResp) - err = json.Unmarshal([]byte(dataResp), &resSurKonSEP) + err = json.Unmarshal([]byte(dataResp), &responseNoSuratKontrol) if err != nil { log.Printf("Error Decode: %v", err) return nil, err @@ -336,5 +333,10 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map log.Println("res: ", resSurKonSEP) - return responseNoSuratKontrol, nil + responses := &suratkontrol.ResponseGetSuratKontrolBySEP{ + MetaData: resSurKonSEP.MetaData, + Response: responseNoSuratKontrol, + } + + return responses, nil } diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 28a0c7b..b257534 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -13,6 +13,7 @@ import ( "time" "github.com/gin-gonic/gin" + "github.com/google/uuid" ) func InsertSuratKontrol(c *gin.Context) { @@ -46,10 +47,6 @@ func InsertSuratKontrol(c *gin.Context) { "Content-Type": "Application/x-www-form-urlencoded", } log.Println("Headers : ", headers) - kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) - if err != nil { - log.Println(err) - } reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ Request: &sk.ReqInsertRencanaKontrol{ @@ -67,7 +64,14 @@ func InsertSuratKontrol(c *gin.Context) { return } + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + } + + uuid := uuid.New().String() reqInsert := &sk.InsertDataSuratKontrol{ + ID: uuid, TglCetakSurKon: dateNow, TglRencanaKontrol: res.Response.TglRencanaKontrol, NomorSurKon: res.Response.NoSuratKontrol, @@ -152,16 +156,30 @@ func UpdateSuratKontrol(c *gin.Context) { return } - reqUpdate := &sk.UpdateDataSuratKontrol{ - UserUpdated: req.User, - DateUpdated: dateNow, + err = suratkontrol.UpdateDataSuratKontrol(req.IDSurKon) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + } + + reqInsert := &sk.InsertDataSuratKontrol{ TglCetakSurKon: dateNow, TglRencanaKontrol: res.Response.TglRencanaKontrol, NomorSurKon: res.Response.NoSuratKontrol, - StatusSurKon: 2, // Edit always 2 + KunjunganPasien: kunjunganPasien.ID, + RuanganSurKon: kunjunganPasien.Ruangan, + DPJPSurKon: kunjunganPasien.DPJP, + StatusSurKon: 2, // update data + UserCreatedSurKon: req.User, } - err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) @@ -179,8 +197,9 @@ func DeleteSuratKontrol(c *gin.Context) { var req sk.ReqDeleteRencanaKontrol - err := c.Bind(req) + err := c.Bind(&req) if err != nil { + log.Println("MASUK SINI") log.Println(err) c.JSON(http.StatusInternalServerError, err) return @@ -234,20 +253,21 @@ func GetNomorSuratKontrol(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + 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, + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", } log.Println("Headers : ", headers) res, err := ResponseGetNomorSuratKontrol(url, header, headers) if err != nil { log.Printf("Error making external API request: %v", err) - c.JSON(http.StatusInternalServerError, err) + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } @@ -263,13 +283,14 @@ func GetSuratKontrolBySEP(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeader(conf) + 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, + "X-cons-id": header.ConsID, + "X-timestamp": header.TimeStamp, + "X-signature": header.XSignature, + "user_key": header.UserKey, + "Content-Type": "Application/x-www-form-urlencoded", } log.Println("Headers : ", headers) diff --git a/models/bpjs/surat_kontrol/kunjugan_pasien.go b/models/bpjs/surat_kontrol/kunjugan_pasien.go index bb72c2e..0d2437e 100644 --- a/models/bpjs/surat_kontrol/kunjugan_pasien.go +++ b/models/bpjs/surat_kontrol/kunjugan_pasien.go @@ -16,5 +16,5 @@ type KunjunganPasien struct { GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` Ruangan int `gorm:"column:ruangan" json:"ruangan"` - DPJP string `gorm:"column:DPJP" json:"DPJP"` + DPJP string `gorm:"column:id_dokter" json:"id_dokter"` } diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index e19c50b..255ad8e 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -13,6 +13,8 @@ type ReqInsertRencanaKontrol struct { } type ReqUpdateRencanaKontrol struct { + IDXDaftar string `json:"idxdaftar"` + IDSurKon string `json:"id"` NoSuratKontrol string `json:"noSuratKontrol"` NoSEP string `json:"noSEP"` KodeDokter string `json:"kodeDokter"` @@ -80,6 +82,16 @@ type MetadataString struct { Message string `json:"message"` } +type ResponseGetSuratKontrol struct { + MetaData MetadataString `json:"metaData"` + Response ResponseNomorSuratKontrol `json:"response"` +} + +type ResponseGetSuratKontrolBySEP struct { + MetaData MetadataString `json:"metaData"` + Response ResponseSuratKontrolBySEP `json:"response"` +} + type ResponseInsert struct { MetaData MetadataString `json:"metadata"` Response ResponseSuratKontrol `json:"response"` @@ -193,21 +205,6 @@ type InsertDataSuratKontrol struct { UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` } -type UpdateDataSuratKontrol struct { - ID string `gorm:"column:id" json:"id"` - Status string `gorm:"column:status" json:"status"` - Sort int `gorm:"column:sort" json:"sort"` - UserUpdated string `gorm:"column:user_updated" json:"user_updated"` - DateUpdated string `gorm:"column:date_updated" json:"date_updated"` - TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` - TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` - NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` - KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"` - RuanganSurKon int `gorm:"column:Ruangan_surat_kontrol" json:"Ruangan_surat_kontrol"` - DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_surat_kontrol"` - StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` -} - type ResponseSuratKontrolBySEP struct { NoSEP string `json:"noSep"` TglSEP string `json:"tglSep"` From 9fbad6352c3d11ceb3fee45bfd746ac69dd74dab93f2f6dea45dd56e155b603d Mon Sep 17 00:00:00 2001 From: mirza Date: Fri, 11 Oct 2024 08:48:20 +0700 Subject: [PATCH 25/40] fix surkon --- .../surat_kontrol/kunjungan_pasien.go | 16 +++ .../satu_data/surat_kontrol/surat_kontrol.go | 46 ++++++++- handlers/bpjs/surat_kontrol/surat_kontrol.go | 97 ++++++++++++++++--- main.go | 1 + models/bpjs/surat_kontrol/surat_kontrol.go | 1 + 5 files changed, 142 insertions(+), 19 deletions(-) create mode 100644 database/satu_data/surat_kontrol/kunjungan_pasien.go diff --git a/database/satu_data/surat_kontrol/kunjungan_pasien.go b/database/satu_data/surat_kontrol/kunjungan_pasien.go new file mode 100644 index 0000000..5422b13 --- /dev/null +++ b/database/satu_data/surat_kontrol/kunjungan_pasien.go @@ -0,0 +1,16 @@ +package suratkontrol + +import ( + "bridging-rssa/config" + sk "bridging-rssa/models/bpjs/surat_kontrol" + "log" +) + +func UpdateNoSEPKunjunganPasien(req sk.RequestInsertRencanaKontrol) error { + err := config.SatuDataDB.Debug().Exec(`update "data_kunjungan_pasien" set "Nomor_sep" = ? where "IDXDAFTAR" = ?`, req.NoSEP, req.IDXDaftar).Error + if err != nil { + log.Println(err) + return err + } + return nil +} diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 4bbd40b..beedba3 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -45,12 +45,13 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er func InsertDataSuratKontrol(reqInsert *suratkontrol.InsertDataSuratKontrol) error { log.Println("Req Insert Database : ", reqInsert) - insertQuery := `insert into "data_surat_kontrol" ("id", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", + insertQuery := `insert into "data_surat_kontrol" ("id", "date_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", "Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol", - "User_created_surat_kontrol") - values (?, ?, ?, ?, ?, ?, ?, ?, ?)` + "User_created_surat_kontrol", "Tipe_surat_kontrol") + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` err := config.SatuDataDB.Debug().Exec(insertQuery, reqInsert.ID, + reqInsert.DateCreated, reqInsert.TglCetakSurKon, reqInsert.TglRencanaKontrol, reqInsert.NomorSurKon, @@ -59,6 +60,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.InsertDataSuratKontrol) erro reqInsert.DPJPSurKon, reqInsert.StatusSurKon, reqInsert.UserCreatedSurKon, + reqInsert.TipeSurKon, ).Error if err != nil { log.Println(err) @@ -92,7 +94,41 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { 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" - where dsk."Status_surat_kontrol" <> '0'`).First(&dataSurKon).Error + where dsk."Status_surat_kontrol" = '1'`).Scan(&dataSurKon).Error + if err != nil { + log.Println(err) + return nil, err + } + log.Println("Data Surat Kontrol : ", dataSurKon) + return dataSurKon, nil +} + +func GetDataSuratKontrolByID(idxdaftar 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", + (select dlr."Nama" + from data_kunjungan_pasien dkp + left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", + dlr."Nama" as "Poli_tuju", + dkp2."Nomor_sep", dkp2."Nama_lengkap", + array( + select dgd. "Gelar_depan" + from data_pegawai_daftar_gelar_depan dpdgd + left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id + ) AS gelardepan , + dk."Nama_lengkap" as "Nama_lengkap_dokter", + array( + select dgb. "Gelar_belakang" + 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 + 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" + where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ?`, idxdaftar).First(&dataSurKon).Error if err != nil { log.Println(err) return nil, err @@ -102,7 +138,7 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { } func UpdateDataSuratKontrol(idSurKon string) error { - err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "Status_surat_kontrol" = 2 where "id" = ?`, idSurKon).Error + err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "Status_surat_kontrol" = 0 where "id" = ?`, idSurKon).Error if err != nil { log.Println(err) return err diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index b257534..789d6c5 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -22,6 +22,7 @@ func InsertSuratKontrol(c *gin.Context) { param := os.Getenv("INSERT_SURAT_KONTROL") url := baseUrl + endpoint + param + timeNow := time.Now().Format("2006-01-02 15:04:05") dateNow := time.Now().Format("2006-01-02") var req sk.RequestInsertRencanaKontrol @@ -48,6 +49,39 @@ func InsertSuratKontrol(c *gin.Context) { } log.Println("Headers : ", headers) + tipeSurKon := "1" + + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + } + + uuid := uuid.New().String() + if req.NoSEP == "" { + tipeSurKon = "0" + reqInsert := &sk.InsertDataSuratKontrol{ + ID: uuid, + DateCreated: timeNow, + TglCetakSurKon: timeNow, + TglRencanaKontrol: dateNow, + NomorSurKon: "", //TODO How to get Nomor SurKon + KunjunganPasien: kunjunganPasien.ID, + RuanganSurKon: kunjunganPasien.Ruangan, + DPJPSurKon: kunjunganPasien.DPJP, + StatusSurKon: 1, // First Insert status always set to 1 + UserCreatedSurKon: req.User, + TipeSurKon: tipeSurKon, + } + err = suratkontrol.InsertDataSuratKontrol(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + c.JSON(http.StatusOK, nil) + return + } + reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ Request: &sk.ReqInsertRencanaKontrol{ NoSEP: req.NoSEP, @@ -64,15 +98,10 @@ func InsertSuratKontrol(c *gin.Context) { return } - kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) - if err != nil { - log.Println(err) - } - - uuid := uuid.New().String() reqInsert := &sk.InsertDataSuratKontrol{ ID: uuid, - TglCetakSurKon: dateNow, + DateCreated: timeNow, + TglCetakSurKon: timeNow, TglRencanaKontrol: res.Response.TglRencanaKontrol, NomorSurKon: res.Response.NoSuratKontrol, KunjunganPasien: kunjunganPasien.ID, @@ -80,6 +109,7 @@ func InsertSuratKontrol(c *gin.Context) { DPJPSurKon: kunjunganPasien.DPJP, StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, + TipeSurKon: tipeSurKon, } err = suratkontrol.InsertDataSuratKontrol(reqInsert) @@ -89,6 +119,13 @@ func InsertSuratKontrol(c *gin.Context) { return } + err = suratkontrol.UpdateNoSEPKunjunganPasien(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + response := &sk.ResponseInsertSuratKontrol{ MetaData: res.MetaData, Response: sk.ResponseData{ @@ -199,7 +236,6 @@ func DeleteSuratKontrol(c *gin.Context) { err := c.Bind(&req) if err != nil { - log.Println("MASUK SINI") log.Println(err) c.JSON(http.StatusInternalServerError, err) return @@ -234,12 +270,12 @@ func DeleteSuratKontrol(c *gin.Context) { return } - // err = suratkontrol.UpdateDataSuratKontrol() - // if err != nil { - // log.Println(err) - // c.JSON(http.StatusInternalServerError, err) - // return - // } + err = suratkontrol.UpdateDataSuratKontrol(req.IDDataSurKon) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } c.JSON(http.StatusOK, res) } @@ -337,3 +373,36 @@ func GetDataSurKon(c *gin.Context) { } c.JSON(http.StatusOK, resSurKon) } + +func GetDataSurKonByID(c *gin.Context) { + id := c.Param("idxdaftar") + data, err := suratkontrol.GetDataSuratKontrolByID(id) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + gelarDepan := utils.ReplaceGelar(data.GelarDepan) + gelarBelakang := utils.ReplaceGelar(data.GelarBelakang) + namaLengkap := gelarDepan + " " + data.NamaLengkapDokter + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + dateCetakSurkon, _ := time.Parse(time.RFC3339, data.TglCetakSurKon) + dateCetakSurkonString := dateCetakSurkon.Format("02/01/2006") + dateRencanaSurkon, _ := time.Parse(time.RFC3339, data.TglRencanaKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("02/01/2006") + resSurKon := &sk.ResponseGetDataSuratKontrol{ + IDDataSurKon: data.IDDataSurKon, + TglCetakSurKon: dateCetakSurkonString, + TglRencanaKontrol: dateRencanaSurkonString, + NomorSurKon: data.NomorSurKon, + PoliAsal: data.PoliAsal, + PoliTujuan: data.PoliTujuan, + NomorSEP: data.NomorSEP, + NamaPasien: data.NamaPasien, + NamaDokter: namaLengkap, + NomorKartu: "", + } + c.JSON(http.StatusOK, resSurKon) +} diff --git a/main.go b/main.go index 258c317..85b1bcc 100644 --- a/main.go +++ b/main.go @@ -50,6 +50,7 @@ func main() { suratKontrol := v1.Group("/suratkontrol") { suratKontrol.GET("/", suratkontrol.GetDataSurKon) + suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 255ad8e..8621bde 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -203,6 +203,7 @@ type InsertDataSuratKontrol struct { DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_surat_kontrol"` StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` + TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"` } type ResponseSuratKontrolBySEP struct { From 7f19c7181a8720126ff1ea3c83573b28b30de6bb3669f16328eddfa889842df5 Mon Sep 17 00:00:00 2001 From: mirza Date: Fri, 11 Oct 2024 14:23:19 +0700 Subject: [PATCH 26/40] fix print surkon --- .../satu_data/surat_kontrol/surat_kontrol.go | 19 +++++++- handlers/bpjs/surat_kontrol/surat_kontrol.go | 48 ++++++++++++++++++- main.go | 1 + models/bpjs/surat_kontrol/surat_kontrol.go | 4 +- 4 files changed, 67 insertions(+), 5 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index beedba3..b10a036 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -88,12 +88,14 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { select dgb. "Gelar_belakang" 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 + ) AS gelarbelakang, + ds."Subspesialis" 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'`).Scan(&dataSurKon).Error if err != nil { log.Println(err) @@ -122,12 +124,14 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro select dgb. "Gelar_belakang" 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 + ) AS gelarbelakang, + ds."Subspesialis" 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 dkp2."IDXDAFTAR" = ?`, idxdaftar).First(&dataSurKon).Error if err != nil { log.Println(err) @@ -145,3 +149,14 @@ func UpdateDataSuratKontrol(idSurKon string) error { } return nil } +func GetIDXDaftarBySurKon(idSurKon string) (string, error) { + var idxDaftar string + err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" + from "data_surat_kontrol" dsk + left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien"`).First(&idxDaftar).Error + if err != nil { + log.Println(err) + return "", err + } + return idxDaftar, err +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 789d6c5..ae5437d 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -23,7 +23,6 @@ func InsertSuratKontrol(c *gin.Context) { url := baseUrl + endpoint + param timeNow := time.Now().Format("2006-01-02 15:04:05") - dateNow := time.Now().Format("2006-01-02") var req sk.RequestInsertRencanaKontrol @@ -63,7 +62,7 @@ func InsertSuratKontrol(c *gin.Context) { ID: uuid, DateCreated: timeNow, TglCetakSurKon: timeNow, - TglRencanaKontrol: dateNow, + TglRencanaKontrol: req.TglRencanaKontrol, NomorSurKon: "", //TODO How to get Nomor SurKon KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, @@ -369,6 +368,7 @@ func GetDataSurKon(c *gin.Context) { NamaPasien: v.NamaPasien, NamaDokter: namaLengkap, NomorKartu: "", + Subspesialis: v.Subspesialis, }) } c.JSON(http.StatusOK, resSurKon) @@ -403,6 +403,50 @@ func GetDataSurKonByID(c *gin.Context) { NamaPasien: data.NamaPasien, NamaDokter: namaLengkap, NomorKartu: "", + Subspesialis: data.Subspesialis, } c.JSON(http.StatusOK, resSurKon) } + +func PrintSurKon(c *gin.Context) { + id := c.Param("idSurKon") + + idxDaftar, err := suratkontrol.GetIDXDaftarBySurKon(id) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + data, err := suratkontrol.GetDataSuratKontrolByID(idxDaftar) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + gelarDepan := utils.ReplaceGelar(data.GelarDepan) + gelarBelakang := utils.ReplaceGelar(data.GelarBelakang) + namaLengkap := gelarDepan + " " + data.NamaLengkapDokter + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + dateCetakSurkon, _ := time.Parse(time.RFC3339, data.TglCetakSurKon) + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") + dateRencanaSurkon, _ := time.Parse(time.RFC3339, data.TglRencanaKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") + resSurKon := &sk.ResponseGetDataSuratKontrol{ + IDDataSurKon: data.IDDataSurKon, + TglCetakSurKon: dateCetakSurkonString, + TglRencanaKontrol: dateRencanaSurkonString, + NomorSurKon: data.NomorSurKon, + PoliAsal: data.PoliAsal, + PoliTujuan: data.PoliTujuan, + NomorSEP: data.NomorSEP, + NamaPasien: data.NamaPasien, + NamaDokter: namaLengkap, + NomorKartu: "", + Subspesialis: data.Subspesialis, + } + log.Println("Data surkon", resSurKon) + c.JSON(http.StatusOK, resSurKon) +} diff --git a/main.go b/main.go index 85b1bcc..bee039b 100644 --- a/main.go +++ b/main.go @@ -53,6 +53,7 @@ func main() { suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) + suratKontrol.GET("/printSurKon/:idSurKon", suratkontrol.PrintSurKon) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) suratKontrol.DELETE("/delete", suratkontrol.DeleteSuratKontrol) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 8621bde..9ccf4fa 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -203,7 +203,7 @@ type InsertDataSuratKontrol struct { DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_surat_kontrol"` StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` - TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"` + TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"` } type ResponseSuratKontrolBySEP struct { @@ -229,6 +229,7 @@ type GetDataSuratKontrol struct { GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` NamaLengkapDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_lengkap_dokter"` GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` + Subspesialis string `gorm:"column:Subspesialis" json:"Subspesialis"` } type ResponseGetDataSuratKontrol struct { @@ -242,4 +243,5 @@ type ResponseGetDataSuratKontrol struct { NamaPasien string `json:"Nama_pasien"` NamaDokter string `json:"NamaDokter"` NomorKartu string `json:"Nomor_kartu"` + Subspesialis string `json:"Subspesialis"` } From 7467882ba6b2cd0936059e4a87f400ad423bd51be8e9784a1a3b5dd795515192 Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 14 Oct 2024 08:58:49 +0700 Subject: [PATCH 27/40] add idxdaftar get data surkon --- .../satu_data/surat_kontrol/surat_kontrol.go | 16 ++++- handlers/bpjs/surat_kontrol/surat_kontrol.go | 64 ++++++++++++++----- models/bpjs/surat_kontrol/surat_kontrol.go | 6 +- 3 files changed, 65 insertions(+), 21 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index b10a036..12d6e3c 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -43,7 +43,7 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er return kunjunganPasien, nil } -func InsertDataSuratKontrol(reqInsert *suratkontrol.InsertDataSuratKontrol) error { +func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error { log.Println("Req Insert Database : ", reqInsert) insertQuery := `insert into "data_surat_kontrol" ("id", "date_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", "Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol", @@ -77,7 +77,7 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { from data_kunjungan_pasien dkp left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", dlr."Nama" as "Poli_tuju", - dkp2."Nomor_sep", dkp2."Nama_lengkap", + dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", array( select dgd. "Gelar_depan" from data_pegawai_daftar_gelar_depan dpdgd @@ -119,7 +119,7 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro from data_pegawai_daftar_gelar_depan dpdgd left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id ) AS gelardepan , - dk."Nama_lengkap" as "Nama_lengkap_dokter", + dk."Nama_lengkap" as "Nama_lengkap_dokter", dkp."IDXDAFTAR", array( select dgb. "Gelar_belakang" from data_pegawai_daftar_gelar_belakang dpdgb @@ -160,3 +160,13 @@ func GetIDXDaftarBySurKon(idSurKon string) (string, error) { } return idxDaftar, err } + +func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, error) { + var dataSurKon *suratkontrol.DataSuratKontrol + err := config.SatuDataDB.Debug().Raw(`select * from "data_surat_kontrol" where "id" = ?`, idSurKon).First(&dataSurKon).Error + if err != nil { + log.Println(err) + return nil, err + } + return dataSurKon, nil +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index ae5437d..6bcffb4 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -58,7 +58,7 @@ func InsertSuratKontrol(c *gin.Context) { uuid := uuid.New().String() if req.NoSEP == "" { tipeSurKon = "0" - reqInsert := &sk.InsertDataSuratKontrol{ + reqInsert := &sk.DataSuratKontrol{ ID: uuid, DateCreated: timeNow, TglCetakSurKon: timeNow, @@ -97,7 +97,7 @@ func InsertSuratKontrol(c *gin.Context) { return } - reqInsert := &sk.InsertDataSuratKontrol{ + reqInsert := &sk.DataSuratKontrol{ ID: uuid, DateCreated: timeNow, TglCetakSurKon: timeNow, @@ -153,15 +153,46 @@ func UpdateSuratKontrol(c *gin.Context) { var req sk.ReqUpdateRencanaKontrol - err := c.Bind(req) + err := c.Bind(&req) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) return } - dateNow := time.Now().Format("2006-01-02") + timeNow := time.Now().Format("2006-01-02 15:04:05") + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + if err != nil { + log.Println(err) + } + uuid := uuid.New().String() + tipeSurKon := "1" + + if req.NoSEP == "" { + tipeSurKon = "0" + reqInsert := &sk.DataSuratKontrol{ + ID: uuid, + DateCreated: timeNow, + TglCetakSurKon: timeNow, + TglRencanaKontrol: req.TglRencanaKontrol, + NomorSurKon: "", //TODO How to get Nomor SurKon + KunjunganPasien: kunjunganPasien.ID, + RuanganSurKon: kunjunganPasien.Ruangan, + DPJPSurKon: kunjunganPasien.DPJP, + StatusSurKon: 1, // First Insert status always set to 1 + UserCreatedSurKon: req.User, + TipeSurKon: tipeSurKon, + } + err = suratkontrol.InsertDataSuratKontrol(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + c.JSON(http.StatusOK, nil) + return + } conf := config.ConfigBpjs{} header := cfg.SetHeaderDev(conf) @@ -199,20 +230,18 @@ func UpdateSuratKontrol(c *gin.Context) { return } - kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) - if err != nil { - log.Println(err) - } - - reqInsert := &sk.InsertDataSuratKontrol{ - TglCetakSurKon: dateNow, + reqInsert := &sk.DataSuratKontrol{ + ID: uuid, + DateCreated: timeNow, + TglCetakSurKon: timeNow, TglRencanaKontrol: res.Response.TglRencanaKontrol, NomorSurKon: res.Response.NoSuratKontrol, KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, DPJPSurKon: kunjunganPasien.DPJP, - StatusSurKon: 2, // update data + StatusSurKon: 1, // Insert status always set to 1 UserCreatedSurKon: req.User, + TipeSurKon: tipeSurKon, } err = suratkontrol.InsertDataSuratKontrol(reqInsert) @@ -354,11 +383,12 @@ func GetDataSurKon(c *gin.Context) { namaLengkap = strings.TrimPrefix(namaLengkap, " ") namaLengkap = strings.TrimSuffix(namaLengkap, " ") dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TglCetakSurKon) - dateCetakSurkonString := dateCetakSurkon.Format("02/01/2006") + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) - dateRencanaSurkonString := dateRencanaSurkon.Format("02/01/2006") + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ IDDataSurKon: v.IDDataSurKon, + IDXDaftar: v.IDXDaftar, TglCetakSurKon: dateCetakSurkonString, TglRencanaKontrol: dateRencanaSurkonString, NomorSurKon: v.NomorSurKon, @@ -389,11 +419,12 @@ func GetDataSurKonByID(c *gin.Context) { namaLengkap = strings.TrimPrefix(namaLengkap, " ") namaLengkap = strings.TrimSuffix(namaLengkap, " ") dateCetakSurkon, _ := time.Parse(time.RFC3339, data.TglCetakSurKon) - dateCetakSurkonString := dateCetakSurkon.Format("02/01/2006") + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") dateRencanaSurkon, _ := time.Parse(time.RFC3339, data.TglRencanaKontrol) - dateRencanaSurkonString := dateRencanaSurkon.Format("02/01/2006") + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") resSurKon := &sk.ResponseGetDataSuratKontrol{ IDDataSurKon: data.IDDataSurKon, + IDXDaftar: data.IDXDaftar, TglCetakSurKon: dateCetakSurkonString, TglRencanaKontrol: dateRencanaSurkonString, NomorSurKon: data.NomorSurKon, @@ -436,6 +467,7 @@ func PrintSurKon(c *gin.Context) { dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") resSurKon := &sk.ResponseGetDataSuratKontrol{ IDDataSurKon: data.IDDataSurKon, + IDXDaftar: data.IDXDaftar, TglCetakSurKon: dateCetakSurkonString, TglRencanaKontrol: dateRencanaSurkonString, NomorSurKon: data.NomorSurKon, diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 9ccf4fa..5cfe47d 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -14,7 +14,7 @@ type ReqInsertRencanaKontrol struct { type ReqUpdateRencanaKontrol struct { IDXDaftar string `json:"idxdaftar"` - IDSurKon string `json:"id"` + IDSurKon string `json:"idSurKon"` NoSuratKontrol string `json:"noSuratKontrol"` NoSEP string `json:"noSEP"` KodeDokter string `json:"kodeDokter"` @@ -187,7 +187,7 @@ type ProvPerujuk struct { TglRujukan string `json:"tglRujukan"` } -type InsertDataSuratKontrol struct { +type DataSuratKontrol struct { ID string `gorm:"column:id" json:"id"` Status string `gorm:"column:status" json:"status"` Sort int `gorm:"column:sort" json:"sort"` @@ -219,6 +219,7 @@ type ResponseSuratKontrolBySEP struct { type GetDataSuratKontrol struct { IDDataSurKon string `gorm:"column:id" json:"id"` + IDXDaftar int `gorm:"column:IDXDAFTAR" json:"IDXDAFTAR"` TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` @@ -234,6 +235,7 @@ type GetDataSuratKontrol struct { type ResponseGetDataSuratKontrol struct { IDDataSurKon string `json:"id"` + IDXDaftar int `json:"Idx_daftar"` TglCetakSurKon string `json:"Tanggal_cetak_surat_kontrol"` TglRencanaKontrol string `json:"Tanggal_rencana_kontrol"` NomorSurKon string `json:"Nomor_surat_kontrol"` From 14806ddcebe921ecf09fb470f050668e15962c78e34be68dba2f90274ac22bbf Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 14 Oct 2024 09:43:13 +0700 Subject: [PATCH 28/40] fix update surkon --- .../satu_data/surat_kontrol/surat_kontrol.go | 4 +-- handlers/bpjs/surat_kontrol/response.go | 8 +++--- handlers/bpjs/surat_kontrol/surat_kontrol.go | 27 ++++++++++++++----- models/bpjs/surat_kontrol/surat_kontrol.go | 8 +++--- 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 12d6e3c..9258899 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -141,8 +141,8 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro return dataSurKon, nil } -func UpdateDataSuratKontrol(idSurKon string) error { - err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "Status_surat_kontrol" = 0 where "id" = ?`, idSurKon).Error +func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error { + err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "date_updated" = ?,"Status_surat_kontrol" = ? where "id" = ?`, reqUpdate.DateUpdated, reqUpdate.StatusSurKon, reqUpdate.ID).Error if err != nil { log.Println(err) return err diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index e304346..2294e59 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -98,15 +98,13 @@ func PostData(url string, header *config.Header, headers map[string]string, requ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.ResponseInsert, error) { log.Println("URL", url) - requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ - Request: *request, - } - - reqMarshall, err := json.Marshal(requestBody) + reqMarshall, err := json.Marshal(request) if err != nil { log.Printf("Error json marshal: %v", err) } + log.Println("REQUEST: ", string(reqMarshall)) + req, err := http.NewRequest("PUT", url, bytes.NewReader(reqMarshall)) if err != nil { log.Printf("Error creating request: %v", err) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 6bcffb4..8ab303a 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -151,7 +151,7 @@ func UpdateSuratKontrol(c *gin.Context) { param := os.Getenv("UPDATE_SURAT_KONTROL") url := baseUrl + endpoint + param - var req sk.ReqUpdateRencanaKontrol + var req sk.RequestUpdateRencanaKontrol err := c.Bind(&req) if err != nil { @@ -210,20 +210,25 @@ func UpdateSuratKontrol(c *gin.Context) { Request: &sk.ReqUpdateRencanaKontrol{ NoSuratKontrol: req.NoSuratKontrol, NoSEP: req.NoSEP, - KodeDokter: req.KodeDokter, - PoliKontrol: req.PoliKontrol, + KodeDokter: req.KodeHFIS, + PoliKontrol: req.KodePoli, TglRencanaKontrol: req.TglRencanaKontrol, User: req.User, }, } res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) if err != nil { - log.Printf("Error making external API request: %v", err) - c.JSON(http.StatusInternalServerError, err) + log.Println(err) + c.JSON(http.StatusInternalServerError, res.MetaData) return } + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDSurKon, + StatusSurKon: 2, + } - err = suratkontrol.UpdateDataSuratKontrol(req.IDSurKon) + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) @@ -269,6 +274,8 @@ func DeleteSuratKontrol(c *gin.Context) { return } + timeNow := time.Now().Format("2006-01-02 15:04:05") + conf := config.ConfigBpjs{} header := cfg.SetHeaderDev(conf) @@ -298,7 +305,13 @@ func DeleteSuratKontrol(c *gin.Context) { return } - err = suratkontrol.UpdateDataSuratKontrol(req.IDDataSurKon) + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDDataSurKon, + StatusSurKon: 0, + } + + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 5cfe47d..c0ea347 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -13,8 +13,6 @@ type ReqInsertRencanaKontrol struct { } type ReqUpdateRencanaKontrol struct { - IDXDaftar string `json:"idxdaftar"` - IDSurKon string `json:"idSurKon"` NoSuratKontrol string `json:"noSuratKontrol"` NoSEP string `json:"noSEP"` KodeDokter string `json:"kodeDokter"` @@ -40,6 +38,8 @@ type ReqDeleteRencanaKontrol struct { } type RequestUpdateRencanaKontrol struct { + IDXDaftar string `json:"idxdaftar"` + IDSurKon string `json:"idSurKon"` NoSuratKontrol string `json:"noSuratKontrol"` NoSEP string `json:"noSEP"` KodeHFIS string `json:"kodeHFIS"` @@ -219,7 +219,7 @@ type ResponseSuratKontrolBySEP struct { type GetDataSuratKontrol struct { IDDataSurKon string `gorm:"column:id" json:"id"` - IDXDaftar int `gorm:"column:IDXDAFTAR" json:"IDXDAFTAR"` + IDXDaftar string `gorm:"column:IDXDAFTAR" json:"IDXDAFTAR"` TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` @@ -235,7 +235,7 @@ type GetDataSuratKontrol struct { type ResponseGetDataSuratKontrol struct { IDDataSurKon string `json:"id"` - IDXDaftar int `json:"Idx_daftar"` + IDXDaftar string `json:"Idx_daftar"` TglCetakSurKon string `json:"Tanggal_cetak_surat_kontrol"` TglRencanaKontrol string `json:"Tanggal_rencana_kontrol"` NomorSurKon string `json:"Nomor_surat_kontrol"` From 309d4db3799338fbec51c61e3cdfe9add1178d5ac2614c0c7f90409656f46c6f Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 14 Oct 2024 09:46:59 +0700 Subject: [PATCH 29/40] fix query --- database/satu_data/surat_kontrol/surat_kontrol.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 9258899..a8eee09 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -113,13 +113,13 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro from data_kunjungan_pasien dkp left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", dlr."Nama" as "Poli_tuju", - dkp2."Nomor_sep", dkp2."Nama_lengkap", + dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", array( select dgd. "Gelar_depan" from data_pegawai_daftar_gelar_depan dpdgd left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id ) AS gelardepan , - dk."Nama_lengkap" as "Nama_lengkap_dokter", dkp."IDXDAFTAR", + dk."Nama_lengkap" as "Nama_lengkap_dokter", array( select dgb. "Gelar_belakang" from data_pegawai_daftar_gelar_belakang dpdgb From bb1a03e82840f594ef9eb813dc10f7604b190ed4750e42511c2fd160803c6246 Mon Sep 17 00:00:00 2001 From: mirza Date: Mon, 14 Oct 2024 11:43:28 +0700 Subject: [PATCH 30/40] rename json req delete --- models/bpjs/surat_kontrol/surat_kontrol.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index c0ea347..38255a8 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -32,7 +32,7 @@ type RequestInsertRencanaKontrol struct { } type ReqDeleteRencanaKontrol struct { - IDDataSurKon string `json:"id"` + IDDataSurKon string `json:"id_SurKon"` NomorSurKon string `json:"Nomor_surat_kontrol"` User string `json:"user"` } From c3ac02052f8af9e8347fd537c1a14736ff3d858cddf88812fd6866927f7a608d Mon Sep 17 00:00:00 2001 From: mirza Date: Tue, 15 Oct 2024 14:36:48 +0700 Subject: [PATCH 31/40] add some response --- database/satu_data/surat_kontrol/surat_kontrol.go | 4 +++- handlers/bpjs/surat_kontrol/surat_kontrol.go | 2 ++ models/bpjs/surat_kontrol/surat_kontrol.go | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index a8eee09..7a6655e 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -89,7 +89,9 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, 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, - ds."Subspesialis" + ds."Subspesialis", + ds."Kode" as "Kode_poli", + dp."HFIS_code" as "Kode_dokter" 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" diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 8ab303a..acd5306 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -412,6 +412,8 @@ func GetDataSurKon(c *gin.Context) { NamaDokter: namaLengkap, NomorKartu: "", Subspesialis: v.Subspesialis, + KodePoli: v.KodePoli, + KodeDokter: v.KodeDokter, }) } c.JSON(http.StatusOK, resSurKon) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 38255a8..db149f2 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -32,7 +32,7 @@ type RequestInsertRencanaKontrol struct { } type ReqDeleteRencanaKontrol struct { - IDDataSurKon string `json:"id_SurKon"` + IDDataSurKon string `json:"id_surat_kontrol"` NomorSurKon string `json:"Nomor_surat_kontrol"` User string `json:"user"` } @@ -231,6 +231,8 @@ type GetDataSuratKontrol struct { NamaLengkapDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_lengkap_dokter"` GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` Subspesialis string `gorm:"column:Subspesialis" json:"Subspesialis"` + KodePoli string `gorm:"column:Kode_poli" json:"Kode_poli"` + KodeDokter string `gorm:"column:Kode_dokter" json:"Kode_dokter"` } type ResponseGetDataSuratKontrol struct { @@ -246,4 +248,6 @@ type ResponseGetDataSuratKontrol struct { NamaDokter string `json:"NamaDokter"` NomorKartu string `json:"Nomor_kartu"` Subspesialis string `json:"Subspesialis"` + KodePoli string `json:"Kode_poli"` + KodeDokter string `json:"Kode_dokter"` } From 1b14bf24c5f829e593165f73bfc9fdaed8276da06b30aff4b2785e8d31862c78 Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 16 Oct 2024 08:04:28 +0700 Subject: [PATCH 32/40] update get jadwal dokter --- database/satu_data/dokter/jadwal_dokter.go | 20 +++ database/satu_data/dokter/subspesialis.go | 26 +++- .../satu_data/surat_kontrol/surat_kontrol.go | 3 +- handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 118 +++++++++++++----- handlers/bpjs/surat_kontrol/surat_kontrol.go | 14 +++ main.go | 8 +- models/dokter/dokter.go | 8 ++ 7 files changed, 162 insertions(+), 35 deletions(-) diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index e423340..a8d2fd3 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -58,6 +58,16 @@ func GetJadwalDokterByDate(hari string) ([]string, error) { return spesialis, nil } +func GetJadwalSubspesialisByDate(hari string) ([]int, error) { + var subspesialis []int + errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Sub_spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Sub_spesialis"`, hari).Scan(&subspesialis).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return nil, errSelect + } + return subspesialis, nil +} + func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error) { var listDokter []string errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Spesialis" = ? order by "Spesialis"`, hari, spesialis).Scan(&listDokter).Error @@ -68,6 +78,16 @@ func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error) return listDokter, nil } +func GetJadwalDokterBySubpesialis(hari string, subspesialis string) ([]string, error) { + var listDokter []string + errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Sub_spesialis" = ? order by "Sub_spesialis"`, hari, subspesialis).Scan(&listDokter).Error + if errSelect != nil { + log.Printf("Failed get data : %v", errSelect) + return nil, errSelect + } + return listDokter, nil +} + func DeleteJadwalDokter() error { err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter"`).Error if err != nil { diff --git a/database/satu_data/dokter/subspesialis.go b/database/satu_data/dokter/subspesialis.go index 1c68632..7d976bb 100644 --- a/database/satu_data/dokter/subspesialis.go +++ b/database/satu_data/dokter/subspesialis.go @@ -26,13 +26,33 @@ func GetSubspesialis() ([]dokter.DaftarSubspesialis, error) { return daftarSubspesialis, nil } -func GetSubspesialisByID(idSubspesialis int) ([]dokter.DaftarSubspesialis, error) { - var daftarSubspesialis []dokter.DaftarSubspesialis +func GetSubspesialisByID(idSubspesialis int) (*dokter.DaftarSubspesialis, error) { + var daftarSubspesialis *dokter.DaftarSubspesialis result := config.SatuDataDB.Debug().Raw(`select dss.*, ds."Spesialis" from "daftar_subspesialis" dss left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID" - where dss.id = ?`, idSubspesialis).Find(&daftarSubspesialis) + where dss.id = ?`, idSubspesialis).First(&daftarSubspesialis) + if result.Error != nil { + if !errors.Is(result.Error, gorm.ErrRecordNotFound) { + log.Printf("Error get data : %v", result.Error) + return nil, result.Error + } + log.Printf("Data kosong: %v", result.Error) + return daftarSubspesialis, nil + } + + log.Println(daftarSubspesialis) + return daftarSubspesialis, nil +} + +func GetSubspesialisByIDBatch(idSubspesialis []int) ([]dokter.DaftarSubspesialis, error) { + var daftarSubspesialis []dokter.DaftarSubspesialis + result := config.SatuDataDB.Debug().Raw(`select dss.*, ds."Spesialis" + from "daftar_subspesialis" dss + left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID" + where dss.id in ? + order by dss."id"`, idSubspesialis).Find(&daftarSubspesialis) if result.Error != nil { if !errors.Is(result.Error, gorm.ErrRecordNotFound) { log.Printf("Error get data : %v", result.Error) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 7a6655e..2503606 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -155,7 +155,8 @@ func GetIDXDaftarBySurKon(idSurKon string) (string, error) { var idxDaftar string err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR" from "data_surat_kontrol" dsk - left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien"`).First(&idxDaftar).Error + left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien" + where dsk."id" = ?`, idSurKon).First(&idxDaftar).Error if err != nil { log.Println(err) return "", err diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 5c758b3..319a9b7 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -175,36 +175,33 @@ func GetDokterByDPJP(c *gin.Context) { var res *jadwal_dokter.ResponseListHari - for _, v := range listSubspesialis { - for _, k := range namaDokter { - var jadwalDokter []jadwal_dokter.ListJadwalDokter - for _, key := range listHari { - jadwalDokter = append(jadwalDokter, jadwal_dokter.ListJadwalDokter{ - NamaHari: key.NamaHari, - KodeHari: key.Hari, - Waktu: key.Waktu, - }) - } - gelarDepan := utils.ReplaceGelar(k.GelarDepan) - gelarBelakang := utils.ReplaceGelar(k.GelarBelakang) - namaLengkap := gelarDepan + " " + k.NamaLengkap + " " + gelarBelakang - namaLengkap = strings.TrimPrefix(namaLengkap, " ") - namaLengkap = strings.TrimSuffix(namaLengkap, " ") - hfisCode := strings.TrimSpace(k.HFISCode) - res = &jadwal_dokter.ResponseListHari{ - IDSpesialis: v.IDSpesialis, - Kode: v.Kode, - Spesialis: v.Spesialis, - Subspesialis: v.Subspesialis, - IDSubspesialis: v.Kode, - NamaLengkap: namaLengkap, - HFISCode: hfisCode, - KodeDPJP: dpjp, - JadwalDokter: jadwalDokter, - } + for _, k := range namaDokter { + var jadwalDokter []jadwal_dokter.ListJadwalDokter + for _, key := range listHari { + jadwalDokter = append(jadwalDokter, jadwal_dokter.ListJadwalDokter{ + NamaHari: key.NamaHari, + KodeHari: key.Hari, + Waktu: key.Waktu, + }) + } + gelarDepan := utils.ReplaceGelar(k.GelarDepan) + gelarBelakang := utils.ReplaceGelar(k.GelarBelakang) + namaLengkap := gelarDepan + " " + k.NamaLengkap + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + hfisCode := strings.TrimSpace(k.HFISCode) + res = &jadwal_dokter.ResponseListHari{ + IDSpesialis: listSubspesialis.IDSpesialis, + Kode: listSubspesialis.Kode, + Spesialis: listSubspesialis.Spesialis, + Subspesialis: listSubspesialis.Subspesialis, + IDSubspesialis: listSubspesialis.Kode, + NamaLengkap: namaLengkap, + HFISCode: hfisCode, + KodeDPJP: dpjp, + JadwalDokter: jadwalDokter, } } - log.Println("Response :", res) c.JSON(http.StatusOK, res) } @@ -228,6 +225,25 @@ func GetSpesialisByDate(c *gin.Context) { c.JSON(http.StatusOK, listSpesialis) } +func GetJadwalSubspesialisByDate(c *gin.Context) { + tanggal := c.Param("tanggal") + date, err := time.Parse("2006-01-02", tanggal) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + hari := date.Local().Weekday().String() + hari = utils.ConvertDay(hari) + idsubspesialis, err := dokter.GetJadwalSubspesialisByDate(hari) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + listSpesialis, err := dokter.GetSubspesialisByIDBatch(idsubspesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + c.JSON(http.StatusOK, listSpesialis) +} + func GetDokterBySpesialis(c *gin.Context) { spesialis := c.Param("spesialis") tanggal := c.Param("tanggal") @@ -266,3 +282,49 @@ func GetDokterBySpesialis(c *gin.Context) { log.Println("Response :", resDokter) c.JSON(http.StatusOK, resDokter) } + +func GetDokterBySubspesialis(c *gin.Context) { + subspesialis := c.Param("subspesialis") + tanggal := c.Param("tanggal") + date, err := time.Parse("2006-01-02", tanggal) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + hari := date.Local().Weekday().String() + hari = utils.ConvertDay(hari) + idDokter, err := dokter.GetJadwalDokterBySubpesialis(hari, subspesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + namaDokter, err := dokter.GetNamaLengkapDokter(idDokter) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + var resDokter []dktr.ResponseDokterNew + idSubspesialis, err := strconv.Atoi(subspesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + + listSubspesialis, err := dokter.GetSubspesialisByID(idSubspesialis) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + } + + for _, v := range namaDokter { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaLengkap + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + resDokter = append(resDokter, dktr.ResponseDokterNew{ + ID: v.ID, + NamaLengkap: namaLengkap, + Subspesialis: idSubspesialis, + HFISCode: v.HFISCode, + KodePoli: listSubspesialis.Kode, + }) + } + log.Println("Response :", resDokter) + c.JSON(http.StatusOK, resDokter) +} diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index acd5306..42f4992 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -160,6 +160,8 @@ func UpdateSuratKontrol(c *gin.Context) { return } + log.Println("Request: ", req) + timeNow := time.Now().Format("2006-01-02 15:04:05") kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) @@ -184,6 +186,18 @@ func UpdateSuratKontrol(c *gin.Context) { UserCreatedSurKon: req.User, TipeSurKon: tipeSurKon, } + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDSurKon, + StatusSurKon: 2, + } + + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { log.Println(err) diff --git a/main.go b/main.go index bee039b..6aaafcc 100644 --- a/main.go +++ b/main.go @@ -43,8 +43,10 @@ func main() { { 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.GetSpesialisByDate) + jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate) jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) + jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis) } suratKontrol := v1.Group("/suratkontrol") @@ -70,8 +72,8 @@ func main() { AllowCredentials: true, })) - log.Println("JALAN DI PORT : 8080") - err = r.Run(":8080") + log.Println("JALAN DI PORT : 8082") + err = r.Run(":8082") if err != nil { log.Fatal(err) } diff --git a/models/dokter/dokter.go b/models/dokter/dokter.go index 6b37bc3..fb228b8 100644 --- a/models/dokter/dokter.go +++ b/models/dokter/dokter.go @@ -24,3 +24,11 @@ type ResponseDokter struct { Spesialis int `json:"spesialis"` HFISCode string `json:"HFIS_code"` } + +type ResponseDokterNew struct { + ID string `json:"id"` + NamaLengkap string `json:"nama_lengkap"` + Subspesialis int `json:"subspesialis"` + HFISCode string `json:"HFIS_code"` + KodePoli string `json:"kode_poli"` +} From 3d2e1fcc5fde8be1cd16dd02054fdf9ea805eb19f44ead96df7e63bacb4e197d Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 16 Oct 2024 09:49:37 +0700 Subject: [PATCH 33/40] fix code --- handlers/bpjs/surat_kontrol/response.go | 19 +++++++++--------- handlers/bpjs/surat_kontrol/surat_kontrol.go | 21 +++++++++++++++++++- main.go | 2 +- models/bpjs/surat_kontrol/surat_kontrol.go | 6 +++--- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index 2294e59..3a2bb34 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -13,7 +13,7 @@ import ( "net/http" ) -func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.ResponseInsert, error) { +func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) { log.Println("URL", url) reqMarshall, err := json.Marshal(request) @@ -51,7 +51,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Println("Res:", string(res)) - var resSuratKontrolRaw suratkontrol.ResponseInsertRaw + var resSuratKontrolRaw suratkontrol.ResponseRaw err = json.Unmarshal([]byte(string(res)), &resSuratKontrolRaw) if err != nil { log.Printf("Error Unmarshaling: %v", err) @@ -60,7 +60,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Println("ResponseRaw : ", resSuratKontrolRaw) - responses := &suratkontrol.ResponseInsert{} + responses := &suratkontrol.Response{} if resSuratKontrolRaw.MetaData.Code != "200" { errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) log.Printf("error : %v", errMsg) @@ -87,7 +87,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return nil, err } - responses = &suratkontrol.ResponseInsert{ + responses = &suratkontrol.Response{ MetaData: resSuratKontrolRaw.MetaData, Response: resSuratKontrol, } @@ -95,7 +95,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return responses, nil } -func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.ResponseInsert, error) { +func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) { log.Println("URL", url) reqMarshall, err := json.Marshal(request) @@ -138,7 +138,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - responses := &suratkontrol.ResponseInsert{} + responses := &suratkontrol.Response{} if resSuratKontrolRaw.MetaData.Code != "200" { errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) log.Printf("error : %v", errMsg) @@ -165,7 +165,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - responses = &suratkontrol.ResponseInsert{ + responses = &suratkontrol.Response{ MetaData: resSuratKontrolRaw.MetaData, Response: *resSuratKontrol, } @@ -173,7 +173,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s return responses, nil } -func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (interface{}, error) { +func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) { log.Println("URL", url) reqMarshall, err := json.Marshal(request) @@ -213,9 +213,8 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - responses := &suratkontrol.ResponseUpper{ + responses := &suratkontrol.Response{ MetaData: resSuratKontrolRaw.MetaData, - Response: suratkontrol.ResponseSuratKontrol{}, } log.Println("res: ", responses) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 42f4992..bcd32cc 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -290,6 +290,26 @@ func DeleteSuratKontrol(c *gin.Context) { timeNow := time.Now().Format("2006-01-02 15:04:05") + if req.NomorSurKon == "" { + reqUpdate := &sk.DataSuratKontrol{ + DateUpdated: timeNow, + ID: req.IDDataSurKon, + StatusSurKon: 0, + } + + err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + res := &sk.MetadataString{ + Code: "200", + Message: "Berhasil Hapus Data", + } + c.JSON(http.StatusOK, res) + } + conf := config.ConfigBpjs{} header := cfg.SetHeaderDev(conf) @@ -331,7 +351,6 @@ func DeleteSuratKontrol(c *gin.Context) { c.JSON(http.StatusInternalServerError, err) return } - c.JSON(http.StatusOK, res) } diff --git a/main.go b/main.go index 6aaafcc..bd049f8 100644 --- a/main.go +++ b/main.go @@ -58,7 +58,7 @@ func main() { suratKontrol.GET("/printSurKon/:idSurKon", suratkontrol.PrintSurKon) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) - suratKontrol.DELETE("/delete", suratkontrol.DeleteSuratKontrol) + suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol) } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index db149f2..2d37993 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -58,8 +58,8 @@ type RequestDeleteRencanaKontrol struct { } type ResponseRaw struct { - Response string `json:"response"` - MetaData Metadata `json:"metadata"` + Response string `json:"response"` + MetaData MetadataString `json:"metadata"` } type ResponseRawUpper struct { @@ -92,7 +92,7 @@ type ResponseGetSuratKontrolBySEP struct { Response ResponseSuratKontrolBySEP `json:"response"` } -type ResponseInsert struct { +type Response struct { MetaData MetadataString `json:"metadata"` Response ResponseSuratKontrol `json:"response"` } From a07cf7f9c408933993cbe73ddf6b1cd9261daa3d3b7f162d690f3fc1aa823d07 Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 16 Oct 2024 11:36:32 +0700 Subject: [PATCH 34/40] add log --- handlers/bpjs/surat_kontrol/response.go | 2 ++ handlers/bpjs/surat_kontrol/surat_kontrol.go | 2 ++ 2 files changed, 4 insertions(+) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index 3a2bb34..b079f1d 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -181,6 +181,8 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s log.Printf("Error json marshal: %v", err) } + log.Println("REQUEST: ", string(reqMarshall)) + req, err := http.NewRequest("DELETE", url, bytes.NewReader(reqMarshall)) if err != nil { log.Printf("Error creating request: %v", err) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index bcd32cc..f92aa9d 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -288,6 +288,8 @@ func DeleteSuratKontrol(c *gin.Context) { return } + log.Println("REQUEST: ", req) + timeNow := time.Now().Format("2006-01-02 15:04:05") if req.NomorSurKon == "" { From cf5c47f9bb1aa8e7b90b2c535a751da3457076e2487204fc3119d56e5104be71 Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 17 Oct 2024 08:24:41 +0700 Subject: [PATCH 35/40] add condition and cari --- .../satu_data/surat_kontrol/surat_kontrol.go | 114 ++++++++++++++++++ handlers/bpjs/surat_kontrol/response.go | 28 ++++- handlers/bpjs/surat_kontrol/surat_kontrol.go | 72 +++++++++++ main.go | 1 + models/bpjs/surat_kontrol/surat_kontrol.go | 9 ++ 5 files changed, 221 insertions(+), 3 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 2503606..defe43a 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -173,3 +173,117 @@ func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, er } return dataSurKon, nil } + +func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien) ([]*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", + (select dlr."Nama" + from data_kunjungan_pasien dkp + left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", + dlr."Nama" as "Poli_tuju", + dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", + array( + select dgd. "Gelar_depan" + from data_pegawai_daftar_gelar_depan dpdgd + left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id + ) AS gelardepan , + dk."Nama_lengkap" as "Nama_lengkap_dokter", + array( + select dgb. "Gelar_belakang" + 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, + ds."Subspesialis", + ds."Kode" as "Kode_poli", + dp."HFIS_code" as "Kode_dokter" + 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 dkp2."NOMR" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.NoRM, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error + if err != nil { + log.Println(err) + return nil, err + } + log.Println("Data Surat Kontrol : ", dataSurKon) + return dataSurKon, nil +} + +func GetDataSurKonByNoSEP(req suratkontrol.RequestCariPasien) ([]*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", + (select dlr."Nama" + from data_kunjungan_pasien dkp + left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", + dlr."Nama" as "Poli_tuju", + dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", + array( + select dgd. "Gelar_depan" + from data_pegawai_daftar_gelar_depan dpdgd + left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id + ) AS gelardepan , + dk."Nama_lengkap" as "Nama_lengkap_dokter", + array( + select dgb. "Gelar_belakang" + 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, + ds."Subspesialis", + ds."Kode" as "Kode_poli", + dp."HFIS_code" as "Kode_dokter" + 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 dkp2."Nomor_sep" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.NoSEP, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error + if err != nil { + log.Println(err) + return nil, err + } + log.Println("Data Surat Kontrol : ", dataSurKon) + return dataSurKon, nil +} + +func GetDataSurKonByPoliklinik(req suratkontrol.RequestCariPasien) ([]*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", + (select dlr."Nama" + from data_kunjungan_pasien dkp + left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", + dlr."Nama" as "Poli_tuju", + dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", + array( + select dgd. "Gelar_depan" + from data_pegawai_daftar_gelar_depan dpdgd + left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id + ) AS gelardepan , + dk."Nama_lengkap" as "Nama_lengkap_dokter", + array( + select dgb. "Gelar_belakang" + 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, + ds."Subspesialis", + ds."Kode" as "Kode_poli", + dp."HFIS_code" as "Kode_dokter" + 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 ds."id" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error + if err != nil { + log.Println(err) + return nil, err + } + log.Println("Data Surat Kontrol : ", dataSurKon) + return dataSurKon, nil +} diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index b079f1d..9ee8c41 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -11,6 +11,8 @@ import ( "io" "log" "net/http" + "strings" + "time" ) func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) { @@ -116,14 +118,35 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s } 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("context deadline exceeded") + 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("504 Gateway Time-out") + log.Printf("error : %v", errMsg) + responses.MetaData.Code = "504" + responses.MetaData.Message = errMsg.Error() + log.Println("responses: ", responses) + return responses, err + } + + log.Println("RESPONSE: ", response) + key := header.ConsID + header.SecretKey + header.TimeStamp res, err := io.ReadAll(response.Body) if err != nil { @@ -138,7 +161,6 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s return nil, err } - responses := &suratkontrol.Response{} if resSuratKontrolRaw.MetaData.Code != "200" { errMsg := errors.New(resSuratKontrolRaw.MetaData.Message) log.Printf("error : %v", errMsg) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index f92aa9d..2ae4ac8 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -232,6 +232,11 @@ func UpdateSuratKontrol(c *gin.Context) { } res, err := ResponseUpdateSuratKontrol(url, header, headers, reqSuratKontrol) if err != nil { + if res.MetaData.Code == "504" { + log.Println(err) + c.JSON(http.StatusGatewayTimeout, res.MetaData) + return + } log.Println(err) c.JSON(http.StatusInternalServerError, res.MetaData) return @@ -532,3 +537,70 @@ func PrintSurKon(c *gin.Context) { log.Println("Data surkon", resSurKon) c.JSON(http.StatusOK, resSurKon) } + +func CariPasienTPP(c *gin.Context) { + var req sk.RequestCariPasien + + err := c.ShouldBindJSON(&req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + + log.Println("request :", req) + + var data []*sk.GetDataSuratKontrol + if req.NoRM != "" { + data, err = suratkontrol.GetDataSurKonByNoRM(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + } else if req.NoSEP != "" { + data, err = suratkontrol.GetDataSurKonByNoSEP(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + } else if req.PoliKlinik != "" { + data, err = suratkontrol.GetDataSurKonByPoliklinik(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + } + + var resSurKon []*sk.ResponseGetDataSuratKontrol + for _, v := range data { + gelarDepan := utils.ReplaceGelar(v.GelarDepan) + gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) + namaLengkap := gelarDepan + " " + v.NamaLengkapDokter + " " + gelarBelakang + namaLengkap = strings.TrimPrefix(namaLengkap, " ") + namaLengkap = strings.TrimSuffix(namaLengkap, " ") + dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TglCetakSurKon) + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") + dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") + resSurKon = append(resSurKon, &sk.ResponseGetDataSuratKontrol{ + IDDataSurKon: v.IDDataSurKon, + IDXDaftar: v.IDXDaftar, + TglCetakSurKon: dateCetakSurkonString, + TglRencanaKontrol: dateRencanaSurkonString, + NomorSurKon: v.NomorSurKon, + PoliAsal: v.PoliAsal, + PoliTujuan: v.PoliTujuan, + NomorSEP: v.NomorSEP, + NamaPasien: v.NamaPasien, + NamaDokter: namaLengkap, + NomorKartu: "", + Subspesialis: v.Subspesialis, + KodePoli: v.KodePoli, + KodeDokter: v.KodeDokter, + }) + } + c.JSON(http.StatusOK, resSurKon) +} diff --git a/main.go b/main.go index bd049f8..b6aec77 100644 --- a/main.go +++ b/main.go @@ -56,6 +56,7 @@ func main() { suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) suratKontrol.GET("/printSurKon/:idSurKon", suratkontrol.PrintSurKon) + suratKontrol.POST("/cari", suratkontrol.CariPasienTPP) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 2d37993..1d96a28 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -233,6 +233,7 @@ type GetDataSuratKontrol struct { Subspesialis string `gorm:"column:Subspesialis" json:"Subspesialis"` KodePoli string `gorm:"column:Kode_poli" json:"Kode_poli"` KodeDokter string `gorm:"column:Kode_dokter" json:"Kode_dokter"` + NomorKartu string `gorm:"column:No_kartu" json:"No_kartu"` } type ResponseGetDataSuratKontrol struct { @@ -251,3 +252,11 @@ type ResponseGetDataSuratKontrol struct { KodePoli string `json:"Kode_poli"` KodeDokter string `json:"Kode_dokter"` } + +type RequestCariPasien struct { + NoRM string `json:"no_rm"` + NoSEP string `json:"no_sep"` + PoliKlinik string `json:"poliklinik"` + TanggalAwal string `json:"tanggal_awal"` + TanggalAkhir string `json:"tanggal_akhir"` +} From 87d5a964ef551197ac8102febe883c19ca198642afd58ce797937d737fc6c26e Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 17 Oct 2024 10:44:35 +0700 Subject: [PATCH 36/40] make query cari dynamic --- .../satu_data/surat_kontrol/surat_kontrol.go | 157 +++++++++--------- handlers/bpjs/surat_kontrol/response.go | 2 +- handlers/bpjs/surat_kontrol/surat_kontrol.go | 17 +- 3 files changed, 95 insertions(+), 81 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index defe43a..1e9a7b2 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -174,9 +174,10 @@ func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, er return dataSurKon, nil } -func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien) ([]*suratkontrol.GetDataSuratKontrol, error) { +func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien, query string, condition 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", + query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?` + querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", dsk."Nomor_surat_kontrol", (select dlr."Nama" from data_kunjungan_pasien dkp @@ -203,7 +204,9 @@ func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien) ([]*suratkontrol.Ge 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 dkp2."NOMR" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.NoRM, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error + where dsk."Status_surat_kontrol" = '1' ` + querySelect += query + err := config.SatuDataDB.Debug().Raw(querySelect, condition, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error if err != nil { log.Println(err) return nil, err @@ -212,78 +215,78 @@ func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien) ([]*suratkontrol.Ge return dataSurKon, nil } -func GetDataSurKonByNoSEP(req suratkontrol.RequestCariPasien) ([]*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", - (select dlr."Nama" - from data_kunjungan_pasien dkp - left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", - dlr."Nama" as "Poli_tuju", - dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", - array( - select dgd. "Gelar_depan" - from data_pegawai_daftar_gelar_depan dpdgd - left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id - ) AS gelardepan , - dk."Nama_lengkap" as "Nama_lengkap_dokter", - array( - select dgb. "Gelar_belakang" - 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, - ds."Subspesialis", - ds."Kode" as "Kode_poli", - dp."HFIS_code" as "Kode_dokter" - 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 dkp2."Nomor_sep" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.NoSEP, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error - if err != nil { - log.Println(err) - return nil, err - } - log.Println("Data Surat Kontrol : ", dataSurKon) - return dataSurKon, nil -} +// func GetDataSurKonByNoSEP(req suratkontrol.RequestCariPasien) ([]*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", +// (select dlr."Nama" +// from data_kunjungan_pasien dkp +// left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", +// dlr."Nama" as "Poli_tuju", +// dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", +// array( +// select dgd. "Gelar_depan" +// from data_pegawai_daftar_gelar_depan dpdgd +// left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id +// ) AS gelardepan , +// dk."Nama_lengkap" as "Nama_lengkap_dokter", +// array( +// select dgb. "Gelar_belakang" +// 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, +// ds."Subspesialis", +// ds."Kode" as "Kode_poli", +// dp."HFIS_code" as "Kode_dokter" +// 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 dkp2."Nomor_sep" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.NoSEP, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error +// if err != nil { +// log.Println(err) +// return nil, err +// } +// log.Println("Data Surat Kontrol : ", dataSurKon) +// return dataSurKon, nil +// } -func GetDataSurKonByPoliklinik(req suratkontrol.RequestCariPasien) ([]*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", - (select dlr."Nama" - from data_kunjungan_pasien dkp - left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", - dlr."Nama" as "Poli_tuju", - dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", - array( - select dgd. "Gelar_depan" - from data_pegawai_daftar_gelar_depan dpdgd - left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id - ) AS gelardepan , - dk."Nama_lengkap" as "Nama_lengkap_dokter", - array( - select dgb. "Gelar_belakang" - 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, - ds."Subspesialis", - ds."Kode" as "Kode_poli", - dp."HFIS_code" as "Kode_dokter" - 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 ds."id" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error - if err != nil { - log.Println(err) - return nil, err - } - log.Println("Data Surat Kontrol : ", dataSurKon) - return dataSurKon, nil -} +// func GetDataSurKonByPoliklinik(req suratkontrol.RequestCariPasien) ([]*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", +// (select dlr."Nama" +// from data_kunjungan_pasien dkp +// left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", +// dlr."Nama" as "Poli_tuju", +// dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", +// array( +// select dgd. "Gelar_depan" +// from data_pegawai_daftar_gelar_depan dpdgd +// left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id +// ) AS gelardepan , +// dk."Nama_lengkap" as "Nama_lengkap_dokter", +// array( +// select dgb. "Gelar_belakang" +// 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, +// ds."Subspesialis", +// ds."Kode" as "Kode_poli", +// dp."HFIS_code" as "Kode_dokter" +// 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 ds."id" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error +// if err != nil { +// log.Println(err) +// return nil, err +// } +// log.Println("Data Surat Kontrol : ", dataSurKon) +// return dataSurKon, nil +// } diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index 9ee8c41..e3bec90 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -124,7 +124,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s responses := &suratkontrol.Response{} response, err := client.Do(req) if err != nil { - if strings.Contains(strings.ToLower(err.Error()), "deadline-exceeded") { + if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") { errMsg := errors.New("context deadline exceeded") log.Printf("error : %v", errMsg) responses.MetaData.Message = errMsg.Error() diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 2ae4ac8..df568a0 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -550,23 +550,34 @@ func CariPasienTPP(c *gin.Context) { log.Println("request :", req) + query := `` var data []*sk.GetDataSuratKontrol if req.NoRM != "" { - data, err = suratkontrol.GetDataSurKonByNoRM(req) + query += `and dkp2."NOMR" = ?` + data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.NoRM) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) return } } else if req.NoSEP != "" { - data, err = suratkontrol.GetDataSurKonByNoSEP(req) + query += `and dkp2."Nomor_sep" = ?` + data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.NoSEP) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) return } } else if req.PoliKlinik != "" { - data, err = suratkontrol.GetDataSurKonByPoliklinik(req) + query += `and ds."id" = ?` + data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.PoliKlinik) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + return + } + } else { + data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.PoliKlinik) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) From d19ec6fe9658d79c1e4453ffd03703a6c17621ea0822fcbaced2b08bcf9902f2 Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 17 Oct 2024 10:51:36 +0700 Subject: [PATCH 37/40] fix query and condition --- database/satu_data/surat_kontrol/surat_kontrol.go | 4 ++-- handlers/bpjs/surat_kontrol/surat_kontrol.go | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 1e9a7b2..03c58a2 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -174,7 +174,7 @@ func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, er return dataSurKon, nil } -func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien, query string, condition string) ([]*suratkontrol.GetDataSuratKontrol, error) { +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 ?` querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", @@ -206,7 +206,7 @@ func GetDataSurKonByNoRM(req suratkontrol.RequestCariPasien, query string, condi left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" where dsk."Status_surat_kontrol" = '1' ` querySelect += query - err := config.SatuDataDB.Debug().Raw(querySelect, condition, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error + err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error if err != nil { log.Println(err) return nil, err diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index df568a0..f3e5cc4 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -551,10 +551,12 @@ func CariPasienTPP(c *gin.Context) { log.Println("request :", req) query := `` + var args []interface{} var data []*sk.GetDataSuratKontrol if req.NoRM != "" { query += `and dkp2."NOMR" = ?` - data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.NoRM) + args = append(args, req.NoRM, req.TanggalAwal, req.TanggalAkhir) + data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) @@ -562,7 +564,8 @@ func CariPasienTPP(c *gin.Context) { } } else if req.NoSEP != "" { query += `and dkp2."Nomor_sep" = ?` - data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.NoSEP) + args = append(args, req.NoSEP, req.TanggalAwal, req.TanggalAkhir) + data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) @@ -570,14 +573,16 @@ func CariPasienTPP(c *gin.Context) { } } else if req.PoliKlinik != "" { query += `and ds."id" = ?` - data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.PoliKlinik) + args = append(args, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir) + data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) return } } else { - data, err = suratkontrol.GetDataSurKonByNoRM(req, query, req.PoliKlinik) + args = append(args, req.TanggalAwal, req.TanggalAkhir) + data, err = suratkontrol.SearchDataSurKon(req, query, args) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) From 31666cb9e5096cd43068d2122b705ca79c2a740088ae10048b80d4bca78d3b39 Mon Sep 17 00:00:00 2001 From: mirza Date: Thu, 17 Oct 2024 15:15:41 +0700 Subject: [PATCH 38/40] fix update data --- .../satu_data/surat_kontrol/surat_kontrol.go | 6 +++++- handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 6 ++++++ handlers/bpjs/surat_kontrol/surat_kontrol.go | 18 +++++++----------- models/bpjs/surat_kontrol/surat_kontrol.go | 5 +++++ 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 03c58a2..46b750a 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -127,7 +127,11 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro 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, - ds."Subspesialis" + ds."Subspesialis", + ds."Kode" as "Kode_poli", + ds."id" as "ID_poli", + dp."HFIS_code" as "Kode_dokter", + dp."id" as "id_dokter" 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" diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 319a9b7..8b5a030 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -231,6 +231,8 @@ func GetJadwalSubspesialisByDate(c *gin.Context) { if err != nil { c.JSON(http.StatusInternalServerError, err) } + + log.Println("tanggal: ", tanggal) hari := date.Local().Weekday().String() hari = utils.ConvertDay(hari) idsubspesialis, err := dokter.GetJadwalSubspesialisByDate(hari) @@ -290,6 +292,10 @@ func GetDokterBySubspesialis(c *gin.Context) { if err != nil { c.JSON(http.StatusInternalServerError, err) } + + log.Println("subspesialis: ", subspesialis) + log.Println("tanggal: ", tanggal) + hari := date.Local().Weekday().String() hari = utils.ConvertDay(hari) idDokter, err := dokter.GetJadwalDokterBySubpesialis(hari, subspesialis) diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index f3e5cc4..2659ee0 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -262,7 +262,7 @@ func UpdateSuratKontrol(c *gin.Context) { NomorSurKon: res.Response.NoSuratKontrol, KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, - DPJPSurKon: kunjunganPasien.DPJP, + DPJPSurKon: req.IDDokter, StatusSurKon: 1, // Insert status always set to 1 UserCreatedSurKon: req.User, TipeSurKon: tipeSurKon, @@ -490,21 +490,17 @@ func GetDataSurKonByID(c *gin.Context) { NamaDokter: namaLengkap, NomorKartu: "", Subspesialis: data.Subspesialis, + KodePoli: data.KodePoli, + KodeDokter: data.KodeDokter, + IDPoli: data.IDPoli, + IDDokter: data.IDDokter, } c.JSON(http.StatusOK, resSurKon) } func PrintSurKon(c *gin.Context) { - id := c.Param("idSurKon") - - idxDaftar, err := suratkontrol.GetIDXDaftarBySurKon(id) - if err != nil { - log.Println(err) - c.JSON(http.StatusInternalServerError, err) - return - } - - data, err := suratkontrol.GetDataSuratKontrolByID(idxDaftar) + id := c.Param("idxdaftar") + data, err := suratkontrol.GetDataSuratKontrolByID(id) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 1d96a28..b681ec9 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -40,6 +40,7 @@ type ReqDeleteRencanaKontrol struct { type RequestUpdateRencanaKontrol struct { IDXDaftar string `json:"idxdaftar"` IDSurKon string `json:"idSurKon"` + IDDokter string `json:"id_dokter"` NoSuratKontrol string `json:"noSuratKontrol"` NoSEP string `json:"noSEP"` KodeHFIS string `json:"kodeHFIS"` @@ -234,6 +235,8 @@ type GetDataSuratKontrol struct { KodePoli string `gorm:"column:Kode_poli" json:"Kode_poli"` KodeDokter string `gorm:"column:Kode_dokter" json:"Kode_dokter"` 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"` } type ResponseGetDataSuratKontrol struct { @@ -251,6 +254,8 @@ type ResponseGetDataSuratKontrol struct { Subspesialis string `json:"Subspesialis"` KodePoli string `json:"Kode_poli"` KodeDokter string `json:"Kode_dokter"` + IDPoli string `json:"id_poli"` + IDDokter string `json:"id_dokter"` } type RequestCariPasien struct { From 9b14389d7c4c73232c817f14e29d9faf2f4a285370526c64da5b422518801cd5 Mon Sep 17 00:00:00 2001 From: mirza Date: Tue, 22 Oct 2024 06:44:21 +0700 Subject: [PATCH 39/40] fix prod temp --- database/satu_data/dokter/jadwal_dokter.go | 10 -- .../surat_kontrol/kunjungan_pasien.go | 4 +- .../satu_data/surat_kontrol/surat_kontrol.go | 113 +++++------------- handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 7 +- handlers/bpjs/surat_kontrol/response.go | 4 +- handlers/bpjs/surat_kontrol/surat_kontrol.go | 68 ++++++++--- main.go | 6 +- models/bpjs/jadwal_dokter/jadwal_dokter.go | 1 + models/bpjs/surat_kontrol/kunjugan_pasien.go | 36 +++--- models/bpjs/surat_kontrol/surat_kontrol.go | 14 +++ models/dokter/dokter.go | 4 +- 11 files changed, 127 insertions(+), 140 deletions(-) diff --git a/database/satu_data/dokter/jadwal_dokter.go b/database/satu_data/dokter/jadwal_dokter.go index a8d2fd3..3b9ee4d 100644 --- a/database/satu_data/dokter/jadwal_dokter.go +++ b/database/satu_data/dokter/jadwal_dokter.go @@ -19,16 +19,6 @@ func GetJadwalDokterByDPJP(dpjp string) (string, error) { return id, nil } -// func GetJadwalSpesialisDokterByID(id string) (string, error) { -// var spesialis string -// errSelect := config.SatuDataDB.Debug().Raw(`select "Spesialis" from "daftar_jadwal_dokter" where "Dokter" = ? order by "Spesialis"`, id).First(&spesialis).Error -// if errSelect != nil { -// log.Printf("Failed get data : %v", errSelect) -// return "", errSelect -// } -// return spesialis, nil -// } - func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.JadwalDokterSatuData, error) { var hari []jadwal_dokter.JadwalDokterSatuData errSelect := config.SatuDataDB.Debug().Raw(`select * from "daftar_jadwal_dokter" where "Dokter" = ? order by "id"`, id).Scan(&hari).Error diff --git a/database/satu_data/surat_kontrol/kunjungan_pasien.go b/database/satu_data/surat_kontrol/kunjungan_pasien.go index 5422b13..c614370 100644 --- a/database/satu_data/surat_kontrol/kunjungan_pasien.go +++ b/database/satu_data/surat_kontrol/kunjungan_pasien.go @@ -6,8 +6,8 @@ import ( "log" ) -func UpdateNoSEPKunjunganPasien(req sk.RequestInsertRencanaKontrol) error { - err := config.SatuDataDB.Debug().Exec(`update "data_kunjungan_pasien" set "Nomor_sep" = ? where "IDXDAFTAR" = ?`, req.NoSEP, req.IDXDaftar).Error +func UpdateKunjunganPasien(req sk.RequestInsertRencanaKontrol) error { + err := config.SatuDataDB.Debug().Exec(`update "data_kunjungan_pasien" set "Nomor_sep" = ?, "Diagnosis_akhir_keluar" = ?, "Display_diagnosis_akhir_keluar" = ?, "Diagnosis_primer_utama" = ?, "Display_diagnosis_primer_utama" = ? where "IDXDAFTAR" = ?`, req.NoSEP, req.KodeDiagnosa, req.NamaDiagnosa, req.KodeDiagnosa, req.NamaDiagnosa, req.IDXDaftar).Error if err != nil { log.Println(err) return err diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 46b750a..c8eea7e 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -3,7 +3,10 @@ package suratkontrol import ( "bridging-rssa/config" suratkontrol "bridging-rssa/models/bpjs/surat_kontrol" + "errors" "log" + + "gorm.io/gorm" ) func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) { @@ -36,6 +39,11 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er left join daftar_spesialis ds on dsu."FK_daftar_spesialis_ID" = ds.id where dkp."IDXDAFTAR" = ?`, 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 } @@ -47,8 +55,8 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error { log.Println("Req Insert Database : ", reqInsert) insertQuery := `insert into "data_surat_kontrol" ("id", "date_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", "Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol", - "User_created_surat_kontrol", "Tipe_surat_kontrol") - values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` + "User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol") + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` err := config.SatuDataDB.Debug().Exec(insertQuery, reqInsert.ID, reqInsert.DateCreated, @@ -61,6 +69,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error { reqInsert.StatusSurKon, reqInsert.UserCreatedSurKon, reqInsert.TipeSurKon, + reqInsert.UserUpdatedSurKon, ).Error if err != nil { log.Println(err) @@ -91,7 +100,13 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { ) AS gelarbelakang, ds."Subspesialis", ds."Kode" as "Kode_poli", - dp."HFIS_code" as "Kode_dokter" + ds."id" as "ID_poli", + dp."HFIS_code" as "Kode_dokter", + dp."id" as "id_dokter", + 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" 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" @@ -131,7 +146,11 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro ds."Kode" as "Kode_poli", ds."id" as "ID_poli", dp."HFIS_code" as "Kode_dokter", - dp."id" as "id_dokter" + dp."id" as "id_dokter", + 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" 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" @@ -148,7 +167,7 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro } func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error { - err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "date_updated" = ?,"Status_surat_kontrol" = ? where "id" = ?`, reqUpdate.DateUpdated, reqUpdate.StatusSurKon, reqUpdate.ID).Error + err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "date_updated" = ?, "Status_surat_kontrol" = ?, "User_updated_surat_kontrol" = ? where "id" = ?`, reqUpdate.DateUpdated, reqUpdate.StatusSurKon, reqUpdate.UserUpdatedSurKon, reqUpdate.ID).Error if err != nil { log.Println(err) return err @@ -201,7 +220,13 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i ) AS gelarbelakang, ds."Subspesialis", ds."Kode" as "Kode_poli", - dp."HFIS_code" as "Kode_dokter" + ds."id" as "ID_poli", + dp."HFIS_code" as "Kode_dokter", + dp."id" as "id_dokter", + 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" 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" @@ -218,79 +243,3 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i log.Println("Data Surat Kontrol : ", dataSurKon) return dataSurKon, nil } - -// func GetDataSurKonByNoSEP(req suratkontrol.RequestCariPasien) ([]*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", -// (select dlr."Nama" -// from data_kunjungan_pasien dkp -// left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", -// dlr."Nama" as "Poli_tuju", -// dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", -// array( -// select dgd. "Gelar_depan" -// from data_pegawai_daftar_gelar_depan dpdgd -// left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id -// ) AS gelardepan , -// dk."Nama_lengkap" as "Nama_lengkap_dokter", -// array( -// select dgb. "Gelar_belakang" -// 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, -// ds."Subspesialis", -// ds."Kode" as "Kode_poli", -// dp."HFIS_code" as "Kode_dokter" -// 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 dkp2."Nomor_sep" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.NoSEP, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error -// if err != nil { -// log.Println(err) -// return nil, err -// } -// log.Println("Data Surat Kontrol : ", dataSurKon) -// return dataSurKon, nil -// } - -// func GetDataSurKonByPoliklinik(req suratkontrol.RequestCariPasien) ([]*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", -// (select dlr."Nama" -// from data_kunjungan_pasien dkp -// left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal", -// dlr."Nama" as "Poli_tuju", -// dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR", -// array( -// select dgd. "Gelar_depan" -// from data_pegawai_daftar_gelar_depan dpdgd -// left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id -// ) AS gelardepan , -// dk."Nama_lengkap" as "Nama_lengkap_dokter", -// array( -// select dgb. "Gelar_belakang" -// 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, -// ds."Subspesialis", -// ds."Kode" as "Kode_poli", -// dp."HFIS_code" as "Kode_dokter" -// 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 ds."id" = ? and date(dsk."Tanggal_rencana_kontrol") between ? and ?`, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir).Find(&dataSurKon).Error -// if err != nil { -// log.Println(err) -// return nil, err -// } -// log.Println("Data Surat Kontrol : ", dataSurKon) -// return dataSurKon, nil -// } diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 8b5a030..ec82326 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -141,12 +141,6 @@ func GetDokterByDPJP(c *gin.Context) { return } - // spesialis, err := dokter.GetJadwalSpesialisDokterByID(idDokter) - // if err != nil { - // c.JSON(http.StatusInternalServerError, err) - // return - // } - listHari, err := dokter.GetJadwalHariDokterBySpesialis(idDokter) if err != nil { c.JSON(http.StatusInternalServerError, err) @@ -200,6 +194,7 @@ func GetDokterByDPJP(c *gin.Context) { HFISCode: hfisCode, KodeDPJP: dpjp, JadwalDokter: jadwalDokter, + IDDokter: k.ID, } } log.Println("Response :", res) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index e3bec90..a469c14 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -125,7 +125,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("context deadline exceeded") + errMsg := errors.New("Gagal Proses Selama 10 Detik, Silahkan Coba Lagi") log.Printf("error : %v", errMsg) responses.MetaData.Message = errMsg.Error() log.Println("responses: ", responses) @@ -137,7 +137,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s log.Println("RESPONSE: ", response) if response.StatusCode == http.StatusGatewayTimeout { // 504 - errMsg := errors.New("504 Gateway Time-out") + errMsg := errors.New("Gagal Proses Selama 10 Detik, Silahkan Coba Lagi") log.Printf("error : %v", errMsg) responses.MetaData.Code = "504" responses.MetaData.Message = errMsg.Error() diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 2659ee0..265b8d1 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -37,7 +37,7 @@ func InsertSuratKontrol(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(conf) + header := cfg.SetHeader(conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -53,6 +53,11 @@ func InsertSuratKontrol(c *gin.Context) { kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return } uuid := uuid.New().String() @@ -66,7 +71,7 @@ func InsertSuratKontrol(c *gin.Context) { NomorSurKon: "", //TODO How to get Nomor SurKon KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, - DPJPSurKon: kunjunganPasien.DPJP, + DPJPSurKon: req.IDDokter, StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, TipeSurKon: tipeSurKon, @@ -105,7 +110,7 @@ func InsertSuratKontrol(c *gin.Context) { NomorSurKon: res.Response.NoSuratKontrol, KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, - DPJPSurKon: kunjunganPasien.DPJP, + DPJPSurKon: req.IDDokter, StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, TipeSurKon: tipeSurKon, @@ -118,7 +123,13 @@ func InsertSuratKontrol(c *gin.Context) { return } - err = suratkontrol.UpdateNoSEPKunjunganPasien(req) + if req.KodeDiagnosa == "" || req.NamaDiagnosa == "" { + diagnosa := strings.Split(res.Response.NamaDiagnosa, " - ") + req.KodeDiagnosa = diagnosa[0] + req.NamaDiagnosa = diagnosa[1] + } + + err = suratkontrol.UpdateKunjunganPasien(req) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) @@ -167,6 +178,11 @@ func UpdateSuratKontrol(c *gin.Context) { kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "", + Message: err.Error(), + }) + return } uuid := uuid.New().String() tipeSurKon := "1" @@ -181,10 +197,10 @@ func UpdateSuratKontrol(c *gin.Context) { NomorSurKon: "", //TODO How to get Nomor SurKon KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, - DPJPSurKon: kunjunganPasien.DPJP, + DPJPSurKon: req.IDDokter, StatusSurKon: 1, // First Insert status always set to 1 - UserCreatedSurKon: req.User, TipeSurKon: tipeSurKon, + UserUpdatedSurKon: req.User, } reqUpdate := &sk.DataSuratKontrol{ DateUpdated: timeNow, @@ -209,7 +225,7 @@ func UpdateSuratKontrol(c *gin.Context) { } conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(conf) + header := cfg.SetHeader(conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -264,8 +280,12 @@ func UpdateSuratKontrol(c *gin.Context) { RuanganSurKon: kunjunganPasien.Ruangan, DPJPSurKon: req.IDDokter, StatusSurKon: 1, // Insert status always set to 1 - UserCreatedSurKon: req.User, TipeSurKon: tipeSurKon, + UserUpdatedSurKon: req.User, + } + + if reqInsert.DPJPSurKon == "" { + reqInsert.DPJPSurKon = kunjunganPasien.DPJP } err = suratkontrol.InsertDataSuratKontrol(reqInsert) @@ -299,9 +319,10 @@ func DeleteSuratKontrol(c *gin.Context) { if req.NomorSurKon == "" { reqUpdate := &sk.DataSuratKontrol{ - DateUpdated: timeNow, - ID: req.IDDataSurKon, - StatusSurKon: 0, + DateUpdated: timeNow, + ID: req.IDDataSurKon, + StatusSurKon: 0, + UserUpdatedSurKon: req.User, } err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) @@ -319,7 +340,7 @@ func DeleteSuratKontrol(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(conf) + header := cfg.SetHeader(conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -347,9 +368,10 @@ func DeleteSuratKontrol(c *gin.Context) { } reqUpdate := &sk.DataSuratKontrol{ - DateUpdated: timeNow, - ID: req.IDDataSurKon, - StatusSurKon: 0, + DateUpdated: timeNow, + ID: req.IDDataSurKon, + StatusSurKon: 0, + UserUpdatedSurKon: req.User, } err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) @@ -370,7 +392,7 @@ func GetNomorSuratKontrol(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(conf) + header := cfg.SetHeader(conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -400,7 +422,7 @@ func GetSuratKontrolBySEP(c *gin.Context) { conf := config.ConfigBpjs{} - header := cfg.SetHeaderDev(conf) + header := cfg.SetHeader(conf) headers := map[string]string{ "X-cons-id": header.ConsID, @@ -454,6 +476,10 @@ func GetDataSurKon(c *gin.Context) { Subspesialis: v.Subspesialis, KodePoli: v.KodePoli, KodeDokter: v.KodeDokter, + NoRM: v.NoRM, + KodeDiagnosa: v.KodeDiagnosa, + NamaDiagnosa: v.NamaDiagnosa, + TipeSurKon: v.TipeSurKon, }) } c.JSON(http.StatusOK, resSurKon) @@ -494,6 +520,10 @@ func GetDataSurKonByID(c *gin.Context) { KodeDokter: data.KodeDokter, IDPoli: data.IDPoli, IDDokter: data.IDDokter, + NoRM: data.NoRM, + KodeDiagnosa: data.KodeDiagnosa, + NamaDiagnosa: data.NamaDiagnosa, + TipeSurKon: data.TipeSurKon, } c.JSON(http.StatusOK, resSurKon) } @@ -612,6 +642,10 @@ func CariPasienTPP(c *gin.Context) { Subspesialis: v.Subspesialis, KodePoli: v.KodePoli, KodeDokter: v.KodeDokter, + NoRM: v.NoRM, + KodeDiagnosa: v.KodeDiagnosa, + NamaDiagnosa: v.NamaDiagnosa, + TipeSurKon: v.TipeSurKon, }) } c.JSON(http.StatusOK, resSurKon) diff --git a/main.go b/main.go index b6aec77..e3c5aec 100644 --- a/main.go +++ b/main.go @@ -55,7 +55,7 @@ func main() { suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) - suratKontrol.GET("/printSurKon/:idSurKon", suratkontrol.PrintSurKon) + suratKontrol.GET("/printSurKon/:idxdaftar", suratkontrol.PrintSurKon) suratKontrol.POST("/cari", suratkontrol.CariPasienTPP) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) @@ -73,8 +73,8 @@ func main() { AllowCredentials: true, })) - log.Println("JALAN DI PORT : 8082") - err = r.Run(":8082") + log.Println("JALAN DI PORT : 8081") + err = r.Run(":8081") if err != nil { log.Fatal(err) } diff --git a/models/bpjs/jadwal_dokter/jadwal_dokter.go b/models/bpjs/jadwal_dokter/jadwal_dokter.go index 2e70c67..cbbe6b0 100644 --- a/models/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/models/bpjs/jadwal_dokter/jadwal_dokter.go @@ -61,6 +61,7 @@ type ResponseListHari struct { NamaLengkap string `json:"nama_lengkap"` HFISCode string `json:"HFIS_code"` KodeDPJP string `json:"DPJP_code"` + IDDokter string `json:"id_dokter"` JadwalDokter []ListJadwalDokter `json:"Jadwal_dokter"` } diff --git a/models/bpjs/surat_kontrol/kunjugan_pasien.go b/models/bpjs/surat_kontrol/kunjugan_pasien.go index 0d2437e..3410c6f 100644 --- a/models/bpjs/surat_kontrol/kunjugan_pasien.go +++ b/models/bpjs/surat_kontrol/kunjugan_pasien.go @@ -1,20 +1,24 @@ package suratkontrol type KunjunganPasien struct { - ID string `gorm:"column:id" json:"id"` - IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` - NomorSEP string `gorm:"column:nomorsep" json:"nomorsep"` - NamaKlinik string `gorm:"column:namaklinik" json:"namaklinik"` - IDKlinikSimgos string `gorm:"column:idkliniksimgos" json:"idkliniksimgos"` - KodeHfisKlinik string `gorm:"column:kodehfisklinik" json:"kodehfisklinik"` - NamaDokter string `gorm:"column:namadokter" json:"namadokter"` - KodeDokter string `gorm:"column:kodedokter" json:"kodedokter"` - KodeHfisDokter string `gorm:"column:kodehfisdokter" json:"kodehfisdokter"` - KodeSubspesialis string `gorm:"column:kodesubspesialis" json:"kodesubspesialis"` - Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"` - Spesialis string `gorm:"column:spesialis" json:"spesialis"` - GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` - GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` - Ruangan int `gorm:"column:ruangan" json:"ruangan"` - DPJP string `gorm:"column:id_dokter" json:"id_dokter"` + ID string `gorm:"column:id" json:"id"` + IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` + NomorSEP string `gorm:"column:nomorsep" json:"nomorsep"` + NamaKlinik string `gorm:"column:namaklinik" json:"namaklinik"` + IDKlinikSimgos string `gorm:"column:idkliniksimgos" json:"idkliniksimgos"` + KodeHfisKlinik string `gorm:"column:kodehfisklinik" json:"kodehfisklinik"` + NamaDokter string `gorm:"column:namadokter" json:"namadokter"` + KodeDokter string `gorm:"column:kodedokter" json:"kodedokter"` + KodeHfisDokter string `gorm:"column:kodehfisdokter" json:"kodehfisdokter"` + KodeSubspesialis string `gorm:"column:kodesubspesialis" json:"kodesubspesialis"` + Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"` + Spesialis string `gorm:"column:spesialis" json:"spesialis"` + GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` + GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` + Ruangan int `gorm:"column:ruangan" json:"ruangan"` + DPJP string `gorm:"column:id_dokter" json:"id_dokter"` + DiagnosisAkhirKeluar string `gorm:"column:Diagnosis_akhir_keluar" json:"Diagnosis_akhir_keluar"` + 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"` } diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index b681ec9..3dba70e 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -29,6 +29,9 @@ type RequestInsertRencanaKontrol struct { Subspesialis string `json:"subspesialis"` TglRencanaKontrol string `json:"tglRencanaKontrol"` User string `json:"user"` + IDDokter string `json:"id_dokter"` + KodeDiagnosa string `json:"kode_diagnosa"` + NamaDiagnosa string `json:"nama_diagnosa"` } type ReqDeleteRencanaKontrol struct { @@ -47,6 +50,8 @@ type RequestUpdateRencanaKontrol struct { KodePoli string `json:"kodePoli"` TglRencanaKontrol string `json:"tglRencanaKontrol"` User string `json:"user"` + KodeDiagnosa string `json:"Kode_diagnosa"` + NamaDiagnosa string `json:"Nama_diagnosa"` } type TSuratKontrol struct { @@ -205,6 +210,7 @@ type DataSuratKontrol struct { StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"` + UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"` } type ResponseSuratKontrolBySEP struct { @@ -237,6 +243,10 @@ 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"` + 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"` } type ResponseGetDataSuratKontrol struct { @@ -256,6 +266,10 @@ type ResponseGetDataSuratKontrol struct { KodeDokter string `json:"Kode_dokter"` 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"` } type RequestCariPasien struct { diff --git a/models/dokter/dokter.go b/models/dokter/dokter.go index fb228b8..3139fe0 100644 --- a/models/dokter/dokter.go +++ b/models/dokter/dokter.go @@ -19,14 +19,14 @@ type NamaLengkap struct { } type ResponseDokter struct { - ID string `json:"id"` + ID string `json:"id_dokter"` NamaLengkap string `json:"nama_lengkap"` Spesialis int `json:"spesialis"` HFISCode string `json:"HFIS_code"` } type ResponseDokterNew struct { - ID string `json:"id"` + ID string `json:"id_dokter"` NamaLengkap string `json:"nama_lengkap"` Subspesialis int `json:"subspesialis"` HFISCode string `json:"HFIS_code"` From ab5303e55fb88f03ab569c241975c4156d479c50b764e552e8e6412a46677ace Mon Sep 17 00:00:00 2001 From: mirza Date: Tue, 22 Oct 2024 09:53:16 +0700 Subject: [PATCH 40/40] fix prod --- .env | 2 +- .../satu_data/surat_kontrol/surat_kontrol.go | 10 +++++++ handlers/bpjs/surat_kontrol/surat_kontrol.go | 30 +++++++++++-------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/.env b/.env index b5d92d6..7960c82 100644 --- a/.env +++ b/.env @@ -15,7 +15,7 @@ USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c SECRET_KEY_DEV=8pP3D5431E BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/ -SURAT_KONTROL_RS_DEV=vclaim-rest-dev +SURAT_KONTROL_RS=vclaim-rest INSERT_SURAT_KONTROL=/RencanaKontrol/insert UPDATE_SURAT_KONTROL=/RencanaKontrol/Update DELETE_SURAT_KONTROL=/RencanaKontrol/Delete diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index c8eea7e..b8595ac 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -115,6 +115,11 @@ func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) { left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" where dsk."Status_surat_kontrol" = '1'`).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 } @@ -159,6 +164,11 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ?`, idxdaftar).First(&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 } diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 265b8d1..2ed6f9f 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -17,8 +17,8 @@ import ( ) func InsertSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("SURAT_KONTROL_RS") param := os.Getenv("INSERT_SURAT_KONTROL") url := baseUrl + endpoint + param @@ -157,8 +157,8 @@ func InsertSuratKontrol(c *gin.Context) { } func UpdateSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("SURAT_KONTROL_RS") param := os.Getenv("UPDATE_SURAT_KONTROL") url := baseUrl + endpoint + param @@ -299,8 +299,8 @@ func UpdateSuratKontrol(c *gin.Context) { } func DeleteSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("SURAT_KONTROL_RS") param := os.Getenv("DELETE_SURAT_KONTROL") url := baseUrl + endpoint + param @@ -384,8 +384,8 @@ func DeleteSuratKontrol(c *gin.Context) { } func GetNomorSuratKontrol(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("SURAT_KONTROL_RS") param := os.Getenv("GET_NOMOR_SURAT_KONTROL") noSurat := c.Param("noSuratKontrol") url := baseUrl + endpoint + param + noSurat @@ -414,8 +414,8 @@ func GetNomorSuratKontrol(c *gin.Context) { } func GetSuratKontrolBySEP(c *gin.Context) { - baseUrl := os.Getenv("BASEURL_BPJS_DEV") - endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + baseUrl := os.Getenv("BASEURL_BPJS") + endpoint := os.Getenv("SURAT_KONTROL_RS") param := os.Getenv("GET_SURAT_KONTROL_SEP") noSEP := c.Param("noSEP") url := baseUrl + endpoint + param + noSEP @@ -447,7 +447,10 @@ func GetDataSurKon(c *gin.Context) { data, err := suratkontrol.GetDataSuratKontrol() 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 @@ -533,7 +536,10 @@ func PrintSurKon(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 }