diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 605c64b6e..0cb0ecae0 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -609,6 +609,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public string Answer { get; set; } + public string LastTaskAnswer { get; set; } + public bool IsFirstChangeTask { get; set; } = false; public List CrterionDictionaryGroup { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 7c007f802..3cae0656b 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -874,10 +874,33 @@ namespace IRaCIS.Application.Services var answers = new List(); + var lastTaskAnswer = new List(); + if (visitTaskId != null) { answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync(); + var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync(); + + var laskTaskId = await _visitTaskRepository.Where(x => + (x.SubjectId == taskInfo.SubjectId && x.TaskState == TaskState.Effect + && x.IsAnalysisCreate == taskInfo.IsAnalysisCreate + && x.DoctorUserId == taskInfo.DoctorUserId + && x.IsSelfAnalysis == taskInfo.IsSelfAnalysis + && x.VisitTaskNum < taskInfo.VisitTaskNum + && x.ArmEnum == taskInfo.ArmEnum + && x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId + && x.ReadingCategory == ReadingCategory.Visit) || x.Id == taskInfo.BeforeConvertedTaskId + ).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync(); + if (criterionIdInfo.IsReadingTaskViewInOrder != ReadingOrder.InOrder) + { + // 无序的话 不要查 + laskTaskId = Guid.NewGuid(); + } + + lastTaskAnswer = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == laskTaskId).ToListAsync(); + + var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); if (taskinfo.VisitTaskNum == 0) @@ -922,24 +945,28 @@ namespace IRaCIS.Application.Services foreach (var item in result) { - GetDicomReadingAnswer(item, questions, answers); + GetDicomReadingAnswer(item, questions, answers, lastTaskAnswer); } return result; } - private void GetDicomReadingAnswer(DicomReadingQuestionAnswer item, List questions, List answers) + private void GetDicomReadingAnswer(DicomReadingQuestionAnswer item, List questions, List answers, List lastTaskAnswers) { var answer = answers.Where(x => x.ReadingQuestionTrialId == item.Id).Select(x => x.Answer).FirstIsNullReturnEmpty(); item.Answer = answer.IsNullOrEmpty() ? item.DefaultValue : answer; + var lastTaskAnswer = lastTaskAnswers.Where(x => x.ReadingQuestionTrialId == item.Id).Select(x => x.Answer).FirstIsNullReturnEmpty(); + item.LastTaskAnswer = lastTaskAnswer.IsNullOrEmpty() ? item.DefaultValue : lastTaskAnswer; + + item.Childrens = questions.Where(x => x.ParentId == item.Id || (x.GroupId == item.Id && x.ParentId == null)).ToList(); if (item.Childrens != null && item.Childrens.Count > 0) { foreach (var question in item.Childrens) { - GetDicomReadingAnswer(question, questions, answers); + GetDicomReadingAnswer(question, questions, answers, lastTaskAnswers); } }