diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs index af165040a..a8cb8b25d 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs @@ -176,6 +176,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public decimal RowIndex { get; set; } + public decimal FristAddTaskNum { get; set; } + public string MeasureData { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index df47cde8d..5d85ca0e2 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -1152,6 +1152,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool IsCanEditPosition { get; set; } + public decimal FristAddTaskNum { get; set; } = 0; + public List AnswerList { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index fedef95e3..5635eba59 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -559,7 +559,7 @@ namespace IRaCIS.Application.Services result.IsBaseLineTask = taskinfo.SourceSubjectVisitId == baseLineVisitId; - var readingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync(); + var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); var criterionId = taskinfo.TrialReadingCriterionId; @@ -644,8 +644,9 @@ namespace IRaCIS.Application.Services return (result, new { - readingTaskState = readingTaskState, - FormType = formType + readingTaskState = visitTaskInfo.ReadingTaskState, + FormType = formType, + TaskNum= visitTaskInfo.VisitTaskNum, }); ; } @@ -1024,6 +1025,7 @@ namespace IRaCIS.Application.Services rowInfo.QuestionId = inDto.QuestionId; rowInfo.MeasureData = inDto.MeasureData; rowInfo.IsCurrentTaskAdd = isCurrentTaskAdd; + rowInfo.FristAddTaskNum = inDto.FristAddTaskNum; rowInfo.RowIndex = inDto.RowIndex; rowInfo.InstanceId = inDto.InstanceId; rowInfo.SeriesId = inDto.SeriesId; diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/GeneralCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/GeneralCalculateService.cs index 6e4466ded..9316eb6fa 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/GeneralCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/GeneralCalculateService.cs @@ -101,6 +101,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { RowIndex = x.RowIndex, MeasureData = x.MeasureData, + FristAddTaskNum=x.FristAddTaskNum, TableQuestionList = tableQuestion.Where(y => y.QuestionId == item.QuestionId && y.RowId == x.Id).ToList(), }).ToList(); diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs index 120c5b039..814468074 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs @@ -14,6 +14,7 @@ using MassTransit; namespace IRaCIS.Core.Application.Service.ReadingCalculate { + [ApiExplorerSettings(GroupName = "Reading")] public class PCWG3CalculateService : BaseService, ICriterionCalculateService { private readonly IRepository _readingTableQuestionAnswerRepository; @@ -198,6 +199,19 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }; } + /// + /// 测试计算 + /// + /// + /// + /// + [HttpPost] + public async Task TestCalculate(Guid visitTaskId, QuestionType type) + { + ReadingCalculateDto readingData = await _generalCalculateService.GetReadingCalculateDto(visitTaskId); + await ReadingCalculate(readingData, new List() { type }); + } + /// /// 计算任务 /// @@ -353,7 +367,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// public async Task GetBaseLineLesionsCount(ReadingCalculateDto inDto) { - return inDto.QuestionInfo.Where(x => x.LesionType == LesionType.BaselineLesions).Select(x => x.TableRowInfoList).Count(); + return inDto.QuestionInfo.Where(x => x.LesionType == LesionType.BaselineLesions).SelectMany(x => x.TableRowInfoList).Count(); } #endregion @@ -402,23 +416,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { return 0; } - List visitTaskAnswerList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId != inDto.VisitTaskId && x.VisitTask.ReadingCategory == ReadingCategory.Visit - && x.VisitTask.IsAnalysisCreate == inDto.IsAnalysisCreate - && x.VisitTask.IsSelfAnalysis == inDto.IsSelfAnalysis - && x.SubjectId == inDto.SubjectId && x.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTask.ArmEnum == inDto.ArmEnum && x.VisitTask.TaskState == TaskState.Effect && x.ReadingQuestionTrial.QuestionType == QuestionType.NewLesionsCount) - .Select(x => new VisitTaskAnswerInfo - { - VisitTaskId = x.VisitTaskId, - QuestionId = x.ReadingQuestionTrialId, - VisitName = x.VisitTask.SourceSubjectVisit.VisitName, - BlindName = x.VisitTask.SourceSubjectVisit.BlindName, - VisitTaskNum=x.VisitTask.VisitTaskNum, - NewLesionsCount = x.Answer.IsNullOrEmptyReturn0(), - }).ToListAsync(); - - visitTaskAnswerList = visitTaskAnswerList.Where(x => x.VisitTaskNum >= 2).ToList(); - - return int.Parse( Math.Floor(visitTaskAnswerList.Sum(x => x.NewLesionsCount)).ToString()); + var result= inDto.QuestionInfo.Where(x => x.LesionType == LesionType.AlwaysNewLesions&&).SelectMany(x => x.TableRowInfoList) + .Where(x =>x.FristAddTaskNum>=2&& x.TableQuestionList.Any(y => y.QuestionMark == QuestionMark.State && y.Answer == EvaluationOfState.Exists.GetEnumInt())) + .Count(); + return result; } #endregion diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTableAnswerRowInfo.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTableAnswerRowInfo.cs index 1aff84b43..cde854016 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTableAnswerRowInfo.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTableAnswerRowInfo.cs @@ -80,9 +80,12 @@ namespace IRaCIS.Core.Domain.Models /// public Guid? MergeRowId { get; set; } - + /// + /// 第一次添加的任务ID + /// + public decimal FristAddTaskNum { get; set; } = 0; public SplitOrMergeType? SplitOrMergeType { get; set; }