penambahan validasi kunjungan RJ

This commit is contained in:
2025-09-16 16:13:54 +07:00
parent cf5ce9b8b6
commit 3d96679987
3 changed files with 127 additions and 51 deletions

No files matched your search

@@ -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
}
+90 -44
View File
@@ -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 {
@@ -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"`