Uat_Study
parent
350101091a
commit
1d3e324b9a
|
@ -1233,7 +1233,7 @@
|
|||
<param name="indto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.TestCalculate(System.Guid,IRaCIS.Core.Domain.Share.QuestionType)">
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.TestCalculate(System.Guid,System.Nullable{IRaCIS.Core.Domain.Share.QuestionType})">
|
||||
<summary>
|
||||
测试计算
|
||||
</summary>
|
||||
|
|
|
@ -22,8 +22,29 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
|
||||
public decimal VisitNum { get; set; }
|
||||
|
||||
public string TumorAnswer { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 靶病灶是否为IUPD或者ICPD
|
||||
/// </summary>
|
||||
public bool TargetAssessmentIsIUorIC { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 靶病灶是否为IUPD或者ICPD
|
||||
/// </summary>
|
||||
public bool NewTargetLesionAssessmentIsIUorIC { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class TirggerAnswerInfo
|
||||
{
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
public QuestionType QuestionType { get; set; }
|
||||
|
||||
public string Answer { get; set; } = string.Empty;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class VisitStudyTime
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
@ -88,6 +88,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
/// 首次转变的任务ID
|
||||
/// </summary>
|
||||
public Guid? firstChangeTaskId;
|
||||
|
||||
/// <summary>
|
||||
/// 触发任务list
|
||||
/// </summary>
|
||||
public List<TirggerTaskInfo>? compareTaskList = null;
|
||||
#endregion
|
||||
|
||||
#region 删除病灶获取起始病灶序号
|
||||
|
@ -1704,24 +1709,92 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
{
|
||||
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).ProjectTo<VisitTaskDto>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
||||
var lastTaskId = await GetLastVisitTaskId(inDto);
|
||||
|
||||
|
||||
if (compareTaskList == null)
|
||||
{
|
||||
// 先找到第一个转变任务的number 直接找是否为转变任务 查询耗性能
|
||||
var firstChangeVisitTaskNum = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
||||
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
||||
x.DoctorUserId == taskinfo.DoctorUserId &&
|
||||
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
||||
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ArmEnum == taskinfo.ArmEnum
|
||||
&& x.BeforeConvertedTaskId != null && x.TaskState == TaskState.Effect
|
||||
).OrderBy(x => x.VisitTaskNum).Select(x => x.VisitTaskNum).FirstOrDefaultAsync();
|
||||
|
||||
// 找到转变之后 所有任务
|
||||
compareTaskList = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
||||
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
||||
x.DoctorUserId == taskinfo.DoctorUserId &&
|
||||
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
||||
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ArmEnum == taskinfo.ArmEnum &&
|
||||
x.VisitTaskNum >= firstChangeVisitTaskNum && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect
|
||||
).OrderBy(x => x.VisitTaskNum).Select(x => new TirggerTaskInfo()
|
||||
{
|
||||
VisitTaskId = x.Id,
|
||||
VisitNum = x.VisitTaskNum,
|
||||
}).ToListAsync();
|
||||
|
||||
// 获取所有任务Id
|
||||
var visitTaskids = compareTaskList.Select(x => x.VisitTaskId).ToList();
|
||||
|
||||
// 找到所有任务的靶病灶评估和非靶病灶评估
|
||||
var answers = await _readingTaskQuestionAnswerRepository.Where(x => (x.ReadingQuestionTrial.QuestionType == QuestionType.TargetLesion || x.ReadingQuestionTrial.QuestionType == QuestionType.NewTargetLesion) &&
|
||||
visitTaskids.Contains(x.VisitTaskId)
|
||||
).Select(x => new TirggerAnswerInfo()
|
||||
{
|
||||
VisitTaskId = x.VisitTaskId,
|
||||
Answer = x.Answer,
|
||||
QuestionType = x.ReadingQuestionTrial.QuestionType.Value
|
||||
}).ToListAsync();
|
||||
|
||||
compareTaskList.ForEach(x =>
|
||||
{
|
||||
x.TargetAssessmentIsIUorIC = answers.Any(x => questionType == QuestionType.TargetLesion && (x.Answer == TargetAssessment.iUPD.GetEnumInt() || x.Answer == TargetAssessment.iCPD.GetEnumInt()));
|
||||
x.NewTargetLesionAssessmentIsIUorIC = answers.Any(x => questionType == QuestionType.TargetLesion && (x.Answer == NewTargetLesionAssessment.iUPD.GetEnumInt() || x.Answer == NewTargetLesionAssessment.iCPD.GetEnumInt()));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Guid? compareTaskId = null;
|
||||
int index = 0;
|
||||
switch (questionType)
|
||||
{
|
||||
case QuestionType.TargetLesion:
|
||||
if (await _readingTaskQuestionAnswerRepository.AnyAsync(x => x.VisitTaskId == lastTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.TargetLesion &&
|
||||
(x.Answer == TargetAssessment.iUPD.GetEnumInt() || x.Answer == TargetAssessment.iCPD.GetEnumInt())))
|
||||
index = compareTaskList.FindLastIndex(x => x.TargetAssessmentIsIUorIC);
|
||||
if (index == -1)
|
||||
{
|
||||
compareTaskId = lastTaskId;
|
||||
return compareTaskList[0].VisitTaskId;
|
||||
}
|
||||
else if (index > 0 && !compareTaskList[index-1].TargetAssessmentIsIUorIC)
|
||||
{
|
||||
return compareTaskList[index-1].VisitTaskId;
|
||||
}
|
||||
else
|
||||
{
|
||||
return compareTaskList[0].VisitTaskId;
|
||||
}
|
||||
break;
|
||||
|
||||
case QuestionType.NewTargetLesion:
|
||||
if (await _readingTaskQuestionAnswerRepository.AnyAsync(x => x.VisitTaskId == lastTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.TargetLesion &&
|
||||
(x.Answer == NewTargetLesionAssessment.iUPD.GetEnumInt() || x.Answer == NewTargetLesionAssessment.iCPD.GetEnumInt())))
|
||||
index = compareTaskList.FindLastIndex(x => x.NewTargetLesionAssessmentIsIUorIC);
|
||||
if (index == -1)
|
||||
{
|
||||
compareTaskId = lastTaskId;
|
||||
return compareTaskList[0].VisitTaskId;
|
||||
}
|
||||
else if (index > 0 && !compareTaskList[index - 1].NewTargetLesionAssessmentIsIUorIC)
|
||||
{
|
||||
return compareTaskList[index - 1].VisitTaskId;
|
||||
}
|
||||
else
|
||||
{
|
||||
return compareTaskList[0].VisitTaskId;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue