diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 7c0b97e..7f7c820 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -4,22 +4,42 @@ import ( "bridging-rssa/config" suratkontrol "bridging-rssa/models/bpjs/surat_kontrol" "errors" + "fmt" "log" "gorm.io/gorm" ) -func GetAdmission(idxdaftar string) (*suratkontrol.Addmission, error) { - var dataAdmission suratkontrol.Addmission - err := config.DB.Raw(`select "dokterpengirim","id_admission","dokter_penanggungjawab","nosep",mp."nama",mp."noktp",mp."jeniskelamin", -"masukrs", mp.noktp,ta."nomr" -from t_admission ta -join m_pasien mp on ta."nomr" = mp."nomr" -where id_admission = ?`, idxdaftar).Scan(&dataAdmission).Error +func GetPendaftaran(idxdaftar string) (*suratkontrol.Pendaftaran, error) { + var dataPendaftaran suratkontrol.Pendaftaran + err := config.DB.Raw(`select tp."kddokter",mp."nama",mp."noktp",mp."jeniskelamin", +mp.noktp,tp."nosep" ,tp."idxdaftar",tp."nomr" ,tp."jamreg" +from t_pendaftaran tp +join m_pasien mp on tp.nomr = mp.nomr +where tp.idxdaftar = ?`, idxdaftar).Scan(&dataPendaftaran).Error if err != nil { log.Println(err) return nil, nil } + log.Println(dataPendaftaran) + return &dataPendaftaran, nil +} + +func GetAdmission(idxdaftar string) (*suratkontrol.Addmission, error) { + var dataAdmission suratkontrol.Addmission + result := config.DB.Raw(`select "dokterpengirim","id_admission","dokter_penanggungjawab","nosep",mp."nama",mp."noktp",mp."jeniskelamin", + "masukrs", mp.noktp,ta."nomr" + from t_admission ta + join m_pasien mp on ta."nomr" = mp."nomr" + where id_admission = ?`, idxdaftar).Scan(&dataAdmission) + if result.Error != nil { + log.Println(result.Error) + return nil, result.Error + } + if result.RowsAffected == 0 { + // Data tidak ditemukan, kembalikan error khusus + return nil, fmt.Errorf("Data Tidak Ditemukan") + } log.Println(dataAdmission) return &dataAdmission, nil } diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index f1905f1..59a8b13 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -139,58 +139,104 @@ func InsertSuratkontrolNew(c *gin.Context) { return } uuid := uuid.New().String() - var kunjunganPasien *sk.KunjunganPasien kunjunganPasien, err = suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) if err.Error() == "Data Tidak Ditemukan" { - dataAdmission, erradmission := suratkontrol.GetAdmission(req.IDXDaftar) + dataAdmission, errAdmission := suratkontrol.GetAdmission(req.IDXDaftar) log.Println("kesini kagh", dataAdmission) - if erradmission != nil { - log.Println("masuk sini") - c.JSON(http.StatusCreated, &sk.MetadataString{ - Code: "201", - Message: "Pasien Tidak Ada Kunjungan", - }) - return - } - IdDokter, err := suratkontrol.Getdokter(dataAdmission.DokterPengirim) - log.Println("ID E DOKTER", IdDokter) - if err != nil { - log.Println(err) - c.JSON(http.StatusCreated, &sk.MetadataString{ - Code: "201", - Message: "Dokter tidak Ditemukan di satudata", - }) - return - } - layout := "2006-01-02 15:04:05" // sesuaikan format string input + log.Println("kesini kag error nya", errAdmission) + if errAdmission != nil { + log.Println("Admission error, coba ambil pendaftaran") + // Penambahan: fallback ke GetPendaftaran + dataPendaftaran, errPendaftaran := suratkontrol.GetPendaftaran(req.IDXDaftar) + if errPendaftaran != nil { + log.Println("masuk sini, pendaftaran juga error") + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: "Pasien Tidak Ada Kunjungan dan Tidak Ada Data Admission maupun Pendaftaran", + }) + return + } + log.Println("INI DATA PENDAFTARAN :", dataPendaftaran) + // Ambil dokter dari data pendaftaran + IdDokter, err := suratkontrol.Getdokter(dataPendaftaran.DokterPengirim) + log.Println("ID E DOKTER dari pendaftaran", IdDokter) + if err != nil { + log.Println(err) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: "Dokter tidak Ditemukan di satudata", + }) + return + } + layout := "2006-01-02 15:04:05" // sesuaikan format string input - masukrsTime, err := time.Parse(layout, dataAdmission.MasukRS) - Tanggalmasuk := masukrsTime.Format("2006-01-02") - Jammasuk := masukrsTime.Format("15:04:05") - insertKunjungan := &sk.InsertKunjunganPasien{ - ID: uuid, - IdxDaftar: dataAdmission.ID, - Nomr: dataAdmission.Nomr, - NamaLengkap: dataAdmission.NamaLengkap, - NIK: dataAdmission.NoKTP, - DPJP: IdDokter, - TanggalMasuk: Tanggalmasuk, - JamMasuk: Jammasuk, - DateCreated: timeNow, - } - log.Println("Insert Kunjungan:", insertKunjungan) - err = suratkontrol.InsertKunjunganPasien(insertKunjungan) - if err != nil { - log.Println(err) - c.JSON(http.StatusCreated, &sk.MetadataString{ - Code: "201", - Message: "Server Pasien Sedang Down", - }) - return + masukrsTime, err := time.Parse(layout, dataPendaftaran.MasukRS) + Tanggalmasuk := masukrsTime.Format("2006-01-02") + Jammasuk := masukrsTime.Format("15:04:05") + insertKunjungan := &sk.InsertKunjunganPasien{ + ID: uuid, + IdxDaftar: dataPendaftaran.ID, + Nomr: dataPendaftaran.Nomr, + NamaLengkap: dataPendaftaran.NamaLengkap, + NIK: dataPendaftaran.NoKTP, + DPJP: IdDokter, + TanggalMasuk: Tanggalmasuk, + JamMasuk: Jammasuk, + DateCreated: timeNow, + } + log.Println("Insert Kunjungan dari Pendaftaran:", insertKunjungan) + err = suratkontrol.InsertKunjunganPasien(insertKunjungan) + if err != nil { + log.Println(err) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: "Server Pasien Sedang Down", + }) + return + } + } else { + // Mapping data admission ke insert kunjungan (kode asli) + IdDokter, err := suratkontrol.Getdokter(dataAdmission.DokterPengirim) + log.Println("ID E DOKTER", IdDokter) + if err != nil { + log.Println(err) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: "Dokter tidak Ditemukan di satudata", + }) + return + } + layout := "2006-01-02 15:04:05" // sesuaikan format string input + + masukrsTime, err := time.Parse(layout, dataAdmission.MasukRS) + Tanggalmasuk := masukrsTime.Format("2006-01-02") + Jammasuk := masukrsTime.Format("15:04:05") + insertKunjungan := &sk.InsertKunjunganPasien{ + ID: uuid, + IdxDaftar: dataAdmission.ID, + Nomr: dataAdmission.Nomr, + NamaLengkap: dataAdmission.NamaLengkap, + NIK: dataAdmission.NoKTP, + DPJP: IdDokter, + TanggalMasuk: Tanggalmasuk, + JamMasuk: Jammasuk, + DateCreated: timeNow, + } + log.Println("Insert Kunjungan:", insertKunjungan) + err = suratkontrol.InsertKunjunganPasien(insertKunjungan) + if err != nil { + log.Println(err) + c.JSON(http.StatusCreated, &sk.MetadataString{ + Code: "201", + Message: "Server Pasien Sedang Down", + }) + return + } } + // Cek ulang kunjungan pasien setelah insert kunjunganPasien, err = suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) log.Println("Kunjungan Pasien ke 2:", kunjunganPasien) if err != nil { diff --git a/models/bpjs/surat_kontrol/kunjugan_pasien.go b/models/bpjs/surat_kontrol/kunjugan_pasien.go index e74659e..f73cbf0 100644 --- a/models/bpjs/surat_kontrol/kunjugan_pasien.go +++ b/models/bpjs/surat_kontrol/kunjugan_pasien.go @@ -34,6 +34,16 @@ type Addmission struct { MasukRS string `gorm:"column:masukrs" json:"masukrs"` } +type Pendaftaran struct { + ID int `gorm:"column:idxdaftar" json:"idxdaftar"` + Nomr string `gorm:"column:nomr" json:"nomr"` + DokterPengirim int `gorm:"column:kddokter" json:"kddokter"` + NoSEP string `gorm:"column:nosep" json:"nosep"` + NamaLengkap string `gorm:"column:nama" json:"namalengkap"` + NoKTP string `gorm:"column:noktp" json:"noktp"` + MasukRS string `gorm:"column:jamreg" json:"jamreg"` +} + type InsertKunjunganPasien struct { ID string `gorm:"column:id" json:"id"` IdxDaftar int `gorm:"column:IDXDAFTAR" json:"idxdaftar"`