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