diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs index b0981f6a0..a7d320342 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs @@ -92,6 +92,124 @@ namespace IRaCIS.Core.Application.Service var result = await _readingMedicineQuestionAnswerRepository.SaveChangesAsync(); + + #region 取任务 + if (medicalReviewInfo.IsReadingTaskViewInOrder) + { + medicalReviewInfo.TaskList = await _visitTaskRepository + .WhereIf(taskInfo.ArmEnum == Arm.JudgeArm, x => x.ArmEnum == Arm.JudgeArm) + .WhereIf(taskInfo.ArmEnum != Arm.JudgeArm, x => x.ArmEnum != Arm.JudgeArm) + .Where(x => x.IsAnalysisCreate == taskInfo.IsAnalysisCreate) + .Where(x => x.TaskState == TaskState.Effect) + .Where(x => x.SubjectId == taskInfo.SubjectId + &&x.ArmEnum== taskInfo.ArmEnum + &&x.TrialReadingCriterionId==taskInfo.TrialReadingCriterionId + + && x.DoctorUserId == taskInfo.DoctorUserId && + x.ReadingTaskState == ReadingTaskState.HaveSigned && + x.ReReadingApplyState != ReReadingApplyState.Agree + ).OrderBy(x => x.VisitTaskNum).Select(x => new TaskInfo() + { + TaskId = x.Id, + IsCurrentTask = x.Id == taskInfo.Id, + ReadingCategory = x.ReadingCategory, + TaskBlindName = x.TaskBlindName, + ArmEnum = x.ArmEnum, + TaskName = x.TaskName, + SouceReadModuleId = x.SouceReadModuleId, + SourceSubjectVisitId = x.SourceSubjectVisitId, + JudgeVisitTaskId = x.JudgeVisitTaskId, + JudgeResultArm = x.JudgeResultTask.ArmEnum, + SubjectId = x.SubjectId, + JudgeQuestionAnswerInfoList = x.ArmEnum == Arm.JudgeArm ? x.JudgeResultTask.ReadingTaskQuestionAnswerList.Where(y => y.ReadingQuestionTrial.IsJudgeQuestion).Select(y => new JudgeQuestionAnswerInfo() + { + Answer = y.Answer, + QuestionName = y.ReadingQuestionTrial.QuestionName, + DictionaryCode = y.ReadingQuestionTrial.DictionaryCode, + QuestionGenre = y.ReadingQuestionTrial.QuestionGenre, + + }).ToList() : x.ReadingTaskQuestionAnswerList.Where(y => y.ReadingQuestionTrial.IsJudgeQuestion).Select(y => new JudgeQuestionAnswerInfo() + { + Answer = y.Answer, + QuestionName = y.ReadingQuestionTrial.QuestionName, + DictionaryCode = y.ReadingQuestionTrial.DictionaryCode, + QuestionGenre = y.ReadingQuestionTrial.QuestionGenre, + }).ToList() + }).ToListAsync(); + + List otherTask = await _visitTaskRepository.Where(x => x.ArmEnum != Arm.JudgeArm && x.SubjectId == taskInfo.SubjectId + && x.DoctorUserId != taskInfo.DoctorUserId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReReadingApplyState != ReReadingApplyState.Agree) + .Where(x => x.IsAnalysisCreate == taskInfo.IsAnalysisCreate) + .OrderBy(x => x.VisitTaskNum).Select(x => new TaskInfo() + { + TaskId = x.Id, + IsCurrentTask = x.Id == taskInfo.Id, + ReadingCategory = x.ReadingCategory, + TaskBlindName = x.TaskBlindName, + ArmEnum = x.ArmEnum, + TaskName = x.TaskName, + SouceReadModuleId = x.SouceReadModuleId, + SourceSubjectVisitId = x.SourceSubjectVisitId, + }).ToListAsync(); + + medicalReviewInfo.TaskList.ForEach(x => + { + x.OtherTaskId = otherTask.Where(y => y.SouceReadModuleId == x.SouceReadModuleId && y.SourceSubjectVisitId == x.SourceSubjectVisitId).Select(y => y.TaskId).FirstOrDefault(); + }); + } + else + { + medicalReviewInfo.TaskList = await _visitTaskRepository.Where(x => x.Id == taskInfo.Id).Select(x => new TaskInfo() + { + TaskId = x.Id, + IsCurrentTask = x.Id == taskInfo.Id, + ReadingCategory = x.ReadingCategory, + TaskBlindName = x.TaskBlindName, + ArmEnum = x.ArmEnum, + TaskName = x.TaskName, + SouceReadModuleId = x.SouceReadModuleId, + SourceSubjectVisitId = x.SourceSubjectVisitId, + SubjectId = x.SubjectId, + JudgeQuestionAnswerInfoList = x.ArmEnum == Arm.JudgeArm ? x.JudgeResultTask.ReadingTaskQuestionAnswerList.Where(y => y.ReadingQuestionTrial.IsJudgeQuestion).Select(y => new JudgeQuestionAnswerInfo() + { + Answer = y.Answer, + QuestionName = y.ReadingQuestionTrial.QuestionName, + DictionaryCode = y.ReadingQuestionTrial.DictionaryCode, + QuestionGenre = y.ReadingQuestionTrial.QuestionGenre, + }).ToList() : x.ReadingTaskQuestionAnswerList.Where(y => y.ReadingQuestionTrial.IsJudgeQuestion).Select(y => new JudgeQuestionAnswerInfo() + { + Answer = y.Answer, + QuestionName = y.ReadingQuestionTrial.QuestionName, + DictionaryCode = y.ReadingQuestionTrial.DictionaryCode, + QuestionGenre = y.ReadingQuestionTrial.QuestionGenre, + }).ToList() + }).ToListAsync(); + + + + List otherTask = await _visitTaskRepository.Where(x => x.ArmEnum != Arm.JudgeArm && x.SouceReadModuleId == taskInfo.SouceReadModuleId && x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId + && x.DoctorUserId != taskInfo.DoctorUserId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReReadingApplyState != ReReadingApplyState.Agree + &&x.TrialReadingCriterionId== taskInfo.TrialReadingCriterionId + ) + .Where(x => x.IsAnalysisCreate == taskInfo.IsAnalysisCreate) + .OrderBy(x => x.VisitTaskNum).Select(x => new TaskInfo() + { + TaskId = x.Id, + IsCurrentTask = x.Id == taskInfo.Id, + ReadingCategory = x.ReadingCategory, + TaskBlindName = x.TaskBlindName, + ArmEnum = x.ArmEnum, + TaskName = x.TaskName, + SouceReadModuleId = x.SouceReadModuleId, + SourceSubjectVisitId = x.SourceSubjectVisitId, + }).ToListAsync(); + + medicalReviewInfo.TaskList.ForEach(x => + { + x.OtherTaskId = otherTask.Where(y => y.SouceReadModuleId == x.SouceReadModuleId && y.SourceSubjectVisitId == x.SourceSubjectVisitId).Select(y => y.TaskId).FirstOrDefault(); + }); + } + #endregion return medicalReviewInfo; }