diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index e4a2862b3..bf1ad0c21 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -260,6 +260,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string BlindName { get; set; } + public bool IsHaveAdditionalQuestion { get; set; } + public bool IsBaseLine { get; set; } public DateTime? LatestScanDate { get; set; } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/GeneralCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/GeneralCalculateService.cs index 09e656644..b79089363 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/GeneralCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/GeneralCalculateService.cs @@ -150,6 +150,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync(); + var isAdditionalQuestionId = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == visitTaskInfo.TrialReadingCriterionId && x.IsAdditional).IgnoreQueryFilters().Select(x => x.Id).ToListAsync(); + var taskquery = _visitTaskRepository .Where(x => (x.SubjectId == visitTaskInfo.SubjectId && x.TaskState == TaskState.Effect && x.IsAnalysisCreate == visitTaskInfo.IsAnalysisCreate @@ -166,11 +168,14 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } + + var taskInfoList = await taskquery.OrderBy(x => x.VisitTaskNum).Select(x => new VisitTaskInfo() { BlindName = x.TaskBlindName, IsBaseLine = x.SourceSubjectVisit.IsBaseLine, VisitTaskId = x.Id, + TaskName = x.TaskName, LatestScanDate= x.SourceSubjectVisit!=null?x.SourceSubjectVisit.LatestScanDate : null, VisitTaskNum = x.VisitTaskNum, @@ -178,6 +183,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }).ToListAsync(); + var taskIds = taskInfoList.Select(x => x.VisitTaskId).ToList(); + + var isHaveAdditionalTaskIds = await _readingTaskQuestionAnswerRepository.Where(x => taskIds.Contains(x.VisitTaskId) && isAdditionalQuestionId.Contains(x.ReadingQuestionTrialId)).Select(x => x.VisitTaskId).Distinct().ToListAsync(); + + taskInfoList.ForEach(x => { + x.IsHaveAdditionalQuestion = isHaveAdditionalTaskIds.Contains(x.VisitTaskId); + }); return taskInfoList; } }