83 lines
3.6 KiB
Go
83 lines
3.6 KiB
Go
package simrs
|
|
|
|
import (
|
|
"api-lis/pkg/models/simrs/mikrobiologi"
|
|
"errors"
|
|
"log"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func (s *DatabaseService) GetDataMikroBiologi(req *mikrobiologi.RequestPasienMikrobiologi) ([]*mikrobiologi.DataPasienMikrobiologi, error) {
|
|
var dataPasien []*mikrobiologi.DataPasienMikrobiologi
|
|
query := `select tom."nomr" as nomr, tomm."nonota" as nonota, tom."idxdaftar" as idxdaftar, tom."tglorder" as tglorder, tom."nolab" as nolab, tom."rajal" as statusrajal, tom."aps" as statusaps,
|
|
mp."nama" as nama, mp."noktp" as noktp, mp."noktp_baru" as noktpbaru, mp."tempat" as tmptlahir, mp."tgllahir" as tgllahir, mp."jeniskelamin" as jeniskelamin, mp."alamat" as alamat,
|
|
mpa."nama" as namaaps, mpa."noktp" as noktpaps, mpa."tempat" as tmptlahiraps, mpa."tgllahir" as tgllahiraps, mpa."jeniskelamin" as jeniskelaminaps, mpa."alamat" as alamataps,
|
|
mr."nama" as namaruang, mr."kelas" as kelasruang,
|
|
trj."kodetarif" as kodetarifrajal,
|
|
trp."kodetarif" as kodetarifranap
|
|
from t_orderlabmikro tom
|
|
left join m_pasien mp on mp."nomr" = tom."nomr"
|
|
left join m_pasien_aps mpa on mpa."nomr" = tom."nomr"
|
|
left join m_ruang mr on mr."no" = tom."kdpoli"
|
|
left join t_orderlabmikro_main tomm on tomm."nolab" = tom."nolab"
|
|
left join t_billrajal trj on trj."nonota" = CAST(tomm."nonota" AS int8)
|
|
left join t_billranap trp on trp."nonota" = CAST(tomm."nonota" AS int8)
|
|
where tom."nomr" = ?
|
|
and tom."idxdaftar" = ?
|
|
group by (tom."nomr",tomm."nonota",tom."idxdaftar",tom."tglorder",tom."nolab",tom."rajal",tom."aps",mp."nama",mp."noktp",mp."noktp_baru",mp."tempat",mp."tgllahir",mp."jeniskelamin",mp."alamat",mpa."nama",mpa."noktp",
|
|
mpa."tempat",mpa."tgllahir",mpa."jeniskelamin",mpa."alamat",mr."nama",mr."kelas",trj."kodetarif",trp."kodetarif")
|
|
`
|
|
errQuery := s.DB.Debug().Raw(query, req.NOMR, req.IDXDaftar).Scan(&dataPasien).Error
|
|
if errQuery != nil {
|
|
if errors.Is(errQuery, gorm.ErrRecordNotFound) {
|
|
errMsg := errors.New("Data Tidak Ditemukan")
|
|
log.Println(errMsg)
|
|
return nil, errMsg
|
|
}
|
|
log.Println(errQuery)
|
|
return nil, errQuery
|
|
}
|
|
return dataPasien, nil
|
|
}
|
|
|
|
func (s *DatabaseService) GetDataMikroBiologiByNoMR(req *mikrobiologi.RequestPasienMikrobiologi) ([]*mikrobiologi.OrderLabMikroMain, error) {
|
|
var data []*mikrobiologi.OrderLabMikroMain
|
|
query := `select * from "t_orderlabmikro_main" where "nomr" = ? and "idxdaftar" = ? and "nolab" = ?`
|
|
errSelect := s.DB.Debug().Raw(query, req.NOMR, req.IDXDaftar, req.NoLab).Scan(&data).Error
|
|
if errSelect != nil {
|
|
if errors.Is(errSelect, gorm.ErrRecordNotFound) {
|
|
errMsg := errors.New("Data Tidak Ditemukan")
|
|
log.Println(errMsg)
|
|
return nil, errMsg
|
|
}
|
|
log.Println(errSelect)
|
|
return nil, errSelect
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
func (s *DatabaseService) GetDataLabMikro(noLab string) ([]*mikrobiologi.OrderLabMikro, bool, error) {
|
|
var dataMikro []*mikrobiologi.OrderLabMikro
|
|
querySelect := `select olm."idxordermikro", olm."jenis_pemeriksaan"
|
|
from t_orderlabmikro olm
|
|
left join "m_form_lab" fl on olm."idxform" = fl."form_id"
|
|
where olm."nolab" = ? and fl."sub_kelompok" = 'Jenis Pemeriksaan'`
|
|
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
|
|
if errUpdate != nil {
|
|
log.Println(errUpdate)
|
|
return errUpdate
|
|
}
|
|
return nil
|
|
}
|