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;
+
///
/// 自定义计算标记
///