From 1815311e72d9e77b4c6a6c6e12afed9678c2a959 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 28 Mar 2023 13:33:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=80=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 686 +++++++++--------- .../DTO/SubjectCriteriaEvaluationViewModel.cs | 4 + .../SubjectCriteriaEvaluationService.cs | 48 +- 3 files changed, 382 insertions(+), 356 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 2ff417d99..fca4c2296 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1168,349 +1168,6 @@ - - - 获取Sod的值 - - - - - 删除病灶获取起始病灶序号(RECIST1Point1 固定是1) - - - - - - 获取阅片报告 - - - - - - - 测试计算 - - - - - - - - 计算任务 - - - - - - - 获取报告验证的信息(这里每个标准可能不一样 返回用object) - - - - - - - 自动计算 - - - - - - - - 获取报告整体整体评估 - - - - - - - 获取报告是否存在疾病 - - - - - - - 验证访视提交 - - - - - - - 将上一次的访视病灶添加到这一次 - - - - - - - 获取SOD - - - 靶病灶径线之和(SOD) - 非淋巴结的长径 和淋巴结的短径 - - - - - - 非淋巴结靶病灶长径之和 - - - - - - - 与基线SOD相比变化量(mm) - - - - - - - 与基线访视相比SOD变化百分比 - - - - - - - 与整个访视期间SOD最低点相比增加的值(mm) - - - - 要更新之前的 - - - - - - 与整个访视期间SOD最低点相比增加的百分比 - - - - 要更新之前的 - - - - - - 整个访视期间SOD最低点访视名称 - - - - 要更新之前的 - - - - - - 是否存在非淋巴结靶病灶 - - - - - - - 是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上 - - - - - - - 获取存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上的病灶 - - - - - - - 被评估为NE的单个靶病灶 - - - - - - - 整体肿瘤评估 - - - - - - - 是否存在疾病 - - - - - - - 修改与整个访视期间SOD最低点相比增加的值(mm) - - - - - - - 修改最低方式点名称 - - - - - - - 修改所有访视任务的答案 - - - - - - - - - 获取基线SOD - - - - - - - 获取最低方式 - - - - - - - 获取访视任务信息 - - - - - - - 获取上一个访视任务Id - - - - - - - 获取非靶病灶评估 - - - - - - - 获取新病灶评估 - - - - - - - 删除病灶获取起始病灶序号 - - - - - - 获取阅片报告 - - - - - - - 将上一次的病灶信息添加到这一次 - - - - - - - 测试计算 - - - - - - - - 计算任务 - - - - - - - 自动计算 - - - - - - - - 基线病灶计数 - - - - - - - 获取新病灶计数 - - - - - - - 既往新病灶计数 - - - - - - - 自治疗后第二个访视点以来持续的新骨病变数量 - - - - - - - 获取 - - - - - - - 访视点肿瘤评估 - - - - - - - 修改上一次访视结果 - - - - - - - 获取访视日期信息 - - - - 获取Sod的值 @@ -1755,6 +1412,349 @@ + + + 删除病灶获取起始病灶序号 + + + + + + 获取阅片报告 + + + + + + + 将上一次的病灶信息添加到这一次 + + + + + + + 测试计算 + + + + + + + + 计算任务 + + + + + + + 自动计算 + + + + + + + + 基线病灶计数 + + + + + + + 获取新病灶计数 + + + + + + + 既往新病灶计数 + + + + + + + 自治疗后第二个访视点以来持续的新骨病变数量 + + + + + + + 获取 + + + + + + + 访视点肿瘤评估 + + + + + + + 修改上一次访视结果 + + + + + + + 获取访视日期信息 + + + + + + + 获取Sod的值 + + + + + 删除病灶获取起始病灶序号(RECIST1Point1 固定是1) + + + + + + 获取阅片报告 + + + + + + + 测试计算 + + + + + + + + 计算任务 + + + + + + + 获取报告验证的信息(这里每个标准可能不一样 返回用object) + + + + + + + 自动计算 + + + + + + + + 获取报告整体整体评估 + + + + + + + 获取报告是否存在疾病 + + + + + + + 验证访视提交 + + + + + + + 将上一次的访视病灶添加到这一次 + + + + + + + 获取SOD + + + 靶病灶径线之和(SOD) + 非淋巴结的长径 和淋巴结的短径 + + + + + + 非淋巴结靶病灶长径之和 + + + + + + + 与基线SOD相比变化量(mm) + + + + + + + 与基线访视相比SOD变化百分比 + + + + + + + 与整个访视期间SOD最低点相比增加的值(mm) + + + + 要更新之前的 + + + + + + 与整个访视期间SOD最低点相比增加的百分比 + + + + 要更新之前的 + + + + + + 整个访视期间SOD最低点访视名称 + + + + 要更新之前的 + + + + + + 是否存在非淋巴结靶病灶 + + + + + + + 是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上 + + + + + + + 获取存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上的病灶 + + + + + + + 被评估为NE的单个靶病灶 + + + + + + + 整体肿瘤评估 + + + + + + + 是否存在疾病 + + + + + + + 修改与整个访视期间SOD最低点相比增加的值(mm) + + + + + + + 修改最低方式点名称 + + + + + + + 修改所有访视任务的答案 + + + + + + + + + 获取基线SOD + + + + + + + 获取最低方式 + + + + + + + 获取访视任务信息 + + + + + + + 获取上一个访视任务Id + + + + + + + 获取非靶病灶评估 + + + + + + + 获取新病灶评估 + + + + 获取Sod的值 diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationViewModel.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationViewModel.cs index eeb2aaff7..72f656cc0 100644 --- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationViewModel.cs @@ -64,6 +64,10 @@ namespace IRaCIS.Core.Application.ViewModel public string TrialSiteCode { get; set; } = string.Empty; public SubjectStatus? SubjectStatus { get; set; } + + public bool? IsImageFiltering { get; set; } + + public bool? IsJoinEvaluation { get; set; } } /// SubjectCriteriaEvaluationAddOrEdit 列表查询参数模型 diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs index 81b24a7be..a25fbda58 100644 --- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs +++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs @@ -106,10 +106,13 @@ namespace IRaCIS.Core.Application.Service var subjectCriteriaEvaluationQueryable = from subject in _subjectRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubjectCode), t => t.Code.Contains(inQuery.SubjectCode)) - .WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), t => t.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode)) - .WhereIf(inQuery.SubjectStatus != null, t => t.Status == inQuery.SubjectStatus) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), t => t.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode)) + .WhereIf(inQuery.SubjectStatus != null, t => t.Status == inQuery.SubjectStatus) - join subjectCriteriaEvaluation in _subjectCriteriaEvaluationRepository.Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) on subject.Id equals subjectCriteriaEvaluation.SubjectId into d + join subjectCriteriaEvaluation in _subjectCriteriaEvaluationRepository + .Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) + + on subject.Id equals subjectCriteriaEvaluation.SubjectId into d from subjectCriteriaEvaluation in d.DefaultIfEmpty() select new SubjectCriteriaEvaluationView() @@ -141,7 +144,10 @@ namespace IRaCIS.Core.Application.Service }; - var pageList = await subjectCriteriaEvaluationQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc); + var pageList = await subjectCriteriaEvaluationQueryable + .WhereIf(inQuery.IsImageFiltering != null, t => t.IsImageFiltering==inQuery.IsImageFiltering) + .WhereIf(inQuery.IsJoinEvaluation != null, t => t.IsJoinEvaluation == inQuery.IsJoinEvaluation) + .ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc); foreach (var item in pageList.CurrentPageData) @@ -322,22 +328,29 @@ namespace IRaCIS.Core.Application.Service var list = await _repository.Where(t => t.SubjectVisitId == subjectVisitId && t.SubjectId == subjectId).Select(t => new { SeriesId = t.Id, t.StudyId, t.BodyPartForEdit }).ToListAsync(); - //已经自动筛选过 - if (await _subjectCriteriaEvaluationVisitFilterRepository.AnyAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectVisitId == subjectVisitId)) - { - await _subjectCriteriaEvaluationVisitFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectVisitId == subjectVisitId); + ////已经自动筛选过 + //if (await _subjectCriteriaEvaluationVisitFilterRepository.AnyAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectVisitId == subjectVisitId)) + //{ + // await _subjectCriteriaEvaluationVisitFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectVisitId == subjectVisitId); + // await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectVisitId == subjectVisitId); + //} + + var existEntity = await _subjectCriteriaEvaluationVisitFilterRepository.FirstOrDefaultAsync(t => t.SubjectId == subjectId && t.SubjectVisitId == subjectVisitId && t.TrialReadingCriterionId == trialReadingCriterionId); + + //已经自动筛选过 + + if (existEntity != null) + { await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectVisitId == subjectVisitId); } - //var existEntity = await _subjectCriteriaEvaluationVisitFilterRepository.FirstOrDefaultAsync(t => t.SubjectId == subjectId && t.SubjectVisitId == subjectVisitId && t.TrialReadingCriterionId == trialReadingCriterionId); - //有不是脑部的序列 if (list.Any(t => t.BodyPartForEdit != "脑部")) { - //if (existEntity == null) + if (existEntity == null) { var addItem = new SubjectCriteriaEvaluationVisitFilter { @@ -351,13 +364,18 @@ namespace IRaCIS.Core.Application.Service var subjectCriteriaEvaluationVisitFilter = await _subjectCriteriaEvaluationVisitFilterRepository.AddAsync(addItem); } + else + { + existEntity.ImageDeterminationResultState = ImageDeterminationResultState.None; + existEntity.ImageFilterState = ImageFilterState.None; + } } //都是脑部的序列 else { - //if (existEntity == null) + if (existEntity == null) { var addItem = new SubjectCriteriaEvaluationVisitFilter { @@ -372,7 +390,11 @@ namespace IRaCIS.Core.Application.Service var subjectCriteriaEvaluationVisitFilter = await _subjectCriteriaEvaluationVisitFilterRepository.AddAsync(addItem); } - + else + { + existEntity.ImageDeterminationResultState = ImageDeterminationResultState.Passed; + existEntity.ImageFilterState = ImageFilterState.Finished; + } foreach (var item in list) {