diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 678432512..063ab32fc 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -18220,7 +18220,7 @@
修改检查课题组 1是添加 2是删除
-
+
diff --git a/IRaCIS.Core.Application/Service/Management/DTO/UserModel.cs b/IRaCIS.Core.Application/Service/Management/DTO/UserModel.cs
index 2ed54fae2..72ddde9ca 100644
--- a/IRaCIS.Core.Application/Service/Management/DTO/UserModel.cs
+++ b/IRaCIS.Core.Application/Service/Management/DTO/UserModel.cs
@@ -240,6 +240,8 @@ namespace IRaCIS.Application.Contracts
public class UserCommand : UserInfo
{
+ public Guid? TrialId { get; set; }
+
public Guid? Id { get; set; }
public List UserRoleList { get; set; }
diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs
index 8a3024b99..0dfd535de 100644
--- a/IRaCIS.Core.Application/Service/Management/UserService.cs
+++ b/IRaCIS.Core.Application/Service/Management/UserService.cs
@@ -287,7 +287,7 @@ namespace IRaCIS.Core.Application.Service
public async Task ResetPassword(Guid identityUserId)
{
- var hospitalInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Hospital, _ => CacheHelper.GetHospitalCode(_hirHospitalRepository), TimeSpan.FromDays(7));
+ var hospitalInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Hospital, _ => CacheHelper.GetHospitalCode(_hirHospitalRepository), TimeSpan.FromDays(7));
//var pwd = IRCEmailPasswordHelper.GenerateRandomPassword(10);
@@ -511,13 +511,19 @@ namespace IRaCIS.Core.Application.Service
[UnitOfWork]
public async Task> AddUser(UserCommand userAddModel)
{
- var hospitalInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Hospital, _ => CacheHelper.GetHospitalCode(_hirHospitalRepository), TimeSpan.FromDays(7));
+ var hospitalInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Hospital, _ => CacheHelper.GetHospitalCode(_hirHospitalRepository), TimeSpan.FromDays(7));
if (userAddModel.UserName.IsNotNullOrEmpty())
{
await VerifyUserNameAsync(null, userAddModel.UserName);
}
+ else
+ {
+ var hospitalGroupId = _trialRepository.Where(t => t.Id == userAddModel.TrialId).Select(t => t.HospitalGroupId).FirstOrDefault();
+
+ userAddModel.HospitalGroupIdList = new List { hospitalGroupId };
+ }
await VerifyUserEmailAsync(null, userAddModel.EMail);
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialViewModel.cs
index f4930a553..d5152d14e 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialViewModel.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialViewModel.cs
@@ -57,7 +57,7 @@ namespace IRaCIS.Application.Contracts
public string AttendedReviewerTypes { get; set; } = string.Empty;
-
+ public Guid HospitalGroupId { get; set; }
}
diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs
index 5fb15245c..423cd4e17 100644
--- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs
@@ -708,7 +708,10 @@ namespace IRaCIS.Application.Services
//排除已参与的项目列表
var exceptQuery = _subjectPatientRepository.Where(t => t.PatientId == inQuery.PatientId).Select(t => t.Subject.TrialId);
- var trialQuery = _trialRepository.Where(t => t.TrialStatusStr == StaticData.TrialState.TrialOngoing)
+ //患者检查所属的课题组 要和项目进行匹配,否则过滤掉
+ var hospitalGroupIdList = 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))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Filter), t => t.ResearchProgramNo.Contains(inQuery.Filter) || t.ExperimentName.Contains(inQuery.Filter))
.Where(t => t.TrialUserList.Any(c => c.UserId == _userInfo.UserRoleId))
.Where(t => !exceptQuery.Any(c => c == t.Id)).ProjectTo(_mapper.ConfigurationProvider);
@@ -797,7 +800,7 @@ namespace IRaCIS.Application.Services
///
/// 修改检查课题组 1是添加 2是删除
///
- ///
+ ///
///
[HttpPost]
public async Task ModifySCPStudyHospitalGroup(SCPStudyHospitalGroupCommand incommand)
@@ -1032,7 +1035,10 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task>> GetPatientInitList(PatientQuery inQuery)
{
- var query = _patientRepository
+ //该患者要匹配该项目的课题组
+ var hospitalGroupId = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => t.HospitalGroupId).FirstOrDefault();
+
+ var query = _patientRepository.Where(t => t.SCPStudyList.Any(c => c.HospitalGroupList.Any(k => k.HospitalGroupId == hospitalGroupId)))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.PatientIdStr), t => t.PatientIdStr.Contains(inQuery.PatientIdStr))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.PatientName), t => t.PatientName.Contains(inQuery.PatientName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.CallingAE), t => t.SCPStudyList.Any(t => t.CallingAE == inQuery.CallingAE))
@@ -2017,7 +2023,11 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task> GetVisitPatientStudyList(PatientStudyQuery inQuery)
{
- var patientQuery = from scpStudy in _studyRepository
+ var hospitalGroupId = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => t.HospitalGroupId).FirstOrDefault();
+
+ //检查要匹配该项目的课题组
+
+ var patientQuery = from scpStudy in _studyRepository.Where(t => t.HospitalGroupList.Any(c => c.HospitalGroupId == hospitalGroupId))
.Where(t => inQuery.PatientIdList.Contains(t.PatientId))
.WhereIf(inQuery.EarliestStudyTime != null, t => t.StudyTime >= inQuery.EarliestStudyTime)
.WhereIf(inQuery.LatestStudyTime != null, t => t.StudyTime <= inQuery.LatestStudyTime)