账号课题组启用禁用,系统课题组启用禁用实时修改
parent
c9387463ba
commit
f80ac02562
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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 };
|
||||||
|
|
||||||
|
|
@ -136,8 +144,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
&& t.TrialUserRoleList.Any(t => t.UserId == _userInfo.UserRoleId && t.IsDeleted == false))
|
&& t.TrialUserRoleList.Any(t => t.UserId == _userInfo.UserRoleId && t.IsDeleted == false))
|
||||||
&& 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
|
||||||
|
|
@ -680,7 +688,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("{trialId:guid}/{status:int}")]
|
[HttpPost("{trialId:guid}/{status:int}")]
|
||||||
|
|
||||||
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
|
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||||
public async Task<IResponseOutput> UpdateEnrollStatus(Guid trialId, EnrollStatus status)
|
public async Task<IResponseOutput> UpdateEnrollStatus(Guid trialId, EnrollStatus status)
|
||||||
{
|
{
|
||||||
await _enrollDetailRepository.AddAsync(new EnrollDetail()
|
await _enrollDetailRepository.AddAsync(new EnrollDetail()
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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 && currentPMHospitalGroupIdList.Contains(t.HospitalGroupId));
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
await _scpStudyHospitalGroupRepository.BatchDeleteNoTrackingAsync(t => t.SCPStudyId == scpStudyId && _userInfo.HospitalGroupIdList.Contains(t.HospitalGroupId));
|
|
||||||
|
|
||||||
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();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue