From d3b1373ecf54f9c4e624c322cdd0abc2a3d2f053 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Mon, 17 Oct 2022 15:32:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingCalculateViewModel.cs | 5 +++++ .../Service/Reading/ReadingImageTaskService.cs | 12 ++++++++++-- .../Reading/ReadingPeriod/ReadModuleService.cs | 4 +++- .../ReadingPeriod/ReadingPeriodSetService.cs | 10 ++++++++-- .../RECIST1Point1CalculateService.cs | 17 +++++++++++++---- 5 files changed, 39 insertions(+), 9 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs index 4843f37d0..83a0061a1 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs @@ -100,6 +100,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool IsBaseLine { get; set; } + /// + /// TrialReadingCriterionId + /// + public Guid TrialReadingCriterionId { get; set; } + public string VisitName { get; set; } public string BlindName { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index c41c7a691..150874c91 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -409,6 +409,7 @@ namespace IRaCIS.Application.Services result.ReadingTaskState = visitTaskInfo.ReadingTaskState; var taskInfoList = await _visitTaskRepository.Where(x => (x.SubjectId == visitTaskInfo.SubjectId && x.TaskState == TaskState.Effect &&x.ArmEnum== visitTaskInfo.ArmEnum + &&x.TrialReadingCriterionId==visitTaskInfo.TrialReadingCriterionId && x.ReadingCategory == ReadingCategory.Visit && !x.IsAnalysisCreate && x.ReadingTaskState == ReadingTaskState.HaveSigned) || x.Id == indto.VisitTaskId ).OrderBy(x => x.VisitTaskNum).Select(x => new VisitTaskInfo() { @@ -851,6 +852,7 @@ namespace IRaCIS.Application.Services var globalTaskInfo = await _visitTaskRepository .Where(x => x.SubjectId == taskInfo.SubjectId && x.TaskState == TaskState.Effect && + x.TrialReadingCriterionId==taskInfo.TrialReadingCriterionId && x.ReadingCategory == ReadingCategory.Global && x.VisitTaskNum < taskInfo.VisitTaskNum ).OrderByDescending(x => x.VisitTaskNum) @@ -889,6 +891,7 @@ namespace IRaCIS.Application.Services // 找到对应的访视 List oncologyVisits = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && + x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && x.SubjectId == visitTask.SubjectId && x.IsAnalysisCreate == visitTask.IsAnalysisCreate && x.TaskState == TaskState.Effect && x.VisitTaskNum < visitTask.VisitTaskNum) .Where(x => x.DoctorUserId == visitTask.DoctorUserId) .OrderBy(x => x.VisitTaskNum).Select(x => new OncologyVisitTaskInfo() @@ -1031,6 +1034,7 @@ namespace IRaCIS.Application.Services // 一致性分析按照doctorId 其他按照分组 result.TaskList = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && + x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && x.SubjectId == taskInfo.SubjectId && x.IsAnalysisCreate == taskInfo.IsAnalysisCreate && x.TaskState == TaskState.Effect && x.VisitTaskNum < taskInfo.VisitTaskNum) .Where(x => x.DoctorUserId == taskInfo.DoctorUserId) .OrderBy(x => x.VisitTaskNum).Select(x => new GlobalVisitInfo() @@ -1239,7 +1243,9 @@ namespace IRaCIS.Application.Services } else { - task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId==trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect).Select(x => new GetReadingTaskDto() + task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId==trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.DoctorUserId == _userInfo.Id + && x.TrialReadingCriterionId == trialReadingCriterionId + && x.TaskState == TaskState.Effect).Select(x => new GetReadingTaskDto() { VisitTaskId = x.Id, TaskBlindName = x.TaskBlindName, @@ -1933,6 +1939,7 @@ namespace IRaCIS.Application.Services x.ArmEnum == taskInfo.ArmEnum && x.Id != inDto.VisitTaskId && x.DoctorUserId == taskInfo.DoctorUserId && + x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect && x.IsAnalysisCreate == taskInfo.IsAnalysisCreate) @@ -2540,7 +2547,8 @@ namespace IRaCIS.Application.Services // 找到一个全局阅片任务是否有裁判任务 - var judgeVisitTaskId = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect && x.ReadingCategory == ReadingCategory.Global + var judgeVisitTaskId = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect + && x.ReadingCategory == ReadingCategory.Global && x.ReadingTaskState == ReadingTaskState.HaveSigned).Select(x => x.JudgeVisitTaskId).FirstOrDefaultAsync(); // 获取系统配置 diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs index be16cfbb6..699265499 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs @@ -328,7 +328,9 @@ namespace IRaCIS.Application.Services if (globalModule != null) { - var globalTaskInfoList = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalModule.Id && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned&&!x.IsAnalysisCreate).ToListAsync(); + var globalTaskInfoList = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalModule.Id + && x.TrialReadingCriterionId == dto.TrialReadingCriterionId + && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned&&!x.IsAnalysisCreate).ToListAsync(); if (globalTaskInfoList.Count() > 0 && globalTaskInfoList.Count == (int)criterionInfo.ReadingType) { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs index b4c5664ca..f44e82118 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs @@ -186,6 +186,8 @@ namespace IRaCIS.Application.Services case ReadingSetType.ImageReading: //增加标准 var taskInfoList = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && subjectVisitIds.Contains(x.SourceSubjectVisitId ?? default(Guid)) && + + x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate).ToListAsync(); foreach (var item in taskInfoList) @@ -230,7 +232,9 @@ namespace IRaCIS.Application.Services var globalModuleIds = await _readModuleRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && subjectVisitIds.Contains(x.SubjectVisitId) && x.ModuleType == ModuleTypeEnum.Global).Select(x => x.Id).ToListAsync(); //增加标准 - var globalTaskInfo = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate).GroupBy(x => new { x.SouceReadModuleId }).Select(x => + var globalTaskInfo = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) + + && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate).GroupBy(x => new { x.SouceReadModuleId }).Select(x => new { SouceReadModuleId = x.Key.SouceReadModuleId, Count = x.ToList().Count, @@ -288,7 +292,9 @@ namespace IRaCIS.Application.Services List readModuleIds = await _readModuleRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Select(x => x.Id).ToListAsync(); - if (await _visitTaskRepository.AnyAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect)) + if (await _visitTaskRepository.AnyAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) + && x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId + && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect)) { throw new BusinessValidationFailedException("当前标准阅片已生成任务并且阅片完成,撤销失败。"); } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs index 69dc54359..bc7988427 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs @@ -342,7 +342,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync(); - var baseLinetaskId = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == baseLineVisitId && x.TaskState == TaskState.Effect && x.ArmEnum == visitTask.ArmEnum).Select(x => x.Id).FirstOrDefaultAsync(); + var baseLinetaskId = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == baseLineVisitId && x.TaskState == TaskState.Effect + && x.TrialReadingCriterionId == visitTask.TrialReadingCriterionId + && x.ArmEnum == visitTask.ArmEnum).Select(x => x.Id).FirstOrDefaultAsync(); var criterionId = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == visitTask.TrialId && x.IsConfirm).Select(x => x.Id).FirstOrDefaultAsync(); List questionInfos = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId).Select(x => new QuestionInfo() { @@ -401,6 +403,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate TrialId = visitTask.TrialId, IsBaseLine = subjectVisit!.IsBaseLine, DoctorUserId = visitTask.DoctorUserId, + TrialReadingCriterionId= visitTask.TrialReadingCriterionId, BaseLineTaskId = baseLinetaskId, ArmEnum = visitTask.ArmEnum, VisitName = subjectVisit.VisitName, @@ -432,7 +435,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate if (!(await _readingTableQuestionAnswerRepository.AnyAsync(x => x.VisitTaskId == visitTaskId))) { - var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum + var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && + x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId && + x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum ).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync(); @@ -921,6 +926,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate // 找到所有访视任务的Id var visitTaskIds = await _visitTaskRepository.Where(x => !x.IsAnalysisCreate && x.ReadingCategory == ReadingCategory.Visit && + x.TrialReadingCriterionId == inDto.calculateDto.TrialReadingCriterionId && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.DoctorUserId == inDto.calculateDto.DoctorUserId).Select(x => x.Id).ToListAsync(); var answer = (await GetLowSODVisit(inDto.calculateDto)).OrderBy(x => x.SOD).Select(x => x.BlindName).FirstOrDefault(); @@ -968,7 +974,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate // 先找到基线的任务 var baseLineTaskId = await _visitTaskRepository.Where(x => x.SubjectId == inDto.SubjectId && x.ReadingCategory == ReadingCategory.Visit - && x.SourceSubjectVisit.IsBaseLine && x.TaskState == TaskState.Effect && !x.IsAnalysisCreate && x.DoctorUserId == inDto.DoctorUserId) + && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && + x.SourceSubjectVisit.IsBaseLine && x.TaskState == TaskState.Effect && !x.IsAnalysisCreate && x.DoctorUserId == inDto.DoctorUserId) .Select(x => x.Id).FirstOrDefaultAsync(); @@ -1058,7 +1065,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate // 找到访视任务Id - var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && x.TaskState == TaskState.Effect && !x.IsAnalysisCreate && x.SourceSubjectVisitId == lastVisitId && x.DoctorUserId == inDto.DoctorUserId).Select(x => x.Id).FirstOrDefaultAsync(); + var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && + x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && + x.TaskState == TaskState.Effect && !x.IsAnalysisCreate && x.SourceSubjectVisitId == lastVisitId && x.DoctorUserId == inDto.DoctorUserId).Select(x => x.Id).FirstOrDefaultAsync(); return LastVisitTaskId; }