From a2cfec65536b645db1a53588dbd0f3b3ca211cb5 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 4 Dec 2024 11:37:57 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=BC=E8=A1=A8?= =?UTF-8?q?=E6=8E=92=E5=BA=8F+=20=E5=8F=97=E8=AF=95=E8=80=85=E6=97=A0?= =?UTF-8?q?=E9=98=85=E7=89=87=E6=9C=9F=20=E5=AD=97=E6=AE=B5=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 5 --- .../Service/Common/ExcelExportService.cs | 37 ++++++++++++++----- .../Service/QC/DTO/QCListViewModel.cs | 2 + .../Service/QC/_MapConfig.cs | 3 ++ 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 73a505d69..5f91adc12 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -7095,11 +7095,6 @@ 是否查询所有的一致性分析临床数据 (为否只查询PDF) - - - 是否是阅片页面获取临床数据 (阅片其他访视任务需要获取受试者级别的) - - 获取访视列表 diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index a8ca5b3b2..1d2705c0f 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -1504,17 +1504,26 @@ namespace IRaCIS.Core.Application.Service.Common } else { - //两个人都做了 - if (resultExceptJudgeList.Count(t => t.VisitTaskNum == item.VisitTaskNum && t.SubjectCode == item.SubjectCode) == 2) + //产生了阅片期 + if (resultExceptJudgeList.Any(t => t.IsSubjectHaveReadingPeriod)) { - //如果没有产生裁判,默认选择R1 - if (item.ArmEnum == Arm.DoubleReadingArm1) + //两个人都做了 + if (resultExceptJudgeList.Count(t => t.VisitTaskNum == item.VisitTaskNum && t.SubjectCode == item.SubjectCode) == 2) { - item.IsJudgeSelect = true; + //如果没有产生裁判,默认选择R1 + if (item.ArmEnum == Arm.DoubleReadingArm1) + { + item.IsJudgeSelect = true; + } + else + { + item.IsJudgeSelect = false; + } } else { - item.IsJudgeSelect = false; + item.IsJudgeSelect = null; + item.IsTrigerJudge = null; } } else @@ -1523,11 +1532,12 @@ namespace IRaCIS.Core.Application.Service.Common item.IsTrigerJudge = null; } + } } } - if (arbitrationRule == ArbitrationRule.Reading) + else if (arbitrationRule == ArbitrationRule.Reading) { //处理访视裁判标记 foreach (var visitItem in resultExceptJudgeList.Where(t => t.ReadingCategory == ReadingCategory.Visit)) @@ -1633,6 +1643,15 @@ namespace IRaCIS.Core.Application.Service.Common } } } + else + { + foreach (var visitItem in resultExceptJudgeList.Where(t => t.ReadingCategory == ReadingCategory.Visit)) + { + visitItem.IsJudgeSelect = null; + visitItem.IsTrigerJudge = null; + } + + } return resultExceptJudgeList; } @@ -2094,11 +2113,11 @@ namespace IRaCIS.Core.Application.Service.Common list = new List(); - foreach (var item in taskList) + foreach (var item in taskList.OrderBy(t => t.SubjectCode).ThenBy(t => t.ArmEnum).ThenBy(t => t.VisitTaskNum)) { if (item.LesionList.Count > 0) { - foreach (var lession in item.LesionList) + foreach (var lession in item.LesionList.OrderBy(t => t.LessionType).ThenBy(t => t.LessionCode)) { var firstLessionAnser = lession.LessionAnswerList.FirstOrDefault() ?? new CommonLessionQuestionAnswerInfo(); diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index f7cce53d0..1818fdcde 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -1159,6 +1159,8 @@ namespace IRaCIS.Core.Application.Contracts { public List QuestionAnswerList { get; set; } + public bool IsSubjectHaveReadingPeriod { get; set; } + public String TrialSiteCode { get; set; } = String.Empty; public string SubjectCode { get; set; } = String.Empty; diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index c8f0760cd..728795f1e 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -257,6 +257,9 @@ namespace IRaCIS.Core.Application.Service false))) .ForMember(o => o.JudgeNote, t => t.MapFrom(u => u.ReadingCategory==ReadingCategory.Judge? u.JudgeResultRemark : u.JudgeVisitTask.JudgeResultRemark)) .ForMember(o => o.VisitNote, t => t.MapFrom(u => u.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == QuestionType.AdjustReason).FirstOrDefault()!.Answer)) + .ForMember(o => o.IsSubjectHaveReadingPeriod, t => t.MapFrom(u => arbitrationRule == ArbitrationRule.Reading ? + u.Subject.ReadModuleList.Any(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading) : false)) + .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.Subject.TrialSite.TrialSiteCode)) .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code)) .ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName)) From 137f77cdc5c7a7d3d3d99dfc09239c19730578d6 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 4 Dec 2024 15:33:40 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=98=85=E7=89=87?= =?UTF-8?q?=E6=9C=9F=E5=AF=BC=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Common/ExcelExportService.cs | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 1d2705c0f..7f623e5d4 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -1504,26 +1504,18 @@ namespace IRaCIS.Core.Application.Service.Common } else { - //产生了阅片期 - if (resultExceptJudgeList.Any(t => t.IsSubjectHaveReadingPeriod)) + + //两个人都做了 + if (resultExceptJudgeList.Count(t => t.VisitTaskNum == item.VisitTaskNum && t.SubjectCode == item.SubjectCode) == 2) { - //两个人都做了 - if (resultExceptJudgeList.Count(t => t.VisitTaskNum == item.VisitTaskNum && t.SubjectCode == item.SubjectCode) == 2) + //如果没有产生裁判,默认选择R1 + if (item.ArmEnum == Arm.DoubleReadingArm1) { - //如果没有产生裁判,默认选择R1 - if (item.ArmEnum == Arm.DoubleReadingArm1) - { - item.IsJudgeSelect = true; - } - else - { - item.IsJudgeSelect = false; - } + item.IsJudgeSelect = true; } else { - item.IsJudgeSelect = null; - item.IsTrigerJudge = null; + item.IsJudgeSelect = false; } } else @@ -1533,6 +1525,7 @@ namespace IRaCIS.Core.Application.Service.Common } + } } @@ -1619,18 +1612,27 @@ namespace IRaCIS.Core.Application.Service.Common } else { - //没有产生裁判 有可能一个人没做完,也有可能做完了没产生裁判 - //两个人都做了 - if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2) + //产生了阅片期 + if (resultExceptJudgeList.Any(t => t.IsSubjectHaveReadingPeriod)) { - //不存在裁判 将R1设置 - if (visitItem.ArmEnum == Arm.DoubleReadingArm1) + //没有产生裁判 有可能一个人没做完,也有可能做完了没产生裁判 + //两个人都做了 + if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2) { - visitItem.IsJudgeSelect = true; + //不存在裁判 将R1设置 + if (visitItem.ArmEnum == Arm.DoubleReadingArm1) + { + visitItem.IsJudgeSelect = true; + } + else + { + visitItem.IsJudgeSelect = false; + } } else { - visitItem.IsJudgeSelect = false; + visitItem.IsJudgeSelect = null; + visitItem.IsTrigerJudge = null; } } else @@ -1640,6 +1642,7 @@ namespace IRaCIS.Core.Application.Service.Common } + } } } From 47eaed78ed1063e6b45469c60d2101dc5c8edacf Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 4 Dec 2024 17:45:06 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=BC=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Common/ExcelExportService.cs | 85 ++++++++++++++----- .../Service/QC/DTO/QCListViewModel.cs | 4 +- .../Service/QC/_MapConfig.cs | 7 +- 3 files changed, 72 insertions(+), 24 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 7f623e5d4..771306921 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -12,9 +12,11 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using NPOI.POIFS.Properties; +using NPOI.SS.Formula.Functions; using NPOI.XSSF.UserModel; using System.ComponentModel.Design; using System.Globalization; +using System.Linq; using static IRaCIS.Core.Application.Service.ExcelExportHelper; using IDictionaryService = IRaCIS.Application.Interfaces.IDictionaryService; @@ -1612,34 +1614,77 @@ namespace IRaCIS.Core.Application.Service.Common } else { - //产生了阅片期 - if (resultExceptJudgeList.Any(t => t.IsSubjectHaveReadingPeriod)) + + //没有产生裁判 有可能一个人没做完,也有可能做完了没产生裁判 + //两个人都做了(1、两个人都阅片完,确实没产生,2、两个人都阅片完,还没到阅片期,没产生裁判) + + //默认都设置为null 仅仅处理 阅片期读完了没产生裁判 裁判选择标记需要设置的访视 + visitItem.IsJudgeSelect = null; + visitItem.IsTrigerJudge = null; + + //阅片期访视号 + var subjectReadingPeriondVisitNumList = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode).FirstOrDefault()?.SubjectCriterionReadingPeriodVisitNumList; + + if (subjectReadingPeriondVisitNumList != null) { - //没有产生裁判 有可能一个人没做完,也有可能做完了没产生裁判 - //两个人都做了 - if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2) + //两个人完成最大得任务号 + var subjectMaxFinishedVisitTaskNum = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode) + .GroupBy(t => t.VisitTaskNum).Where(g => g.Count() == 2).Select(g => g.Key).DefaultIfEmpty().Max(); + + var minReadingPeriodVisitNum = subjectReadingPeriondVisitNumList.Min(); + + var maxReadingPeriodVisitNum = subjectReadingPeriondVisitNumList.Max(); + + //最小阅片期 最大阅片期 完成访视号 对应存在三种情况 + + //有阅片期读完了 存在两种 + //大于最大阅片期 + if (subjectMaxFinishedVisitTaskNum > maxReadingPeriodVisitNum) { - //不存在裁判 将R1设置 - if (visitItem.ArmEnum == Arm.DoubleReadingArm1) + //两个人都做完了 并且当前任务号小于 最大阅片期 才设置裁判 产生标记和裁判选择标记 + if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2 && visitItem.VisitTaskNum <= maxReadingPeriodVisitNum) { - visitItem.IsJudgeSelect = true; - } - else - { - visitItem.IsJudgeSelect = false; + //不存在裁判 将R1设置 + if (visitItem.ArmEnum == Arm.DoubleReadingArm1) + { + visitItem.IsJudgeSelect = true; + visitItem.IsTrigerJudge = false; + + } + else + { + visitItem.IsJudgeSelect = false; + visitItem.IsTrigerJudge = false; + } } } - else + //大于最小阅片期 + else if (subjectMaxFinishedVisitTaskNum > minReadingPeriodVisitNum) { - visitItem.IsJudgeSelect = null; - visitItem.IsTrigerJudge = null; + //找到小于完成最大任务号最近的阅片期号 + + var latestFinishedReadingPeriodNum = subjectReadingPeriondVisitNumList.Where(t => t < subjectMaxFinishedVisitTaskNum).OrderBy(t => t).Max(); + + if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2 && visitItem.VisitTaskNum <= latestFinishedReadingPeriodNum) + { + //不存在裁判 将R1设置 + if (visitItem.ArmEnum == Arm.DoubleReadingArm1) + { + visitItem.IsJudgeSelect = true; + visitItem.IsTrigerJudge = false; + + } + else + { + visitItem.IsJudgeSelect = false; + visitItem.IsTrigerJudge = false; + } + } + } } - else - { - visitItem.IsJudgeSelect = null; - visitItem.IsTrigerJudge = null; - } + + diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index 1818fdcde..61e5802ec 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -227,7 +227,7 @@ namespace IRaCIS.Core.Application.Contracts public string SubjectCode { get; set; } = String.Empty; [DictionaryTranslateAttribute("Subject_Visit_Status")] - public SubjectStatus SubjectStatus { get; set; } + public SubjectStatus SubjectStatus { get; set; } public String TrialSiteCode { get; set; } = String.Empty; @@ -1159,7 +1159,7 @@ namespace IRaCIS.Core.Application.Contracts { public List QuestionAnswerList { get; set; } - public bool IsSubjectHaveReadingPeriod { get; set; } + public List SubjectCriterionReadingPeriodVisitNumList { get; set; } public String TrialSiteCode { get; set; } = String.Empty; public string SubjectCode { get; set; } = String.Empty; diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index 728795f1e..212d2ad66 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -257,9 +257,12 @@ namespace IRaCIS.Core.Application.Service false))) .ForMember(o => o.JudgeNote, t => t.MapFrom(u => u.ReadingCategory==ReadingCategory.Judge? u.JudgeResultRemark : u.JudgeVisitTask.JudgeResultRemark)) .ForMember(o => o.VisitNote, t => t.MapFrom(u => u.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == QuestionType.AdjustReason).FirstOrDefault()!.Answer)) - .ForMember(o => o.IsSubjectHaveReadingPeriod, t => t.MapFrom(u => arbitrationRule == ArbitrationRule.Reading ? - u.Subject.ReadModuleList.Any(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading) : false)) + //.ForMember(o => o.IsSubjectHaveReadingPeriod, t => t.MapFrom(u => arbitrationRule == ArbitrationRule.Reading ? + //u.Subject.ReadModuleList.Any(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading) : false)) + + .ForMember(o => o.SubjectCriterionReadingPeriodVisitNumList, t => t.MapFrom(u => + u.Subject.ReadModuleList.Where(t=>t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading).Select(c=>c.SubjectVisit.VisitNum))) .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.Subject.TrialSite.TrialSiteCode)) .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code)) .ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName)) From 848e33edb8ff87ad57c05c9db3d6b8532c669aee Mon Sep 17 00:00:00 2001 From: hang <87227557@qq.com> Date: Wed, 4 Dec 2024 20:05:13 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E4=BA=A7=E7=94=9F=E8=A3=81=E5=88=A4=EF=BC=8C=E8=A3=81=E5=88=A4?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=A0=87=E5=BF=97=20=E5=92=8C=E8=A3=81?= =?UTF-8?q?=E5=88=A4=E9=80=89=E6=8B=A9=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Common/ExcelExportService.cs | 48 ++++++------------- 1 file changed, 15 insertions(+), 33 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 771306921..f5ef8211e 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -1627,46 +1627,25 @@ namespace IRaCIS.Core.Application.Service.Common if (subjectReadingPeriondVisitNumList != null) { - //两个人完成最大得任务号 - var subjectMaxFinishedVisitTaskNum = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode) + //两个人完成最大得任务号(访视+全局) + var subjectMaxFinishedTaskNum = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode) .GroupBy(t => t.VisitTaskNum).Where(g => g.Count() == 2).Select(g => g.Key).DefaultIfEmpty().Max(); - var minReadingPeriodVisitNum = subjectReadingPeriondVisitNumList.Min(); + var minReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Min() + ReadingCommon.TaskNumDic[ReadingCategory.Global]; - var maxReadingPeriodVisitNum = subjectReadingPeriondVisitNumList.Max(); + //最小阅片期 完成访视号 - //最小阅片期 最大阅片期 完成访视号 对应存在三种情况 + //有阅片期读完了 肯定要读到最小阅片期号后面 - //有阅片期读完了 存在两种 - //大于最大阅片期 - if (subjectMaxFinishedVisitTaskNum > maxReadingPeriodVisitNum) + if (subjectMaxFinishedTaskNum >= minReadingPeriodTaskNum) { - //两个人都做完了 并且当前任务号小于 最大阅片期 才设置裁判 产生标记和裁判选择标记 - if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2 && visitItem.VisitTaskNum <= maxReadingPeriodVisitNum) - { - //不存在裁判 将R1设置 - if (visitItem.ArmEnum == Arm.DoubleReadingArm1) - { - visitItem.IsJudgeSelect = true; - visitItem.IsTrigerJudge = false; - - } - else - { - visitItem.IsJudgeSelect = false; - visitItem.IsTrigerJudge = false; - } - } - } - //大于最小阅片期 - else if (subjectMaxFinishedVisitTaskNum > minReadingPeriodVisitNum) - { - //找到小于完成最大任务号最近的阅片期号 - - var latestFinishedReadingPeriodNum = subjectReadingPeriondVisitNumList.Where(t => t < subjectMaxFinishedVisitTaskNum).OrderBy(t => t).Max(); - - if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2 && visitItem.VisitTaskNum <= latestFinishedReadingPeriodNum) + //找到<= 完成最大访视任务号最近的阅片期号 + var latestFinishedReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Select(t => t + ReadingCommon.TaskNumDic[ReadingCategory.Global]).Where(t => t <= subjectMaxFinishedTaskNum).Max(); + + //小于已完成的阅片期的访视 设置触发裁判标志为否 并设置默认的裁判选择标记 (两个人肯定做完了) + if (visitItem.VisitTaskNum <= latestFinishedReadingPeriodTaskNum) { + //不存在裁判 将R1设置 if (visitItem.ArmEnum == Arm.DoubleReadingArm1) { @@ -1679,7 +1658,10 @@ namespace IRaCIS.Core.Application.Service.Common visitItem.IsJudgeSelect = false; visitItem.IsTrigerJudge = false; } + + } + } } From ba8a457688aeb18562fd92f689d0da4b3fdf69c4 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 5 Dec 2024 09:08:53 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A3=81=E5=88=A4?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=A0=87=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Common/ExcelExportService.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index f5ef8211e..1ec355076 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -1475,7 +1475,7 @@ namespace IRaCIS.Core.Application.Service.Common - public List DealJudgeMark(ArbitrationRule arbitrationRule, IEnumerable list) where T : CommonEvaluationExport + public List DealJudgeMark(ArbitrationRule arbitrationRule, bool isGlobalReading, IEnumerable list) where T : CommonEvaluationExport { //处理访视任务的裁判标记 var resultExceptJudgeList = list.Where(t => t.ReadingCategory != ReadingCategory.Judge).ToList(); @@ -1631,7 +1631,9 @@ namespace IRaCIS.Core.Application.Service.Common var subjectMaxFinishedTaskNum = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode) .GroupBy(t => t.VisitTaskNum).Where(g => g.Count() == 2).Select(g => g.Key).DefaultIfEmpty().Max(); - var minReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Min() + ReadingCommon.TaskNumDic[ReadingCategory.Global]; + var addReadingPeriodNum = isGlobalReading ? ReadingCommon.TaskNumDic[ReadingCategory.Global] : 0; + + var minReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Min() + addReadingPeriodNum; //最小阅片期 完成访视号 @@ -1640,7 +1642,7 @@ namespace IRaCIS.Core.Application.Service.Common if (subjectMaxFinishedTaskNum >= minReadingPeriodTaskNum) { //找到<= 完成最大访视任务号最近的阅片期号 - var latestFinishedReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Select(t => t + ReadingCommon.TaskNumDic[ReadingCategory.Global]).Where(t => t <= subjectMaxFinishedTaskNum).Max(); + var latestFinishedReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Select(t => t + addReadingPeriodNum).Where(t => t <= subjectMaxFinishedTaskNum).Max(); //小于已完成的阅片期的访视 设置触发裁判标志为否 并设置默认的裁判选择标记 (两个人肯定做完了) if (visitItem.VisitTaskNum <= latestFinishedReadingPeriodTaskNum) @@ -1661,7 +1663,7 @@ namespace IRaCIS.Core.Application.Service.Common } - + } } @@ -2027,7 +2029,7 @@ namespace IRaCIS.Core.Application.Service.Common [FromServices] IRepository _trialRepository) { //每次查询必须是单标准的 - var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstNotNullAsync(); + var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.IsGlobalReading, t.CriterionName, t.ArbitrationRule }).FirstNotNullAsync(); var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze)) @@ -2209,7 +2211,7 @@ namespace IRaCIS.Core.Application.Service.Common exportInfo.CriterionName = criterion.CriterionName; //处理裁判标记 - list = DealJudgeMark(criterion.ArbitrationRule, list); + list = DealJudgeMark(criterion.ArbitrationRule, criterion.IsGlobalReading, list); #region 系统标准处理整体肿瘤评估合并 From 7cf9bd4a8106e6d9f7e0ebb7ff98f1b85cd57271 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 5 Dec 2024 10:38:21 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/Common/ExcelExportService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 1ec355076..c9cf90803 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -1625,7 +1625,7 @@ namespace IRaCIS.Core.Application.Service.Common //阅片期访视号 var subjectReadingPeriondVisitNumList = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode).FirstOrDefault()?.SubjectCriterionReadingPeriodVisitNumList; - if (subjectReadingPeriondVisitNumList != null) + if (subjectReadingPeriondVisitNumList != null && subjectReadingPeriondVisitNumList.Count()>0) { //两个人完成最大得任务号(访视+全局) var subjectMaxFinishedTaskNum = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode) From 84ba0bc4a9dac3f66fe1f2890fed08943879bbe2 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 5 Dec 2024 16:11:27 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=9D=9Edicom=20?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/QC/_MapConfig.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index 212d2ad66..b4e4ee434 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -699,14 +699,14 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path)); CreateMap() - .ForMember(d => d.NoneDicomStudyFileList, u => u.MapFrom(s => isFilterZip ? s.NoneDicomFileList.Where(t => !t.FileType.Contains(StaticData.FileType.Zip)) : s.NoneDicomFileList)) + .ForMember(d => d.NoneDicomStudyFileList, u => u.MapFrom(s => isFilterZip ? s.NoneDicomFileList.Where(t => !t.FileType.Contains(StaticData.FileType.Zip)).OrderBy(t => t.FileType).ThenBy(t => t.FileName) : s.NoneDicomFileList.OrderBy(t => t.FileType).ThenBy(t => t.FileName))) .ForMember(d => d.CodeView, u => u.MapFrom(s => s.StudyCode)); Guid? visiTaskId = null; CreateMap() .ForMember(d => d.NoneDicomStudyFileList, u => u.MapFrom(s => isFilterZip ? - s.TaskNoneDicomFileList.Where(t => visiTaskId != null ? t.VisitTaskId == visiTaskId : true).Where(t => !t.FileType.Contains(StaticData.FileType.Zip)) - : s.TaskNoneDicomFileList.Where(t => visiTaskId != null ? t.VisitTaskId == visiTaskId : true))) + s.TaskNoneDicomFileList.Where(t => visiTaskId != null ? t.VisitTaskId == visiTaskId : true).Where(t => !t.FileType.Contains(StaticData.FileType.Zip)).OrderBy(t => t.FileType).ThenBy(t=>t.FileName) + : s.TaskNoneDicomFileList.Where(t => visiTaskId != null ? t.VisitTaskId == visiTaskId : true).OrderBy(t => t.FileType).ThenBy(t => t.FileName))) .ForMember(d => d.CodeView, u => u.MapFrom(s => s.StudyCode)); } From effd6fee419d41bcaf2587d5ed3aa2a320739a64 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 5 Dec 2024 16:45:33 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B4=A8=E6=8E=A7?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs | 2 +- IRaCIS.Core.Application/Service/QC/_MapConfig.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs index 7622ef5ea..fec3dc50d 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs @@ -199,7 +199,7 @@ namespace IRaCIS.Core.Application.Contracts.DTO public class QCChallengeWithUser : QCChallengeCommand { - + public bool IsBaseLine { get; set; } public string VisitName { get; set; } public string BlindName { get; set; } = string.Empty; public string SubjectCode { get; set; } diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index b4e4ee434..03ec86fa1 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -618,6 +618,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.SubjectVisit.Subject.Code)) .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)) + .ForMember(d => d.IsBaseLine, u => u.MapFrom(s => s.SubjectVisit.IsBaseLine)) .ForMember(d => d.BlindName, u => u.MapFrom(s => s.SubjectVisit.BlindName)); @@ -633,6 +634,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.SubjectVisit.Subject.Code)) .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)) + .ForMember(d => d.IsBaseLine, u => u.MapFrom(s => s.SubjectVisit.IsBaseLine)) .ForMember(d => d.BlindName, u => u.MapFrom(s => s.SubjectVisit.BlindName)) ; From 6eefbb1745f724573d58d15f32501aa31a961d4b Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 5 Dec 2024 17:03:44 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/QC/QCListService.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs index c6964a247..7953faaca 100644 --- a/IRaCIS.Core.Application/Service/QC/QCListService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs @@ -154,6 +154,8 @@ namespace IRaCIS.Core.Application.Image.QA var pageList = await query.ToPagedListAsync(inQuery, new string[] { nameof(QCCRCChallengeViewModel.IsUrgent) + " desc", nameof(QCCRCChallengeViewModel.CreateTime) }); var config = await _trialRepository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); + config.IsHaveSubjectClinicalData = await _clinicalDataTrialSet.AnyAsync(x => x.TrialId == inQuery.TrialId && x.IsConfirm && (x.ClinicalDataLevel == ClinicalLevel.Subject) && x.UploadRole == UploadRole.CRC); + config.IsHaveVisitClinicalData = await _clinicalDataTrialSet.AnyAsync(x => x.TrialId == inQuery.TrialId && x.IsConfirm && (x.ClinicalDataLevel == ClinicalLevel.SubjectVisit) && x.UploadRole == UploadRole.CRC); return ResponseOutput.Ok(pageList, config); }