From 8e29769df418b8ade1fafc78baa508a30966b19e Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Fri, 18 Nov 2022 14:05:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingCalculateViewModel.cs | 5 +++++ .../Reading/Dto/ReadingImageTaskViewModel.cs | 5 +++++ .../Reading/Dto/ReadingQuestionViewModel.cs | 15 ++++++++++++++ .../ReadingImageTaskService.cs | 12 +++++++++-- .../ReadingCalculate/PCWG3CalculateService.cs | 2 ++ .../RECIST1Point1CalculateService.cs | 19 +++++++++++++++--- .../SelfDefineCalculateService.cs | 2 ++ .../TrialSiteUser/DTO/TrialConfigDTO.cs | 20 +++++++++++++++++++ .../TrialSiteUser/TrialConfigService.cs | 18 ++++++++--------- IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 12 ++++++++++- .../ReadingQuestionCriterionTrial.cs | 5 +++++ .../ReadingQuestionTrial.cs | 5 +++++ .../ReadingTableQuestionTrial.cs | 5 +++++ 13 files changed, 110 insertions(+), 15 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs index e6290560..c93ef160 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs @@ -94,6 +94,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public bool CurrenShortBigger10 { get; set; } + /// + /// 淋巴结非靶病灶状态全部为消失 + /// + public bool NonTargetStateIsLoss { get; set; } + /// /// 该淋巴结靶病灶短径绝对增加值≥5 mm /// diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 6fa2888b..8a2bc6e2 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -99,6 +99,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public ValueOfType? ValueType { get; set; } + /// + /// 自定义单位 + /// + public string CustomUnit { get; set; } = string.Empty; + /// /// 单位 /// diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs index a73a446c..f473f905 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs @@ -299,6 +299,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public ValueUnit? Unit { get; set; } + /// + /// 自定义单位 + /// + public string CustomUnit { get; set; } = string.Empty; + /// /// 数据来源 /// @@ -834,6 +839,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public ValueUnit? Unit { get; set; } + /// + /// 自定义单位 + /// + public string CustomUnit { get; set; } = string.Empty; + /// /// 自定义计算标记 /// @@ -1553,6 +1563,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public ValueUnit? Unit { get; set; } + /// + /// 自定义单位 + /// + public string CustomUnit { get; set; } = string.Empty; + /// /// 自定义计算标记 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index c0975c9d..b51b986e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -431,6 +431,8 @@ namespace IRaCIS.Application.Services var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == taskinfo.TrialReadingCriterionId).FirstNotNullAsync(); + //if (taskinfo.TaskState != TaskState.Effect) //{ // throw new BusinessValidationFailedException($"当前任务已失效!"); @@ -448,8 +450,14 @@ namespace IRaCIS.Application.Services #region 获取问题及答案 - var qusetionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId) - .ProjectTo(_mapper.ConfigurationProvider).Where(x => x.IsShowInDicom && (x.Type == ReadingQestionType.Table || x.Type == ReadingQestionType.Group)).OrderBy(x => x.ShowOrder).ToListAsync(); + var qusetionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId).ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync(); + + if (!criterionInfo.IseCRFShowInDicomReading) + { + qusetionList= qusetionList.Where(x => x.IsShowInDicom && (x.Type == ReadingQestionType.Table || x.Type == ReadingQestionType.Group)).OrderBy(x => x.ShowOrder).ToList(); + } + + var usedGurops = qusetionList.Where(x => x.Type == ReadingQestionType.Table).Select(x => x.GroupName).ToList(); qusetionList = qusetionList.Where(x => usedGurops.Contains(x.GroupName)).ToList(); diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs index ff2b6cef..cb64b285 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs @@ -150,6 +150,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate QuestionName = x.QuestionName, ShowOrder = x.ShowOrder, ValueType = x.ValueType, + CustomUnit=x.CustomUnit, Unit = x.Unit, ReportLayType=ReportLayType.Group, }).ToList(); @@ -174,6 +175,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate OrderMark = x.OrderMark, ValueType = x.ValueType, Unit = x.Unit, + CustomUnit=x.Unit, ReportLayType = ReportLayType.Question, }).ToList(); diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs index f4b18389..c2ea5fee 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs @@ -128,6 +128,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate ShowOrder = x.ShowOrder, ValueType = x.ValueType, Unit = x.Unit, + CustomUnit=x.CustomUnit, ReportLayType= ReportLayType.Group, }).ToList(); @@ -150,6 +151,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate OrderMark = x.OrderMark, ValueType = x.ValueType, Unit = x.Unit, + CustomUnit=x.CustomUnit, ReportLayType = ReportLayType.Question, }).ToList(); @@ -1347,11 +1349,23 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate // 至少一个淋巴结靶病灶短径≥10 mm CurrenShortBigger10 = true, + //淋巴结非靶病灶状态全部为消失 + NonTargetStateIsLoss = true, + // 该淋巴结靶病灶短径绝对增加值≥5 mm IsAddFive = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.IsAddFive && x.Answer.EqEnum(YesOrNoOrNa.Yes)).Count() > 0, }; + var nonTargetTableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NonTargetLesions).SelectMany(x => x.TableRowInfoList).ToList(); + foreach (var item in nonTargetTableQuestion) + { + if (item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && x.Answer.EqEnum(YesOrNoOrNa.Yes))) + { + // 淋巴结非靶病灶状态全部为消失 + resultData.NonTargetStateIsLoss = item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.State).Select(x => x.Answer).FirstOrDefault()== NoTargetState.Loss.GetEnumInt(); + } + } foreach (var item in tableQuestion) @@ -1361,8 +1375,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate // 淋巴结的短径 resultData.DiameterLessThan10 = (item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0() < 10; - // 至少一个淋巴结靶病灶短径≥10 mm - resultData.CurrenShortBigger10 = (item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0() >= 10; + } if (item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && !x.Answer.EqEnum(YesOrNoOrNa.Yes))) @@ -1426,7 +1439,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate result = TargetAssessment.PR; } - if (resultData.SumOfDiameter == 0 && resultData.DiameterLessThan10) + if (resultData.SumOfDiameter == 0 && resultData.DiameterLessThan10&&resultData.NonTargetStateIsLoss) { result = TargetAssessment.CR; } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs index 1a2c1457..b226afd9 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs @@ -128,6 +128,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate ShowOrder = x.ShowOrder, ValueType = x.ValueType, Unit = x.Unit, + CustomUnit=x.CustomUnit, ReportLayType = ReportLayType.Group, }).ToList(); @@ -150,6 +151,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate OrderMark = x.OrderMark, ValueType = x.ValueType, Unit = x.Unit, + CustomUnit=x.CustomUnit, ReportLayType = ReportLayType.Question, }).ToList(); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index dbc7460f..deafda84 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -555,6 +555,16 @@ namespace IRaCIS.Core.Application.Contracts /// public string TypeValue { get; set; } + /// + /// 单位 + /// + public ValueUnit? Unit { get; set; } + + /// + /// 自定义单位 + /// + public string CustomUnit { get; set; } = string.Empty; + /// /// 是否启用 /// @@ -723,6 +733,11 @@ namespace IRaCIS.Core.Application.Contracts /// public int? DigitPlaces { get; set; } + /// + /// eCRF报告是否显示在图像页面 + /// + public bool IseCRFShowInDicomReading { get; set; } = false; + public bool IsFromSystem { get; set; } = false; @@ -895,6 +910,11 @@ namespace IRaCIS.Core.Application.Contracts /// public Guid TrialReadingCriterionId { get; set; } + /// + /// eCRF报告是否显示在图像页面 + /// + public bool IseCRFShowInDicomReading { get; set; } + public string GlobalUpdateType { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 6630cef2..9805bb79 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -386,15 +386,14 @@ namespace IRaCIS.Core.Application result.ReadingCriterionPageList = await _readingCriterionPageRepository.Where(x => x.TrialId == inDto.TrialId).ProjectTo(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder).ToListAsync(); var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id==inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); result.ReadingInfoSignTime = trialCriterion.ReadingInfoSignTime; - if (trialCriterion != null) - { - result.DigitPlaces = trialCriterion.DigitPlaces; - result.TrialCriterionId = trialCriterion.Id; - result.FormType = trialCriterion.FormType; - result.IsFromSystem = trialCriterion.ReadingQuestionCriterionSystemId != null; - result.IsMustGlobalReading = trialCriterion.IsMustGlobalReading; - result.IsSystemCriterion = trialCriterion.ReadingQuestionCriterionSystemId != null; - }; + + result.DigitPlaces = trialCriterion.DigitPlaces; + result.TrialCriterionId = trialCriterion.Id; + result.FormType = trialCriterion.FormType; + result.IsFromSystem = trialCriterion.ReadingQuestionCriterionSystemId != null; + result.IsMustGlobalReading = trialCriterion.IsMustGlobalReading; + result.IsSystemCriterion = trialCriterion.ReadingQuestionCriterionSystemId != null; + result.TrialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrial.IsConfirm && x.TrialId == inDto.TrialId&&x.ReadingQuestionCriterionTrialId == result.TrialCriterionId &&x.ReadingCriterionPageId==null) @@ -466,6 +465,7 @@ namespace IRaCIS.Core.Application IsReadingShowPreviousResults = inDto.IsReadingShowPreviousResults, GlobalUpdateType=inDto.GlobalUpdateType, ImagePlatform=inDto.ImagePlatform, + IseCRFShowInDicomReading=inDto.IseCRFShowInDicomReading, ArbitrationRule= arbitration, ReadingType = inDto.ReadingType, IsGlobalReading = inDto.IsGlobalReading, diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index 2c117330..939cb4bb 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -101,7 +101,17 @@ namespace IRaCIS.Core.Domain.Share /// /// CM /// - CM = 2 + CM = 2, + + /// + /// 个 + /// + Individual = 3, + + /// + /// 自定义 + /// + Custom = 4, } diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs index 37d48faf..699d8c1b 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs @@ -115,6 +115,11 @@ namespace IRaCIS.Core.Domain.Models /// public CriterionType CriterionType { get; set; } + /// + /// eCRF报告是否显示在图像页面 + /// + public bool IseCRFShowInDicomReading { get; set; } = false; + #region 阅片单元配置 新加 /// diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionTrial.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionTrial.cs index 952f16af..5afc4356 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionTrial.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionTrial.cs @@ -193,6 +193,11 @@ namespace IRaCIS.Core.Domain.Models /// public ValueUnit? Unit { get; set; } + /// + /// 自定义单位 + /// + public string CustomUnit { get; set; } = string.Empty; + /// /// 自定义计算标记 diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTableQuestionTrial.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTableQuestionTrial.cs index 9d3b7712..75c4a9e2 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTableQuestionTrial.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTableQuestionTrial.cs @@ -152,6 +152,11 @@ namespace IRaCIS.Core.Domain.Models /// public ValueUnit? Unit { get; set; } + /// + /// 自定义单位 + /// + public string CustomUnit { get; set; } = string.Empty; + /// /// 自定义计算标记 ///