Merge branch 'Test.IRC' of http://192.168.3.69:2000/XCKJ/irc-netcore-api into Test.IRC

IRC_NewDev
hang 2023-10-23 13:55:22 +08:00
commit b9d50179c0
5 changed files with 131 additions and 44 deletions

View File

@ -50,6 +50,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public bool IsChangeOtherTask { get; set; } public bool IsChangeOtherTask { get; set; }
public ComputationTrigger ComputationTrigger { get; set; }
} }
public class TargetLesionCalculateDto public class TargetLesionCalculateDto
@ -220,6 +222,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Arm ArmEnum { get; set; } public Arm ArmEnum { get; set; }
public ComputationTrigger ComputationTrigger { get; set; } = ComputationTrigger.Lesion;
/// <summary> /// <summary>
/// 是否修改其他任务 /// 是否修改其他任务
/// </summary> /// </summary>
@ -348,6 +352,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
{ {
public QuestionType QuestionType { get; set; } public QuestionType QuestionType { get; set; }
public ComputationTrigger? ComputationTrigger { get; set; }
public Func<ReadingCalculateDto, Task<decimal>> GetDecimalFun { get; set; } public Func<ReadingCalculateDto, Task<decimal>> GetDecimalFun { get; set; }
public Func<ReadingCalculateDto, Task<int>> GetIntFun { get; set; } public Func<ReadingCalculateDto, Task<int>> GetIntFun { get; set; }

View File

@ -1741,6 +1741,7 @@ namespace IRaCIS.Application.Services
{ {
IsChangeOtherTask = false, IsChangeOtherTask = false,
VisitTaskId = inDto.VisitTaskId, VisitTaskId = inDto.VisitTaskId,
ComputationTrigger=ComputationTrigger.Lesion,
}); });
return ResponseOutput.Ok(true); return ResponseOutput.Ok(true);
} }
@ -2141,6 +2142,7 @@ namespace IRaCIS.Application.Services
{ {
IsChangeOtherTask = false, IsChangeOtherTask = false,
VisitTaskId = inDto.VisitTaskId, VisitTaskId = inDto.VisitTaskId,
ComputationTrigger = ComputationTrigger.Lesion,
}); });

View File

@ -196,7 +196,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
await service.CalculateTask(new CalculateTaskInDto() await service.CalculateTask(new CalculateTaskInDto()
{ {
ComputationTrigger= ComputationTrigger.Report,
VisitTaskId = inDto.VisitTaskId VisitTaskId = inDto.VisitTaskId
}); });
} }

View File

@ -429,6 +429,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
ReadingCalculateDto readingData = await _generalCalculateService.GetReadingCalculateDto(inDto.VisitTaskId); ReadingCalculateDto readingData = await _generalCalculateService.GetReadingCalculateDto(inDto.VisitTaskId);
readingData.IsChangeOtherTask = inDto.IsChangeOtherTask; readingData.IsChangeOtherTask = inDto.IsChangeOtherTask;
readingData.ComputationTrigger = inDto.ComputationTrigger;
await ReadingCalculate(readingData); await ReadingCalculate(readingData);
} }
@ -493,16 +494,22 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetNoTargetLesionEvaluate}, new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetNoTargetLesionEvaluate},
//新病灶评估 //新病灶评估
new ReadingCalculateData (){QuestionType=QuestionType.NewLesions,GetStringFun=GetNewLesionEvaluate}, new ReadingCalculateData (){QuestionType=QuestionType.NewLesionEvaluation,GetStringFun=GetNewLesionEvaluate},
//获取肝脏评估
new ReadingCalculateData (){QuestionType=QuestionType.LiverAssessment,GetStringFun=GetLiverAssessment},
// 骨髓中是否存在局灶性 FDG亲和病灶的证据
new ReadingCalculateData (){QuestionType=QuestionType.EvidenceFocalFDG,GetStringFun=GetEvidenceFocalFDG,ComputationTrigger=ComputationTrigger.Lesion},
//CT/MRI //CT/MRI
new ReadingCalculateData (){QuestionType=QuestionType.CTandMRI,GetStringFun=CTMRIEvaluation}, new ReadingCalculateData (){QuestionType=QuestionType.CTandMRI,GetStringFun=CTMRIEvaluation},
// PET 5PS评分 // PET 5PS评分
new ReadingCalculateData (){QuestionType=QuestionType.PET5PS,GetStringFun=GetPET5PS}, new ReadingCalculateData (){QuestionType=QuestionType.PET5PS,GetStringFun=GetPET5PS,ComputationTrigger=ComputationTrigger.Lesion},
//与基线相比摄取值变化 //与基线相比摄取值变化
new ReadingCalculateData (){QuestionType=QuestionType.UptakeChange,GetStringFun=GetUptakeChange}, new ReadingCalculateData (){QuestionType=QuestionType.UptakeChange,GetStringFun=GetUptakeChange,ComputationTrigger=ComputationTrigger.Lesion},
// FDG-PET 评估结果 // FDG-PET 评估结果
new ReadingCalculateData (){QuestionType=QuestionType.FDGPET,GetStringFun=GetFDGPETOverallAssessment}, new ReadingCalculateData (){QuestionType=QuestionType.FDGPET,GetStringFun=GetFDGPETOverallAssessment},
@ -518,8 +525,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// SUVmax所在病灶 // SUVmax所在病灶
new ReadingCalculateData (){QuestionType=QuestionType.SUVmaxLesion,GetStringFun=GetSuvMaxFocus}, new ReadingCalculateData (){QuestionType=QuestionType.SUVmaxLesion,GetStringFun=GetSuvMaxFocus},
//获取肝脏评估
new ReadingCalculateData (){QuestionType=QuestionType.LiverAssessment,GetStringFun=GetLiverAssessment},
////靶病灶径线之和SOD ////靶病灶径线之和SOD
//new ReadingCalculateData (){QuestionType=QuestionType.SOD,GetDecimalNullFun=GetSODData}, //new ReadingCalculateData (){QuestionType=QuestionType.SOD,GetDecimalNullFun=GetSODData},
@ -602,6 +610,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
calculateList = calculateList.Where(x => calculateType.Contains(x.QuestionType)).ToList(); calculateList = calculateList.Where(x => calculateType.Contains(x.QuestionType)).ToList();
} }
calculateList = calculateList.Where(x => x.ComputationTrigger == null || x.ComputationTrigger == inDto.ComputationTrigger).ToList();
var typeNAList = new List<QuestionType> var typeNAList = new List<QuestionType>
{ {
QuestionType.SODChange, QuestionType.SODChange,
@ -1622,7 +1632,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var presentSpd = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SPD).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0(); var presentSpd = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SPD).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
if (baseLineSpd != 0) if (baseLineSpd != 0)
{ {
return (presentSpd - baseLineSpd) / baseLineSpd; return (presentSpd - baseLineSpd)*100 / baseLineSpd;
} }
else else
{ {
@ -1913,10 +1923,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
/// <returns></returns> /// <returns></returns>
public async Task<string> GetPET5PS(ReadingCalculateDto inDto) public async Task<string> GetPET5PS(ReadingCalculateDto inDto)
{ {
if (inDto.IsBaseLine) //if (inDto.IsBaseLine)
//{
// return SpleenAssessment.Stabilization.GetEnumInt();
//}
if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.ExistPET && x.Answer == ReadingYesOrNo.No.GetEnumInt()))
{ {
return SpleenAssessment.Stabilization.GetEnumInt(); return PET5PSScore.NE.GetEnumInt();
} }
PET5PSScore result = PET5PSScore.X; PET5PSScore result = PET5PSScore.X;
// 最大Suvmax // 最大Suvmax
@ -1978,6 +1996,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
return SUVChangeVSBaseline.NotEvaluable.GetEnumInt(); return SUVChangeVSBaseline.NotEvaluable.GetEnumInt();
} }
if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.ExistPET && x.Answer == ReadingYesOrNo.No.GetEnumInt()))
{
return SUVChangeVSBaseline.NotEvaluable.GetEnumInt();
}
var result = SUVChangeVSBaseline.NotEvaluable; var result = SUVChangeVSBaseline.NotEvaluable;
var baseLineTaskId = await GetBaseLineTaskId(inDto); var baseLineTaskId = await GetBaseLineTaskId(inDto);
@ -2081,7 +2104,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
new CalculationDto(){ new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() { PET5PSScore.Five,PET5PSScore.Four }), Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() { PET5PSScore.Five,PET5PSScore.Four }),
Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.Decrease }), Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.Decrease }),
Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.YesSustain}), Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.No, FDGAffinityFociInBM.YesSustain}),
Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMR }), Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.PMR }),
}, },
@ -2089,7 +2112,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
new CalculationDto(){ new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() { PET5PSScore.Five,PET5PSScore.Four }), Column1=ReadingCommon.EnumToString(new List<PET5PSScore>() { PET5PSScore.Five,PET5PSScore.Four }),
Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.DidNotChange }), Column2=ReadingCommon.EnumToString(new List<SUVChangeVSBaseline>() { SUVChangeVSBaseline.DidNotChange }),
Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.YesSustain}), Column3=ReadingCommon.EnumToString(new List<FDGAffinityFociInBM>() { FDGAffinityFociInBM.No, FDGAffinityFociInBM.YesSustain}),
Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NMR }), Column4=ReadingCommon.EnumToString(new List<FDGPETOverallAssessment>() { FDGPETOverallAssessment.NMR }),
}, },
}; };
@ -2105,7 +2128,25 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
} }
#endregion #endregion
#region 骨髓中是否存在局灶性 FDG亲和病灶的证据
/// <summary>
/// 骨髓中是否存在局灶性 FDG亲和病灶的证据
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<string> GetEvidenceFocalFDG(ReadingCalculateDto inDto)
{
if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.ExistPET && x.Answer == ReadingYesOrNo.No.GetEnumInt()))
{
return FDGAffinityFociInBM.NE.GetEnumInt();
}
else
{
return inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.EvidenceFocalFDG).Select(x => x.Answer).FirstOrDefault();
}
}
#endregion
#region 肝脏评估 #region 肝脏评估
/// <summary> /// <summary>
@ -2345,11 +2386,14 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
/// <returns></returns> /// <returns></returns>
public async Task<string> GetTargetLesionEvaluate(ReadingCalculateDto inDto) public async Task<string> GetTargetLesionEvaluate(ReadingCalculateDto inDto)
{ {
var rowInfo = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).SelectMany(x => x.TableRowInfoList).ToList(); var rowInfo = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).SelectMany(x => x.TableRowInfoList).ToList();
//if (inDto.IsBaseLine) if (inDto.IsBaseLine)
//{ {
// return TargetAssessment.NA.GetEnumInt(); return TargetAssessment.NA.GetEnumInt();
//} }
var tableQuestions = rowInfo.SelectMany(x => x.TableQuestionList).ToList(); var tableQuestions = rowInfo.SelectMany(x => x.TableQuestionList).ToList();
TargetAssessment result = TargetAssessment.SD; TargetAssessment result = TargetAssessment.SD;
@ -2414,10 +2458,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
result = TargetAssessment.PD; result = TargetAssessment.PD;
} }
//在排除PD后有任一靶病灶为NE状态 //当前访视没有任何一个状态为“疾病进展”的靶病灶;
else if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.UnableEvaluate))) //当前访视存在至少一个状态为“不可评估”的靶病灶。
else if (
!tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.DiseaseProgression))&&
tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.UnableEvaluate)))
{ {
result = TargetAssessment.PD; result = TargetAssessment.NE;
} }
//1、基线非淋巴结靶病灶不存在或者当前访视非淋巴结靶病灶全部消失 //1、基线非淋巴结靶病灶不存在或者当前访视非淋巴结靶病灶全部消失
//并且 2.当前访视淋巴结靶病灶的状态全部变为“消失”。 //并且 2.当前访视淋巴结靶病灶的状态全部变为“消失”。
@ -2449,10 +2496,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
NoTargetAssessment result = NoTargetAssessment.PD; NoTargetAssessment result = NoTargetAssessment.PD;
//if (inDto.IsBaseLine) if (inDto.IsBaseLine)
//{ {
// return NoTargetAssessment.NA.GetEnumInt(); return NoTargetAssessment.NA.GetEnumInt();
//} }
var tableRows = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NonTargetLesions).SelectMany(x => x.TableRowInfoList).ToList(); var tableRows = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NonTargetLesions).SelectMany(x => x.TableRowInfoList).ToList();
@ -2550,14 +2597,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
/// <returns></returns> /// <returns></returns>
public async Task<string> CTMRIEvaluation(ReadingCalculateDto inDto) 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 targetEvaluation = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.TargetLesion).Select(x => x.Answer).FirstOrDefault();
// 非靶病灶评估 // 非靶病灶评估
var noTargetEvaluation = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NETarget).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.NewTargetLesion).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 liverEvaluation = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LiverAssessment).Select(x => x.Answer).FirstOrDefault();
@ -2571,7 +2622,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
new CalculationDto(){ new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }), Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }), Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected }), Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No, NewLesionAssessment.Suspected }),
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }), Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }), Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }), Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
@ -2595,14 +2646,14 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }), Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }),
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }), Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
}, },
//PD 任一结果 是 任一结果 任一结果 PD //任一结果 任一结果 是 任一结果 任一结果 PD
new CalculationDto(){ new CalculationDto(){
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.PD }), Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { }),
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { }), Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { }),
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Yes }), Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Yes }),
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { }), Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { }),
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }), Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }),
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }), Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
}, },
//任一结果 任一结果 任一结果 显著增大 任一结果 PD //任一结果 任一结果 任一结果 显著增大 任一结果 PD
new CalculationDto(){ new CalculationDto(){
@ -2611,7 +2662,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { }), Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { }),
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Increase }), Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { LiverAssessment.Increase }),
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }), Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { }),
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }), Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
}, },
//任一结果 任一结果 任一结果 任一结果 显著增大 PD //任一结果 任一结果 任一结果 任一结果 显著增大 PD
new CalculationDto(){ new CalculationDto(){
@ -2620,7 +2671,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() {}), Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() {}),
Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { }), Column4=ReadingCommon.EnumToString(new List<LiverAssessment>() { }),
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Increase }), Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Increase }),
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }), Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
}, },
//CR CR/ND 否 正常 正常 CR //CR CR/ND 否 正常 正常 CR
new CalculationDto(){ new CalculationDto(){
@ -2640,9 +2691,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }), Column5=ReadingCommon.EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR }), Column6=ReadingCommon.EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR }),
}, },
//NE 非PD 否/疑似/无法评估 显著增大 显著增大 NE //NE 非PD 否/疑似/无法评估 显著增大 显著增大 NE
new CalculationDto(){ new CalculationDto(){
NotEq=new List<int>(){ 2}, NotEq=new List<int>(){ 2,4,5},
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.NE }), Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.NE }),
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.PD }), Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.PD }),
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}), Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected, NewLesionAssessment.NE}),
@ -2672,7 +2723,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}, },
//ND ND 否/疑似 无法评估 正常/稳定/无法评估/部分缓解(非显著增大) NE //ND ND 否/疑似 无法评估 正常/稳定/无法评估/部分缓解(非显著增大) NE
new CalculationDto(){ new CalculationDto(){
NotEq=new List<int>(){ 4}, NotEq=new List<int>(){ 5},
Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }), Column1=ReadingCommon.EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }), Column2=ReadingCommon.EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected }), Column3=ReadingCommon.EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected }),
@ -2739,6 +2790,14 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}, },
}; };
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 => var result = data.Where(x =>
(x.NotEq.Contains(1) ? !x.Column1.Contains(targetEvaluation) : x.Column1.Contains(targetEvaluation) || x.Column1.Count() == 0) && (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(2) ? !x.Column2.Contains(noTargetEvaluation) : x.Column2.Contains(noTargetEvaluation) || x.Column2.Count() == 0) &&

View File

@ -894,17 +894,22 @@ namespace IRaCIS.Core.Domain.Share
/// <summary> /// <summary>
/// 稳定 /// 稳定
/// </summary> /// </summary>
Stabilization = 2, Tumefaction = 2,
/// <summary>
/// 稳定
/// </summary>
Stabilization = 3,
/// <summary> /// <summary>
/// 显著增大 /// 显著增大
/// </summary> /// </summary>
Increase = 3, Increase = 4,
/// <summary> /// <summary>
/// 无法评估 /// 无法评估
/// </summary> /// </summary>
NotEvaluable = 4, NotEvaluable = 5,
} }
/// <summary> /// <summary>
@ -2230,12 +2235,10 @@ public enum SUVChangeVSBaseline
/// <summary>
/// PET 5PS 评分
/// <summary> /// </summary>
/// PET 5PS 评分 public enum PET5PSScore
/// </summary>
public enum PET5PSScore
{ {
/// <summary> /// <summary>
/// 5分 /// 5分
@ -2255,7 +2258,7 @@ public enum SUVChangeVSBaseline
/// <summary> /// <summary>
/// 2分 /// 2分
/// </summary> /// </summary>
Two = 5, Two = 2,
/// <summary> /// <summary>
/// 1分 /// 1分
@ -2274,6 +2277,22 @@ public enum SUVChangeVSBaseline
} }
/// <summary>
/// 计算触发
/// </summary>
public enum ComputationTrigger
{
/// <summary>
/// 病灶
/// </summary>
Lesion=0,
/// <summary>
/// 报告
/// </summary>
Report=1,
}
/// <summary> /// <summary>
/// 新靶病灶评估 /// 新靶病灶评估
/// </summary> /// </summary>