From 46ad5920deaa0a378932486e17fc53a4fa8813e9 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 13 Sep 2023 14:02:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LuganoCalculateService.cs | 211 ++++++++++-------- IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 42 +--- 2 files changed, 123 insertions(+), 130 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs index 9b7a765aa..498b055d8 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs @@ -501,7 +501,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate new ReadingCalculateData (){QuestionType=QuestionType.UptakeChange,GetStringFun=GetFDGPETOverallAssessment}, // 影像学整体肿瘤评估 - new ReadingCalculateData (){QuestionType=QuestionType.ImgOncology,GetStringFun=GetFDGPETOverallAssessment}, + new ReadingCalculateData (){QuestionType=QuestionType.ImgOncology,GetStringFun=GetImgOncology}, ////靶病灶径线之和(SOD) //new ReadingCalculateData (){QuestionType=QuestionType.SOD,GetDecimalNullFun=GetSODData}, @@ -1833,7 +1833,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate new CalculationDto(){ Column1=ReadingCommon.EnumToString(new List() { PET5PSScore.NE }), Column2=ReadingCommon.EnumToString(new List() { SUVChangeVSBaseline.NotEvaluable }), - Column3=ReadingCommon.EnumToString(new List() { MarrowFDG.NE}), + Column3=ReadingCommon.EnumToString(new List() { FDGAffinityFociInBM.NE}), Column4=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), }, @@ -1841,7 +1841,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate new CalculationDto(){ Column1=ReadingCommon.EnumToString(new List() { PET5PSScore.NE,PET5PSScore.Five,PET5PSScore.Four,PET5PSScore.Three,PET5PSScore.Two,PET5PSScore.One,PET5PSScore.X, }), Column2=ReadingCommon.EnumToString(new List() { SUVChangeVSBaseline.NotEvaluable,SUVChangeVSBaseline.Increase,SUVChangeVSBaseline.Decrease,SUVChangeVSBaseline.DidNotChange, }), - Column3=ReadingCommon.EnumToString(new List() { MarrowFDG.YesHaveNew,}), + Column3=ReadingCommon.EnumToString(new List() { FDGAffinityFociInBM.YesHaveNew,}), Column4=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMD }), }, @@ -1849,7 +1849,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate new CalculationDto(){ Column1=ReadingCommon.EnumToString(new List() { PET5PSScore.Five,PET5PSScore.Four, }), Column2=ReadingCommon.EnumToString(new List() { SUVChangeVSBaseline.Increase }), - Column3=ReadingCommon.EnumToString(new List() { MarrowFDG.NE,MarrowFDG.YesHaveNew,MarrowFDG.YesHaveNew,MarrowFDG.No}), + Column3=ReadingCommon.EnumToString(new List() { FDGAffinityFociInBM.NE, FDGAffinityFociInBM.YesHaveNew, FDGAffinityFociInBM.YesHaveNew, FDGAffinityFociInBM.No}), Column4=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMD }), }, @@ -1857,7 +1857,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate new CalculationDto(){ Column1=ReadingCommon.EnumToString(new List() { PET5PSScore.Three,PET5PSScore.Two,PET5PSScore.One,PET5PSScore.X, }), Column2=ReadingCommon.EnumToString(new List() { SUVChangeVSBaseline.NotEvaluable,SUVChangeVSBaseline.Increase,SUVChangeVSBaseline.Decrease,SUVChangeVSBaseline.DidNotChange, }), - Column3=ReadingCommon.EnumToString(new List() { MarrowFDG.No}), + Column3=ReadingCommon.EnumToString(new List() { FDGAffinityFociInBM.No}), Column4=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.CMR }), }, @@ -1865,7 +1865,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate new CalculationDto(){ Column1=ReadingCommon.EnumToString(new List() { PET5PSScore.Three,PET5PSScore.Two,PET5PSScore.One,PET5PSScore.X, }), Column2=ReadingCommon.EnumToString(new List() { SUVChangeVSBaseline.NotEvaluable,SUVChangeVSBaseline.Increase,SUVChangeVSBaseline.Decrease,SUVChangeVSBaseline.DidNotChange, }), - Column3=ReadingCommon.EnumToString(new List() { MarrowFDG.YesSustain }), + Column3=ReadingCommon.EnumToString(new List() { FDGAffinityFociInBM.YesSustain }), Column4=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMR }), }, @@ -1873,7 +1873,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate new CalculationDto(){ Column1=ReadingCommon.EnumToString(new List() { PET5PSScore.Five,PET5PSScore.Four }), Column2=ReadingCommon.EnumToString(new List() { SUVChangeVSBaseline.Decrease }), - Column3=ReadingCommon.EnumToString(new List() { MarrowFDG.YesSustain}), + Column3=ReadingCommon.EnumToString(new List() { FDGAffinityFociInBM.YesSustain}), Column4=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMR }), }, @@ -1881,115 +1881,128 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate new CalculationDto(){ Column1=ReadingCommon.EnumToString(new List() { PET5PSScore.Five,PET5PSScore.Four }), Column2=ReadingCommon.EnumToString(new List() { SUVChangeVSBaseline.DidNotChange }), - Column3=ReadingCommon.EnumToString(new List() { MarrowFDG.YesSustain}), + Column3=ReadingCommon.EnumToString(new List() { FDGAffinityFociInBM.YesSustain}), Column4=ReadingCommon.EnumToString(new List() { 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(); + (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; } #endregion #region 影像学整体肿瘤评估 - //public async Task GetImgOncology(ReadingCalculateDto inDto) - //{ - // if (inDto.IsBaseLine) - // { - // return ImagingOverallAssessment_Lugano.NA.GetEnumInt(); - // } + /// + /// 影像学整体肿瘤评估 + /// + /// + /// + public async Task GetImgOncology(ReadingCalculateDto inDto) + { + if (inDto.IsBaseLine) + { + return ImagingOverallAssessment_Lugano.NA.GetEnumInt(); + } - // // CTandMRI - // var CTandMRIData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.CTandMRI).Select(x => x.Answer).FirstOrDefault(); + // 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(); + // FDGPET + var FDGPETData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.FDGPET).Select(x => x.Answer).FirstOrDefault(); - // var baseLineTaskId = await GetBaseLineTaskId(inDto); - // // lastFDGPET - // var lastFDGPETData = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == baseLineTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.EvidenceFocalFDG).Select(x => x.Answer).FirstOrDefaultAsync(); + var baseLineTaskId = await GetBaseLineTaskId(inDto); + // lastFDGPET + var lastFDGPETData = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == baseLineTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.EvidenceFocalFDG).Select(x => x.Answer).FirstOrDefaultAsync(); - // List data = new List() { + List data = new List() { - // //ND NE NE ND - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), - // Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), - // }, - // //ND/PD/CR/NE/PR/SD PMD PMD/CMR/PMR/NMR/NE PMD/PD - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND, CTMRIOverallAssessment.PD,CTMRIOverallAssessment.CR,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD}), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMD, }), - // Column3=ReadingCommon.EnumToString(new List() {FDGPETOverallAssessment.PMD, FDGPETOverallAssessment.CMR,FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE }), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.PMD }), - // }, - // //ND NE NE ND - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), - // Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), - // }, - // //ND NE NE ND - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), - // Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), - // }, - // //ND NE NE ND - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), - // Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), - // }, - // //ND NE NE ND - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), - // Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), - // }, - // //ND NE NE ND - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), - // Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), - // }, - // //ND NE NE ND - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), - // Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), - // }, - // //ND NE NE ND - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), - // Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), - // }, - // //ND NE NE ND - // new CalculationDto(){ - // Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), - // Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), - // Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), - // Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), - // }, - // }; - //} + //ND NE NE ND + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND }), + Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), + Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), + Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.ND }), + }, + //ND/PD/CR/NE/PR/SD PMD PMD/CMR/PMR/NMR/NE PMD/PD + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND, CTMRIOverallAssessment.PD,CTMRIOverallAssessment.CR,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD}), + Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMD, }), + Column3=ReadingCommon.EnumToString(new List() {FDGPETOverallAssessment.PMD, FDGPETOverallAssessment.CMR,FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE }), + Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.PMDPD }), + }, + //ND/PD/CR/NE/PR/SD PMD/CMR/PMR/NMR/NE PMD PMD/PD + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND, CTMRIOverallAssessment.PD,CTMRIOverallAssessment.CR,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD}), + Column2=ReadingCommon.EnumToString(new List() {FDGPETOverallAssessment.PMD, FDGPETOverallAssessment.CMR,FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE }), + Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMD, }), + Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.PMDPD }), + }, + //PD NE CMR/PMR/NMR/NE PMD/PD + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.PD}), + Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE, }), + Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.CMR,FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE }), + Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.PMDPD }), + }, + //ND/PD/CR/NE/PR/SD PMR PMD/CMR/PMR/NMR/NE PMR/PR + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND, CTMRIOverallAssessment.PD,CTMRIOverallAssessment.CR,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD }), + Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMR }), + Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMD, FDGPETOverallAssessment.CMR,FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE }), + Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.PMRPR }), + }, + //PR NE NE PMR/PR + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.PR }), + Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), + Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), + Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.PMRPR }), + }, + //CR/PR/SD/NE/ND NE PMR PMR/PR + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.CR,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.ND }), + Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), + Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMR}), + Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.PMRPR }), + }, + //ND/PD/CR/NE/PR/SD NMR PMD/CMR/PMR/NMR/NE NMR/SD + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.ND,CTMRIOverallAssessment.PD,CTMRIOverallAssessment.CR,CTMRIOverallAssessment.NE,CTMRIOverallAssessment.PR,CTMRIOverallAssessment.SD }), + Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NMR }), + Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.PMD, FDGPETOverallAssessment.CMR, FDGPETOverallAssessment.PMR, FDGPETOverallAssessment.NMR, FDGPETOverallAssessment.NE}), + Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.NMRSD }), + }, + //CR/PR/SD/ND/NE NE NMR NMR/SD + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.CR, CTMRIOverallAssessment.PR, CTMRIOverallAssessment.SD, CTMRIOverallAssessment.ND, CTMRIOverallAssessment.NE }), + Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), + Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NMR}), + Column4=ReadingCommon.EnumToString(new List() { ImagingOverallAssessment_Lugano.NMRSD }), + }, + //SD NE NE NMR/SD + new CalculationDto(){ + Column1=ReadingCommon.EnumToString(new List() { CTMRIOverallAssessment.SD }), + Column2=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE }), + Column3=ReadingCommon.EnumToString(new List() { FDGPETOverallAssessment.NE}), + Column4=ReadingCommon.EnumToString(new List() { 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; + } #endregion diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index 2942612de..596aae365 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -42,7 +42,7 @@ namespace IRaCIS.Core.Domain.Share /// /// 骨髓中是否存在局灶性 FDG 亲和病灶的证据 /// - public enum MarrowFDG + public enum FDGAffinityFociInBM { /// /// NE @@ -937,54 +937,34 @@ namespace IRaCIS.Core.Domain.Share NA = -1, /// - /// CMR + /// CMR/CR /// - CMR = 0, + CMRCR = 0, /// - /// CR + /// PMR/PR /// - CR = 1, + PMRPR = 1, /// - /// PMR + /// NMR/SD /// - PMR = 2, + NMRSD = 2, /// - /// PR + /// PMD/PD /// - PR = 3, - - /// - /// NMR - /// - NMR = 4, - - /// - /// SD - /// - SD = 5, - - /// - /// PMD - /// - PMD = 6, - - /// - /// PD - /// - PD = 7, + PMDPD = 3, /// /// NE /// - NE = 8, + NE = 4, /// /// ND /// - ND = 9, + ND = 5, }