penambahan cara pengambilan

This commit is contained in:
2026-03-05 09:45:31 +07:00
parent 7e2996e5a7
commit dbf53008ea
3 changed files with 69 additions and 30 deletions
+13
View File
@@ -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
+48 -30
View File
@@ -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)
}
@@ -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"`