From 35687c01ec5a3663f569ea28dfd4dc0ed19f0c00 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jan 2024 10:07:58 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E8=82=BF=E7=98=A4=E5=AD=A6=E9=98=85?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Allocation/VisitTaskHelpeService.cs | 31 +++++++-- .../ReadingOncologyTaskService.cs | 68 ++++++++++++++++--- 2 files changed, 84 insertions(+), 15 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index 527b89236..131149a88 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -40,7 +40,8 @@ namespace IRaCIS.Core.Application.Service private readonly IRepository _readingTaskQuestionAnswerRepository; private readonly IRepository _readingTableAnswerRowInfoRepository; private readonly IRepository _readingTableQuestionAnswerRepository; - private readonly IRepository _readingTableQuestionTrialRepository; + private readonly IRepository _readingOncologyTaskInfoRepository; + private readonly IRepository _readingTableQuestionTrialRepository; private readonly IRepository _readingQuestionTrialRepository; private readonly IMapper _mapper; private readonly IUserInfo _userInfo; @@ -60,7 +61,8 @@ namespace IRaCIS.Core.Application.Service IRepository readingTaskQuestionAnswerRepository, IRepository readingTableAnswerRowInfoRepository, IRepository readingTableQuestionAnswerRepository, - IRepository readingTableQuestionTrialRepository, + IRepository ReadingOncologyTaskInfoRepository, + IRepository readingTableQuestionTrialRepository, IRepository readingQuestionTrialRepository, IRepository readingJudgeInfoRepository, IRepository taskAllocationRuleRepository, IMapper mapper, IUserInfo userInfo, IRepository visitTaskReReadingRepository, @@ -76,7 +78,8 @@ namespace IRaCIS.Core.Application.Service this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository; - this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository; + _readingOncologyTaskInfoRepository = ReadingOncologyTaskInfoRepository; + this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository; this._readingQuestionTrialRepository = readingQuestionTrialRepository; _provider = provider; _subjectVisitRepository = subjectVisitRepository; @@ -1606,11 +1609,12 @@ namespace IRaCIS.Core.Application.Service var oncologySubjectUser = await _subjectUserRepository.Where(x => x.SubjectId == item.SubjectId && x.ArmEnum == Arm.TumorArm && x.IsConfirmed && x.TrialReadingCriterionId == originalTaskInfo.TrialReadingCriterionId).FirstOrDefaultAsync(); item.VisitNum = await _readModuleRepository.Where(x => x.Id == item.ReadModuleId).Select(x => x.SubjectVisit.VisitNum).FirstOrDefaultAsync(); + var id= NewId.NextGuid(); - - var singleTask = await _visitTaskRepository.AddAsync(new VisitTask() + var singleTask = await _visitTaskRepository.AddAsync(new VisitTask() { - TrialId = trialId, + Id= id, + TrialId = trialId, SubjectId = item.SubjectId, IsUrgent = originalTaskInfo.IsUrgent, TaskName = item.ReadingName, @@ -1641,7 +1645,20 @@ namespace IRaCIS.Core.Application.Service currentMaxCodeInt = currentMaxCodeInt + 1; - _provider.Set($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30)); + // 生成肿瘤学需要 肿瘤学阅片结果中基线,统一显示为NA + // 找到基线任务ID + var baseLineTaskId = await _visitTaskRepository.Where(x => x.TaskState == TaskState.Effect + && x.ArmEnum == originalTaskInfo.ArmEnum && x.VisitTaskNum == 0 && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TrialReadingCriterionId == originalTaskInfo.TrialReadingCriterionId).Select(x => x.Id).FirstNotNullAsync(); + await _readingOncologyTaskInfoRepository.AddAsync(new ReadingOncologyTaskInfo() + { + EvaluationResult = "-1", + OncologyTaskId = id, + VisitTaskId = baseLineTaskId, + SubjectId = originalTaskInfo.SubjectId, + TrialId = originalTaskInfo.TrialId + }); + + _provider.Set($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30)); } break; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs index a4ad78707..31359eadc 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs @@ -151,18 +151,55 @@ namespace IRaCIS.Application.Services var oncologyReadingQuestions = await _readingOncologyTaskInfoRepository.Where(x => x.OncologyTaskId == inDto.VisitTaskId).ToListAsync(); // 上一次肿瘤学阅片 + var lastOncologyTask = await _visitTaskRepository.Where(x => + x.ReadingCategory == ReadingCategory.Oncology + && x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId + && x.TaskState == TaskState.Effect + && x.ReadingTaskState == ReadingTaskState.HaveSigned + && x.IsAnalysisCreate == taskInfo.IsAnalysisCreate + && x.VisitTaskNum < taskInfo.VisitTaskNum + ).OrderByDescending(x => x.VisitTaskNum).FirstOrDefaultAsync(); + + List lastOncologyAnswerList= new List(); + + if (lastOncologyTask != null) + { + lastOncologyAnswerList= await _readingOncologyTaskInfoRepository.Where(x => x.OncologyTaskId == lastOncologyTask.Id).ToListAsync(); + + } - oncologyVisits.ForEach(x => + oncologyVisits.ForEach(x => { var oncologyData = oncologyReadingQuestions.Where(y => y.VisitTaskId == x.VisitTaskId).FirstOrDefault(); + var lastOncologyData = lastOncologyAnswerList.Where(y => y.VisitTaskId == x.VisitTaskId).FirstOrDefault(); - if (oncologyData != null) + var evaluationResult = string.Empty; + var evaluationReason = string.Empty; + if (oncologyData != null && !oncologyData.EvaluationResult.IsNullOrEmpty()) { - x.EvaluationResult = oncologyData.EvaluationResult; - x.EvaluationReason = oncologyData.EvaluationReason; + evaluationResult = oncologyData.EvaluationResult; } - x.QuestionList = globalTaskReadingInfo.TaskList.Where(y => x.VisitTaskId == y.VisitTaskId).SelectMany(y => y.AfterQuestionList).Where(x => x.GlobalAnswerType == GlobalAnswerType.Question) + else if (lastOncologyData != null && !lastOncologyData.EvaluationResult.IsNullOrEmpty()) + { + evaluationResult = lastOncologyData.EvaluationResult; + } + + + if (oncologyData != null && !oncologyData.EvaluationReason.IsNullOrEmpty()) + { + evaluationReason = oncologyData.EvaluationReason; + } + else if (lastOncologyData != null && !lastOncologyData.EvaluationReason.IsNullOrEmpty()) + { + evaluationReason = lastOncologyData.EvaluationReason; + } + + + x.EvaluationResult = evaluationResult; + x.EvaluationReason = evaluationReason; + + x.QuestionList = globalTaskReadingInfo.TaskList.Where(y => x.VisitTaskId == y.VisitTaskId).SelectMany(y => y.AfterQuestionList).Where(x => x.GlobalAnswerType == GlobalAnswerType.Question) .Select(y => new OncologyQuestion { QuestionId = y.QuestionId ?? default(Guid), @@ -295,7 +332,7 @@ namespace IRaCIS.Application.Services finishReading = true; } - else if (judgeVisitTaskId != null && (await _visitTaskRepository.AnyAsync(x => x.Id == judgeVisitTaskId.Value && x.ReadingTaskState == ReadingTaskState.HaveSigned))) + else if (judgeVisitTaskId != null && (await _visitTaskRepository.AnyAsync(x => x.Id == judgeVisitTaskId.Value&&x.JudgeResultTaskId!=null && x.ReadingTaskState == ReadingTaskState.HaveSigned))) { finishReading = true; } @@ -328,9 +365,24 @@ namespace IRaCIS.Application.Services ReadingCategory = ReadingCategory.Oncology, }); - var originalVisitId = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect && x.ReadingCategory == ReadingCategory.Global + var originalVisit = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect && x.ReadingCategory == ReadingCategory.Global && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate && x.TrialReadingCriterionId == readModuleInfo.TrialReadingCriterionId - ).Select(x => x.Id).FirstOrDefaultAsync(); + ).OrderByDescending(x => x.VisitTaskNum).ThenBy(x => x.ArmEnum).FirstNotNullAsync(); + + var originalVisitId = default(Guid); + + if (originalVisit.JudgeVisitTaskId != null) + { + originalVisitId = (await _visitTaskRepository.Where(x => x.Id == originalVisit.JudgeVisitTaskId).Select(x => x.JudgeResultTaskId).FirstOrDefaultAsync()) ?? originalVisit.Id; + + } + else + { + originalVisitId = originalVisit.Id; + + } + + await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand() { OriginalVisitId= originalVisitId, From 01b6799a3119f46bee142809da089c5bab66653d Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jan 2024 10:50:36 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/IRaCIS.Core.Application.xml | 6 ++++++ .../Reading/ReadingImageTask/ReadingJudgeTaskService.cs | 1 - 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index a2a3b22c0..bb2c876f0 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -13963,6 +13963,12 @@ + + + 维护OSS 影像数据 + + + Reviewer 列表查询参数 diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index 8d304da7d..8bec036dd 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -391,7 +391,6 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] public async Task SaveJudgeVisitTaskResult(SaveJudgeVisitTaskResult inDto) { await VerifyTaskIsSign(inDto.VisitTaskId); From 62ec7d91a9a5bb66c84c0609c3d08c4d19629e29 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jan 2024 11:02:25 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=92=A4=E9=94=80=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index 8bec036dd..8d304da7d 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -391,6 +391,7 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] + [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] public async Task SaveJudgeVisitTaskResult(SaveJudgeVisitTaskResult inDto) { await VerifyTaskIsSign(inDto.VisitTaskId); From ea693b3ffc2721138430014da9216947bdc85168 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jan 2024 11:16:39 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index 8d304da7d..04a5f67f2 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -391,7 +391,7 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] + //[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] public async Task SaveJudgeVisitTaskResult(SaveJudgeVisitTaskResult inDto) { await VerifyTaskIsSign(inDto.VisitTaskId); From c70120bcaa10b3af57ea1a83966d36bca2179d4f Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jan 2024 13:10:20 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/VisitTaskHelpeService.cs | 1 + .../Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index 131149a88..b0e624b67 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -1652,6 +1652,7 @@ namespace IRaCIS.Core.Application.Service await _readingOncologyTaskInfoRepository.AddAsync(new ReadingOncologyTaskInfo() { EvaluationResult = "-1", + EvaluationReason=string.Empty, OncologyTaskId = id, VisitTaskId = baseLineTaskId, SubjectId = originalTaskInfo.SubjectId, diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index 04a5f67f2..8d304da7d 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -391,7 +391,7 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - //[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] + [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] public async Task SaveJudgeVisitTaskResult(SaveJudgeVisitTaskResult inDto) { await VerifyTaskIsSign(inDto.VisitTaskId); From 9c4f2dcf6bc9567797348b90ad334228315c39ae Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jan 2024 13:28:42 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/VisitTaskHelpeService.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index b0e624b67..76bb7d6ea 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -1648,7 +1648,9 @@ namespace IRaCIS.Core.Application.Service // 生成肿瘤学需要 肿瘤学阅片结果中基线,统一显示为NA // 找到基线任务ID var baseLineTaskId = await _visitTaskRepository.Where(x => x.TaskState == TaskState.Effect - && x.ArmEnum == originalTaskInfo.ArmEnum && x.VisitTaskNum == 0 && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TrialReadingCriterionId == originalTaskInfo.TrialReadingCriterionId).Select(x => x.Id).FirstNotNullAsync(); + && x.ArmEnum == originalTaskInfo.ArmEnum && x.VisitTaskNum == 0 + && x.SubjectId== originalTaskInfo.SubjectId + && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TrialReadingCriterionId == originalTaskInfo.TrialReadingCriterionId).Select(x => x.Id).FirstNotNullAsync(); await _readingOncologyTaskInfoRepository.AddAsync(new ReadingOncologyTaskInfo() { EvaluationResult = "-1",