diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs b/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs index f72acc924..fef95a463 100644 --- a/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs @@ -22,13 +22,14 @@ namespace IRaCIS.Core.Application.Triggers private readonly IRepository _readingTaskQuestionAnswerRepository; - + private readonly IRepository _subjectAdditionalEvaluationResultRepository; + private readonly IRepository _readingJudgeInfoRepository; public VisitTaskIsFrontTaskNeedSignButNotSignTrigger( IRepository visitTaskRepository, IRepository trialReadingCriterionRepository, IRepository trialReadingQuestionRepository - , IRepository readingTaskQuestionAnswerRepository) + , IRepository readingTaskQuestionAnswerRepository, IRepository subjectAdditionalEvaluationResultRepository, IRepository readingJudgeInfoRepository) { _trialReadingCriterionRepository = trialReadingCriterionRepository; @@ -36,6 +37,8 @@ namespace IRaCIS.Core.Application.Triggers _trialReadingQuestionRepository = trialReadingQuestionRepository; _readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; + _subjectAdditionalEvaluationResultRepository = subjectAdditionalEvaluationResultRepository; + _readingJudgeInfoRepository = readingJudgeInfoRepository; } @@ -48,7 +51,7 @@ namespace IRaCIS.Core.Application.Triggers Expression> visitTaskLambda = x => x.TrialId == visitTask.TrialId && x.SubjectId == visitTask.SubjectId && x.TrialReadingCriterionId == visitTask.TrialReadingCriterionId; if (context.ChangeType == ChangeType.Added) { - + //判断是否需要临床数据签名 不需要 就不用维护 if (visitTask.IsNeedClinicalDataSign) { @@ -93,12 +96,125 @@ namespace IRaCIS.Core.Application.Triggers }); } - + } } + else if (context.ChangeType == ChangeType.Modified) + { + if (visitTask.ReadingCategory == ReadingCategory.Judge && (visitTask.TaskState == TaskState.Adbandon || visitTask.TaskState == TaskState.HaveReturned)) + { + var find = _readingJudgeInfoRepository.Where(t => t.JudgeTaskId == visitTask.Id).FirstOrDefault(); + if (find != null) + { + var ids = new Guid[] { find.TaskIdOne, find.TaskIdTwo }; + await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => ids.Contains(t.Id), u => new VisitTask() { JudgeResultTaskId = null }); + } + } + } + #region 附加评估 暂时废弃 + // //从未签名状态 改为签名状态时 判断是否进行了附加评估,将附加评估的结果冗余 + // if (context.ChangeType == ChangeType.Modified && visitTask.ReadingTaskState == ReadingTaskState.HaveSigned && context.UnmodifiedEntity.ReadingTaskState != ReadingTaskState.HaveSigned) + // { + + // var criterion = _trialReadingCriterionRepository.Where(t => t.Id == visitTask.TrialReadingCriterionId).FirstOrDefault(); + + // //如果是附加评估 + // if (criterion.IsAdditionalAssessment) + // { + + + // if (visitTask.ReadingCategory == ReadingCategory.Visit) + // { + + + // switch (criterion.CriterionType) + // { + // case CriterionType.RECIST1Point1: + // var isbaseLine = _visitTaskRepository.Where(t => t.Id == visitTask.Id).Select(t => t.SourceSubjectVisit.IsBaseLine).FirstOrDefault(); + + + + // if (isbaseLine) + // { + // var currentTaskAdditionarlAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTask.Id && + // t.ReadingQuestionTrial.IsAdditional == true && t.ReadingQuestionTrial.Type != "group" + // ).Include(t => t.ReadingQuestionTrial).FirstOrDefaultAsync(); + + + // //双重阅片完成了 + // if (criterion.ReadingType == ReadingMethod.Double && + //(_visitTaskRepository.Where(t => t.SubjectId == visitTask.SubjectId && t.TaskName == visitTask.TaskName && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count() == 2) + // ) + // { + + // var otherTaskId = await _visitTaskRepository.Where(t => t.SubjectId == visitTask.SubjectId && t.TaskName == visitTask.TaskName && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned && t.Id != visitTask.Id) + // .Select(t => t.Id).FirstOrDefaultAsync(); + + + // var otherTaskAdditionarlAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == otherTaskId && + // t.ReadingQuestionTrial.IsAdditional == true && t.ReadingQuestionTrial.Type != "group" + // ).Include(t => t.ReadingQuestionTrial).FirstOrDefaultAsync(); + + + + // await _subjectAdditionalEvaluationResultRepository.AddAsync(new SubjectAdditionalEvaluationResult() + // { + // TrialReadingCriterionId = visitTask.TrialReadingCriterionId, + // IsFinalResult = true, + // SubjectId = visitTask.SubjectId, + // TrialReadingQuestionId = currentTaskAdditionarlAnswer.ReadingQuestionTrialId, + // FinalAnswer = currentTaskAdditionarlAnswer.Answer, + // FinalTranslateDictionaryCode = currentTaskAdditionarlAnswer.ReadingQuestionTrial.DictionaryCode, + + // }); + + // } + // if (criterion.ReadingType == ReadingMethod.Single) + // { + + // await _subjectAdditionalEvaluationResultRepository.AddAsync(new SubjectAdditionalEvaluationResult() + // { + // TrialReadingCriterionId = visitTask.TrialReadingCriterionId, + // IsFinalResult = true, + // SubjectId = visitTask.SubjectId, + // TrialReadingQuestionId = currentTaskAdditionarlAnswer.ReadingQuestionTrialId, + // FinalAnswer = currentTaskAdditionarlAnswer.Answer, + // FinalTranslateDictionaryCode = currentTaskAdditionarlAnswer.ReadingQuestionTrial.DictionaryCode, + + // }); + + // } + + + + // } + + // break; + // default: + // break; + // } + + + + + + // } + + + + + + + + + // } + // } + + + #endregion }