患者直接加入项目过滤
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
b2022a912f
commit
32ca60156e
|
|
@ -757,15 +757,25 @@ namespace IRaCIS.Application.Services
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput<List<PatientJoinTrialSelectView>>> GetPatientJoinTrialInitSelectList(PatientJoinTrialInitQuery inQuery)
|
public async Task<IResponseOutput<List<PatientJoinTrialSelectView>>> GetPatientJoinTrialInitSelectList(PatientJoinTrialInitQuery inQuery)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
var currentUserHospitalGroupList = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).SelectMany(t => t.IdentityUserHospitalGroupList)
|
||||||
|
.Where(t => t.IsDisabled == false && t.HospitalGroup.IsEnable).Select(t => new { t.HospitalGroupId, t.IsManager }).ToList();
|
||||||
|
|
||||||
|
var hospitalGroupAdminIdList = currentUserHospitalGroupList.Where(t => t.IsManager).Select(t => t.HospitalGroupId).ToList();
|
||||||
|
var hospitalGroupIdList = currentUserHospitalGroupList.Select(t => t.HospitalGroupId).ToList();
|
||||||
|
|
||||||
//排除已参与的项目列表
|
//排除已参与的项目列表
|
||||||
var exceptQuery = _subjectPatientRepository.Where(t => t.PatientId == inQuery.PatientId).Select(t => t.Subject.TrialId);
|
var exceptQuery = _subjectPatientRepository.Where(t => t.PatientId == inQuery.PatientId).Select(t => t.Subject.TrialId);
|
||||||
|
|
||||||
//患者检查所属的课题组 要和项目进行匹配,否则过滤掉
|
//患者检查所属的课题组 要和项目进行匹配,否则过滤掉
|
||||||
var hospitalGroupIdList = await _studyRepository.Where(t => t.PatientId == inQuery.PatientId).SelectMany(t => t.HospitalGroupList).Select(t => t.HospitalGroupId).Distinct().ToListAsync();
|
var studyhospitalGroupIdList = await _studyRepository.Where(t => t.PatientId == inQuery.PatientId).SelectMany(t => t.HospitalGroupList).Select(t => t.HospitalGroupId).Distinct().ToListAsync();
|
||||||
|
|
||||||
var trialQuery = _trialRepository.Where(t => t.TrialStatusStr == StaticData.TrialState.TrialOngoing && hospitalGroupIdList.Contains(t.HospitalGroupId))
|
|
||||||
|
var intersection = hospitalGroupIdList.Intersect(studyhospitalGroupIdList).ToList();
|
||||||
|
|
||||||
|
var trialQuery = _trialRepository.Where(t => t.TrialStatusStr == StaticData.TrialState.TrialOngoing && intersection.Contains(t.HospitalGroupId))
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Filter), t => t.ResearchProgramNo.Contains(inQuery.Filter) || t.ExperimentName.Contains(inQuery.Filter))
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Filter), t => t.ResearchProgramNo.Contains(inQuery.Filter) || t.ExperimentName.Contains(inQuery.Filter))
|
||||||
.Where(t => t.TrialUserRoleList.Any(c => c.UserId == _userInfo.UserRoleId))
|
.Where(t => t.TrialUserRoleList.Any(c => c.UserId == _userInfo.UserRoleId) && t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId))
|
||||||
.Where(t => !exceptQuery.Any(c => c == t.Id)).ProjectTo<PatientJoinTrialSelectView>(_mapper.ConfigurationProvider);
|
.Where(t => !exceptQuery.Any(c => c == t.Id)).ProjectTo<PatientJoinTrialSelectView>(_mapper.ConfigurationProvider);
|
||||||
|
|
||||||
var list = trialQuery.ToList();
|
var list = trialQuery.ToList();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue