Uat_Study
hang 2023-04-28 09:43:57 +08:00
commit 466ac5e03e
2 changed files with 187 additions and 113 deletions

View File

@ -294,7 +294,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Func<ChangeAllTaskDto,Task> ChangeAllTaskFun { get; set; }
public bool IsConvertedTask { get; set; } = false;
public bool? IsConvertedTask { get; set; }
}
}

View File

@ -465,13 +465,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
new ReadingCalculateData (){QuestionType=QuestionType.LastVisitiSODChange,GetDecimalNullFun=GetISODChange},
// 靶病灶评估
new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetTargetLesionEvaluate},
new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetTargetLesionEvaluate,IsConvertedTask=false},
// IRECIST靶病灶评估
new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetIRECISTTargetLesionEvaluate,IsConvertedTask=true},
//非靶病灶评估
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetNoTargetLesionEvaluate},
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetNoTargetLesionEvaluate,IsConvertedTask=false},
//IRECIST非靶病灶评估
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetIRECISTNoTargetLesionEvaluate,IsConvertedTask=true},
@ -491,20 +491,32 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
//IRECIST新病灶评估
new ReadingCalculateData (){QuestionType=QuestionType.NewLesionEvaluation,GetStringFun=GetNewLesionAssessment,IsConvertedTask=true},
//是否存在新病灶
new ReadingCalculateData (){QuestionType=QuestionType.NewLesions,GetStringFun=GetNewLesionEvaluate,IsConvertedTask=false},
// IRECIST是否存在新病灶 IRECIST
new ReadingCalculateData (){QuestionType=QuestionType.NewLesions,GetStringFun=GetNewLesionIRECSITEvaluate,IsConvertedTask=true},
//是否存在疾病
new ReadingCalculateData (){QuestionType=QuestionType.ExistDisease,GetStringFun=GetIsExistDisease},
//整体肿瘤评估
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetTumor},
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetTumor,IsConvertedTask=false},
//IRECIST整体肿瘤评估
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetIRECSITTargetLesionEvaluate,IsConvertedTask=true},
//是否存在疾病
new ReadingCalculateData (){QuestionType=QuestionType.ExistDisease,GetStringFun=GetIsExistDisease},
//IRECIST整体肿瘤评估
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetIRECSITTargetLesionEvaluate,IsConvertedTask=true},
};
// 过滤转化的
calculateList = calculateList.Where(x => x.IsConvertedTask == inDto.IsConvertedTask).ToList();
calculateList = calculateList.Where(x => x.IsConvertedTask == inDto.IsConvertedTask||x.IsConvertedTask==null).ToList();
// 没有靶病灶只计算最后几个
if (inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).Sum(x => x.TableRowInfoList.Count()) == 0)
@ -2370,6 +2382,68 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
#endregion
#region 获取新病灶评估
/// <summary>
/// 获取新病灶评估
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<string> GetNewLesionIRECSITEvaluate(ReadingCalculateDto inDto)
{
NewLesionAssessment result = NewLesionAssessment.No;
if (inDto.IsBaseLine)
{
return NewLesionAssessment.NA.GetEnumInt();
}
var newTargetQuestions = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewTargetLesion).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList).ToList();
var newNonTargetQuestions = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewNonTargetLesion).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList).ToList();
var OtherPreviousNewLesionQuestions = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.OtherPreviousNewLesion).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList).ToList();
var triggeringQuestions = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TriggeringIRECSIT).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList).ToList();
// 当前访视存在至少一个明确新病灶
if (newTargetQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewTargetLesionState.Exist))
|| newNonTargetQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewNoTargetLesionState.Exist))
|| OtherPreviousNewLesionQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.Exists))
|| triggeringQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.Exist))
)
{
result = NewLesionAssessment.Yes;
}
//只要有任何一个新病灶状态为“无法评估”
else if (newTargetQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewTargetLesionState.NotEvaluable))
|| newNonTargetQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewNoTargetLesionState.NotEvaluable))
|| OtherPreviousNewLesionQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.NotEvaluable))
|| triggeringQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.NotEvaluable))
)
{
result = NewLesionAssessment.NE;
}
//当前访视不存在明确新病灶且存在至少一个疑似新病灶
else if ( (!OtherPreviousNewLesionQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.Exists)) && OtherPreviousNewLesionQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.Equivocal)))
|| (!triggeringQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.Exist)) && triggeringQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.Equivocal)))
)
{
result = NewLesionAssessment.Suspected;
}
else
{
result = NewLesionAssessment.No;
}
return result.GetEnumInt();
}
#endregion
#region iRECSIT整体肿瘤评估
/// <summary>
@ -2987,54 +3061,54 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
#endregion
//#region 获取新病灶评估
///// <summary>
///// 获取新病灶评估
///// </summary>
///// <param name="inDto"></param>
///// <returns></returns>
//public async Task<string> GetNewLesionEvaluate(ReadingCalculateDto inDto)
//{
#region 获取新病灶评估
/// <summary>
/// 获取新病灶评估
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<string> GetNewLesionEvaluate(ReadingCalculateDto inDto)
{
// NewLesionAssessment result = NewLesionAssessment.No;
// if (inDto.IsBaseLine)
// {
// return NewLesionAssessment.NA.GetEnumInt();
// }
NewLesionAssessment result = NewLesionAssessment.No;
if (inDto.IsBaseLine)
{
return NewLesionAssessment.NA.GetEnumInt();
}
// var tableRows = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewLesions).SelectMany(x => x.TableRowInfoList).ToList();
var tableRows = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewLesions).SelectMany(x => x.TableRowInfoList).ToList();
// var tableQuestions = tableRows.SelectMany(x => x.TableQuestionList).ToList();
var tableQuestions = tableRows.SelectMany(x => x.TableQuestionList).ToList();
// // 当前访视存在至少一个明确新病灶
// if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Exist)))
// {
// result = NewLesionAssessment.Yes;
// }
// //只要有任何一个新病灶状态为“无法评估”
// else if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.UnableEvaluate)))
// {
// result = NewLesionAssessment.NE;
// }
// //当前访视不存在明确新病灶且存在至少一个疑似新病灶
// else if (!tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Exist)) &&
// tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Suspected))
// )
// {
// result = NewLesionAssessment.Suspected;
// }
// 当前访视存在至少一个明确新病灶
if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Exist)))
{
result = NewLesionAssessment.Yes;
}
//只要有任何一个新病灶状态为“无法评估”
else if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.UnableEvaluate)))
{
result = NewLesionAssessment.NE;
}
//当前访视不存在明确新病灶且存在至少一个疑似新病灶
else if (!tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Exist)) &&
tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Suspected))
)
{
result = NewLesionAssessment.Suspected;
}
// else
// {
// result = NewLesionAssessment.No;
// }
// return result.GetEnumInt();
else
{
result = NewLesionAssessment.No;
}
return result.GetEnumInt();
//}
//#endregion
}
#endregion
#endregion