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 {