Uat_Study
parent
350101091a
commit
1d3e324b9a
|
@ -1233,7 +1233,7 @@
|
||||||
<param name="indto"></param>
|
<param name="indto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</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>
|
||||||
测试计算
|
测试计算
|
||||||
</summary>
|
</summary>
|
||||||
|
|
|
@ -22,8 +22,29 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
public decimal VisitNum { get; set; }
|
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
|
public class VisitStudyTime
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -88,6 +88,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
/// 首次转变的任务ID
|
/// 首次转变的任务ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid? firstChangeTaskId;
|
public Guid? firstChangeTaskId;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 触发任务list
|
||||||
|
/// </summary>
|
||||||
|
public List<TirggerTaskInfo>? compareTaskList = null;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 删除病灶获取起始病灶序号
|
#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 taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).ProjectTo<VisitTaskDto>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
||||||
var lastTaskId = await GetLastVisitTaskId(inDto);
|
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;
|
Guid? compareTaskId = null;
|
||||||
|
int index = 0;
|
||||||
switch (questionType)
|
switch (questionType)
|
||||||
{
|
{
|
||||||
case QuestionType.TargetLesion:
|
case QuestionType.TargetLesion:
|
||||||
if (await _readingTaskQuestionAnswerRepository.AnyAsync(x => x.VisitTaskId == lastTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.TargetLesion &&
|
index = compareTaskList.FindLastIndex(x => x.TargetAssessmentIsIUorIC);
|
||||||
(x.Answer == TargetAssessment.iUPD.GetEnumInt() || x.Answer == TargetAssessment.iCPD.GetEnumInt())))
|
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:
|
case QuestionType.NewTargetLesion:
|
||||||
if (await _readingTaskQuestionAnswerRepository.AnyAsync(x => x.VisitTaskId == lastTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.TargetLesion &&
|
index = compareTaskList.FindLastIndex(x => x.NewTargetLesionAssessmentIsIUorIC);
|
||||||
(x.Answer == NewTargetLesionAssessment.iUPD.GetEnumInt() || x.Answer == NewTargetLesionAssessment.iCPD.GetEnumInt())))
|
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