From cb973812001ba77ad7235a8bf9cc423c0925a0ad Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Sat, 8 Oct 2022 09:37:14 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=85=E7=89=87=E6=9C=9F=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=A0=87=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Allocation/VisitTaskHelpeService.cs | 4 +- .../Reading/Dto/ReadingPeriodSetViewModel.cs | 15 ++++- .../Reading/ReadingPeriodSetService.cs | 63 ++++++++++++------- IRaCIS.Core.Domain/Reading/ReadModule.cs | 17 +---- .../Reading/ReadingPeriodSet.cs | 2 + 5 files changed, 61 insertions(+), 40 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index f9c0604ed..1a525ed01 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -841,7 +841,7 @@ namespace IRaCIS.Core.Application.Service break; case GenerateTaskCategory.Oncology: - + var originalTaskInfo = await _visitTaskRepository.Where(x => x.Id == generateTaskCommand.OriginalVisitId).FirstNotNullAsync(); foreach (var item in generateTaskCommand.ReadingGenerataTaskList) { @@ -868,7 +868,7 @@ namespace IRaCIS.Core.Application.Service TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)), ReadingCategory = item.ReadingCategory - //TrialReadingCriterionId = originalTaskInfo.TrialReadingCriterionId, + TrialReadingCriterionId = originalTaskInfo.TrialReadingCriterionId, }); singleTask.AllocateTime = DateTime.Now; diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs index 48f4ede93..816d322a6 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs @@ -15,7 +15,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// 项目ID /// - public Guid? TrialId { get; set; } + [NotDefault] + public Guid TrialId { get; set; } + + + public Guid TrialReadingCriterionId { get; set; } /// /// 阅片期名称 @@ -122,8 +126,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public ReadingSetType ReadingSetType { get; set; } + public Guid? TrialReadingCriterionId { get; set; } - } + + + } /// /// 获取影像阅片预览的Dto @@ -293,6 +300,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 阅片配置的类型 /// public ReadingSetType ReadingSetType { get; set; } + + public Guid? TrialReadingCriterionId { get; set; } } @@ -327,5 +336,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 阅片期名称 /// public string? ReadingPeriodName { get; set; } + + public Guid? TrialReadingCriterionId { get; set; } } } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs index 726930b10..7aef1463b 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs @@ -63,14 +63,15 @@ namespace IRaCIS.Application.Services /// - /// 新增或者修改 + /// 新增或者修改 (增加标准搜索,已修改) /// /// /// [HttpPost] public async Task AddOrUpdateReadingPeriodSet(ReadingPeriodSetAddOrEdit addOrEditReadingPeriodSet) { - if (await _readingPeriodSetRepository.AnyAsync(x => x.Id != addOrEditReadingPeriodSet.Id&&x.IsTakeEffect!= ReadingPeriodStatus.Revocation && x.TrialId == addOrEditReadingPeriodSet.TrialId && x.ReadingPeriodName == addOrEditReadingPeriodSet.ReadingPeriodName)) + if (await _readingPeriodSetRepository.AnyAsync(x => x.Id != addOrEditReadingPeriodSet.Id&&x.IsTakeEffect!= ReadingPeriodStatus.Revocation + && x.TrialId == addOrEditReadingPeriodSet.TrialId && x.ReadingPeriodName == addOrEditReadingPeriodSet.ReadingPeriodName && x.TrialReadingCriterionId==addOrEditReadingPeriodSet.TrialReadingCriterionId)) { return ResponseOutput.NotOk("阅片期名称重复,操作失败"); } @@ -121,7 +122,7 @@ namespace IRaCIS.Application.Services } /// - /// 获取影像阅片的预览 // 需要清除之前已经选中的 + /// 获取影像阅片的预览 // 需要清除之前已经选中的 (增加标准搜索,已修改) /// /// [HttpPost] @@ -134,7 +135,7 @@ namespace IRaCIS.Application.Services .WhereIf(inDto.ReadingScope== ReadingScopeEnum.Site, x => inDto.SiteIds.Contains(x.SiteId)); // 已经存在的访视 需要排除 - var existsBubjectVisitsQuery= _readModuleRepository.Where(y => y.ReadingSetType == inDto.ReadingSetType && y.TrialId == inDto.TrialId).Select(x => x.SubjectVisitId); + var existsBubjectVisitsQuery= _readModuleRepository.Where(y => y.ReadingSetType == inDto.ReadingSetType && y.TrialId == inDto.TrialId && y.TrialReadingCriterionId == inDto.TrialReadingCriterionId).Select(x => x.SubjectVisitId); visitQuery = visitQuery.Where(x => !existsBubjectVisitsQuery.Contains(x.Id)) .WhereIf(inDto.ExpirationDate != null, x => x.LatestScanDate <= inDto.ExpirationDate.Value) @@ -186,7 +187,7 @@ namespace IRaCIS.Application.Services } /// - /// 添加对应的阅片 + /// 添加对应的阅片 (增加标准不影响 因为阅片期设置关联了标准) /// /// /// @@ -209,7 +210,7 @@ namespace IRaCIS.Application.Services } /// - /// 获取选中的计划 + /// 获取选中的计划 (增加标准不影响 因为阅片期设置关联了标准) /// /// /// @@ -238,7 +239,7 @@ namespace IRaCIS.Application.Services /// - /// 分页获取 + /// 分页获取 (增加标准搜索,已修改) /// /// /// @@ -247,6 +248,7 @@ namespace IRaCIS.Application.Services { var readQuery =_readingPeriodSetRepository.Where(t=>t.TrialId==query.TrialId).Include(x=>x.ReadingPeriodSites) .WhereIf(query.ReadingPeriodName != null, x => x.ReadingPeriodName.Contains(query.ReadingPeriodName!)) + .WhereIf(query.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId==query.TrialReadingCriterionId) .ProjectTo(_mapper.ConfigurationProvider); var pageList= await readQuery.ToPagedListAsync(query.PageIndex, query.PageSize, query.SortField == null ? nameof(ReadingPeriodSetView.CreateTime) : query.SortField, query.Asc); @@ -272,20 +274,27 @@ namespace IRaCIS.Application.Services } /// - /// 获取阅片期配置的截至访视的下拉框 + /// 获取阅片期配置的截至访视的下拉框 (增加标准搜索,已修改) /// /// /// [HttpPost] public async Task> GetReadingVisitList(GetReadingVisitListInDto inDto) { - var maxVisitNum = await _readingPeriodSetRepository.Where(x => x.TrialId == inDto.TrialId && x.ReadingSetType == inDto.ReadingSetType&&x.IsTakeEffect== ReadingPeriodStatus.TakeEffect).MaxAsync(x => x.ExpirationVisitNum)??0; + var maxVisitNum = await _readingPeriodSetRepository + .WhereIf(inDto.TrialReadingCriterionId!=null,t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId) + + .Where(x => x.TrialId == inDto.TrialId && x.ReadingSetType == inDto.ReadingSetType&&x.IsTakeEffect== ReadingPeriodStatus.TakeEffect ) + .MaxAsync(x => x.ExpirationVisitNum)??0; var thisVisitNum = await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Select(x => x.ExpirationVisitNum).FirstOrDefaultAsync() ?? -1; var globalVisitNum = new List(); if (inDto.ReadingSetType == ReadingSetType.TumorReading) { - globalVisitNum = await _readModuleRepository.Where(x => x.ReadingSetType == ReadingSetType.ImageReading && x.TrialId == inDto.TrialId).Select(x => x.VisitNum).Distinct().ToListAsync(); + globalVisitNum = await _readModuleRepository + .WhereIf(inDto.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId) + + .Where(x => x.ReadingSetType == ReadingSetType.ImageReading && x.TrialId == inDto.TrialId).Select(x => x.VisitNum).Distinct().ToListAsync(); } List result = await _visitStageRepository.Where(x => x.TrialId == inDto.TrialId ) @@ -300,20 +309,22 @@ namespace IRaCIS.Application.Services } /// - /// 设置阅片期配置是否生效 + /// 设置阅片期配置是否生效 (增加标准搜索,已修改) /// /// /// [HttpPut] public async Task SetReadingPeriodSetEffect(SetReadingPeriodSetEffect indto) { + var readingPeriodSet = await _readingPeriodSetRepository.Where(x => x.Id == indto.Id).FirstNotNullAsync(); + if (indto.IsTakeEffect == ReadingPeriodStatus.TakeEffect) { - var readingPeriodSet = await _readingPeriodSetRepository.Where(x => x.Id == indto.Id).FirstNotNullAsync(); var plans = _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Include(x => x.SubjectVisit) .Include(x => x.ReadingPeriodSet).Include(x => x.SubjectVisit).ToList(); var needAddVisitIds = plans.Select(x => x.SubjectVisitId).ToList(); - var repeatVisitNames = _readModuleRepository.Where(x => x.ReadingSetType == readingPeriodSet.ReadingSetType && needAddVisitIds.Contains(x.SubjectVisitId)).Select(x =>x.Subject.Code+"的"+ x.SubjectVisit.VisitName).ToList(); + + var repeatVisitNames = _readModuleRepository.Where(x => x.TrialReadingCriterionId== readingPeriodSet.TrialReadingCriterionId && x.ReadingSetType == readingPeriodSet.ReadingSetType && needAddVisitIds.Contains(x.SubjectVisitId)).Select(x =>x.Subject.Code+"的"+ x.SubjectVisit.VisitName).ToList(); if(repeatVisitNames.Count!=0) { return ResponseOutput.NotOk($"{string.Join(",", repeatVisitNames)}已经添加过阅片期,无法设置生效"); @@ -334,6 +345,9 @@ namespace IRaCIS.Application.Services ReadingStatus = ReadingStatusEnum.TaskAllocate, TrialId = readingPeriodSet.TrialId, VisitNum = item.SubjectVisit.VisitNum, + + //增加标准 + TrialReadingCriterionId=readingPeriodSet.TrialReadingCriterionId }); }; @@ -343,8 +357,9 @@ namespace IRaCIS.Application.Services switch (readingPeriodSet.ReadingSetType) { case ReadingSetType.ImageReading: - - var taskInfoList = await _visitTaskRepository.Where(x => subjectVisitIds.Contains(x.SourceSubjectVisitId ?? default(Guid))&&x.TaskState==TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned&&!x.IsAnalysisCreate).ToListAsync(); + //增加标准 + var taskInfoList = await _visitTaskRepository.Where(x =>x.TrialReadingCriterionId==readingPeriodSet.TrialReadingCriterionId && subjectVisitIds.Contains(x.SourceSubjectVisitId ?? default(Guid)) && + x.TaskState==TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate).ToListAsync(); foreach (var item in taskInfoList) { @@ -378,10 +393,11 @@ namespace IRaCIS.Application.Services var trialInfo = await _trialRepository.Where(x => x.Id == readingPeriodSet.TrialId).FirstNotNullAsync(); - var globalModuleIds = await _readModuleRepository.Where(x => subjectVisitIds.Contains(x.SubjectVisitId) && x.ModuleType == ModuleTypeEnum.Global).Select(x => x.Id).ToListAsync(); + //增加标准 + var globalModuleIds = await _readModuleRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && subjectVisitIds.Contains(x.SubjectVisitId) && x.ModuleType == ModuleTypeEnum.Global).Select(x => x.Id).ToListAsync(); - - var globalTaskInfo = await _visitTaskRepository.Where(x => globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned&&!x.IsAnalysisCreate).GroupBy(x=> new { x.SouceReadModuleId }).Select(x => + //增加标准 + var globalTaskInfo = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned&&!x.IsAnalysisCreate).GroupBy(x=> new { x.SouceReadModuleId }).Select(x => new { SouceReadModuleId=x.Key.SouceReadModuleId, Count=x.ToList().Count, @@ -390,15 +406,17 @@ namespace IRaCIS.Application.Services JudgeTaskId = x.Select(x => x.JudgeVisitTaskId).FirstOrDefault(), JudgeTaskResultId = x.Select(x => x.JudgeVisitTask.JudgeResultTaskId).FirstOrDefault(), }).ToListAsync(); + foreach (var item in globalTaskInfo) { - if (item.Count == (int)trialInfo.ReadingType) { + //没有裁判 或者有裁判,并且裁判任务做完了 if (item.JudgeTaskId == null || item.JudgeTaskResultId != null) { var readModule = readModules.Where(x => x.Id == item.ReadModuleId).FirstOrDefault(); + await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand() { OriginalVisitId = item.TaskId, @@ -436,13 +454,14 @@ namespace IRaCIS.Application.Services { List readModuleIds = await _readModuleRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Select(x => x.Id).ToListAsync(); - if (await _visitTaskRepository.AnyAsync(x => readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect)) + + if (await _visitTaskRepository.AnyAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect)) { - throw new BusinessValidationFailedException("当前阅片已生成任务并且阅片完成,撤销失败。"); + throw new BusinessValidationFailedException("当前标准阅片已生成任务并且阅片完成,撤销失败。"); } - await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)), x => new VisitTask() + await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)), x => new VisitTask() { TaskState = TaskState.Adbandon }); diff --git a/IRaCIS.Core.Domain/Reading/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadModule.cs index c8b878c76..33fc10682 100644 --- a/IRaCIS.Core.Domain/Reading/ReadModule.cs +++ b/IRaCIS.Core.Domain/Reading/ReadModule.cs @@ -19,10 +19,12 @@ namespace IRaCIS.Core.Domain.Models /// public Guid SubjectId { get; set; } + public Guid? TrialReadingCriterionId { get; set; } + /// /// 模块类型 /// - public ModuleTypeEnum ModuleType { get; set; } + public ModuleTypeEnum ModuleType { get; set; } /// /// 模块名称 @@ -54,15 +56,7 @@ namespace IRaCIS.Core.Domain.Models /// public Guid? ReadingPeriodSetId { get; set; } - ///// - ///// 上一次访视(截止访视) - ///// - //public Guid? LastVisitIdSetId { get; set; } - // /// - ///// 裁判对应原阅片模块的Id - ///// - //public Guid? ReadModuleId { get; set; } /// /// 项目ID @@ -110,11 +104,6 @@ namespace IRaCIS.Core.Domain.Models public ReadingSetType ReadingSetType { get; set; } - ///// - ///// 访视 - ///// - //[ForeignKey("LastVisitIdSetId")] - //public SubjectVisit LastSubjectVisit { get; set; } public ReadingStatusEnum ReadingStatus { get; set; } } diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs index a609b0620..0c79a99dd 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs @@ -20,6 +20,8 @@ namespace IRaCIS.Core.Domain.Models /// public Guid TrialId { get; set; } + public Guid? TrialReadingCriterionId { get; set; } + /// /// 阅片期名称 ///