213 lines
17 KiB
C#
213 lines
17 KiB
C#
public async Task<string> CTMRIEvaluation(ReadingCalculateDto inDto)
|
||
{
|
||
if (inDto.IsBaseLine)
|
||
{
|
||
return CTMRIOverallAssessment.NA.GetEnumInt();
|
||
}
|
||
// 靶病灶评估
|
||
var targetEvaluation = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.TargetLesion).Select(x => x.Answer).FirstOrDefault();
|
||
|
||
// 非靶病灶评估
|
||
var noTargetEvaluation = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NoTargetLesion).Select(x => x.Answer).FirstOrDefault();
|
||
|
||
// 存在新病灶
|
||
var existsNewTarget = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionEvaluation).Select(x => x.Answer).FirstOrDefault();
|
||
|
||
// 肝脏评估
|
||
var liverEvaluation = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LiverAssessment).Select(x => x.Answer).FirstOrDefault();
|
||
|
||
// 脾脏评估
|
||
var spleenEvaluation = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SplenicEvaluation).Select(x => x.Answer).FirstOrDefault();
|
||
|
||
List<CalculationDto> data = new List<CalculationDto>() {
|
||
|
||
//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<LiverAssessment>() { LiverAssessment.Normal }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
|
||
},
|
||
|
||
//PD 任一结果 任一结果 任一结果 任一结果 PD
|
||
new CalculationDto(){
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.PD }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
|
||
},
|
||
//任一结果 PD 任一结果 任一结果 任一结果 PD
|
||
new CalculationDto(){
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.PD }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() {}),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
|
||
},
|
||
//任一结果 任一结果 是 任一结果 任一结果 PD
|
||
new CalculationDto(){
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Yes }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
|
||
},
|
||
//任一结果 任一结果 任一结果 显著增大 任一结果 PD
|
||
new CalculationDto(){
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Increase }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
|
||
},
|
||
//任一结果 任一结果 任一结果 任一结果 显著增大 PD
|
||
new CalculationDto(){
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() {}),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Increase }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
|
||
},
|
||
//CR CR/ND 否 正常 正常 CR
|
||
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.No }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR }),
|
||
},
|
||
//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<LiverAssessment>() { LiverAssessment.Normal }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR }),
|
||
},
|
||
//NE 非PD 否/疑似/无法评估 非显著增大 非显著增大 NE
|
||
new CalculationDto(){
|
||
NotEq=new List<int>(){ 2,4,5},
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.NE }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.PD }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Increase }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Increase }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.NE }),
|
||
},
|
||
//ND NE 否/疑似/无法评估(不为是) 正常/稳定/无法评估/部分缓解(非显著增大) 正常/稳定/无法评估/部分缓解(非显著增大) NE
|
||
new CalculationDto(){
|
||
NotEq=new List<int>(){ 3,4,5},
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.NE }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Yes }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Increase }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Increase }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.NE }),
|
||
},
|
||
//ND ND 无法评估 正常/稳定/无法评估/部分缓解(非显著增大) 正常/稳定/无法评估/部分缓解(非显著增大) NE
|
||
new CalculationDto(){
|
||
NotEq=new List<int>(){ 4,5},
|
||
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<LiverAssessment>() { LiverAssessment.Increase }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Increase }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.NE }),
|
||
},
|
||
//ND ND 否/疑似 无法评估 正常/稳定/无法评估/部分缓解(非显著增大) NE
|
||
new CalculationDto(){
|
||
NotEq=new List<int>(){ 5},
|
||
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<LiverAssessment>() { LiverAssessment.NotEvaluable }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Increase }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.NE }),
|
||
},
|
||
// 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.No,NewLesionAssessment.Suspected }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal,LiverAssessment.Stabilization }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.NotEvaluable }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.NE }),
|
||
},
|
||
//PR 非PD 否/疑似/无法评估(不为是) 正常/稳定 正常/部分缓解 PR
|
||
new CalculationDto(){
|
||
NotEq=new List<int>(){ 2,3},
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.PR }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.PD }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Yes }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal,LiverAssessment.Stabilization}),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal,SpleenAssessment.Remission }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PR }),
|
||
},
|
||
//CR (PR/SD)或者NE 否/疑似/无法评估(不为是) 正常/部分缓解 正常/部分缓解 PR
|
||
new CalculationDto(){
|
||
NotEq=new List<int>(){ 3},
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.PRSD,NoTargetAssessment.NE }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Yes,NewLesionAssessment.Yes }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal,LiverAssessment.Stabilization}),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal,SpleenAssessment.Remission }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PR }),
|
||
},
|
||
//CR CR/ND 疑似/无法评估 正常/稳定 正常/部分缓解 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<LiverAssessment>() { LiverAssessment.Normal,LiverAssessment.Stabilization}),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal,SpleenAssessment.Remission }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PR }),
|
||
},
|
||
// ND CR 疑似/无法评估 正常/稳定 正常/部分缓解 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.Suspected, NewLesionAssessment.NE }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal,LiverAssessment.Stabilization}),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal,SpleenAssessment.Remission }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PR }),
|
||
},
|
||
new CalculationDto(){
|
||
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { }),
|
||
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { }),
|
||
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { }),
|
||
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { }),
|
||
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }),
|
||
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.SD }),
|
||
},
|
||
};
|
||
|
||
var index= data.FindIndex(x =>
|
||
(x.NotEq.Contains(1) ? !x.Column1.Contains(targetEvaluation) : x.Column1.Contains(targetEvaluation) || x.Column1.Count() == 0) &&
|
||
(x.NotEq.Contains(2) ? !x.Column2.Contains(noTargetEvaluation) : x.Column2.Contains(noTargetEvaluation) || x.Column2.Count() == 0) &&
|
||
(x.NotEq.Contains(3) ? !x.Column3.Contains(existsNewTarget) : x.Column3.Contains(existsNewTarget) || x.Column3.Count() == 0) &&
|
||
(x.NotEq.Contains(4) ? !x.Column4.Contains(liverEvaluation) : x.Column4.Contains(liverEvaluation) || x.Column4.Count() == 0) &&
|
||
(x.NotEq.Contains(5) ? !x.Column5.Contains(spleenEvaluation) : x.Column5.Contains(spleenEvaluation) || x.Column5.Count() == 0))
|
||
;
|
||
Console.WriteLine(index);
|
||
var result = data.Where(x =>
|
||
(x.NotEq.Contains(1) ? !x.Column1.Contains(targetEvaluation) : x.Column1.Contains(targetEvaluation) || x.Column1.Count() == 0) &&
|
||
(x.NotEq.Contains(2) ? !x.Column2.Contains(noTargetEvaluation) : x.Column2.Contains(noTargetEvaluation) || x.Column2.Count() == 0) &&
|
||
(x.NotEq.Contains(3) ? !x.Column3.Contains(existsNewTarget) : x.Column3.Contains(existsNewTarget) || x.Column3.Count() == 0) &&
|
||
(x.NotEq.Contains(4) ? !x.Column4.Contains(liverEvaluation) : x.Column4.Contains(liverEvaluation) || x.Column4.Count() == 0) &&
|
||
(x.NotEq.Contains(5) ? !x.Column5.Contains(spleenEvaluation) : x.Column5.Contains(spleenEvaluation) || x.Column5.Count() == 0))
|
||
.Select(x => x.Column6.FirstOrDefault())
|
||
.FirstOrDefault();
|
||
return result??string.Empty;
|
||
} |