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 passing Details

Test_HIR_Net8
he 2025-09-12 11:01:00 +08:00
commit 1efe15a776
9 changed files with 99 additions and 55 deletions

View File

@ -190,9 +190,7 @@ namespace IRaCIS.Core.SCP.Service
var _dictionaryRepository = _serviceProvider.GetService<IRepository<Dictionary>>(); var _dictionaryRepository = _serviceProvider.GetService<IRepository<Dictionary>>();
var _seriesRepository = _serviceProvider.GetService<IRepository<SCPSeries>>(); var _seriesRepository = _serviceProvider.GetService<IRepository<SCPSeries>>();
var _studyRepository = _serviceProvider.GetService<IRepository<SCPStudy>>(); var _studyRepository = _serviceProvider.GetService<IRepository<SCPStudy>>();
var _studyGroupRepository = _serviceProvider.GetService<IRepository<SCPStudyHospitalGroup>>();
var _cmoveStudyRepository = _serviceProvider.GetService<IRepository<CmoveStudy>>();
var dicModalityList = _dictionaryRepository.Where(t => t.Code == "Modality").SelectMany(t => t.ChildList.Select(c => c.Value)).ToList(); var dicModalityList = _dictionaryRepository.Where(t => t.Code == "Modality").SelectMany(t => t.ChildList.Select(c => c.Value)).ToList();
var seriesModalityList = _seriesRepository.Where(t => _SCPStudyIdList.Contains(t.StudyId)).Select(t => new { SCPStudyId = t.StudyId, t.Modality, t.StudyInstanceUid }).ToList(); var seriesModalityList = _seriesRepository.Where(t => _SCPStudyIdList.Contains(t.StudyId)).Select(t => new { SCPStudyId = t.StudyId, t.Modality, t.StudyInstanceUid }).ToList();
@ -220,34 +218,7 @@ namespace IRaCIS.Core.SCP.Service
await _studyRepository.BatchUpdateNoTrackingAsync(t => t.Id == g.Key.SCPStudyId, u => new SCPStudy() { Modalities = modality, ModalityForEdit = modalityForEdit }); await _studyRepository.BatchUpdateNoTrackingAsync(t => t.Id == g.Key.SCPStudyId, u => new SCPStudy() { Modalities = modality, ModalityForEdit = modalityForEdit });
//添加课题组标签
if (CurrentHospitalGroup != null)
{
if (!_studyGroupRepository.Any(t => t.SCPStudyId == g.Key.SCPStudyId && t.HospitalGroupId == CurrentHospitalGroup.Id))
{
await _studyGroupRepository.AddAsync(new SCPStudyHospitalGroup() { SCPStudyId = g.Key.SCPStudyId, HospitalGroupId = CurrentHospitalGroup.Id });
}
}
else
{
var findCmoveInfo = _cmoveStudyRepository.Where(t => t.StudyInstanceUIDList.Any(c => c == g.Key.StudyInstanceUid)).OrderByDescending(t => t.CreateTime).FirstOrDefault();
if (findCmoveInfo != null)
{
foreach (var item in findCmoveInfo.HopitalGroupIdList)
{
if (!_studyGroupRepository.Any(t => t.SCPStudyId == g.Key.SCPStudyId && t.HospitalGroupId == item))
{
await _studyGroupRepository.AddAsync(new SCPStudyHospitalGroup() { SCPStudyId = g.Key.SCPStudyId, HospitalGroupId = item });
}
}
}
else
{
Log.Logger.Warning($"未找到{g.Key.StudyInstanceUid}的Cmove记录");
}
}
} }
@ -319,6 +290,9 @@ namespace IRaCIS.Core.SCP.Service
var ossService = _serviceProvider.GetService<IOSSService>(); var ossService = _serviceProvider.GetService<IOSSService>();
var dicomArchiveService = _serviceProvider.GetService<IDicomArchiveService>(); var dicomArchiveService = _serviceProvider.GetService<IDicomArchiveService>();
var _seriesRepository = _serviceProvider.GetService<IRepository<SCPSeries>>(); var _seriesRepository = _serviceProvider.GetService<IRepository<SCPSeries>>();
var _studyGroupRepository = _serviceProvider.GetService<IRepository<SCPStudyHospitalGroup>>();
var _cmoveStudyRepository = _serviceProvider.GetService<IRepository<CmoveStudy>>();
var _distributedLockProvider = _serviceProvider.GetService<IDistributedLockProvider>(); var _distributedLockProvider = _serviceProvider.GetService<IDistributedLockProvider>();
@ -422,6 +396,39 @@ namespace IRaCIS.Core.SCP.Service
if (!_SCPStudyIdList.Contains(scpStudyId)) if (!_SCPStudyIdList.Contains(scpStudyId))
{ {
_SCPStudyIdList.Add(scpStudyId); _SCPStudyIdList.Add(scpStudyId);
#region 给检查打课题组标签
//添加课题组标签
if (CurrentHospitalGroup != null)
{
if (!_studyGroupRepository.Any(t => t.SCPStudyId == scpStudyId && t.HospitalGroupId == CurrentHospitalGroup.Id))
{
await _studyGroupRepository.AddAsync(new SCPStudyHospitalGroup() { SCPStudyId = scpStudyId, HospitalGroupId = CurrentHospitalGroup.Id });
}
}
else
{
var findCmoveInfo = _cmoveStudyRepository.Where(t => t.StudyInstanceUIDList.Any(c => c == studyInstanceUid)).OrderByDescending(t => t.CreateTime).FirstOrDefault();
if (findCmoveInfo != null)
{
foreach (var item in findCmoveInfo.HopitalGroupIdList)
{
if (!_studyGroupRepository.Any(t => t.SCPStudyId == scpStudyId && t.HospitalGroupId == item))
{
await _studyGroupRepository.AddAsync(new SCPStudyHospitalGroup() { SCPStudyId = scpStudyId, HospitalGroupId = item });
}
}
}
else
{
Log.Logger.Warning($"未找到{studyInstanceUid}的Cmove记录");
}
}
#endregion
} }
var series = await _seriesRepository.FirstOrDefaultAsync(t => t.Id == seriesId); var series = await _seriesRepository.FirstOrDefaultAsync(t => t.Id == seriesId);

View File

@ -42,7 +42,7 @@
"IsNeedChangePassWord": true, "IsNeedChangePassWord": true,
// //
"ChangePassWordDays": 1000, "ChangePassWordDays": 1000,
"OpenImageShare": true, "OpenImageShare": true
}, },
"SystemEmailSendConfig": { "SystemEmailSendConfig": {

View File

@ -36,20 +36,12 @@
"AutoLoginOutMinutes": 120, "AutoLoginOutMinutes": 120,
"AESKey": "HIR_System_AES_Key_Info", "AESKey": "HIR_System_AES_Key_Info",
"CmoveIntervalMinutes": 1, "CmoveIntervalMinutes": 1,
"CmoveInstanceIntervalMinutes": 1 "CmoveInstanceIntervalMinutes": 1,
}, //
"SystemHospitalConfig": { "IsNeedChangePassWord": true,
"HospitalCode": "EI", //
"HospitalLogoPath": "/System/GeneralDocuments/1716453306898_图片2.png", "ChangePassWordDays": 1000,
"TrialKeepCount": 60, "OpenImageShare": true
"HospitalName": "上海展影医疗科技有限公司",
"HospitalAliasName": "展影医疗",
"Country": "中国",
"City": "上海",
"Province": "上海",
"Address": "上海市杨浦区国泰路复旦科技园",
"Phone": "021-60702575",
"IsCanConnectInternet": false
}, },
"SystemEmailSendConfig": { "SystemEmailSendConfig": {
"Port": 465, "Port": 465,
@ -57,6 +49,7 @@
"FromEmail": "test-study@extimaging.com", "FromEmail": "test-study@extimaging.com",
"FromName": "Test_HIR", "FromName": "Test_HIR",
"AuthorizationCode": "zhanying123", "AuthorizationCode": "zhanying123",
"SiteUrl": "http://hir.test.extimaging.com/login" "SiteUrl": "http://hir.test.extimaging.com/login",
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
} }
} }

View File

@ -491,8 +491,10 @@ namespace IRaCIS.Core.Application.Service
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA, t => !t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.Admin || t.UserTypeEnum == UserTypeEnum.SuperAdmin)) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA, t => !t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.Admin || t.UserTypeEnum == UserTypeEnum.SuperAdmin))
//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.IdentityUserHospitalGroupList.Any(t => isGAGroupAdmin ? hospitalGroupAdminIdList.Contains(t.HospitalGroupId) : false)) t => /*!t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.Admin || t.UserTypeEnum == UserTypeEnum.SuperAdmin || t.UserTypeEnum == UserTypeEnum.OA) &&*/
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);
@ -1042,9 +1044,14 @@ namespace IRaCIS.Core.Application.Service
{ {
await _fusionCache.RemoveAsync(CacheKeys.UserToken(identityUserId)); await _fusionCache.RemoveAsync(CacheKeys.UserToken(identityUserId));
var userName = await _userRoleRepository.Where(t => t.Id == userRoleId).Select(t => t.UserName).FirstOrDefaultAsync(); var userName = await _identityUserRepository.Where(t => t.Id == identityUserId).Select(t => t.UserName).FirstOrDefaultAsync();
if (userName.IsNotNullOrEmpty())
{
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = identityUserId, ActionUserName = userName, OptType = UserOptType.LoginOut }, true);
}
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = identityUserId, ActionUserName = userName, OptType = UserOptType.LoginOut }, true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }

View File

@ -115,7 +115,7 @@ namespace IRaCIS.Core.Application.Service
//之前已经选择的用户 不放在列表中,现在又要改回去 废弃 //之前已经选择的用户 不放在列表中,现在又要改回去 废弃
var query = _userRoleRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin && t.UserTypeEnum != UserTypeEnum.Admin && t.UserTypeEnum != UserTypeEnum.OA) var query = _userRoleRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin && t.UserTypeEnum != UserTypeEnum.Admin && t.UserTypeEnum != UserTypeEnum.OA && t.UserTypeEnum != UserTypeEnum.GA)
////正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户 ////正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户
//.WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IsTestUser == false && t.IsZhiZhun) //.WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IsTestUser == false && t.IsZhiZhun)

View File

@ -134,7 +134,7 @@ namespace IRaCIS.Core.Application.Service
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));
return await _trialRepository.AsQueryable() return await _trialRepository.AsQueryable()
//过滤医院,切换会有问题 //过滤医院,切换会有问题
.Where(t => t.HospitalId == hospitalInfo.Id) .WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin, t => t.HospitalId == hospitalInfo.Id)
//SuperAdmin Admin OP OA //SuperAdmin Admin OP OA
.WhereIf(sap.Contains(_userInfo.UserTypeEnumInt), x => trialState.Contains(x.TrialStatusStr)) .WhereIf(sap.Contains(_userInfo.UserTypeEnumInt), x => trialState.Contains(x.TrialStatusStr))

View File

@ -81,8 +81,10 @@ public class HospitalGroupService(IRepository<HospitalGroup> _hospitalGroupRepos
[HttpPost] [HttpPost]
public async Task<PageOutput<HospitalGroupView>> GetHospitalGroupPageList(HospitalGroupQuery inQuery) public async Task<PageOutput<HospitalGroupView>> GetHospitalGroupPageList(HospitalGroupQuery inQuery)
{ {
//GA 只能看到自己是管理员的课题组
var hospitalGroupQueryable = _hospitalGroupRepository var hospitalGroupQueryable = _hospitalGroupRepository
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA, t => t.IdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.IsManager && t.IsDisabled == false))
.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))

View File

@ -218,7 +218,7 @@ namespace IRaCIS.Application.Services
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialCode), t => t.TrialCode.Contains(inQuery.TrialCode)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialCode), t => t.TrialCode.Contains(inQuery.TrialCode))
//过滤医院,切换会有问题 //过滤医院,切换会有问题
.Where(t => t.HospitalId == hospitalInfo.Id) .WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin, t => t.HospitalId == hospitalInfo.Id)
//GA 要过滤课题组 //GA 要过滤课题组
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA && hospitalGroupAdminIdList.Any(), t => 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
@ -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();
@ -2593,7 +2603,11 @@ namespace IRaCIS.Application.Services
[HttpPost] [HttpPost]
public async Task<List<VisitPatientStudyView>> GetPatientOtherStudyList(PatientStudyOtherQuery inQuery) public async Task<List<VisitPatientStudyView>> GetPatientOtherStudyList(PatientStudyOtherQuery inQuery)
{ {
var trialHospitalGroupId = await _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => t.HospitalGroupId).FirstOrDefaultAsync();
var query = from scpStudy in _studyRepository.Where(t => inQuery.PatientIdList.Contains(t.PatientId) && !t.SCPStudySubjectVisitList.Any(t => (t.SubjectVisitId == inQuery.SujectVisitId || t.SubjectVisit.SubmitState == SubmitStateEnum.Submitted) && t.TrialId == inQuery.TrialId)) var query = from scpStudy in _studyRepository.Where(t => inQuery.PatientIdList.Contains(t.PatientId) && !t.SCPStudySubjectVisitList.Any(t => (t.SubjectVisitId == inQuery.SujectVisitId || t.SubjectVisit.SubmitState == SubmitStateEnum.Submitted) && t.TrialId == inQuery.TrialId))
.Where(t => t.HospitalGroupList.Any(t => t.HospitalGroupId == trialHospitalGroupId))
.WhereIf(inQuery.EarliestStudyTime != null, t => t.StudyTime >= inQuery.EarliestStudyTime) .WhereIf(inQuery.EarliestStudyTime != null, t => t.StudyTime >= inQuery.EarliestStudyTime)
.WhereIf(inQuery.LatestStudyTime != null, t => t.StudyTime <= inQuery.LatestStudyTime) .WhereIf(inQuery.LatestStudyTime != null, t => t.StudyTime <= inQuery.LatestStudyTime)
.WhereIf(!string.IsNullOrEmpty(inQuery.PatientIdStr), t => t.PatientIdStr.Contains(inQuery.PatientIdStr)) .WhereIf(!string.IsNullOrEmpty(inQuery.PatientIdStr), t => t.PatientIdStr.Contains(inQuery.PatientIdStr))
@ -2718,7 +2732,10 @@ namespace IRaCIS.Application.Services
// }); // });
#endregion #endregion
var trialHospitalGroupId = await _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => t.HospitalGroupId).FirstOrDefaultAsync();
var query = from scpStudy in _studyRepository.Where(t => !t.SCPStudySubjectVisitList.Any(t => t.SubjectVisit.SubmitState == SubmitStateEnum.Submitted && t.TrialId == inQuery.TrialId)) var query = from scpStudy in _studyRepository.Where(t => !t.SCPStudySubjectVisitList.Any(t => t.SubjectVisit.SubmitState == SubmitStateEnum.Submitted && t.TrialId == inQuery.TrialId))
.Where(t => t.HospitalGroupList.Any(t => t.HospitalGroupId == trialHospitalGroupId))
.WhereIf(inQuery.IsBindedVisit == false, t => !t.SCPStudySubjectVisitList.Any(t => t.TrialId == inQuery.TrialId)) .WhereIf(inQuery.IsBindedVisit == false, t => !t.SCPStudySubjectVisitList.Any(t => t.TrialId == inQuery.TrialId))
.WhereIf(inQuery.IsBindedVisit == true, t => t.SCPStudySubjectVisitList.Any(t => t.TrialId == inQuery.TrialId)) .WhereIf(inQuery.IsBindedVisit == true, t => t.SCPStudySubjectVisitList.Any(t => t.TrialId == inQuery.TrialId))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.VisitName), t => t.SCPStudySubjectVisitList.Any(t => t.TrialId == inQuery.TrialId && t.SubjectVisit.VisitName.Contains(inQuery.VisitName))) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.VisitName), t => t.SCPStudySubjectVisitList.Any(t => t.TrialId == inQuery.TrialId && t.SubjectVisit.VisitName.Contains(inQuery.VisitName)))

View File

@ -300,6 +300,24 @@ namespace IRaCIS.Core.Application.Service
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
[AllowAnonymous]
public async Task<IResponseOutput> NewUserHospitalGroup(
[FromServices] IRepository<SCPStudyHospitalGroup> _SCPStudyHospitalGroupRepository,
[FromServices] IRepository<SCPStudy> _SCPStudyRepository, Guid hospitalGroupId)
{
var scpStudyIdList = _SCPStudyRepository.Where().Select(t => t.Id).ToList();
foreach (var item in scpStudyIdList)
{
await _SCPStudyHospitalGroupRepository.AddAsync(new SCPStudyHospitalGroup() { SCPStudyId = item, HospitalGroupId = hospitalGroupId });
}
await _SCPStudyRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
/// <summary> /// <summary>
/// 外部人员 中心调研人员维护 /// 外部人员 中心调研人员维护
/// </summary> /// </summary>