Merge branch 'master' of http://192.168.1.2:8033/IRaCIS_Core_Api
commit
466ac5e03e
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
@ -2367,75 +2379,137 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
|
||||
return result == null ? string.Empty : ((NewLesionAssessment)result).GetEnumInt();
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
|
||||
#region iRECSIT整体肿瘤评估
|
||||
#region 获取新病灶评估
|
||||
/// <summary>
|
||||
/// 获取新病灶评估
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<string> GetNewLesionIRECSITEvaluate(ReadingCalculateDto inDto)
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// if(上一访视评估为iUPD或iCPD&&靶病灶评估、非靶病灶评估或新病灶评估任一项为iCPD)
|
||||
/// {
|
||||
/// 疗效为 iCPD
|
||||
/// }
|
||||
/// else if (上一访视评估为iUPD或iCPD&&靶病灶评估、非靶病灶评估或新病灶评估任一项从前一访视非iUPD结果评估为当前访视iUPD)
|
||||
/// {
|
||||
/// 疗效为 iCPD
|
||||
/// }
|
||||
/// else if (靶病灶评估为iUPD || 非靶病灶评估为iUPD || 新病灶评估为iUPD)
|
||||
/// {
|
||||
/// 疗效为 iUPD
|
||||
/// }
|
||||
/// else if ((靶病灶评估为iCR || 非靶病灶评估为iCR) && 新病灶评估为ND)
|
||||
/// {
|
||||
/// 疗效为 iCR
|
||||
/// }
|
||||
/// else if (靶病灶评估为iPR && 非靶病灶评估为iCR,iNN,NE或ND && 新病灶评估为ND或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iPR
|
||||
/// }
|
||||
/// else if (靶病灶评估为iPR && 非靶病灶评估为iNN或NE && 新病灶评估为否或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iPR
|
||||
/// }
|
||||
/// else if (靶病灶评估为iPR && 非靶病灶评估为iCR或ND && 新病灶评估为疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iPR
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为iCR && 新病灶评估为疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iPR
|
||||
/// }
|
||||
/// else if (靶病灶评估为iSD && 非靶病灶评估为iCR,iNN,NE或ND && 新病灶评估为ND或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iSD
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为iNN && 新病灶评估为ND或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iNN
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为ND或疑似)
|
||||
/// {
|
||||
/// 疗效为 ND
|
||||
/// }
|
||||
/// else if (靶病灶评估为NE && 非靶病灶评估为iCR,iNN,NE或ND && 新病灶评估为ND或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 NE
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为NE && 新病灶评估为否或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 NE
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为NE)
|
||||
/// {
|
||||
/// 疗效为 NE
|
||||
/// }
|
||||
/// </remarks>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<string> GetIRECSITTargetLesionEvaluate(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>
|
||||
///
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// if(上一访视评估为iUPD或iCPD&&靶病灶评估、非靶病灶评估或新病灶评估任一项为iCPD)
|
||||
/// {
|
||||
/// 疗效为 iCPD
|
||||
/// }
|
||||
/// else if (上一访视评估为iUPD或iCPD&&靶病灶评估、非靶病灶评估或新病灶评估任一项从前一访视非iUPD结果评估为当前访视iUPD)
|
||||
/// {
|
||||
/// 疗效为 iCPD
|
||||
/// }
|
||||
/// else if (靶病灶评估为iUPD || 非靶病灶评估为iUPD || 新病灶评估为iUPD)
|
||||
/// {
|
||||
/// 疗效为 iUPD
|
||||
/// }
|
||||
/// else if ((靶病灶评估为iCR || 非靶病灶评估为iCR) && 新病灶评估为ND)
|
||||
/// {
|
||||
/// 疗效为 iCR
|
||||
/// }
|
||||
/// else if (靶病灶评估为iPR && 非靶病灶评估为iCR,iNN,NE或ND && 新病灶评估为ND或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iPR
|
||||
/// }
|
||||
/// else if (靶病灶评估为iPR && 非靶病灶评估为iNN或NE && 新病灶评估为否或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iPR
|
||||
/// }
|
||||
/// else if (靶病灶评估为iPR && 非靶病灶评估为iCR或ND && 新病灶评估为疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iPR
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为iCR && 新病灶评估为疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iPR
|
||||
/// }
|
||||
/// else if (靶病灶评估为iSD && 非靶病灶评估为iCR,iNN,NE或ND && 新病灶评估为ND或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iSD
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为iNN && 新病灶评估为ND或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 iNN
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为ND或疑似)
|
||||
/// {
|
||||
/// 疗效为 ND
|
||||
/// }
|
||||
/// else if (靶病灶评估为NE && 非靶病灶评估为iCR,iNN,NE或ND && 新病灶评估为ND或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 NE
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为NE && 新病灶评估为否或疑似或NE)
|
||||
/// {
|
||||
/// 疗效为 NE
|
||||
/// }
|
||||
/// else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为NE)
|
||||
/// {
|
||||
/// 疗效为 NE
|
||||
/// }
|
||||
/// </remarks>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<string> GetIRECSITTargetLesionEvaluate(ReadingCalculateDto inDto)
|
||||
{
|
||||
|
||||
var lastVisitTaskId = await GetLastVisitTaskId(inDto);
|
||||
|
@ -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();
|
||||
|
||||
//}
|
||||
//#endregion
|
||||
else
|
||||
{
|
||||
result = NewLesionAssessment.No;
|
||||
}
|
||||
return result.GetEnumInt();
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
|
|
Loading…
Reference in New Issue