Uat_Study
he 2022-11-07 15:34:01 +08:00
parent c5bf938be3
commit e3f7250d12
2 changed files with 59 additions and 40 deletions

View File

@ -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
/// <returns></returns>
public async Task<string> 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
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task ChangeLastTaskSiteVisitForTumorEvaluation(ReadingCalculateDto inDto)
public async Task<bool> 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

View File

@ -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;