From 842a106e766f1ed1a8a928d07ecdf283f0fa55a12ffb05fd546bfe343898b7cb Mon Sep 17 00:00:00 2001 From: ahdan15 Date: Tue, 12 Aug 2025 14:59:47 +0700 Subject: [PATCH] penambahan validasi --- .../satu_data/surat_kontrol/surat_kontrol.go | 2 +- handlers/bpjs/surat_kontrol/surat_kontrol.go | 186 +++++++++++++++++- models/bpjs/surat_kontrol/surat_kontrol.go | 5 +- 3 files changed, 185 insertions(+), 8 deletions(-) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index c072bb1..db3c899 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -442,7 +442,7 @@ func GetIdDokterByHFIS(KodeHFIS string) (string, error) { func GetUserCreated(user string) (*suratkontrol.Created, error) { var UserCreated *suratkontrol.Created - err := config.SatuDataDB.Raw(`select "User_created_surat_kontrol","date_created" from data_surat_kontrol where "id" = ? `, user).Scan(&UserCreated).Error + err := config.SatuDataDB.Raw(`select "User_created_surat_kontrol","date_created", "Tanggal_rencana_kontrol" from data_surat_kontrol where "id" = ? `, user).Scan(&UserCreated).Error if err != nil { return nil, err } diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 64e98c5..f55c0d0 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -202,6 +202,14 @@ func InsertSuratkontrolNew(c *gin.Context) { }) return } + + if res.MetaData.Code == "500" { + c.JSON(http.StatusInternalServerError, &sk.MetadataString{ + Code: "500", + Message: "Server Bpjs Down", + }) + return + } log.Println(err) bpjs.HandleResponse(c, res) return @@ -635,9 +643,12 @@ func InsertSuratKontrol(c *gin.Context) { DPJPSurKon: req.IDDokter, StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, + KodeIcd: kunjunganPasien.DiagnosisPrimerUtama, + Diagnosa: kunjunganPasien.DisplayDiagnosisPrimerUtama, TipeSurKon: req.TipeSurKon, TipeRawat: req.TipeRawat, } + logTimeStart := time.Now().Format("2006-01-02 15:04:05") err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { log.Println(err) @@ -649,7 +660,46 @@ func InsertSuratKontrol(c *gin.Context) { }) return } + reqJsoninternal, err := json.Marshal(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, + }) + return + } + log.Println("reqJson : ", string(reqJsoninternal)) + logTimeEnd := time.Now().Format("2006-01-02 15:04:05") + reqInsertLog := &logapi.DataLogAPI{ + ID: uuid, + DateCreated: logTimeEnd, + UserAgent: req.User, + IP: c.ClientIP(), + Parameter: "Surat Kontrol Internal", + Header: headerString, + Method: "POST", + Url: url, + Request: reqJsoninternal, + Respon: reqJsoninternal, + ResponCode: "200", + ResponTimeStart: logTimeStart, + ResponTimeEnd: logTimeEnd, + Comment: "Berhasil Insert SuratKontrol", + } + + err = log_api.InsertLogAPI(reqInsertLog) + if err != nil { + log.Println(err) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: err.Error(), + }) + return + } err = suratkontrol.UpdateKunjunganPasien(req) if err != nil { log.Println(err) @@ -764,6 +814,7 @@ func InsertSuratKontrol(c *gin.Context) { KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: idRuangan, DPJPSurKon: req.IDDokter, + NomorKartu: res.Response.NoKartu, StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, TipeSurKon: req.TipeSurKon, @@ -909,6 +960,29 @@ func UpdateSuratKontrol(c *gin.Context) { return } + UserCreated, err := suratkontrol.GetUserCreated(req.IDSurKon) + if err != nil { + log.Println(err) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: err.Error(), + }) + } + + dateRencanaSurkon, _ := time.Parse(time.RFC3339, UserCreated.TanggalKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") + log.Println("tanggal database : ", dateRencanaSurkonString) + log.Println("tanggal req:", req.TglRencanaKontrol) + if req.TglRencanaKontrol == dateRencanaSurkonString { + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: "Tanggal tidak boleh sama ! silahkan pilih tanggal yang lain", + }) + return + } + dateCetakSurkon, _ := time.Parse(time.RFC3339, UserCreated.DataCreate) + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") + uuid := uuid.New().String() if req.TipeSurKon != "1" { dataSurkon, err := suratkontrol.GetNomorSurKon(kunjunganPasien.ID) @@ -923,15 +997,19 @@ func UpdateSuratKontrol(c *gin.Context) { reqInsert := &sk.DataSuratKontrol{ ID: uuid, - DateCreated: timeNow, + DateCreated: dateCetakSurkonString, + DateUpdated: timeNow, TglCetakSurKon: timeNow, TglRencanaKontrol: req.TglRencanaKontrol, NomorSurKon: dataSurkon, //TODO How to get Nomor SurKon KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, DPJPSurKon: req.IDDokter, + KodeIcd: kunjunganPasien.DiagnosisPrimerUtama, + Diagnosa: kunjunganPasien.DisplayDiagnosisPrimerUtama, StatusSurKon: 1, // First Insert status always set to 1 TipeSurKon: req.TipeSurKon, + UserCreated: UserCreated.UserCreate, UserUpdatedSurKon: req.User, TipeRawat: req.TipeRawat, } @@ -951,6 +1029,8 @@ func UpdateSuratKontrol(c *gin.Context) { }) return } + + logTimeStart := time.Now().Format("2006-01-02 15:04:05") err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { log.Println(err) @@ -960,6 +1040,46 @@ func UpdateSuratKontrol(c *gin.Context) { }) return } + logTimeEnd := time.Now().Format("2006-01-02 15:04:05") + reqJsoninternal, err := json.Marshal(reqInsert) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, + }) + return + } + log.Println("reqJson : ", string(reqJsoninternal)) + + reqInsertLog := &logapi.DataLogAPI{ + ID: uuid, + DateCreated: logTimeEnd, + UserAgent: req.User, + IP: c.ClientIP(), + Parameter: "Surat Kontrol Internal", + Header: "", + Method: "PUT", + Url: url, + Request: reqJsoninternal, + Respon: reqJsoninternal, + ResponCode: "200", + ResponTimeStart: logTimeStart, + ResponTimeEnd: logTimeEnd, + Comment: "Berhasil Update SuratKontrol", + } + + err = log_api.InsertLogAPI(reqInsertLog) + if err != nil { + log.Println(err) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: err.Error(), + }) + return + } c.JSON(http.StatusOK, &sk.MetadataString{ Code: "200", Message: "Berhasil Update Surat Kontrol", @@ -1089,15 +1209,18 @@ func UpdateSuratKontrol(c *gin.Context) { reqInsert := &sk.DataSuratKontrol{ ID: uuid, - DateCreated: timeNow, + DateCreated: dateCetakSurkonString, + DateUpdated: timeNow, TglCetakSurKon: timeNow, TglRencanaKontrol: res.Response.TglRencanaKontrol, NomorSurKon: res.Response.NoSuratKontrol, KunjunganPasien: kunjunganPasien.ID, RuanganSurKon: kunjunganPasien.Ruangan, + NomorKartu: res.Response.NoKartu, DPJPSurKon: req.IDDokter, StatusSurKon: 1, // Insert status always set to 1 TipeSurKon: "1", + UserCreated: UserCreated.UserCreate, UserUpdatedSurKon: req.User, KodeIcd: kodeICD, Diagnosa: diagnosa, @@ -1221,8 +1344,23 @@ func UpdateSuratKontrolnew(c *gin.Context) { Message: err.Error(), }) } + dateRencanaSurkon, _ := time.Parse(time.RFC3339, UserCreated.TanggalKontrol) + dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") + log.Println("tanggal database : ", dateRencanaSurkonString) + log.Println("tanggal req:", req.TglRencanaKontrol) + if req.TglRencanaKontrol == dateRencanaSurkonString { + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: "Tanggal tidak boleh sama !silahkan pilih tanggal yang lain", + }) + return + } dateCetakSurkon, _ := time.Parse(time.RFC3339, UserCreated.DataCreate) - dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") + dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02 15:04:05") + + if strings.HasPrefix(strings.ToUpper(req.NoSuratKontrol), "SI") { + req.TipeSurKon = "1" + } uuid := uuid.New().String() if req.TipeSurKon == "2" { @@ -1502,7 +1640,7 @@ func UpdateSuratKontrolnew(c *gin.Context) { IP: c.ClientIP(), Parameter: "Surat Kontrol Internal", Header: headerString, - Method: "POST", + Method: "PUT", Url: url, Request: reqJsoninternal, Respon: reqJsoninternal, @@ -1702,13 +1840,14 @@ func DeleteSuratKontrolNew(c *gin.Context) { } bpjs.HandleResponse(c, res) } else { + uuid := uuid.New().String() reqUpdate := &sk.DataSuratKontrol{ DateUpdated: timeNow, ID: req.IDDataSurKon, StatusSurKon: 0, UserUpdatedSurKon: req.User, } - + logTimeStart := time.Now().Format("2006-01-02 15:04:05") err = suratkontrol.UpdateDataSuratKontrol(reqUpdate) if err != nil { log.Println(err) @@ -1718,6 +1857,43 @@ func DeleteSuratKontrolNew(c *gin.Context) { }) return } + reqJsoninternal, err := json.Marshal(reqUpdate) + if err != nil { + log.Println(err) + c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ + MetaData: sk.MetadataString{ + Code: "203", + Message: err.Error(), + }, + }) + return + } + logTimeEnd := time.Now().Format("2006-01-02 15:04:05") + reqInsertLog := &logapi.DataLogAPI{ + ID: uuid, + DateCreated: logTimeEnd, + UserAgent: req.User, + IP: c.ClientIP(), + Parameter: "Surat Kontrol Internal", + Header: headerString, + Method: "DELETE", + Url: url, + Request: reqJsoninternal, + Respon: reqJsoninternal, + ResponCode: "200", + ResponTimeStart: logTimeStart, + ResponTimeEnd: logTimeEnd, + Comment: "Berhasil Delete Surat Kontrol", + } + + err = log_api.InsertLogAPI(reqInsertLog) + if err != nil { + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: err.Error(), + }) + return + } res := &sk.MetadataString{ Code: "200", Message: "Berhasil Hapus Data", diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index b4787fe..d32901e 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -436,8 +436,9 @@ type ResponseDataSPRI struct { } type Created struct { - UserCreate string `json:"User_created_surat_kontrol"` - DataCreate string `json:"date_created"` + UserCreate string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` + DataCreate string `gorm:"column:date_created" json:"date_created"` + TanggalKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` } type Parse struct {