diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs index 1cfb82d1f..ad18b3319 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs @@ -599,10 +599,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class JudgeQuestionAnswerInfo { + + public Guid VisitTaskId { get; set; } + public string QuestionName { get; set; } public string Answer { get; set; } + /// + /// 排序 + /// + public int ShowOrder { get; set; } /// /// 字典code diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs index cad34d621..84d954506 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs @@ -24,6 +24,9 @@ namespace IRaCIS.Core.Application.Service private readonly IRepository _readingMedicineTrialQuestionRepository; private readonly IRepository _trialRepository; private readonly IRepository _visitTaskRepository; + private readonly IRepository _readingTaskQuestionAnswerRepository; + private readonly IRepository _readingGlobalTaskInfoRepository; + private readonly IRepository _readingOncologyTaskInfoRepository; private readonly IRepository _userTaskRepository; private readonly IVisitTaskService _visitTaskService; private readonly IRepository _taskMedicalReviewRepository; @@ -36,6 +39,9 @@ namespace IRaCIS.Core.Application.Service IRepository readingMedicineTrialQuestionRepository, IRepository trialRepository, IRepository visitTaskRepository, + IRepository readingTaskQuestionAnswerRepository, + IRepository readingGlobalTaskInfoRepository, + IRepository readingOncologyTaskInfoRepository, IRepository userTaskRepository, IVisitTaskService visitTaskService, IRepository taskMedicalReviewRepository, @@ -48,6 +54,9 @@ namespace IRaCIS.Core.Application.Service this._readingMedicineTrialQuestionRepository = readingMedicineTrialQuestionRepository; this._trialRepository = trialRepository; this._visitTaskRepository = visitTaskRepository; + this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; + this._readingGlobalTaskInfoRepository = readingGlobalTaskInfoRepository; + this._readingOncologyTaskInfoRepository = readingOncologyTaskInfoRepository; this._userTaskRepository = userTaskRepository; this._visitTaskService = visitTaskService; this._taskMedicalReviewRepository = taskMedicalReviewRepository; @@ -103,9 +112,9 @@ namespace IRaCIS.Core.Application.Service .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.ArmEnum == taskInfo.ArmEnum + && x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId + && x.DoctorUserId == taskInfo.DoctorUserId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReReadingApplyState != ReReadingApplyState.Agree @@ -122,22 +131,63 @@ namespace IRaCIS.Core.Application.Service 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() + // 这里先只查裁判任务 访视和全局任务到后面查询 + JudgeQuestionAnswerInfoList = x.JudgeResultTask.ReadingTaskQuestionAnswerList.Where(y => y.ReadingQuestionTrial.IsJudgeQuestion).Select(y => new JudgeQuestionAnswerInfo() { + VisitTaskId=y.VisitTaskId, Answer = y.Answer, QuestionName = y.ReadingQuestionTrial.QuestionName, + ShowOrder=y.ReadingQuestionTrial.ShowOrder, 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() + }).OrderBy(x=>x.ShowOrder).ToList(), }).ToListAsync(); + // 这里处理 访视和全局任务 以及肿瘤学 + if (taskInfo.ArmEnum != Arm.JudgeArm) + { + var taskIds = medicalReviewInfo.TaskList.Select(x => x.TaskId).ToList(); + + // 找访视 + var visitTaskAnswer = await _readingTaskQuestionAnswerRepository.Where(x => taskIds.Contains(x.VisitTaskId)).Select(x => new JudgeQuestionAnswerInfo + { + Answer = x.Answer, + VisitTaskId=x.VisitTaskId, + DictionaryCode = x.ReadingQuestionTrial.DictionaryCode, + ShowOrder = x.ReadingQuestionTrial.ShowOrder, + QuestionGenre = x.ReadingQuestionTrial.QuestionGenre, + QuestionName = x.ReadingQuestionTrial.QuestionName + }).ToListAsync(); + + visitTaskAnswer.AddRange(await _readingGlobalTaskInfoRepository.Where(x => taskIds.Contains(x.GlobalTaskId)&&x.GlobalAnswerType==GlobalAnswerType.Question).Select(x => new JudgeQuestionAnswerInfo + { + Answer = x.Answer, + VisitTaskId = x.GlobalTaskId, + DictionaryCode = x.TrialReadingQuestion.DictionaryCode, + ShowOrder = x.TrialReadingQuestion.ShowOrder, + QuestionGenre = x.TrialReadingQuestion.QuestionGenre, + QuestionName = x.TrialReadingQuestion.QuestionName + }).ToListAsync()); + + // 肿瘤学没有问题 + //visitTaskAnswer.AddRange(await _readingOncologyTaskInfoRepository.Where(x => taskIds.Contains(x.OncologyTaskId)).Select(x => new JudgeQuestionAnswerInfo + //{ + // Answer = x.SubjectId, + // VisitTaskId = x.OncologyTaskId, + // DictionaryCode = x.TrialReadingQuestion.DictionaryCode, + // ShowOrder = x.TrialReadingQuestion.ShowOrder, + // QuestionGenre = x.TrialReadingQuestion.QuestionGenre, + // QuestionName = x.TrialReadingQuestion.QuestionName + //}).ToListAsync()); + + medicalReviewInfo.TaskList.ForEach(x => + { + x.JudgeQuestionAnswerInfoList = visitTaskAnswer.Where(y => y.VisitTaskId == x.TaskId).OrderBy(y => y.ShowOrder).ToList(); + }); + } + + 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)