diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs
index d78ac77a5..3335709fe 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs
@@ -473,7 +473,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// 间隔天数
new ReadingCalculateData (){QuestionType=QuestionType.DaysBetween,GetIntFun=GetNumberOfDaysBetween},
- // 自治疗后第二个访视点以来持续的新骨病变数量
+ // 访视点肿瘤评估
new ReadingCalculateData (){QuestionType=QuestionType.SiteVisitForTumorEvaluation,GetStringFun=GetSiteVisitForTumorEvaluation},
@@ -718,11 +718,15 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
///
public async Task GetSiteVisitForTumorEvaluation(ReadingCalculateDto inDto)
{
- await ChangeLastTaskSiteVisitForTumorEvaluation(inDto);
+ var isPD= await ChangeLastTaskSiteVisitForTumorEvaluation(inDto);
var newLesionsCount = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
var baseLineLesionsCount = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.BaseLineLesionsCount).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
var alwaysNewLesionsCount = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.AlwaysNewLesionsCount).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
- if (newLesionsCount == 0 &&
+
+ if (isPD)
+ {
+ return VisitTumorEvaluation.PD.GetEnumInt();
+ }else if (newLesionsCount == 0 &&
baseLineLesionsCount == 0 &&
alwaysNewLesionsCount == 0)
{
@@ -739,7 +743,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
///
///
///
- public async Task ChangeLastTaskSiteVisitForTumorEvaluation(ReadingCalculateDto inDto)
+ public async Task ChangeLastTaskSiteVisitForTumorEvaluation(ReadingCalculateDto inDto)
{
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
var taskList =await GetSiteVisitForTumorList(inDto);
@@ -752,41 +756,51 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
if (lastTask != null)
{
- var lastTasknewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
- if (lastTask.VisitTaskNum == 1m)
+
+ #region 1、基线后第一个访视:新病灶计数≥ 2个;2、基线后第二个访视(应满足访视间隔6周以上,否则顺延)新病灶≥ 2个;
+ //1、基线后第一个访视:新病灶计数≥ 2个;2、基线后第二个访视(应满足访视间隔6周以上,否则顺延)新病灶≥ 2个;
+
+
+ var firstVisit = taskList.FirstOrDefault();
+
+ //基线后第二个访视(应满足访视间隔6周以上,否则顺延)
+ var secondVisit = taskList.Where(x => x.VisitTaskNum >= 2 && x.EarliestScanDate >= baseLineTask.LatestScanDate.AddDays(42)).FirstOrDefault();
+ if (secondVisit != null)
{
- //基线后第二个访视(应满足访视间隔6周以上,否则顺延)
- var secondVisit = taskList.Where(x => x.VisitTaskNum >= 2 && x.EarliestScanDate >= baseLineTask.LatestScanDate.AddDays(42)).FirstOrDefault();
- if (secondVisit != null)
+
+ var firstTaskNewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == firstVisit.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
+
+ // 第二访视数量
+ var secondVisitLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
+
+ // 判断是否是当前访视 当前访视还未入库
+ if (secondVisit.VisitTaskId == inDto.VisitTaskId)
{
-
- // 第二访视数量
- var secondVisitLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
-
- // 判断是否是当前访视
- if (secondVisit.VisitTaskId == inDto.VisitTaskId)
- {
- secondVisitLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
- }
-
- if (lastTasknewLesionsCount >= 2 && secondVisitLesionsCount >= 2)
- {
- isPDResult = true;
- }
+ secondVisitLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
}
- }
- else
- {
- var thisVisitTaskNewLesionsCount= (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
-
- var thisVisitTask = taskList.LastOrDefault();
-
- if (lastTasknewLesionsCount >= 2 && thisVisitTaskNewLesionsCount >= 2&&lastTask.LatestScanDate.AddDays(42)<= thisVisitTask.EarliestScanDate)
+ if (firstTaskNewLesionsCount >= 2 && secondVisitLesionsCount >= 2)
{
isPDResult = true;
}
+ }
+ #endregion
+
+
+
+ if (lastTask.VisitTaskNum >= 2m)
+ {
+
+ var lastTasknewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
+ var thisVisitTaskNewLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
+
+ var thisVisitTask = taskList.LastOrDefault();
+
+ if (lastTasknewLesionsCount >= 2 && thisVisitTaskNewLesionsCount >= 2 && lastTask.LatestScanDate.AddDays(42) <= thisVisitTask.EarliestScanDate)
+ {
+ isPDResult = true;
+ }
}
}
if (isPDResult)
@@ -800,6 +814,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
});
}
+
+
+ return isPDResult;
}
#endregion
diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
index f9edbff67..7a898cd8a 100644
--- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
@@ -265,15 +265,17 @@ namespace IRaCIS.Core.Application.Services
// 非Dicom
- //var noDicomStudyList = _noneDicomStudyRepository.Where(x => x.TrialId == trialId && x.SubjectVisitId == sujectVisitId).Select(x => new VisitStudyDTO()
- //{
- // InstanceCount = x.FileCount,
- // Modalities = x.Modalities,
- // SeriesCount = x.SeriesCount,
- // StudyCode = x.StudyCode,
- // StudyId = x.Id,
- // IsDicom = false,
- //}).ToListAsync();
+ var noDicomStudyList = _noneDicomStudyRepository.Where(x => x.TrialId == trialId && x.SubjectVisitId == sujectVisitId).Select(x => new VisitStudyDTO()
+ {
+ InstanceCount = x.FileCount,
+
+ //
+ Modalities = string.Empty,
+ SeriesCount = 1,
+ StudyCode = x.StudyCode,
+ StudyId = x.Id,
+ IsDicom = false,
+ }).ToListAsync();
return studyList;