108 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C#
		
	
	
        public async Task<string> GetFDGPETOverallAssessment(ReadingCalculateDto inDto)
 | 
						||
        {
 | 
						||
 | 
						||
 | 
						||
            if(是保存影像质量 && 影像质量选择PET-CT无法融合)
 | 
						||
            {
 | 
						||
	            if(基线)
 | 
						||
				{
 | 
						||
					直接就是  "NA"
 | 
						||
				}
 | 
						||
				else
 | 
						||
				{
 | 
						||
					直接就是  "NE"
 | 
						||
				}
 | 
						||
					
 | 
						||
            }
 | 
						||
 | 
						||
            if (inDto.IsBaseLine  || 无法融合)
 | 
						||
            {
 | 
						||
                return FDGPETOverallAssessment.NA.GetEnumInt();
 | 
						||
            }
 | 
						||
 | 
						||
            var existPET =await GetExistPET(inDto);
 | 
						||
            if (existPET.EqEnum(ReadingYesOrNo.No))
 | 
						||
            {
 | 
						||
                return FDGPETOverallAssessment.NE.GetEnumInt();
 | 
						||
            }
 | 
						||
 | 
						||
            //FDGPETOverallAssessment result = FDGPETOverallAssessment.NA;
 | 
						||
 | 
						||
            // PET5PS
 | 
						||
            var PET5PS = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.PET5PS).Select(x => x.Answer).FirstOrDefault();
 | 
						||
 | 
						||
            // UptakeChange
 | 
						||
            var UptakeChange = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.UptakeChange).Select(x => x.Answer).FirstOrDefault();
 | 
						||
 | 
						||
            // EvidenceFocalFDG
 | 
						||
            var EvidenceFocalFDG = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.EvidenceFocalFDG).Select(x => x.Answer).FirstOrDefault();
 | 
						||
 | 
						||
 | 
						||
            List<CalculationDto> data = new List<CalculationDto>() {
 | 
						||
 | 
						||
                //NE	NE	NE	NE
 | 
						||
                new CalculationDto(){
 | 
						||
                Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() { PET5PSScore.NE }),
 | 
						||
                Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.NotEvaluable }),
 | 
						||
                Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.NE}),
 | 
						||
                Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NE }),
 | 
						||
                },
 | 
						||
 | 
						||
                  //NE/5分/4分/3分/2分/1分/X	NE/增大/减少/无明显变化	 是,存在新的/复发的FDG高亲和性病灶	PMD
 | 
						||
                new CalculationDto(){
 | 
						||
                Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() { PET5PSScore.NE,PET5PSScore.Five,PET5PSScore.Four,PET5PSScore.Three,PET5PSScore.Two,PET5PSScore.One,PET5PSScore.X, }),
 | 
						||
                Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.NotEvaluable,SUVChangeVSBaseline.Increase,SUVChangeVSBaseline.Decrease,SUVChangeVSBaseline.DidNotChange, }),
 | 
						||
                Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.YesHaveNew,}),
 | 
						||
                Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMD }),
 | 
						||
                },
 | 
						||
 | 
						||
                  //5分/4分	增大	NE/(是,存在新的/复发的FDG高亲和性病灶)/(是,存在持续的局灶性变化)/否	PMD
 | 
						||
                new CalculationDto(){
 | 
						||
                Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() { PET5PSScore.Five,PET5PSScore.Four, }),
 | 
						||
                Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.Increase }),
 | 
						||
                Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.NE, FDGAffinityFociInBM.YesHaveNew, FDGAffinityFociInBM.YesSustain, FDGAffinityFociInBM.No}),
 | 
						||
                Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMD }),
 | 
						||
                },
 | 
						||
 | 
						||
                  //3分/2分/1分/X	NE/增大/减少/无明显变化	否	CMR
 | 
						||
                new CalculationDto(){
 | 
						||
                Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() { PET5PSScore.Three,PET5PSScore.Two,PET5PSScore.One,PET5PSScore.X, }),
 | 
						||
                Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.NotEvaluable,SUVChangeVSBaseline.Increase,SUVChangeVSBaseline.Decrease,SUVChangeVSBaseline.DidNotChange, }),
 | 
						||
                Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.No}),
 | 
						||
                Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.CMR }),
 | 
						||
                },
 | 
						||
 | 
						||
                  //3分/2分/1分/X	NE/增大/减少/无明显变化	是,存在持续的局灶性变化	PMR
 | 
						||
                  new CalculationDto(){
 | 
						||
                Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() { PET5PSScore.Three,PET5PSScore.Two,PET5PSScore.One,PET5PSScore.X, }),
 | 
						||
                Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.NotEvaluable,SUVChangeVSBaseline.Increase,SUVChangeVSBaseline.Decrease,SUVChangeVSBaseline.DidNotChange, }),
 | 
						||
                Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.YesSustain }),
 | 
						||
                Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMR }),
 | 
						||
                },
 | 
						||
 | 
						||
                  //5分/4分	减少	否/是,存在持续的局灶性变化	PMR
 | 
						||
                new CalculationDto(){
 | 
						||
                Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() {  PET5PSScore.Five,PET5PSScore.Four }),
 | 
						||
                Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.Decrease }),
 | 
						||
                Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.No, FDGAffinityFociInBM.YesSustain}),
 | 
						||
                Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMR }),
 | 
						||
                },
 | 
						||
 | 
						||
                     //5分/4分	无明显变化	否/是,存在持续的局灶性变化	NMR
 | 
						||
                new CalculationDto(){
 | 
						||
                Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() {  PET5PSScore.Five,PET5PSScore.Four }),
 | 
						||
                Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.DidNotChange }),
 | 
						||
                Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.No, FDGAffinityFociInBM.YesSustain}),
 | 
						||
                Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NMR }),
 | 
						||
                },
 | 
						||
            };
 | 
						||
 | 
						||
 | 
						||
            var resultdata = data.Where(x =>
 | 
						||
            (x.NotEq.Contains(1) ? !x.Column1.Contains(PET5PS) : x.Column1.Contains(PET5PS) || x.Column1.Count() == 0) &&
 | 
						||
            (x.NotEq.Contains(2) ? !x.Column2.Contains(UptakeChange) : x.Column2.Contains(UptakeChange) || x.Column2.Count() == 0) &&
 | 
						||
            (x.NotEq.Contains(3) ? !x.Column3.Contains(EvidenceFocalFDG) : x.Column3.Contains(EvidenceFocalFDG) || x.Column3.Count() == 0))
 | 
						||
            .Select(x => x.Column4.FirstOrDefault())
 | 
						||
            .FirstOrDefault();
 | 
						||
            return resultdata ?? string.Empty;
 | 
						||
        } |