diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 51b3081f7..8fbcfdefe 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -23,7 +23,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc public interface IDownloadAndUploadService { Task PackageAndAnonymizImage(Guid trialId, Guid subjectVisitId, bool isDicom, bool isAnonymize = true); + + Task SubejctRandomReadingTaskNameDeal(Guid subjectId, Guid trialReadingCriterionId); } + [ApiExplorerSettings(GroupName = "Trial")] public class DownloadAndUploadService( IRepository _systemAnonymizationRepository, @@ -77,7 +80,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.ReadingCategory == ReadingCategory.Visit && t.TaskBlindName != "Timepoint").Select(t => new { t.TaskBlindName, t.SourceSubjectVisitId, t.SouceReadModuleId }).ToListAsync(); - //随机赋值编号 比如要处理5个任务,实例化一个包含1-5的数组,每次随机取出一个 List availableNumbers = Enumerable.Range(haveDealedTaskList.Count + haveFinishedTaskCount + 1, needDealTaskList.Count).ToList(); Random rng = new Random(); diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index fe67ccc8d..acf0fc037 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -2,6 +2,7 @@ using IRaCIS.Core.Application.Filter; using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Application.Interfaces; +using IRaCIS.Core.Application.Service.ImageAndDoc; using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Application.Service.ReadingCalculate.Interface; using IRaCIS.Core.Application.ViewModel; @@ -44,24 +45,21 @@ namespace IRaCIS.Core.Application.Service IRepository _dicomInstanceRepository, IRepository _organInfoRepository, IRepository _trialDocumentRepository, - IRepository _userRepository, ILuganoCalculateService _luganoCalculateService, IRepository _readingCustomTagRepository, IRepository _readingTaskQuestionMarkRepository, - IRepository _readingCriterionDictionaryRepository, IRepository _readingTrialCriterionDictionaryRepository, - IRepository _tumorAssessmentRepository, IRepository _readingTableAnswerRowInfoRepository, IRepository _readingTableQuestionSystemRepository, IRepository _readingTableQuestionTrialRepository, IRepository _readingTaskQuestionAnswerRepository, IRepository _readingQuestionCriterionTrialRepository, - IRepository _readingQuestionCriterionSystemRepository, IRepository _readingQuestionSystem, IRepository _noneDicomStudyFileSystem, IGeneralCalculateService _generalCalculateService, IRepository _readingQuestionTrialRepository, IRepository _taskStudyRepository, + IDownloadAndUploadService _downloadAndUploadService, ITrialEmailNoticeConfigService _trialEmailNoticeConfigService) : BaseService, IReadingImageTaskService { @@ -783,7 +781,7 @@ namespace IRaCIS.Core.Application.Service var criterionIdInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == trialReadingCriterionId).FirstNotNullAsync(); - var groupIds = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId&& x.Type == ReadingQestionType.Table || x.Type == ReadingQestionType.BasicTable).Select(x => x.GroupId).Distinct().ToListAsync(); + var groupIds = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.Type == ReadingQestionType.Table || x.Type == ReadingQestionType.BasicTable).Select(x => x.GroupId).Distinct().ToListAsync(); var questionIds = await _readingQuestionTrialRepository .Where(x => x.IsShowInDicom) @@ -792,10 +790,10 @@ namespace IRaCIS.Core.Application.Service //排除表格问题 以及在表格问题分组的外层问题 var questions = await _readingQuestionTrialRepository - .Where(x=> !questionIds.Contains(x.Id)) + .Where(x => !questionIds.Contains(x.Id)) .WhereIf(questionClassify != null, x => x.QuestionClassify == questionClassify) - - .Where( x => x.IsShowInDicom && x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.Type != ReadingQestionType.Table && x.Type != ReadingQestionType.BasicTable) + + .Where(x => x.IsShowInDicom && x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.Type != ReadingQestionType.Table && x.Type != ReadingQestionType.BasicTable) .ProjectTo(_mapper.ConfigurationProvider, new { @@ -1085,7 +1083,7 @@ namespace IRaCIS.Core.Application.Service var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync(); var qusetionList = await _readingQuestionTrialRepository - .Where(x=>x.IsShowInDicom) + .Where(x => x.IsShowInDicom) .WhereIf(inDto.QuestionClassify != null, x => x.QuestionClassify == inDto.QuestionClassify) .Where(x => x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId).ProjectTo(_mapper.ConfigurationProvider, new { @@ -2606,10 +2604,10 @@ namespace IRaCIS.Core.Application.Service public async Task VerifyVisitTaskQuestions(VerifyVisitTaskQuestionsInDto inDto) { //验证后处理影像必须传 - if (_visitTaskRepository.Any(t => t.Id==inDto.VisitTaskId && t.TrialReadingCriterion.ImageUploadEnum != ReadingImageUpload.None)) + if (_visitTaskRepository.Any(t => t.Id == inDto.VisitTaskId && t.TrialReadingCriterion.ImageUploadEnum != ReadingImageUpload.None)) { if (!_taskStudyRepository.Any(t => t.VisitTaskId == inDto.VisitTaskId)) - { + { return ResponseOutput.NotOk(_localizer["ReadingImage_BackImageNotExist"]); } } @@ -2827,6 +2825,8 @@ namespace IRaCIS.Core.Application.Service } else if (inDto.SubjectId != null && trialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom) { + await _downloadAndUploadService.SubejctRandomReadingTaskNameDeal((Guid)inDto.SubjectId, (Guid)trialReadingCriterionId); + var subjectTaskList = (await _visitTaskService.GetSubjectReadingIQueryable(new GetReadingIQueryableInDto() { TrialId = inDto.TrialId, @@ -2848,17 +2848,22 @@ namespace IRaCIS.Core.Application.Service // 排除跳过的 List remainingItems = taskList.Select(x => x.Id).Except(cacheSkipIds).ToList(); - taskList = taskList.Where(x => remainingItems.Contains(x.Id)).ToList(); + //受试者随机固定排序 + taskList = taskList.Where(x => remainingItems.Contains(x.Id)).OrderBy(t=>t.TaskBlindName).ToList(); + if (taskList.Count() == 0) { throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"], ApiResponseCodeEnum.CloseCurrentWindows); } - Random random = new Random(); - //返回的范围是 0- taskList.Count-1 - int randomIndex = random.Next(taskList.Count); + #region 随机废弃 + //Random random = new Random(); + ////返回的范围是 0- taskList.Count-1 + //int randomIndex = random.Next(taskList.Count); - var visitTaskId = taskList[randomIndex].Id; + //var visitTaskId = taskList[randomIndex].Id; + #endregion + var visitTaskId = taskList[0].Id; task = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Select(x => new GetReadingTaskDto() {