整体肿瘤评估 计算修改
This commit is contained in:
@@ -1117,12 +1117,177 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||
var targetLesion = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.TargetLesion).Select(x => x.Answer).FirstOrDefault();
|
||||
var noTargetLesion = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NoTargetLesion).Select(x => x.Answer).FirstOrDefault();
|
||||
var newLesions = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesions).Select(x => x.Answer).FirstOrDefault();
|
||||
var result = await _tumorAssessmentRepository.Where(x =>
|
||||
x.TargetLesion == (TargetAssessment)int.Parse(targetLesion.IsNullOrEmpty() ? TargetAssessment.NA.GetEnumInt() : targetLesion) &&
|
||||
x.NonTargetLesions == (NoTargetAssessment)int.Parse(noTargetLesion.IsNullOrEmpty() ? NoTargetAssessment.NA.GetEnumInt() : noTargetLesion) &&
|
||||
x.NewLesion == (NewLesionAssessment)int.Parse(newLesions.IsNullOrEmpty() ? NewLesionAssessment.NA.GetEnumInt() : newLesions)).Select(x => x.OverallEfficacy).ToListAsync();
|
||||
return CalculationGetImgOncology(targetLesion, noTargetLesion, newLesions);
|
||||
}
|
||||
|
||||
return result.Count == 0 ? OverallAssessment.NE.GetEnumInt() : result[0].GetEnumInt();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 计算整体肿瘤评估 【测试】
|
||||
/// </summary>
|
||||
/// <param name="targetLesion">靶病灶</param>
|
||||
/// <param name="noTargetLesion"> 非靶病灶</param>
|
||||
/// <param name="newLesions">新病灶</param>
|
||||
/// <remarks>
|
||||
/// 靶病灶 非靶病灶 存在新病灶 整体肿瘤评估
|
||||
/// 1. CR CR 否 CR
|
||||
/// 2. CR ND 否 CR
|
||||
/// 3. ND CR 否 CR
|
||||
/// 4. CR NN/NE 否/疑似/NE PR
|
||||
/// 5. CR CR/ND 疑似/NE PR
|
||||
/// 6. PR CR/ND/NN/NE 否/疑似/NE PR
|
||||
/// 7. ND CR 疑似/NE PR
|
||||
/// 8. SD CR/ND/NN/NE 否/疑似/NE SD
|
||||
/// 9. ND NN 否/疑似/NE NN
|
||||
/// 10.NE CR/ND/NN/NE 否/疑似/NE NE
|
||||
/// 11.ND NE 否/疑似/NE NE
|
||||
/// 12.ND ND NE NE
|
||||
/// 13.ND ND 否/疑似 ND
|
||||
/// 14.PD CR/NN/PD/ND/NE 是/否/疑似/NE PD
|
||||
/// 15.CR/PR/SD/PD/ND/NE PD 是/否/疑似/NE PD
|
||||
/// 16.CR/PR/SD/PD/ND/NE CR/NN/PD/ND/NE 是 PD
|
||||
/// </remarks>
|
||||
/// <returns></returns>
|
||||
public string CalculationGetImgOncology(string? targetLesion, string? noTargetLesion, string? newLesions)
|
||||
{
|
||||
List<CalculationDto> data = new List<CalculationDto>() {
|
||||
|
||||
//1. CR CR 否 CR
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.CR }),
|
||||
},
|
||||
|
||||
// 2. CR ND 否 CR
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.CR }),
|
||||
},
|
||||
|
||||
// 3. ND CR 否 CR
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.CR }),
|
||||
},
|
||||
|
||||
// 4. CR NN/NE 否/疑似/NE PR
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.NN, NoTargetAssessment.NE }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.PR }),
|
||||
},
|
||||
|
||||
// 5. CR CR/ND 疑似/NE PR
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR, NoTargetAssessment.ND }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.PR }),
|
||||
},
|
||||
|
||||
// 6. PR CR/ND/NN/NE 否/疑似/NE PR
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.PR }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR, NoTargetAssessment.ND, NoTargetAssessment.NN, NoTargetAssessment.NE }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.PR }),
|
||||
},
|
||||
|
||||
//7. ND CR 疑似/NE PR
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.PR }),
|
||||
},
|
||||
|
||||
// 8. SD CR/ND/NN/NE 否/疑似/NE SD
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.SD }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR, NoTargetAssessment.ND, NoTargetAssessment.NN , NoTargetAssessment.NE }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.SD }),
|
||||
},
|
||||
|
||||
// 9. ND NN 否/疑似/NE NN
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.NN}),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.NN }),
|
||||
},
|
||||
|
||||
// 10.NE CR/ND/NN/NE 否/疑似/NE NE
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.NE }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR, NoTargetAssessment.ND, NoTargetAssessment.NN,, NoTargetAssessment.NE, }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.NE }),
|
||||
},
|
||||
|
||||
// 11.ND NE 否/疑似/NE NE
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.NE }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.NE }),
|
||||
},
|
||||
|
||||
// 12.ND ND NE NE
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.NE }),
|
||||
},
|
||||
|
||||
// 13.ND ND 否/疑似 ND
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.ND }),
|
||||
},
|
||||
|
||||
// 14.PD CR/NN/PD/ND/NE 是/否/疑似/NE PD
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.PD }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR, NoTargetAssessment.NN,NoTargetAssessment.PD, NoTargetAssessment.ND,NoTargetAssessment.NE }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() {NewLesionAssessment.Yes, NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.PD }),
|
||||
},
|
||||
|
||||
// 15.CR/PR/SD/PD/ND/NE PD 是/否/疑似/NE PD
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.CR, TargetAssessment.PR, TargetAssessment.SD, TargetAssessment.PD, TargetAssessment.ND, TargetAssessment.NE }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.PD }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Yes, NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.PD }),
|
||||
},
|
||||
|
||||
// 16.CR/PR/SD/PD/ND/NE CR/NN/PD/ND/NE 是 PD
|
||||
new CalculationDto(){
|
||||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.CR, TargetAssessment.PR, TargetAssessment.SD, TargetAssessment.PD, TargetAssessment.ND, TargetAssessment.NE }),
|
||||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR,NoTargetAssessment.NN,NoTargetAssessment.PD,NoTargetAssessment.ND,NoTargetAssessment.NE }),
|
||||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Yes}),
|
||||
Column4=ReadingCommon.EnumToString(new List<OverallAssessment>() { OverallAssessment.PD }),
|
||||
},
|
||||
};
|
||||
|
||||
var resultdata = data.Where(x =>
|
||||
(x.NotEq.Contains(1) ? !x.Column1.Contains(targetLesion) : x.Column1.Contains(targetLesion) || x.Column1.Count() == 0) &&
|
||||
(x.NotEq.Contains(2) ? !x.Column2.Contains(noTargetLesion) : x.Column2.Contains(noTargetLesion) || x.Column2.Count() == 0) &&
|
||||
(x.NotEq.Contains(3) ? !x.Column3.Contains(newLesions) : x.Column3.Contains(newLesions) || x.Column3.Count() == 0))
|
||||
.Select(x => x.Column4.FirstOrDefault())
|
||||
.FirstOrDefault();
|
||||
return resultdata ?? string.Empty;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
Reference in New Issue
Block a user