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", 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" = '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 }