diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index 09a315757..4caa5d0e5 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -90,7 +90,7 @@ namespace IRaCIS.Core.Application.Service var query = _trialUseRoleRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters() .Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA) - .WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId) + .WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.UserRole.FullName).Contains(inQuery.UserRealName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.UserRole.OrganizationName.Contains(inQuery.OrganizationName)) .ProjectTo(_mapper.ConfigurationProvider, new { trialSiteId = inQuery.TrialSiteId }); diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/SCUClientViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/SCUClientViewModel.cs index 608979485..d0fb17dc4 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/SCUClientViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/SCUClientViewModel.cs @@ -62,6 +62,12 @@ namespace IRaCIS.Application.Contracts public string? ModalitiesInStudy { get; set; } + public List HospitalGroupList { get; set; } + + public List CurrentUserHospitalGroupList { get; set; } = new List(); + + public List ViewHospitalGroupList => HospitalGroupList.Where(t => CurrentUserHospitalGroupList.Any(c => c.Id == t.Id)).ToList(); + } public class TJCmoveStudyCommand @@ -76,6 +82,6 @@ namespace IRaCIS.Application.Contracts /// ///PacsAE 的名字 /// - public string CalledAE { get; set; } + public string CalledAE { get; set; } } } diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index c43075507..9060f6375 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -55,6 +55,7 @@ using NPOI.HSSF.Record.Chart; using IRaCIS.Core.Application.Helper.OtherTool; using IRaCIS.Core.Infrastructure.Extention; using DocumentFormat.OpenXml.Drawing.Charts; +using DocumentFormat.OpenXml.Drawing.Diagrams; namespace IRaCIS.Application.Services @@ -819,7 +820,7 @@ namespace IRaCIS.Application.Services } /// - /// 修改检查课题组 1是添加 2是删除 + /// 修改检查课题组 1是添加 2是删除,3是更新 /// /// /// @@ -843,7 +844,7 @@ namespace IRaCIS.Application.Services } } - else + else if (incommand.AddOrDelete == 2) { //删除 foreach (var item in incommand.SCPstudyIdList) @@ -857,6 +858,22 @@ namespace IRaCIS.Application.Services } } + else if (incommand.AddOrDelete == 3) + { + //更新 + foreach (var item in incommand.SCPstudyIdList) + { + await _SCPStudyHospitalGroupRepository.BatchDeleteNoTrackingAsync(t => t.SCPStudyId == item); + + foreach (var hospitalGroupId in incommand.HospitalGroupIdList) + { + await _SCPStudyHospitalGroupRepository.AddAsync(new SCPStudyHospitalGroup() { SCPStudyId = item, HospitalGroupId = hospitalGroupId }); + } + + } + + } + await _SCPStudyHospitalGroupRepository.SaveChangesAsync(); @@ -3364,11 +3381,29 @@ namespace IRaCIS.Application.Services var resultInstanceUidList = result.Select(t => t.StudyInstanceUID).ToList(); var existStudyIdList = _studyRepository.Where(t => resultInstanceUidList.Contains(t.StudyInstanceUid)) - .Select(t => t.StudyInstanceUid).ToList(); + .Select(t => new { t.StudyInstanceUid, HospitalGroupList = t.HospitalGroupList.Select(t => new HospitalGroupInfo { Id = t.HospitalGroupId, Name = t.HospitalGroup.Name, Code = t.HospitalGroup.Code }).ToList() }).ToList(); + + var allHospitalGroupList = _hospitalGroupRepository.Where(t => t.IsEnable).Select(t => new HospitalGroupInfo() { Name = t.Name, Id = t.Id, Code = t.Code }).ToList(); + + var isAdminOrOA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.Admin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin; + foreach (var item in result) { - item.IsStudyExist = existStudyIdList.Any(t => t == item.StudyInstanceUID); + item.IsStudyExist = existStudyIdList.Any(t => t.StudyInstanceUid == item.StudyInstanceUID); + item.HospitalGroupList = existStudyIdList.FirstOrDefault(t => t.StudyInstanceUid == item.StudyInstanceUID)?.HospitalGroupList; + + if (isAdminOrOA) + { + //不处理,默认看所有 + + item.CurrentUserHospitalGroupList = allHospitalGroupList; + } + else + { + item.CurrentUserHospitalGroupList = _userInfo.HospitalGroupList.Select(t => new HospitalGroupInfo() { Code = t.Code, Id = t.Id, Name = t.Name }).ToList(); + + } }