diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs index 5e9f7d556..181920845 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs @@ -12,7 +12,17 @@ namespace IRaCIS.Core.Application.ViewModel public Guid VisitTaskId { get; set; } } - public class ReadingTaskQuestionAnswerDto : ReadingTaskQuestionAnswer + public class CalculateTargetLesionStatusInDto + { + public Guid VisitTaskId { get; set;} + + public Guid QuestionId { get; set; } + + public decimal RowNumber { get; set; } + + } + + public class ReadingTaskQuestionAnswerDto : ReadingTaskQuestionAnswer { public QuestionType QuestionType { get; set; } } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs index b7391d8a3..7add36e94 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs @@ -404,7 +404,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate if (lowPddTaskid != default(Guid)) { - var lowPPDAnswerList = await _readingTableQuestionAnswerRepository.Where(x =>x.VisitTaskId== lowPddTaskid + var lowPPDAnswerList = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == lowPddTaskid && x.QuestionId == inDto.QuestionId && x.RowIndex == inDto.RowIndex).Include(x => x.ReadingTableQuestionTrial) .Select(x => new @@ -447,7 +447,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var calculateDto = await _generalCalculateService.GetReadingCalculateDto(inDto.VisitTaskId); return new GetReportVerifyOutDto() { - TumorEvaluate = calculateDto.QuestionInfo.Where(x=>x.QuestionType==QuestionType.ImgOncology).Select(x=>x.Answer).FirstOrDefault(), + TumorEvaluate = calculateDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.ImgOncology).Select(x => x.Answer).FirstOrDefault(), IsExistDisease = await this.GetReportIsExistDisease(inDto.VisitTaskId), }; @@ -676,7 +676,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate if (valueOfTypes.Contains(item.ValueType)) { - item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString("F"+ inDto.DigitPlaces.ToString()); + item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString("F" + inDto.DigitPlaces.ToString()); } } catch (Exception) @@ -829,18 +829,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate if (await _readingTaskQuestionAnswerRepository.AnyAsync(x => x.ReadingQuestionTrial.QuestionType == QuestionType.ExistPET && x.VisitTaskId == inDto.VisitTaskId && x.Answer == ReadingYesOrNo.Yes.GetEnumInt())) { - List required=new List() { - QuestionType.LiverSUVmax, - QuestionType.MediastinumSUVmax, - QuestionType.SUVmax, - QuestionType.SUVmaxLesion, - QuestionType.PET5PS, - }; + List required = new List() { + QuestionType.LiverSUVmax, + QuestionType.MediastinumSUVmax, + QuestionType.SUVmax, + QuestionType.SUVmaxLesion, + QuestionType.PET5PS, + }; if (taskinfo.VisitTaskNum != 0m) { - required.Add(QuestionType.UptakeChange); - required.Add(QuestionType.EvidenceFocalFDG); - } + required.Add(QuestionType.UptakeChange); + required.Add(QuestionType.EvidenceFocalFDG); + } if ((await _readingTaskQuestionAnswerRepository.CountAsync(x => required.Contains(x.ReadingQuestionTrial.QuestionType) && x.VisitTaskId == inDto.VisitTaskId && x.Answer != string.Empty)) != required.Count()) { @@ -848,12 +848,12 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { errorMassage += _localizer["ReadingCalculate_LuganoPetVerification"]; } - else + else { - errorMassage += _localizer["ReadingCalculate_LuganoBaseLinePetVerification"]; - } - - } + errorMassage += _localizer["ReadingCalculate_LuganoBaseLinePetVerification"]; + } + + } } @@ -866,16 +866,38 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } - - - #region 将上一次的访视病灶添加到这一次 - /// - /// 将上一次的访视病灶添加到这一次 + /// 计算靶病灶状态 /// /// /// - public async Task AddTaskLesionAnswerFromLastTask(AddTaskLesionAnswerFromLastTaskInDto inDto) + public async Task CalculateTargetLesionStatus(CalculateTargetLesionStatusInDto inDto) + { + if (inDto.RowNumber % 1 != 0) + { + var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); + + // 找到靶病灶问题 + var targetQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && x.LesionType == LesionType.TargetLesion).FirstOrDefaultAsync(); + if(targetQuestion!=null) + { + // 找到状态问题 + + } + + + } + } + + + #region 将上一次的访视病灶添加到这一次 + + /// + /// 将上一次的访视病灶添加到这一次 + /// + /// + /// + public async Task AddTaskLesionAnswerFromLastTask(AddTaskLesionAnswerFromLastTaskInDto inDto) { var visitTaskId = inDto.VisitTaskId;