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 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.LastVisitiSODChange,GetDecimalNullFun=GetISODChange},
|
||||||
|
|
||||||
// 靶病灶评估
|
// 靶病灶评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetTargetLesionEvaluate},
|
new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetTargetLesionEvaluate,IsConvertedTask=false},
|
||||||
|
|
||||||
// IRECIST靶病灶评估
|
// IRECIST靶病灶评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetIRECISTTargetLesionEvaluate,IsConvertedTask=true},
|
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非靶病灶评估
|
//IRECIST非靶病灶评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetIRECISTNoTargetLesionEvaluate,IsConvertedTask=true},
|
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetIRECISTNoTargetLesionEvaluate,IsConvertedTask=true},
|
||||||
|
@ -491,20 +491,32 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
//IRECIST新病灶评估
|
//IRECIST新病灶评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.NewLesionEvaluation,GetStringFun=GetNewLesionAssessment,IsConvertedTask=true},
|
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整体肿瘤评估
|
//IRECIST整体肿瘤评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetIRECSITTargetLesionEvaluate,IsConvertedTask=true},
|
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)
|
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();
|
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>
|
NewLesionAssessment result = NewLesionAssessment.No;
|
||||||
///
|
if (inDto.IsBaseLine)
|
||||||
/// </summary>
|
{
|
||||||
/// <remarks>
|
return NewLesionAssessment.NA.GetEnumInt();
|
||||||
/// if(上一访视评估为iUPD或iCPD&&靶病灶评估、非靶病灶评估或新病灶评估任一项为iCPD)
|
}
|
||||||
/// {
|
|
||||||
/// 疗效为 iCPD
|
var newTargetQuestions = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewTargetLesion).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList).ToList();
|
||||||
/// }
|
|
||||||
/// else if (上一访视评估为iUPD或iCPD&&靶病灶评估、非靶病灶评估或新病灶评估任一项从前一访视非iUPD结果评估为当前访视iUPD)
|
var newNonTargetQuestions = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewNonTargetLesion).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList).ToList();
|
||||||
/// {
|
|
||||||
/// 疗效为 iCPD
|
var OtherPreviousNewLesionQuestions = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.OtherPreviousNewLesion).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList).ToList();
|
||||||
/// }
|
|
||||||
/// else if (靶病灶评估为iUPD || 非靶病灶评估为iUPD || 新病灶评估为iUPD)
|
var triggeringQuestions = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TriggeringIRECSIT).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList).ToList();
|
||||||
/// {
|
|
||||||
/// 疗效为 iUPD
|
// 当前访视存在至少一个明确新病灶
|
||||||
/// }
|
if (newTargetQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewTargetLesionState.Exist))
|
||||||
/// else if ((靶病灶评估为iCR || 非靶病灶评估为iCR) && 新病灶评估为ND)
|
|| newNonTargetQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewNoTargetLesionState.Exist))
|
||||||
/// {
|
|| OtherPreviousNewLesionQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.Exists))
|
||||||
/// 疗效为 iCR
|
|| triggeringQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.Exist))
|
||||||
/// }
|
|
||||||
/// else if (靶病灶评估为iPR && 非靶病灶评估为iCR,iNN,NE或ND && 新病灶评估为ND或疑似或NE)
|
)
|
||||||
/// {
|
{
|
||||||
/// 疗效为 iPR
|
result = NewLesionAssessment.Yes;
|
||||||
/// }
|
}
|
||||||
/// else if (靶病灶评估为iPR && 非靶病灶评估为iNN或NE && 新病灶评估为否或疑似或NE)
|
//只要有任何一个新病灶状态为“无法评估”
|
||||||
/// {
|
else if (newTargetQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewTargetLesionState.NotEvaluable))
|
||||||
/// 疗效为 iPR
|
|| newNonTargetQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewNoTargetLesionState.NotEvaluable))
|
||||||
/// }
|
|| OtherPreviousNewLesionQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.NotEvaluable))
|
||||||
/// else if (靶病灶评估为iPR && 非靶病灶评估为iCR或ND && 新病灶评估为疑似或NE)
|
|| triggeringQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.NotEvaluable))
|
||||||
/// {
|
|
||||||
/// 疗效为 iPR
|
)
|
||||||
/// }
|
{
|
||||||
/// else if (靶病灶评估为ND && 非靶病灶评估为iCR && 新病灶评估为疑似或NE)
|
result = NewLesionAssessment.NE;
|
||||||
/// {
|
}
|
||||||
/// 疗效为 iPR
|
//当前访视不存在明确新病灶且存在至少一个疑似新病灶
|
||||||
/// }
|
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)))
|
||||||
/// else if (靶病灶评估为iSD && 非靶病灶评估为iCR,iNN,NE或ND && 新病灶评估为ND或疑似或NE)
|
|| (!triggeringQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.Exist)) && triggeringQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.Equivocal)))
|
||||||
/// {
|
|
||||||
/// 疗效为 iSD
|
)
|
||||||
/// }
|
{
|
||||||
/// else if (靶病灶评估为ND && 非靶病灶评估为iNN && 新病灶评估为ND或疑似或NE)
|
result = NewLesionAssessment.Suspected;
|
||||||
/// {
|
}
|
||||||
/// 疗效为 iNN
|
|
||||||
/// }
|
|
||||||
/// else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为ND或疑似)
|
else
|
||||||
/// {
|
{
|
||||||
/// 疗效为 ND
|
result = NewLesionAssessment.No;
|
||||||
/// }
|
}
|
||||||
/// else if (靶病灶评估为NE && 非靶病灶评估为iCR,iNN,NE或ND && 新病灶评估为ND或疑似或NE)
|
return result.GetEnumInt();
|
||||||
/// {
|
|
||||||
/// 疗效为 NE
|
}
|
||||||
/// }
|
#endregion
|
||||||
/// else if (靶病灶评估为ND && 非靶病灶评估为NE && 新病灶评估为否或疑似或NE)
|
|
||||||
/// {
|
#region iRECSIT整体肿瘤评估
|
||||||
/// 疗效为 NE
|
|
||||||
/// }
|
/// <summary>
|
||||||
/// else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为NE)
|
///
|
||||||
/// {
|
/// </summary>
|
||||||
/// 疗效为 NE
|
/// <remarks>
|
||||||
/// }
|
/// if(上一访视评估为iUPD或iCPD&&靶病灶评估、非靶病灶评估或新病灶评估任一项为iCPD)
|
||||||
/// </remarks>
|
/// {
|
||||||
/// <param name="inDto"></param>
|
/// 疗效为 iCPD
|
||||||
/// <returns></returns>
|
/// }
|
||||||
public async Task<string> GetIRECSITTargetLesionEvaluate(ReadingCalculateDto inDto)
|
/// 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);
|
var lastVisitTaskId = await GetLastVisitTaskId(inDto);
|
||||||
|
@ -2987,54 +3061,54 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
//#region 获取新病灶评估
|
#region 获取新病灶评估
|
||||||
///// <summary>
|
/// <summary>
|
||||||
///// 获取新病灶评估
|
/// 获取新病灶评估
|
||||||
///// </summary>
|
/// </summary>
|
||||||
///// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
///// <returns></returns>
|
/// <returns></returns>
|
||||||
//public async Task<string> GetNewLesionEvaluate(ReadingCalculateDto inDto)
|
public async Task<string> GetNewLesionEvaluate(ReadingCalculateDto inDto)
|
||||||
//{
|
{
|
||||||
|
|
||||||
// NewLesionAssessment result = NewLesionAssessment.No;
|
NewLesionAssessment result = NewLesionAssessment.No;
|
||||||
// if (inDto.IsBaseLine)
|
if (inDto.IsBaseLine)
|
||||||
// {
|
{
|
||||||
// return NewLesionAssessment.NA.GetEnumInt();
|
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)))
|
if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Exist)))
|
||||||
// {
|
{
|
||||||
// result = NewLesionAssessment.Yes;
|
result = NewLesionAssessment.Yes;
|
||||||
// }
|
}
|
||||||
// //只要有任何一个新病灶状态为“无法评估”
|
//只要有任何一个新病灶状态为“无法评估”
|
||||||
// else if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.UnableEvaluate)))
|
else if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.UnableEvaluate)))
|
||||||
// {
|
{
|
||||||
// result = NewLesionAssessment.NE;
|
result = NewLesionAssessment.NE;
|
||||||
// }
|
}
|
||||||
// //当前访视不存在明确新病灶且存在至少一个疑似新病灶
|
//当前访视不存在明确新病灶且存在至少一个疑似新病灶
|
||||||
// else if (!tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Exist)) &&
|
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))
|
tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Suspected))
|
||||||
// )
|
)
|
||||||
// {
|
{
|
||||||
// result = NewLesionAssessment.Suspected;
|
result = NewLesionAssessment.Suspected;
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// result = NewLesionAssessment.No;
|
|
||||||
// }
|
|
||||||
// return result.GetEnumInt();
|
|
||||||
|
|
||||||
//}
|
else
|
||||||
//#endregion
|
{
|
||||||
|
result = NewLesionAssessment.No;
|
||||||
|
}
|
||||||
|
return result.GetEnumInt();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue