diff --git a/IRaCIS.Core.Application/Service/Fixed/CriterionAdditionalAssessment.cs b/IRaCIS.Core.Application/Service/Fixed/CriterionAdditionalAssessment.cs index ea2665111..619b10fbe 100644 --- a/IRaCIS.Core.Application/Service/Fixed/CriterionAdditionalAssessment.cs +++ b/IRaCIS.Core.Application/Service/Fixed/CriterionAdditionalAssessment.cs @@ -65,7 +65,7 @@ namespace IRaCIS.Core.Application.Service { GroupId=gropId, LimitEdit=LimitEdit.OnlyBaseLine, - DictionaryCode="ReadingYesOrNo", + DictionaryCode="YesOrNoOrNa", IsJudgeQuestion=false, IsShowInDicom=false, GlobalReadingShowType=GlobalReadingShowType.NotShow, diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs index abe35e2e4..1054215ab 100644 --- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs +++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs @@ -173,13 +173,13 @@ namespace IRaCIS.Core.Application.Service FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) }); } - else if (item.ReadingEvaluationList.First().Answer != item.ReadingEvaluationList.Last().Answer) + else if (item.ReadingEvaluationList.First().Answer != item.ReadingEvaluationList.Last().Answer && item.ReadingEvaluationList.Any(t => t.Answer == 1.ToString())) { item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Maybe).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) }); } else { - + item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = addtionalQustionInfoList.FirstOrDefault()?.QuestionId, Answer = ((int)BrainMetastasisResult.Unknown).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) }); } } @@ -203,7 +203,7 @@ namespace IRaCIS.Core.Application.Service } else { - + item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = addtionalQustionInfoList.FirstOrDefault()?.QuestionId, Answer = ((int)BrainMetastasisResult.Unknown).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) }); } } else @@ -591,6 +591,8 @@ namespace IRaCIS.Core.Application.Service var filterExpression = await GetTaskExpressionAsync(command); + var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == command.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException(); + var subjectVisit = await _subjectVisitRepository.FindAsync(command.SubjectVisitId); if (await _visitTaskReReadingRepository.AnyAsync(t => t.RequestReReadingType == RequestReReadingType.DocotorApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default && @@ -602,6 +604,50 @@ namespace IRaCIS.Core.Application.Service var list = await _visitTaskRepository.Where(filterExpression) .OrderBy(t => t.VisitTaskNum).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + foreach (var influenceTask in list) + { + //有序 + if (criterionConfig.IsReadingTaskViewInOrder) + { + //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 + if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != subjectVisit.VisitNum) + { + //后续访视处理访视 + if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + { + influenceTask.OptType = ReReadingOrBackOptType.Return; + } + else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) + { + influenceTask.OptType = ReReadingOrBackOptType.Abandon; + } + else + { + influenceTask.OptType = ReReadingOrBackOptType.CancelAssign; + } + } + else + { + //申请的访视 全局肿瘤学 + + if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + { + influenceTask.OptType = ReReadingOrBackOptType.Return; + } + else + { + influenceTask.OptType = ReReadingOrBackOptType.Abandon; + } + } + } + //无序 + else + { + //重阅重置或者失效 + influenceTask.OptType = influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned ? ReReadingOrBackOptType.Return : ReReadingOrBackOptType.Abandon; + } + } + return (list, new { IsIRAppyTaskInfluenced = isIRAppyTaskInfluenced }); } @@ -696,6 +742,11 @@ namespace IRaCIS.Core.Application.Service var taskIdList = influenceTaskList.Select(t => t.Id).ToList(); var subjectVisitIdLsit = influenceTaskList.Where(t => t.SourceSubjectVisitId != null).Select(t => t.SourceSubjectVisitId).ToList(); + if (subjectVisitIdLsit.Count == 0) + { + subjectVisitIdLsit.Add(command.SubjectVisitId); + } + //医学审核任务失效 await _taskMedicalReviewRepository.UpdatePartialFromQueryAsync(t => taskIdList.Contains(t.VisitTaskId) && t.AuditState != MedicalReviewAuditState.HaveSigned, u => new TaskMedicalReview() { IsInvalid = true }); diff --git a/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitStudyFilter.cs b/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitStudyFilter.cs index c9fe5ef1d..68dd7aefa 100644 --- a/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitStudyFilter.cs +++ b/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitStudyFilter.cs @@ -22,6 +22,15 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] public SubjectVisit SubjectVisit { get; set; } + [ForeignKey("SeriesId")] + [JsonIgnore] + public DicomSeries Series { get; set; } + + + [ForeignKey("StudyId")] + [JsonIgnore] + public DicomStudy Study { get; set; } + public Guid TrialReadingCriterionId { get; set; } public Guid SubjectVisitId { get; set; }