From dbf53008ea0b8a37fec8c9c0fc6e2fae54b6a346 Mon Sep 17 00:00:00 2001 From: ahdan15 Date: Thu, 5 Mar 2026 09:45:31 +0700 Subject: [PATCH] penambahan cara pengambilan --- pkg/database/simrs/mikrobiologi.go | 13 ++++ pkg/handlers/mikrobiologi/mikrobiologi.go | 78 ++++++++++++------- pkg/models/simrs/mikrobiologi/mikrobiologi.go | 8 ++ 3 files changed, 69 insertions(+), 30 deletions(-) diff --git a/pkg/database/simrs/mikrobiologi.go b/pkg/database/simrs/mikrobiologi.go index aa88e59..99ad282 100644 --- a/pkg/database/simrs/mikrobiologi.go +++ b/pkg/database/simrs/mikrobiologi.go @@ -71,6 +71,19 @@ func (s *DatabaseService) GetDataLabMikro(noLab string) ([]*mikrobiologi.OrderLa return dataMikro, true, nil } +func (s *DatabaseService) GetDataLabMikroPengambilan(noLab string) ([]*mikrobiologi.OrderLabMikropengambilan, bool, error) { + var dataMikro []*mikrobiologi.OrderLabMikropengambilan + querySelect := `select olm."idxordermikro", olm."jenis_pemeriksaan", fl."nama_field" , fl."jenis_kelompok",fl."kode_tarif" + from t_orderlabmikro olm + left join "m_form_lab" fl on olm."idxform" = fl."form_id" + where olm."nolab" = ? and fl."sub_kelompok" = 'Cara Pengambilan Sampel'` + errSelect := s.DB.Debug().Raw(querySelect, noLab).Scan(&dataMikro).Error + if errSelect != nil { + log.Println(errSelect) + return nil, false, errSelect + } + return dataMikro, true, nil +} func (s *DatabaseService) UpdateLabMikro(req *mikrobiologi.ReqUpdateLisMikro) error { queryUpdate := `update "t_orderlabmikro" set "no_lokal" = ? where "idxordermikro" = ?` errUpdate := s.DB.Debug().Exec(queryUpdate, req.NoLokal, req.IdxOrderMikro).Error diff --git a/pkg/handlers/mikrobiologi/mikrobiologi.go b/pkg/handlers/mikrobiologi/mikrobiologi.go index 95af4be..9b2750c 100644 --- a/pkg/handlers/mikrobiologi/mikrobiologi.go +++ b/pkg/handlers/mikrobiologi/mikrobiologi.go @@ -93,6 +93,19 @@ func SendDataLISMikro(c *gin.Context) { log.Println("Data bukan pemeriksaan") continue } + dataLabMikroPengambilan, exist, errPengambilan := simrsDB.GetDataLabMikroPengambilan(dataMikroMain.NoLab) + if errPengambilan != nil { + log.Println(errDiagnosa) + c.JSON(http.StatusBadRequest, gin.H{ + "message": errDiagnosa, + }) + return + } + log.Println(dataLabMikroPengambilan) + var pengambilan string + if len(dataLabMikroPengambilan) > 0 { + pengambilan = dataLabMikroPengambilan[0].NamaField + } poli, errDokter := simrsDB.GetNamaRuang(dataMikroMain.KodePoli) if errDokter != nil { @@ -119,47 +132,41 @@ func SendDataLISMikro(c *gin.Context) { "message": errDiagnosa, }) } + log.Println("masuk sini kah") + log.Printf("dataLabMikro length: %d", len(dataLabMikro)) + log.Printf("dataLabMikro content: %+v", dataLabMikro) var dokterPengirim string + if dataMikroMain.DrOrder != "0" && dataMikroMain.DrOrder != "" { dokterPengirim, errDokter = simrsDB.GetNamaDokter(dataMikroMain.DrOrder) - if errDokter != nil { - log.Println(errDokter) - c.JSON(http.StatusBadRequest, gin.H{ - "message": errDokter, - }) - return + log.Println("Failed to get dokter from DrOrder:", errDokter) + dokterPengirim = "" } - - } else if dataMikroMain.DokterPengirim != "" && dataMikroMain.DokterPengirim != "0" { + } + if dokterPengirim == "" && dataMikroMain.DokterPengirim != "" && dataMikroMain.DokterPengirim != "0" { dokterPengirim, errDokter = simrsDB.GetNamaDokter(dataMikroMain.DokterPengirim) - if errDokter != nil { - log.Println(errDokter) - c.JSON(http.StatusBadRequest, gin.H{ - "message": errDokter, - }) - return + log.Println("Failed to get dokter from DokterPengirim:", errDokter) + dokterPengirim = "" } - - } else if dataMikroMain.DokterLab1 != "0" && dataMikroMain.DokterLab1 != "" { - dokterPengirim, errDokter = simrsDB.GetNamaDokter(dataMikroMain.DokterLab1) - - if errDokter != nil { - log.Println(errDokter) - c.JSON(http.StatusBadRequest, gin.H{ - "message": errDokter, - }) - return - } - } else if dataMikroMain.Pengirim != "" && dataMikroMain.Pengirim != "0" { - dokterPengirim = dataMikroMain.Pengirim - } else { - dokterPengirim = "" } + if dokterPengirim == "" && dataMikroMain.DokterLab1 != "0" && dataMikroMain.DokterLab1 != "" { + dokterPengirim, errDokter = simrsDB.GetNamaDokter(dataMikroMain.DokterLab1) + if errDokter != nil { + log.Println("Failed to get dokter from DokterLab1:", errDokter) + dokterPengirim = "" + } + } + + if dokterPengirim == "" && dataMikroMain.Pengirim != "" && dataMikroMain.Pengirim != "0" { + dokterPengirim = dataMikroMain.Pengirim + } + log.Println("Akan masuk loop dataLabMikro...") for _, value := range dataLabMikro { + log.Println("Masuk loop, value:", value) dataLisMikro = &mikrobiologi.RequestLISMikro{ NoRM: dataMikroMain.NoMR, Nama: dataPasien.Nama, @@ -179,9 +186,11 @@ func SendDataLISMikro(c *gin.Context) { Klinis: diagnosa, KodeSpesimen: value.NamaField, NamaSpesimen: value.JenisKelompok, - Pengambilan: "", + Pengambilan: pengambilan, } + log.Println("Sebelum masuk LIS", dataLisMikro) + resMikro, errMikro := SendLisMikro(dataLisMikro) if errMikro != nil { log.Println(errMikro) @@ -223,6 +232,15 @@ func SendDataLISMikro(c *gin.Context) { }) } } + + if len(responseMikro) == 0 { + log.Println("Tidak ada data lab mikro yang diproses") + c.JSON(http.StatusCreated, gin.H{ + "message": "Tidak ada data pemeriksaan mikrobiologi ditemukan", + "data": []interface{}{}, + }) + return + } log.Println("RESPONSE", responseMikro) c.JSON(http.StatusOK, responseMikro) } diff --git a/pkg/models/simrs/mikrobiologi/mikrobiologi.go b/pkg/models/simrs/mikrobiologi/mikrobiologi.go index 000beaf..91c407c 100644 --- a/pkg/models/simrs/mikrobiologi/mikrobiologi.go +++ b/pkg/models/simrs/mikrobiologi/mikrobiologi.go @@ -137,6 +137,14 @@ type OrderLabMikro struct { KodeTarif string `gorm:"column:kode_tarif" json:"kode_tarif"` } +type OrderLabMikropengambilan struct { + IdxOrderMikro string `gorm:"column:idxordermikro" json:"idxordermikro"` + NamaPemeriksaan string `gorm:"column:nama_pemeriksaan" json:"nama_pemeriksaan"` + NamaField string `gorm:"column:nama_field" json:"nama_field"` + JenisKelompok string `gorm:"column:jenis_kelompok" json:"jenis_kelompok"` + KodeTarif string `gorm:"column:kode_tarif" json:"kode_tarif"` +} + type Response struct { Status string `json:"status"` Message string `json:"message"`