diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 3856305be..c29e64420 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -323,12 +323,24 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid QuestionId { get; set; } - public Guid MainRowId { get; set; } - + + /// + /// 融合的病灶 + /// public Guid MergeRowId { get; set; } + /// + /// 融向的病灶 + /// + public List MeltingInToLesionList { get; set; } - } + /// + /// 融合后病灶状态 + /// + public string LesionState { get; set; } + + + } public class SplitLesionInDto { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index f4cea5994..c4f9fb605 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -1467,52 +1467,21 @@ namespace IRaCIS.Application.Services { await VerifyTaskIsSign(inDto.VisitTaskId); 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) + var mergeRow =await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.MergeRowId).FirstNotNullAsync(); + if (inDto.LesionState != string.Empty) { - throw new BusinessValidationFailedException(_localizer["ReadingImage_NotaTask"]); - } - - - 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() + await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.RowId == mergeRow.Id && x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State, x => new ReadingTableQuestionAnswer() + { + Answer = inDto.LesionState, + }); + } + + await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(inDto.MergeRowId, x => new ReadingTableAnswerRowInfo() { - 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, + MeltingInToLesion=JsonConvert.SerializeObject(inDto.MeltingInToLesionList), SplitOrMergeType = SplitOrMergeType.Merge, }); - - - await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(mergeid, x => new ReadingTableAnswerRowInfo() - { - MergeRowId = minaid, - SplitOrMergeType = SplitOrMergeType.Merge, - }); - await _readingTableAnswerRowInfoRepository.SaveChangesAsync(); - - } /// @@ -1545,6 +1514,7 @@ namespace IRaCIS.Application.Services var result = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == rowinfo.VisitTaskId && x.QuestionId == rowinfo.QuestionId && x.Id != rowinfo.Id) // 筛选状态 .Where(x => x.LesionAnswerList.Any(y => y.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && !needFilterState.Contains(y.Answer))) + .Where(x=>x.SplitOrMergeType!=SplitOrMergeType.Split&&x.SplitOrMergeType!=SplitOrMergeType.SplitMain) .Select(x => new GetCanMergeLesionOutDto() { RowId = x.Id, diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTableAnswerRowInfo.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTableAnswerRowInfo.cs index 4670ad302..cca4d2d9c 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTableAnswerRowInfo.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTableAnswerRowInfo.cs @@ -207,6 +207,24 @@ namespace IRaCIS.Core.Domain.Models /// public string MarkTool { get; set; } = string.Empty; + /// + /// 融向的病灶 + /// + public string MeltingInToLesion { get; set; } = "[]"; + + public List MeltingInToLesionList { get { + + try + { + return JsonConvert.DeserializeObject>(this.MeltingInToLesion); + } + catch (Exception) + { + + return new List(); + } + } } + [JsonIgnore] [ForeignKey("VisitTaskId")]