修改
This commit is contained in:
+157
-124
@@ -104,63 +104,179 @@ 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,
|
||||
|
||||
// 先判断是否是肿瘤学任务
|
||||
if (taskInfo.ReadingCategory == ReadingCategory.Oncology)
|
||||
{
|
||||
var oncologyList = await _readingOncologyTaskInfoRepository.Where(x => x.OncologyTaskId == visitTaskfInfo.Id).ToListAsync();
|
||||
|
||||
var taskIds= oncologyList.Select(x=>x.VisitTaskId).ToList();
|
||||
|
||||
medicalReviewInfo.TaskList = await _visitTaskRepository.Where(x=>
|
||||
taskIds.Contains(x.Id)
|
||||
).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,
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
medicalReviewInfo.TaskList.ForEach(x =>
|
||||
{
|
||||
var oncologyInfo = oncologyList.Where(y => y.OncologyTaskId == x.TaskId).FirstOrDefault();
|
||||
if (oncologyInfo != null)
|
||||
{
|
||||
x.OncologyEvaluationResult = oncologyInfo.EvaluationResult;
|
||||
x.OncologyEvaluationReason = oncologyInfo.EvaluationResult;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
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.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,
|
||||
{
|
||||
VisitTaskId = y.VisitTaskId,
|
||||
Answer = y.Answer,
|
||||
QuestionName = y.ReadingQuestionTrial.QuestionName,
|
||||
ShowOrder = y.ReadingQuestionTrial.ShowOrder,
|
||||
DictionaryCode = y.ReadingQuestionTrial.DictionaryCode,
|
||||
QuestionGenre = y.ReadingQuestionTrial.QuestionGenre,
|
||||
|
||||
}).OrderBy(x=>x.ShowOrder).ToList(),
|
||||
}).ToListAsync();
|
||||
}).OrderBy(x => x.ShowOrder).ToList(),
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
List<TaskInfo> otherTask = await _visitTaskRepository.Where(x => x.ArmEnum != Arm.JudgeArm && x.SubjectId == taskInfo.SubjectId
|
||||
&& x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId
|
||||
&& 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.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,
|
||||
|
||||
}).OrderBy(x => x.ShowOrder).ToList(),
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
List<TaskInfo> 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();
|
||||
});
|
||||
}
|
||||
|
||||
// 这里处理 访视和全局任务 以及肿瘤学
|
||||
if (taskInfo.ArmEnum != Arm.JudgeArm)
|
||||
{
|
||||
var taskIds = medicalReviewInfo.TaskList.Select(x => x.TaskId).ToList();
|
||||
|
||||
|
||||
// 找访视
|
||||
var visitTaskAnswer = await _readingTaskQuestionAnswerRepository.Where(x => taskIds.Contains(x.VisitTaskId)&&x.ReadingQuestionTrial.IsJudgeQuestion).Select(x => new JudgeQuestionAnswerInfo
|
||||
var visitTaskAnswer = await _readingTaskQuestionAnswerRepository.Where(x => taskIds.Contains(x.VisitTaskId) && x.ReadingQuestionTrial.IsJudgeQuestion).Select(x => new JudgeQuestionAnswerInfo
|
||||
{
|
||||
Answer = x.Answer,
|
||||
VisitTaskId=x.VisitTaskId,
|
||||
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 && x.TrialReadingQuestion.IsJudgeQuestion).Select(x => new JudgeQuestionAnswerInfo
|
||||
visitTaskAnswer.AddRange(await _readingGlobalTaskInfoRepository.Where(x => taskIds.Contains(x.GlobalTaskId) && x.GlobalAnswerType == GlobalAnswerType.Question && x.TrialReadingQuestion.IsJudgeQuestion).Select(x => new JudgeQuestionAnswerInfo
|
||||
{
|
||||
Answer = x.Answer,
|
||||
VisitTaskId = x.GlobalTaskId,
|
||||
@@ -170,97 +286,14 @@ namespace IRaCIS.Core.Application.Service
|
||||
QuestionName = x.TrialReadingQuestion.QuestionName
|
||||
}).ToListAsync());
|
||||
|
||||
// 肿瘤学没有问题
|
||||
var oncologyInfoList= await _readingOncologyTaskInfoRepository.Where(x => taskIds.Contains(x.OncologyTaskId)).ToListAsync();
|
||||
|
||||
|
||||
|
||||
|
||||
medicalReviewInfo.TaskList.ForEach(x =>
|
||||
{
|
||||
var oncologyInfo = oncologyInfoList.Where(y => y.OncologyTaskId == x.TaskId).FirstOrDefault();
|
||||
if (oncologyInfo != null)
|
||||
{
|
||||
x.OncologyEvaluationResult = oncologyInfo.EvaluationResult;
|
||||
x.OncologyEvaluationReason = oncologyInfo.EvaluationResult;
|
||||
}
|
||||
x.JudgeQuestionAnswerInfoList = visitTaskAnswer.Where(y => y.VisitTaskId == x.TaskId).OrderBy(y => y.ShowOrder).ToList();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
List<TaskInfo> 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<TaskInfo> 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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user