AssessmentAlgorithm/Lugano/评估算法/8、影像学整体肿瘤评估代码.cs

139 lines
12 KiB
C#

public async Task<string> GetImgOncology(ReadingCalculateDto inDto)
{
if (inDto.IsBaseLine)
{
return ImagingOverallAssessment_Lugano.NA.GetEnumInt();
}
//var imageQualityEvaluation = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.ImageQualityAssessment&&x.Answer.EqEnum(ImageQualityEvaluation.Abnormal)).FirstOrDefault();
//if (imageQualityEvaluation != null)
//{
// return ImagingOverallAssessment_Lugano.NE.GetEnumInt();
//}
// CTandMRI
var CTandMRIData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.CTandMRI).Select(x => x.Answer).FirstOrDefault();
// FDGPET
var FDGPETData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.FDGPET).Select(x => x.Answer).FirstOrDefault();
var baseLineTaskId = await GetBaseLineTaskId(inDto);
// lastFDGPET
var lastFDGPETData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LastFDGPET).Select(x => x.Answer).FirstOrDefault();
List<CalculationDto> data = new List<CalculationDto>() {
//1、ND NE NE/NA ND
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE, FDGPETOverallAssessment.NA}),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.ND }),
},
//2、ND/PD/CR/NE/PR/SD PMD PMD/CMR/PMR/NMR/NE/NA PMD/PD
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND, CTMRIOverallAssessment.PD,CTMRIOverallAssessment.CR,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD}),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMD, }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() {FDGPETOverallAssessment.PMD, FDGPETOverallAssessment.CMR,FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE, FDGPETOverallAssessment.NA }),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.PMDPD }),
},
//3、ND/PD/CR/NE/PR/SD NE PMD PMD/PD
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND, CTMRIOverallAssessment.PD,CTMRIOverallAssessment.CR,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD}),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() {FDGPETOverallAssessment.NE }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMD, }),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.PMDPD }),
},
//4、PD NE CMR/PMR/NMR/NE/NA PMD/PD
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD}),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE, }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.CMR,FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE, FDGPETOverallAssessment.NA }),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.PMDPD }),
},
//5、NE NE NE/NA NE
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.NE }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE, FDGPETOverallAssessment.NA }),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.NE }),
},
//6、CR/PR/SD/NE/ND/PD CMR CMR/PMR/NMR/PMD/NE/NA CMR/CR
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.ND,CTMRIOverallAssessment.PD }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.CMR }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.CMR,FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.PMD, FDGPETOverallAssessment.NE, FDGPETOverallAssessment.NA }),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.CMRCR }),
},
//7、CR NE NE/NA CMR/CR
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE, FDGPETOverallAssessment.NA,}),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.CMRCR }),
},
//8、 CR、PR、SD、NE、ND NE CMR CMR/CR
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.ND }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.CMR,}),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.CMRCR }),
},
//9、ND/PD/CR/NE/PR/SD PMR PMD/CMR/PMR/NMR/NE/NA PMR/PR
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND, CTMRIOverallAssessment.PD,CTMRIOverallAssessment.CR,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMR }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMD, FDGPETOverallAssessment.CMR,FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE,FDGPETOverallAssessment.NA, }),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.PMRPR }),
},
//10、PR NE NE/NA PMR/PR
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PR }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE, FDGPETOverallAssessment.NA,}),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.PMRPR }),
},
//11、CR/PR/SD/NE/ND NE PMR PMR/PR
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.ND }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMR}),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.PMRPR }),
},
//12、ND/PD/CR/NE/PR/SD NMR PMD/CMR/PMR/NMR/NE/NA NMR/SD
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND,CTMRIOverallAssessment.PD,CTMRIOverallAssessment.CR,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NMR }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMD, FDGPETOverallAssessment.CMR, FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE, FDGPETOverallAssessment.NA,}),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.NMRSD }),
},
//13、CR/PR/SD/ND/NE NE NMR NMR/SD
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR, CTMRIOverallAssessment.PR, CTMRIOverallAssessment.SD, CTMRIOverallAssessment.ND, CTMRIOverallAssessment.NE }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NMR}),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.NMRSD }),
},
//14、SD NE NE/NA NMR/SD
new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.SD }),
Column2=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE }),
Column3=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE, FDGPETOverallAssessment.NA,}),
Column4=ReadingCommon.EnumToString(new List<ImagingOverallAssessment_Lugano>() { ImagingOverallAssessment_Lugano.NMRSD }),
},
};
var resultdata = data.Where(x =>
(x.NotEq.Contains(1) ? !x.Column1.Contains(CTandMRIData) : x.Column1.Contains(CTandMRIData) || x.Column1.Count() == 0) &&
(x.NotEq.Contains(2) ? !x.Column2.Contains(FDGPETData) : x.Column2.Contains(FDGPETData) || x.Column2.Count() == 0) &&
(x.NotEq.Contains(3) ? !x.Column3.Contains(lastFDGPETData) : x.Column3.Contains(lastFDGPETData) || x.Column3.Count() == 0))
.Select(x => x.Column4.FirstOrDefault())
.FirstOrDefault();
return resultdata ?? string.Empty;
}