From 3c4a8534f09d7652b0c059d8da718b0d61519a29 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 18 Oct 2022 16:18:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingImageTaskService.cs | 216 +++++++++--------- 1 file changed, 109 insertions(+), 107 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 332626d2d..6fbcb8fa0 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -105,112 +105,8 @@ namespace IRaCIS.Application.Services } - #region 病灶的拆分与合并 - /// - /// 拆分病灶 - /// - /// - [HttpPost] - public async Task SplitLesion(SplitLesionInDto inDto) - { - await this.VerifyIsBaseLineTask(inDto.VisitTaskId); - var rowAnswer = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.RowId).AsNoTracking().FirstNotNullAsync(); - var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == rowAnswer.RowIndex && x.QuestionId == inDto.QuestionId).Include(x => x.ReadingTableQuestionTrial).ToListAsync(); - var maxRowIndex = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.RowIndex < Math.Floor(rowAnswer.RowIndex + 1)).OrderByDescending(x => x.RowIndex).Select(x => x.RowIndex).FirstOrDefaultAsync(); - var newRowIndex = maxRowIndex + (decimal)0.01; - - rowAnswer.RowIndex = newRowIndex; - rowAnswer.MergeRowId = null; - rowAnswer.SplitOrMergeType = SplitOrMergeType.Split; - rowAnswer.SplitRowId = rowAnswer.Id; - rowAnswer.Id = NewId.NextGuid(); - rowAnswer.InstanceId = null; - rowAnswer.SeriesId = null; - rowAnswer.IsCurrentTaskAdd = true; - rowAnswer.MeasureData = string.Empty; - - List needRemoveMark = new List() - { - QuestionMark.MajorAxis, - QuestionMark.ShortAxis, - }; - - tableAnswers.ForEach(x => - { - x.Id = NewId.NextGuid(); - x.RowIndex = newRowIndex; - x.VisitTaskId = inDto.VisitTaskId; - x.RowId = rowAnswer.Id; - x.Answer = needRemoveMark.Contains(x.ReadingTableQuestionTrial.QuestionMark) ? string.Empty : x.Answer; - x.ReadingTableQuestionTrial = null; - }); - await _readingTableAnswerRowInfoRepository.AddAsync(rowAnswer); - await _readingTableQuestionAnswerRepository.AddRangeAsync(tableAnswers); - await _readingTableAnswerRowInfoRepository.SaveChangesAsync(); - - } - - /// - /// 合并病灶 - /// - /// - [HttpPost] - public async Task MergeLesion(MergeLesionInDto inDto) - { - await this.VerifyIsBaseLineTask(inDto.VisitTaskId); - - var rowsInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && (x.Id == inDto.MainRowId || x.Id == inDto.MergeRowId)).ToListAsync(); - - if (rowsInfo.Count() != 2) - { - throw new BusinessValidationFailedException("合并的病灶并非同一个访视任务"); - } - - - var minaid = rowsInfo.Where(x => x.Id == inDto.MainRowId).Select(x => x.Id).FirstOrDefault(); - var mergeid = rowsInfo.Where(x => x.Id == inDto.MergeRowId).Select(x => x.Id).FirstOrDefault(); - - List needRemoveMark = new List() - { - QuestionMark.MajorAxis, - QuestionMark.ShortAxis, - }; - - var mainAnswer = await _readingTableQuestionAnswerRepository.Where(x => x.RowId == minaid).Include(x => x.ReadingTableQuestionTrial).ToListAsync(); - - foreach (var item in mainAnswer) - { - await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.RowId == mergeid && x.TableQuestionId == item.TableQuestionId, x => new ReadingTableQuestionAnswer() - { - Answer = needRemoveMark.Contains(item.ReadingTableQuestionTrial.QuestionMark) ? string.Empty : item.Answer, - }); - } - - - - await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(mergeid, x => new ReadingTableAnswerRowInfo() - { - MergeRowId = minaid, - SplitOrMergeType = SplitOrMergeType.Merge, - }); - - - await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(mergeid, x => new ReadingTableAnswerRowInfo() - { - MergeRowId = minaid, - SplitOrMergeType = SplitOrMergeType.Merge, - }); - - await _readingTableAnswerRowInfoRepository.SaveChangesAsync(); - - - } - - - #endregion - #region 阅片期 -全局和肿瘤学任务的生成 @@ -451,8 +347,6 @@ namespace IRaCIS.Application.Services #endregion - - #region 表格问题相关 @@ -974,7 +868,6 @@ namespace IRaCIS.Application.Services #endregion - #region 访视任务 - Dicom 阅片 /// @@ -1193,6 +1086,115 @@ namespace IRaCIS.Application.Services return ResponseOutput.Ok(true); } + + + + #endregion + + #region 访视任务 - Dicom 阅片 表格问题 病灶的拆分与合并 + + + /// + /// 拆分病灶 + /// + /// + [HttpPost] + public async Task SplitLesion(SplitLesionInDto inDto) + { + await this.VerifyIsBaseLineTask(inDto.VisitTaskId); + var rowAnswer = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.RowId).AsNoTracking().FirstNotNullAsync(); + var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == rowAnswer.RowIndex && x.QuestionId == inDto.QuestionId).Include(x => x.ReadingTableQuestionTrial).ToListAsync(); + var maxRowIndex = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.RowIndex < Math.Floor(rowAnswer.RowIndex + 1)).OrderByDescending(x => x.RowIndex).Select(x => x.RowIndex).FirstOrDefaultAsync(); + var newRowIndex = maxRowIndex + (decimal)0.01; + + rowAnswer.RowIndex = newRowIndex; + rowAnswer.MergeRowId = null; + rowAnswer.SplitOrMergeType = SplitOrMergeType.Split; + rowAnswer.SplitRowId = rowAnswer.Id; + rowAnswer.Id = NewId.NextGuid(); + rowAnswer.InstanceId = null; + rowAnswer.SeriesId = null; + rowAnswer.IsCurrentTaskAdd = true; + rowAnswer.MeasureData = string.Empty; + + List needRemoveMark = new List() + { + QuestionMark.MajorAxis, + QuestionMark.ShortAxis, + }; + + tableAnswers.ForEach(x => + { + x.Id = NewId.NextGuid(); + x.RowIndex = newRowIndex; + x.VisitTaskId = inDto.VisitTaskId; + x.RowId = rowAnswer.Id; + x.Answer = needRemoveMark.Contains(x.ReadingTableQuestionTrial.QuestionMark) ? string.Empty : x.Answer; + x.ReadingTableQuestionTrial = null; + }); + await _readingTableAnswerRowInfoRepository.AddAsync(rowAnswer); + await _readingTableQuestionAnswerRepository.AddRangeAsync(tableAnswers); + await _readingTableAnswerRowInfoRepository.SaveChangesAsync(); + + } + + /// + /// 合并病灶 + /// + /// + [HttpPost] + public async Task MergeLesion(MergeLesionInDto inDto) + { + await this.VerifyIsBaseLineTask(inDto.VisitTaskId); + + var rowsInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && (x.Id == inDto.MainRowId || x.Id == inDto.MergeRowId)).ToListAsync(); + + if (rowsInfo.Count() != 2) + { + throw new BusinessValidationFailedException("合并的病灶并非同一个访视任务"); + } + + + var minaid = rowsInfo.Where(x => x.Id == inDto.MainRowId).Select(x => x.Id).FirstOrDefault(); + var mergeid = rowsInfo.Where(x => x.Id == inDto.MergeRowId).Select(x => x.Id).FirstOrDefault(); + + List needRemoveMark = new List() + { + QuestionMark.MajorAxis, + QuestionMark.ShortAxis, + }; + + var mainAnswer = await _readingTableQuestionAnswerRepository.Where(x => x.RowId == minaid).Include(x => x.ReadingTableQuestionTrial).ToListAsync(); + + foreach (var item in mainAnswer) + { + await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.RowId == mergeid && x.TableQuestionId == item.TableQuestionId, x => new ReadingTableQuestionAnswer() + { + Answer = needRemoveMark.Contains(item.ReadingTableQuestionTrial.QuestionMark) ? string.Empty : item.Answer, + }); + } + + + + await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(mergeid, x => new ReadingTableAnswerRowInfo() + { + MergeRowId = minaid, + SplitOrMergeType = SplitOrMergeType.Merge, + }); + + + await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(mergeid, x => new ReadingTableAnswerRowInfo() + { + MergeRowId = minaid, + SplitOrMergeType = SplitOrMergeType.Merge, + }); + + await _readingTableAnswerRowInfoRepository.SaveChangesAsync(); + + + } + + #endregion