From 3ae311bd02d90a76b5782b3de88724dfef089b68 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 25 Dec 2024 16:09:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8A=E4=B8=80=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingImageTaskViewModel.cs | 8 +--- .../ReadingImageTaskService.cs | 2 + .../Service/Reading/_MapConfig.cs | 1 + .../Dto/CriterionCalculateDto.cs | 47 +++++++++++++++++++ .../MRIPDFFCalculateService.cs | 18 +++++++ 5 files changed, 69 insertions(+), 7 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 0bc0c13fb..1d43a80b9 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -469,13 +469,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public int? NumberOfFrames { get; set; } public string MeasureData { get; set; } = string.Empty; - public Guid FirstAddTaskId - { - get - { - return this.VisitTaskId; - } - } + public Guid? FirstAddTaskId { get; set; } public QuestionType? QuestionType { get; set; } public string OrderMarkName { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index c5df091fb..4ba75ba63 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -92,6 +92,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task SaveTableQuestionMark(SaveTableQuestionMarkInDto inDto) { + inDto.FirstAddTaskId=inDto.FirstAddTaskId==null?inDto.VisitTaskId:inDto.FirstAddTaskId; var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x =>x.VisitTaskId==inDto.VisitTaskId&&x.QuestionId==inDto.QuestionId&& x.RowId == inDto.RowId.Value && x.TableQuestionId == inDto.TableQuestionId); await _readingTableQuestionAnswerRepository.AddAsync(new ReadingTableQuestionAnswer() @@ -1008,6 +1009,7 @@ namespace IRaCIS.Core.Application.Service x.IsFirstChangeTask = x.VisitTaskId == inDto.VisitTaskId; }); result.AddRange(questionMark); + result= result.OrderBy(x=>x.RowIndex).ThenBy(x => x.OrderMarkName).ToList(); return result; } diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index a7f150c36..bd74f0ec9 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -65,6 +65,7 @@ namespace IRaCIS.Core.Application.Service CreateMap(); #endregion + CreateMap(); CreateMap(); CreateMap(); CreateMap(); diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs index 269533c15..276672440 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs @@ -106,6 +106,53 @@ namespace IRaCIS.Core.Application.ViewModel } + public class TableMarkInfo + { + + public Guid VisitTaskId { get; set; } + + public Guid QuestionId { get; set; } + + public Guid? InstanceId { get; set; } + + public Guid? SeriesId { get; set; } + public Guid? StudyId { get; set; } + + public string MarkTool { get; set; } = string.Empty; + + + public string PicturePath { get; set; } = string.Empty; + + public int? NumberOfFrames { get; set; } + + public string MeasureData { get; set; } = string.Empty; + public Guid? FirstAddTaskId { get; set; } + + public QuestionType? QuestionType { get; set; } + public string OrderMarkName { get; set; } = string.Empty; + + public Guid? OtherInstanceId { get; set; } + + public Guid? OtherSeriesId { get; set; } + + public Guid? OtherStudyId { get; set; } + + /// + /// 表格问题标记 + /// + public Guid? RowId { get; set; } + + public Guid? TableQuestionId { get; set; } + + public decimal? RowIndex { get; set; } + + public string OtherMarkTool { get; set; } = string.Empty; + + public string OtherPicturePath { get; set; } = string.Empty; + public int? OtherNumberOfFrames { get; set; } + public string OtherMeasureData { get; set; } = string.Empty; + } + public class AddTaskLesionAnswerFromLastTaskOutDto { public bool IsBaseLine { get; set; } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/MRIPDFFCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/MRIPDFFCalculateService.cs index 2b7c398ee..72ada0715 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/MRIPDFFCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/MRIPDFFCalculateService.cs @@ -20,6 +20,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IRepository _subjectVisitRepository, IRepository _organInfoRepository, IRepository _dictionaryRepository, + IRepository _readingTaskQuestionMarkRepository, IRepository _dicomStudyRepository, IRepository _noneDicomStudyRepository, IRepository _tumorAssessmentRepository, @@ -368,6 +369,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var tableQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId && x.LesionType == LesionType.FatFraction).FirstNotNullAsync(); var tableQuestionList = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionId == tableQuestion.Id).ToListAsync(); + var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && + x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId && + x.IsAnalysisCreate == taskinfo.IsAnalysisCreate && + x.DoctorUserId == taskinfo.DoctorUserId && + x.IsSelfAnalysis == taskinfo.IsSelfAnalysis && + x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum + ).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync(); + + + List marks = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == LastVisitTaskId && x.RowId != null).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + List rowlist = new List(); @@ -377,6 +390,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate foreach (var item in dictionList) { var guid = NewId.NextGuid(); + marks.ForEach(x => { + x.RowId = x.RowIndex == num ? guid : x.RowId; + }); rowlist.Add(new ReadingTableAnswerRowInfo() { FristAddTaskId= visitTaskId, @@ -421,6 +437,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } await _readingTableAnswerRowInfoRepository.AddRangeAsync(rowlist); await _readingTableQuestionAnswerRepository.AddRangeAsync(tableAnswerList); + + await _readingTaskQuestionMarkRepository.AddRangeAsync(_mapper.Map>(marks)); await _readingTableQuestionAnswerRepository.SaveChangesAsync(); return new AddTaskLesionAnswerFromLastTaskOutDto()