From 4a482adefee62a18ee36af77d36d95bbbcde4483 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Fri, 22 Sep 2023 13:33:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingCalculateViewModel.cs | 2 +- .../Reading/Dto/ReadingImageTaskViewModel.cs | 9 ++-- .../ReadingImageTaskService.cs | 34 +++++++++++- .../LuganoCalculateService.cs | 54 +++++++++++++++++++ .../ReadingTaskQuestionMark.cs | 34 ++++++------ 5 files changed, 110 insertions(+), 23 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs index 27f6de674..bc8a4fb2f 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs @@ -15,7 +15,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public Guid VisitTaskId { get; set; } - public Guid QuestionId { get; set; } + public Guid TableQuestionId { get; set; } public decimal RowIndex { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index a96001111..7cb17a3f7 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -1000,17 +1000,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// InstanceId /// - public Guid InstanceId { get; set; } + public Guid? InstanceId { get; set; } /// /// SeriesId /// - public Guid SeriesId { get; set; } + public Guid? SeriesId { get; set; } /// /// StudyId /// - public Guid StudyId { get; set; } + public Guid? StudyId { get; set; } /// /// MarkTool @@ -1031,6 +1031,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// MeasureData /// public string MeasureData { get; set; } = string.Empty; + + + public Guid? FirstAddTaskId { get; set; } } public class GetReadingQuestionAndAnswerInDto { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index eea64c0c0..0a4ffb4e8 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -829,6 +829,9 @@ namespace IRaCIS.Application.Services .ToListAsync(); + + + var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); if (taskInfo.IsConvertedTask &&taskInfo.BeforeConvertedTaskId!=null) @@ -845,6 +848,26 @@ namespace IRaCIS.Application.Services x.OrderMarkName = x.OrderMark + x.RowIndexNum.GetLesionMark(); }); + + var questionMark = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId). + Select(x => new GetTableAnswerRowInfoOutDto() + { + FristAddTaskId = x.FirstAddTaskId.Value, + Id = x.Id, + InstanceId = x.InstanceId, + MeasureData = x.MeasureData, + NumberOfFrames = x.NumberOfFrames, + PicturePath = x.PicturePath, + VisitTaskId = x.VisitTaskId, + StudyId = x.StudyId, + SeriesId = x.StudyId, + }).ToListAsync(); + + questionMark.ForEach(x => { + + x.IsFirstChangeTask = x.VisitTaskId == inDto.VisitTaskId; + }); + result.AddRange(questionMark); return result; } @@ -1535,6 +1558,13 @@ namespace IRaCIS.Application.Services }).ToList(); await _readingTaskQuestionAnswerRepository.AddRangeAsync(needAddAnswer); + + var questionMarkList = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).Select(x => new + { + x.QuestionId, + x.FirstAddTaskId, + + }).ToListAsync(); await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId); var datetime = DateTime.Now; @@ -1551,8 +1581,8 @@ namespace IRaCIS.Application.Services QuestionId = x.QuestionId, SeriesId = x.SeriesId, StudyId = x.StudyId, - CreateTime = datetime - + CreateTime = datetime, + FirstAddTaskId= questionMarkList.Where(y=>y.QuestionId==x.QuestionId).Select(x=>x.FirstAddTaskId).FirstOrDefault() ?? inDto.VisitTaskId, }).ToList(); await _readingTaskQuestionMarkRepository.AddRangeAsync(markList); await _readingTaskQuestionAnswerRepository.SaveChangesAsync(); diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs index 531bf8f93..1def50633 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs @@ -23,6 +23,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate private readonly IRepository _visitTaskRepository; private readonly IRepository _readingQuestionCriterionTrialRepository; private readonly IRepository _readingTableQuestionTrialRepository; + private readonly IRepository _readingTaskQuestionMarkRepository; private readonly IRepository _readingTableAnswerRowInfoRepository; private readonly IRepository _readingQuestionTrialRepository; private readonly IRepository _organInfoRepository; @@ -36,6 +37,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IRepository visitTaskRepository, IRepository readingQuestionCriterionTrialRepository, IRepository readingTableQuestionTrialRepository, + IRepository readingTaskQuestionMarkRepository, IRepository readingTableAnswerRowInfoRepository, IRepository readingQuestionTrialRepository, IRepository organInfoRepository, @@ -49,6 +51,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate this._visitTaskRepository = visitTaskRepository; this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository; this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository; + this._readingTaskQuestionMarkRepository = readingTaskQuestionMarkRepository; this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; this._readingQuestionTrialRepository = readingQuestionTrialRepository; this._organInfoRepository = organInfoRepository; @@ -880,6 +883,47 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate QuestionMark.State, }; + + + var rowIndexList = copyTableAnswers.Select(x => x.RowIndex).Distinct().ToList(); + // 找到靶病灶问题Id + var questionId=await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId && x.LesionType == LesionType.TargetLesion).Select(x => x.Id).FirstNotNullAsync(); + + foreach (var item in rowIndexList) + { + var lowPPD =await this.GetLowPPDInfo(new GetPPDInfoInDto() { + + VisitTaskId= visitTaskId, + QuestionId= questionId, + RowIndex=item + }); + + copyTableAnswers.Where(x => x.RowIndex == item).ForEach(x => + { + + + switch (x.QuestionMark) + { + case QuestionMark.LowPPDLDi: + x.Answer = lowPPD.LowPPDLDi.ToString(); + break; + case QuestionMark.LowPPDSDi: + x.Answer = lowPPD.LowPPDSDi.ToString(); + break; + case QuestionMark.NadirPPD: + x.Answer = lowPPD.NadirPPD.ToString(); + break; + case QuestionMark.LowPPDVisit: + x.Answer = lowPPD.LowPPDVisit.ToString(); + break; + + + } + + + }); + } + var tableAnswers = copyTableAnswers.Select(x => new ReadingTableQuestionAnswer { Id = NewId.NextGuid(), @@ -893,10 +937,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }); + var questionMarkList = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == LastVisitTaskId).Select(x => new ReadingTaskQuestionMark() + { + VisitTaskId= visitTaskId, + FirstAddTaskId=x.FirstAddTaskId, + QuestionId=x.QuestionId, + }).ToListAsync(); + questionMarkList.ForEach(x => { + x.Id = NewId.NextGuid(); + }); var addList = _mapper.Map>(tableRowAnswers); + await _readingTaskQuestionMarkRepository.AddRangeAsync(questionMarkList); await _readingTableAnswerRowInfoRepository.AddRangeAsync(addList); await _readingTableQuestionAnswerRepository.AddRangeAsync(tableAnswers); await _readingTableQuestionAnswerRepository.SaveChangesAsync(); diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs index 858c66eb8..16d607564 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs @@ -33,40 +33,38 @@ namespace IRaCIS.Core.Domain.Models /// /// InstanceId /// - [Required] - public Guid InstanceId { get; set; } + public Guid? InstanceId { get; set; } /// /// SeriesId /// - [Required] - public Guid SeriesId { get; set; } + public Guid? SeriesId { get; set; } /// /// StudyId /// - [Required] - public Guid StudyId { get; set; } + + public Guid? StudyId { get; set; } /// /// MarkTool /// - public string MarkTool { get; set; } - - /// + public string MarkTool { get; set; } = string.Empty; + + /// /// PicturePath /// - public string PicturePath { get; set; } - - /// + public string PicturePath { get; set; } = string.Empty; + + /// /// NumberOfFrames /// - public int? NumberOfFrames { get; set; } + public int? NumberOfFrames { get; set; } - /// - /// MeasureData - /// - [Required] + /// + /// MeasureData + /// + [Required] public string MeasureData { get; set; } = string.Empty; /// @@ -79,6 +77,8 @@ namespace IRaCIS.Core.Domain.Models /// public Guid CreateUserId { get; set; } + public Guid? FirstAddTaskId { get; set; } + }