diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index d863fd555..f6ed2ea07 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -400,6 +400,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid QuestionId { get; set; } public Guid RowId { get; set; } + + public bool IsNeedSort { get; set; } = true; } public class GetDicomReadingQuestionAnswerInDto @@ -1329,6 +1331,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialReadingCriterionId { get; set; } + public bool IsFirstChangeTask { get; set; } = false; + + /// + /// 是否是转变的任务(转为IRECIST) + /// + public bool IsConvertedTask { get; set; } = false; + } public class GetReadingImgInDto diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 0cd00e6ee..8f7581e3c 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -1402,96 +1402,100 @@ namespace IRaCIS.Application.Services await _readingTableAnswerRowInfoRepository.SaveChangesAsync(); - var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId, true).Include(x => x.ReadingQuestionTrial).OrderBy(x => x.RowIndex).ToListAsync(); - - var answerlist = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId, true).ToListAsync(); - - - - foreach (var item in rowInfoList.Where(x => x.RowIndex % 1 == 0)) + if (inDto.IsNeedSort) { - string measureDataStr = string.Empty; - if (item.MeasureData != null && item.MeasureData != string.Empty) + var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId, true).Include(x => x.ReadingQuestionTrial).OrderBy(x => x.RowIndex).ToListAsync(); + + var answerlist = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId, true).ToListAsync(); + + + + foreach (var item in rowInfoList.Where(x => x.RowIndex % 1 == 0)) { - dynamic measureData = JObject.Parse(item.MeasureData); - measureData.data.remark = item.ReadingQuestionTrial.OrderMark + ((decimal)index).GetLesionMark(); - measureDataStr = JsonConvert.SerializeObject(measureData); - } - - - - foreach (var answerItem in answerlist.Where(x => x.RowIndex == item.RowIndex)) - { - - answerItem.RowIndex = index; - - } - - - foreach (var rowAnswerItem in rowInfoList.Where(x => x.RowIndex == item.RowIndex)) - { - - rowAnswerItem.RowIndex = index; - rowAnswerItem.MeasureData = measureDataStr; - - } - - //await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == item.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableQuestionAnswer() - //{ - // RowIndex = index - //}); - - //await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == item.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableAnswerRowInfo() - //{ - // RowIndex = index, - // MeasureData = measureDataStr, - //}); - var spiltList = rowInfoList.Where(x => x.RowIndex % 1 != 0 && x.RowIndex > item.RowIndex && x.RowIndex < Math.Floor(item.RowIndex + 1)).OrderBy(x => x.RowIndex).ToList(); - decimal spiltindex = 0.01M; - foreach (var spiltitem in spiltList) - { - string spiltmeasureDataStr = string.Empty; - if (spiltitem.MeasureData != null && spiltitem.MeasureData != string.Empty) + string measureDataStr = string.Empty; + if (item.MeasureData != null && item.MeasureData != string.Empty) { - dynamic spiltmeasureData = JObject.Parse(spiltitem.MeasureData); - spiltmeasureData.data.remark = item.ReadingQuestionTrial.OrderMark + ((decimal)index + spiltindex).GetLesionMark(); - spiltmeasureDataStr = JsonConvert.SerializeObject(spiltmeasureData); + dynamic measureData = JObject.Parse(item.MeasureData); + measureData.data.remark = item.ReadingQuestionTrial.OrderMark + ((decimal)index).GetLesionMark(); + measureDataStr = JsonConvert.SerializeObject(measureData); } - foreach (var answerItem in answerlist.Where(x => x.RowIndex == spiltitem.RowIndex)) + + foreach (var answerItem in answerlist.Where(x => x.RowIndex == item.RowIndex)) { - answerItem.RowIndex = index + spiltindex; + + answerItem.RowIndex = index; } - foreach (var rowAnswerItem in rowInfoList.Where(x => x.RowIndex == spiltitem.RowIndex)) + foreach (var rowAnswerItem in rowInfoList.Where(x => x.RowIndex == item.RowIndex)) { - rowAnswerItem.RowIndex = index + spiltindex; - rowAnswerItem.MeasureData = spiltmeasureDataStr; - + rowAnswerItem.RowIndex = index; + rowAnswerItem.MeasureData = measureDataStr; } - - //await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == spiltitem.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableQuestionAnswer() + //await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == item.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableQuestionAnswer() //{ - // RowIndex = index + spiltindex - //}); - //await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == spiltitem.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableAnswerRowInfo() - //{ - // RowIndex = index + spiltindex, - // MeasureData = spiltmeasureDataStr, + // RowIndex = index //}); - spiltindex += 0.01M; + //await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == item.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableAnswerRowInfo() + //{ + // RowIndex = index, + // MeasureData = measureDataStr, + //}); + var spiltList = rowInfoList.Where(x => x.RowIndex % 1 != 0 && x.RowIndex > item.RowIndex && x.RowIndex < Math.Floor(item.RowIndex + 1)).OrderBy(x => x.RowIndex).ToList(); + decimal spiltindex = 0.01M; + foreach (var spiltitem in spiltList) + { + string spiltmeasureDataStr = string.Empty; + if (spiltitem.MeasureData != null && spiltitem.MeasureData != string.Empty) + { + dynamic spiltmeasureData = JObject.Parse(spiltitem.MeasureData); + spiltmeasureData.data.remark = item.ReadingQuestionTrial.OrderMark + ((decimal)index + spiltindex).GetLesionMark(); + spiltmeasureDataStr = JsonConvert.SerializeObject(spiltmeasureData); + } + + + foreach (var answerItem in answerlist.Where(x => x.RowIndex == spiltitem.RowIndex)) + { + answerItem.RowIndex = index + spiltindex; + + } + + + foreach (var rowAnswerItem in rowInfoList.Where(x => x.RowIndex == spiltitem.RowIndex)) + { + + rowAnswerItem.RowIndex = index + spiltindex; + rowAnswerItem.MeasureData = spiltmeasureDataStr; + + + } + + + //await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == spiltitem.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableQuestionAnswer() + //{ + // RowIndex = index + spiltindex + //}); + //await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == spiltitem.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableAnswerRowInfo() + //{ + // RowIndex = index + spiltindex, + // MeasureData = spiltmeasureDataStr, + //}); + + spiltindex += 0.01M; + } + index++; } - index++; + + await _readingTableAnswerRowInfoRepository.SaveChangesAsync(); } - - await _readingTableAnswerRowInfoRepository.SaveChangesAsync(); + // 自动计算 await this._readingCalculateService.CalculateTask(new CalculateTaskInDto() { @@ -2270,7 +2274,8 @@ namespace IRaCIS.Application.Services task.DigitPlaces = criterionInfo.DigitPlaces; task.CriterionType = criterionInfo.CriterionType; task.IseCRFShowInDicomReading = criterionInfo.IseCRFShowInDicomReading; - + task.IsFirstChangeTask = visitTaskInfo.IsConvertedTask && visitTaskInfo.BeforeConvertedTaskId != null; + task.IsConvertedTask = visitTaskInfo.IsConvertedTask; var blindSubjectCode = await _visitTaskRepository.Where(x => x.Id == task.VisitTaskId).Select(x => x.BlindSubjectCode).FirstNotNullAsync(); task.SubjectCode = blindSubjectCode.IsNullOrEmpty() ? task.SubjectCode : blindSubjectCode; return task;