Merge branch 'Test_HIR_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_HIR_Net8
continuous-integration/drone/push Build is failing Details

Test_HIR_Net8
he 2025-09-09 18:12:17 +08:00
commit 4c3a96a0f6
5 changed files with 109 additions and 21 deletions

View File

@ -18607,7 +18607,7 @@
<param name="inQuery"></param> <param name="inQuery"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Application.Services.PatientService.GetCFindStudyList(IRaCIS.Application.Contracts.SCUQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomAE},Microsoft.Extensions.Logging.ILogger{IRaCIS.Application.Services.PatientService})"> <member name="M:IRaCIS.Application.Services.PatientService.GetCFindStudyList(IRaCIS.Application.Contracts.SCUQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomAE},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.IdentityUser},Microsoft.Extensions.Logging.ILogger{IRaCIS.Application.Services.PatientService})">
<summary> <summary>
获取 检查列表 获取 检查列表
</summary> </summary>

View File

@ -461,7 +461,13 @@ namespace IRaCIS.Core.Application.Service
public async Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO inQuery) public async Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO inQuery)
{ {
var isGAGroupAdmin = _userInfo.HospitalGroupAdminIdList.Any(); 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 isGAGroupAdmin = hospitalGroupAdminIdList.Any();
var userQueryable = _identityUserRepository.Where(x => x.UserRoleList.Any(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)) var userQueryable = _identityUserRepository.Where(x => x.UserRoleList.Any(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName))
@ -486,7 +492,7 @@ namespace IRaCIS.Core.Application.Service
//GA 只能看有该课题组的用户并且不是admin oa //GA 只能看有该课题组的用户并且不是admin oa
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA, t => !t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.Admin || t.UserTypeEnum == UserTypeEnum.SuperAdmin || t.UserTypeEnum == UserTypeEnum.OA) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA, t => !t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.Admin || t.UserTypeEnum == UserTypeEnum.SuperAdmin || t.UserTypeEnum == UserTypeEnum.OA)
&& t.IdentityUserHospitalGroupList.Any(t => isGAGroupAdmin ? _userInfo.HospitalGroupAdminIdList.Contains(t.HospitalGroupId) : false)) && t.IdentityUserHospitalGroupList.Any(t => isGAGroupAdmin ? hospitalGroupAdminIdList.Contains(t.HospitalGroupId) : false))
.ProjectTo<UserListDTO>(_mapper.ConfigurationProvider); .ProjectTo<UserListDTO>(_mapper.ConfigurationProvider);
return await userQueryable.ToPagedListAsync(inQuery); return await userQueryable.ToPagedListAsync(inQuery);

View File

@ -17,6 +17,7 @@ namespace IRaCIS.Core.Application.Service
public class TrialService(IRepository<Trial> _trialRepository, public class TrialService(IRepository<Trial> _trialRepository,
IRepository<TrialIdentityUser> _trialIdentityUserRepository, IRepository<TrialIdentityUser> _trialIdentityUserRepository,
IRepository<IdentityUser> _identityUserRepository,
IRepository<CRO> _croRepository, IRepository<CRO> _croRepository,
IRepository<EnrollDetail> _enrollDetailRepository, IRepository<EnrollDetail> _enrollDetailRepository,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
@ -102,6 +103,13 @@ namespace IRaCIS.Core.Application.Service
//过滤废除的项目 //过滤废除的项目
public async Task<List<TrialSelectDTO>> GetTrialSelect() public async Task<List<TrialSelectDTO>> GetTrialSelect()
{ {
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();
// SuperAdmin Admin OP OA // SuperAdmin Admin OP OA
List<int> sap = new List<int>() { (int)UserTypeEnum.SuperAdmin, (int)UserTypeEnum.Admin, (int)UserTypeEnum.OP, (int)UserTypeEnum.OA }; List<int> sap = new List<int>() { (int)UserTypeEnum.SuperAdmin, (int)UserTypeEnum.Admin, (int)UserTypeEnum.OP, (int)UserTypeEnum.OA };
@ -137,7 +145,7 @@ namespace IRaCIS.Core.Application.Service
&& t.IsDeleted == false) && t.IsDeleted == false)
// ga // ga
.WhereIf(ga.Contains(_userInfo.UserTypeEnumInt), t => _userInfo.HospitalGroupIdList.Contains(t.HospitalGroupId)&& trialState.Contains(t.TrialStatusStr)) .WhereIf(ga.Contains(_userInfo.UserTypeEnumInt) && hospitalGroupAdminIdList.Any(), t => hospitalGroupAdminIdList.Contains(t.HospitalGroupId) && trialState.Contains(t.TrialStatusStr))
// QA EA // QA EA
.WhereIf(qAEq.Contains(_userInfo.UserTypeEnumInt), t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.IsDeleted == false .WhereIf(qAEq.Contains(_userInfo.UserTypeEnumInt), t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.IsDeleted == false

View File

@ -43,14 +43,26 @@ public class HospitalGroupService(IRepository<HospitalGroup> _hospitalGroupRepos
public async Task<List<HospitalGroupView>> GetHospitalGroupList(HospitalGroupQuery inQuery) public async Task<List<HospitalGroupView>> GetHospitalGroupList(HospitalGroupQuery inQuery)
{ {
var currentUserHospitalGroupIdList = new List<Guid>();
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
{
currentUserHospitalGroupIdList = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).SelectMany(t => t.IdentityUserHospitalGroupList)
.Where(t => t.IsDisabled == false && t.HospitalGroup.IsEnable).Select(t => t.HospitalGroupId).ToList();
}
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA)
{
currentUserHospitalGroupIdList = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).SelectMany(t => t.IdentityUserHospitalGroupList)
.Where(t => t.IsDisabled == false && t.HospitalGroup.IsEnable && t.IsManager).Select(t => t.HospitalGroupId).ToList();
}
var hospitalGroupQueryable = _hospitalGroupRepository.Where(t => t.IsEnable == true)//都是查询启用的 var hospitalGroupQueryable = _hospitalGroupRepository.Where(t => t.IsEnable == true)//都是查询启用的
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Code), t => t.Code.Contains(inQuery.Code)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Code), t => t.Code.Contains(inQuery.Code))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.Name.Contains(inQuery.Name)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.Name.Contains(inQuery.Name))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName))
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager, t => _userInfo.HospitalGroupIdList.Contains(t.Id)) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA, t => currentUserHospitalGroupIdList.Contains(t.Id))
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA, t => _userInfo.HospitalGroupAdminIdList.Contains(t.Id))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.CallingAE), t => t.CallingAE.Contains(inQuery.CallingAE)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.CallingAE), t => t.CallingAE.Contains(inQuery.CallingAE))
//.WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable) //.WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable)
.ProjectTo<HospitalGroupView>(_mapper.ConfigurationProvider); .ProjectTo<HospitalGroupView>(_mapper.ConfigurationProvider);

View File

@ -51,6 +51,7 @@ namespace IRaCIS.Application.Services
[ApiExplorerSettings(GroupName = "HIR")] [ApiExplorerSettings(GroupName = "HIR")]
public class PatientService(IRepository<SCPStudySubjectVisit> _studySubjectVisitRepository, public class PatientService(IRepository<SCPStudySubjectVisit> _studySubjectVisitRepository,
IRepository<TrialIdentityUser> _trialIdentityUserRepository, IRepository<TrialIdentityUser> _trialIdentityUserRepository,
IRepository<IdentityUser> _identityUserRepository,
IRepository<SubjectPatient> _subjectPatientRepository, IRepository<SCPStudyHospitalGroup> _SCPStudyHospitalGroupRepository, IRepository<SubjectPatient> _subjectPatientRepository, IRepository<SCPStudyHospitalGroup> _SCPStudyHospitalGroupRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<CmoveStudy> _cmoveStudyRepository, IRepository<CmoveStudy> _cmoveStudyRepository,
@ -201,6 +202,14 @@ namespace IRaCIS.Application.Services
{ {
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 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 trialQuery = _trialRepository var trialQuery = _trialRepository
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ResearchProgramNo), t => t.ResearchProgramNo.Contains(inQuery.ResearchProgramNo)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ResearchProgramNo), t => t.ResearchProgramNo.Contains(inQuery.ResearchProgramNo))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), t => t.ExperimentName.Contains(inQuery.ExperimentName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), t => t.ExperimentName.Contains(inQuery.ExperimentName))
@ -211,10 +220,10 @@ namespace IRaCIS.Application.Services
//过滤医院,切换会有问题 //过滤医院,切换会有问题
.Where(t => t.HospitalId == hospitalInfo.Id) .Where(t => t.HospitalId == hospitalInfo.Id)
//GA 要过滤课题组 //GA 要过滤课题组
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA && _userInfo.HospitalGroupAdminIdList.Any(), t => _userInfo.HospitalGroupAdminIdList.Contains(t.HospitalGroupId)) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA && hospitalGroupAdminIdList.Any(), t => hospitalGroupAdminIdList.Contains(t.HospitalGroupId))
.WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OA .WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OA
&& !(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA && _userInfo.HospitalGroupAdminIdList.Any()) && !(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA && hospitalGroupAdminIdList.Any())
, t => t.TrialUserRoleList.Any(t => t.UserId == _userInfo.UserRoleId) && t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId) && _userInfo.HospitalGroupIdList.Contains(t.HospitalGroupId)) , t => t.TrialUserRoleList.Any(t => t.UserId == _userInfo.UserRoleId) && t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId) && hospitalGroupIdList.Contains(t.HospitalGroupId))
.ProjectTo<NewTrialView>(_mapper.ConfigurationProvider); .ProjectTo<NewTrialView>(_mapper.ConfigurationProvider);
@ -624,7 +633,14 @@ namespace IRaCIS.Application.Services
var isAdminOrOA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.Admin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin; var isAdminOrOA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.Admin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin;
var currentUserHospitalGroupIdList = _userInfo.HospitalGroupList.Select(t => t.Id).ToList();
var currentUserHospitalGroupIdList = new List<Guid>();
if (!isAdminOrOA)
{
currentUserHospitalGroupIdList = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).SelectMany(t => t.IdentityUserHospitalGroupList)
.Where(t => t.IsDisabled == false && t.HospitalGroup.IsEnable).Select(t => t.HospitalGroupId).ToList();
}
#region new ok #region new ok
var query = _patientRepository.Where(t => isAdminOrOA ? true : t.SCPStudyList.Any(c => c.HospitalGroupList.Any(c => currentUserHospitalGroupIdList.Contains(c.HospitalGroupId)))) var query = _patientRepository.Where(t => isAdminOrOA ? true : t.SCPStudyList.Any(c => c.HospitalGroupList.Any(c => currentUserHospitalGroupIdList.Contains(c.HospitalGroupId))))
@ -689,7 +705,14 @@ namespace IRaCIS.Application.Services
} }
else else
{ {
item.CurrentUserHospitalGroupList = _userInfo.HospitalGroupList.Select(t => t.Name).ToList();
var list = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).SelectMany(t => t.IdentityUserHospitalGroupList).Where(t => t.IsDisabled == false && t.HospitalGroup.IsEnable == true)
.Select(t => t.HospitalGroup.Name).ToList();
item.CurrentUserHospitalGroupList = list;
//item.CurrentUserHospitalGroupList = _userInfo.HospitalGroupList.Select(t => t.Name).ToList();
} }
} }
@ -778,7 +801,13 @@ namespace IRaCIS.Application.Services
{ {
var isAdminOrOA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.Admin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin; var isAdminOrOA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.Admin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin;
var currentUserHospitalGroupIdList = _userInfo.HospitalGroupList.Select(t => t.Id).ToList(); var currentUserHospitalGroupIdList = new List<Guid>();
if (!isAdminOrOA)
{
currentUserHospitalGroupIdList = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).SelectMany(t => t.IdentityUserHospitalGroupList)
.Where(t => t.IsDisabled == false && t.HospitalGroup.IsEnable).Select(t => t.HospitalGroupId).ToList();
}
var query = from scpStudy in _studyRepository.Where(t => t.PatientId == inQuery.PatientId) var query = from scpStudy in _studyRepository.Where(t => t.PatientId == inQuery.PatientId)
.Where(t => isAdminOrOA ? true : t.HospitalGroupList.Any(c => currentUserHospitalGroupIdList.Contains(c.HospitalGroupId))) .Where(t => isAdminOrOA ? true : t.HospitalGroupList.Any(c => currentUserHospitalGroupIdList.Contains(c.HospitalGroupId)))
@ -819,7 +848,13 @@ namespace IRaCIS.Application.Services
} }
else else
{ {
item.CurrentUserHospitalGroupList = _userInfo.HospitalGroupList.Select(t => new HospitalGroupInfo() { Id = t.Id, Code = t.Code, Name = t.Name, IsManager = t.IsManager }).ToList(); var list = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).SelectMany(t => t.IdentityUserHospitalGroupList).Where(t => t.IsDisabled == false && t.HospitalGroup.IsEnable == true)
.Select(t => new HospitalGroupInfo() { Code = t.HospitalGroup.Code, Id = t.Id, Name = t.HospitalGroup.Name, IsManager = t.IsManager }).ToList();
item.CurrentUserHospitalGroupList = list;
//item.CurrentUserHospitalGroupList = _userInfo.HospitalGroupList.Select(t => new HospitalGroupInfo() { Id = t.Id, Code = t.Code, Name = t.Name, IsManager = t.IsManager }).ToList();
} }
} }
@ -941,6 +976,7 @@ namespace IRaCIS.Application.Services
[HttpDelete] [HttpDelete]
public async Task<IResponseOutput> DeletePatientStudy(Guid patiendId, Guid scpStudyId, public async Task<IResponseOutput> DeletePatientStudy(Guid patiendId, Guid scpStudyId,
[FromServices] IRepository<SCPSeries> _SeriesRepository, [FromServices] IRepository<SCPSeries> _SeriesRepository,
[FromServices] IRepository<IdentityUser> _identityUserRepository,
[FromServices] IRepository<SCPInstance> _instanceRepository, [FromServices] IRepository<SCPInstance> _instanceRepository,
[FromServices] IRepository<SCPStudyHospitalGroup> _scpStudyHospitalGroupRepository) [FromServices] IRepository<SCPStudyHospitalGroup> _scpStudyHospitalGroupRepository)
{ {
@ -950,18 +986,38 @@ namespace IRaCIS.Application.Services
var isAdminOrOAOrGA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.Admin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA var isAdminOrOAOrGA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.Admin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA
|| _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA; || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA;
var currentPMHospitalGroupIdList = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).SelectMany(t => t.IdentityUserHospitalGroupList)
.Where(t => t.IsDisabled == false && t.HospitalGroup.IsEnable == true).Select(t => t.HospitalGroupId).ToList();
// abc 课题组人属于AB 课题组,删除仅仅删除这个标签 直接返回 // abc 课题组人属于AB 课题组,删除仅仅删除这个标签 直接返回
if (!isAdminOrOAOrGA && existList.Count > _userInfo.HospitalGroupList.Count) if (!isAdminOrOAOrGA && existList.Count >= currentPMHospitalGroupIdList.Count)
{
//同课题组其他项目绑定了,那么这个绑定关系也不能删除
//这个检查 已经在该人所属课题组的项目进行了绑定访视不管是不是当前PM的项目 那么就不允许删除课题组关系和影像
if (_studySubjectVisitRepository.Any(t => t.SCPStudyId == scpStudyId && currentPMHospitalGroupIdList.Contains(t.Subject.Trial.HospitalGroupId)))
{
return ResponseOutput.NotOk(_localizer["Patient_SCPStudyVisitBindedSubmit"]);
}
//这个检查 已经在该人所属课题组的项目,没有进行绑定访视 那么就允许删除课题组关系
if (!_studySubjectVisitRepository.Any(t => t.SCPStudyId == scpStudyId && currentPMHospitalGroupIdList.Contains(t.Subject.Trial.HospitalGroupId)))
{ {
await _scpStudyHospitalGroupRepository.BatchDeleteNoTrackingAsync(t => t.SCPStudyId == scpStudyId && _userInfo.HospitalGroupIdList.Contains(t.HospitalGroupId)); await _scpStudyHospitalGroupRepository.BatchDeleteNoTrackingAsync(t => t.SCPStudyId == scpStudyId && currentPMHospitalGroupIdList.Contains(t.HospitalGroupId));
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
}
if (_studySubjectVisitRepository.Any(t => t.SCPStudyId == scpStudyId && t.StudyId != null))
//不属于任何项目,那么删除所有影像和绑定关系
if (_studySubjectVisitRepository.Any(t => t.SCPStudyId == scpStudyId))
{ {
//"该检查已绑定某项目下受试者访视(不一定是你所创建的项目)并已提交生成任务,不允许删除该检查" //"该检查已绑定某项目下受试者访视(不一定是你所创建的项目)并已提交生成任务,不允许删除该检查"
return ResponseOutput.NotOk(_localizer["Patient_SCPStudyVisitBindedSubmit"]); return ResponseOutput.NotOk(_localizer["Patient_SCPStudyVisitBindedSubmit"]);
@ -3316,6 +3372,7 @@ namespace IRaCIS.Application.Services
[HttpPost] [HttpPost]
public async Task<IResponseOutput<List<SCUStudyView>>> GetCFindStudyList(SCUQuery inQuery, public async Task<IResponseOutput<List<SCUStudyView>>> GetCFindStudyList(SCUQuery inQuery,
[FromServices] IRepository<DicomAE> _dicomAEReposiotry, [FromServices] IRepository<DicomAE> _dicomAEReposiotry,
[FromServices] IRepository<IdentityUser> _identityUserReposiotry,
[FromServices] ILogger<PatientService> _logger) [FromServices] ILogger<PatientService> _logger)
{ {
@ -3561,7 +3618,12 @@ namespace IRaCIS.Application.Services
} }
else else
{ {
item.CurrentUserHospitalGroupList = _userInfo.HospitalGroupList.Select(t => new HospitalGroupInfo() { Code = t.Code, Id = t.Id, Name = t.Name, IsManager = t.IsManager }).ToList(); var list = _identityUserReposiotry.Where(t => t.Id == _userInfo.IdentityUserId).SelectMany(t => t.IdentityUserHospitalGroupList).Where(t => t.IsDisabled == false && t.HospitalGroup.IsEnable == true)
.Select(t => new HospitalGroupInfo() { Code = t.HospitalGroup.Code, Id = t.Id, Name = t.HospitalGroup.Name, IsManager = t.IsManager }).ToList();
item.CurrentUserHospitalGroupList = list;
//item.CurrentUserHospitalGroupList = _userInfo.HospitalGroupList.Select(t => new HospitalGroupInfo() { Code = t.Code, Id = t.Id, Name = t.Name, IsManager = t.IsManager }).ToList();
} }
} }