Merge branch 'Test_IRC_Net8' of http://192.168.3.68:2000/XCKJ/irc-netcore-api into Test_IRC_Net8
commit
e5b5cbb8d8
|
@ -1186,6 +1186,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
{
|
||||
var dbSubjectVisitList = await _subjectVisitRepository.Where(t => cRCRequestToQCCommand.SubjectVisitIds.Contains(t.Id), true).ProjectTo<QCCRCVisitViewModel>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
var trialinfo = await _trialRepository.Where(x => x.Id == dbSubjectVisitList[0].TrialId).FirstNotNullAsync();
|
||||
//普通提交
|
||||
if (dbSubjectVisitList.Count == 1)
|
||||
{
|
||||
|
@ -1213,8 +1214,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
}
|
||||
|
||||
//同时要根据项目有没有配置Subject 级别临床数据
|
||||
if (dbSubjectVisitList.Any(t => t.IsBaseLine && !t.IsHaveClinicalData))
|
||||
if (dbSubjectVisitList.Any(t => t.IsBaseLine && !t.IsHaveClinicalData)&&trialinfo.ClinicalInformationTransmissionEnum!=0)
|
||||
{
|
||||
|
||||
//---基线没有临床数据,确认提交?
|
||||
return ResponseOutput.NotOk(_localizer["QCOperation_NoBaselineData"], 0, ApiResponseCodeEnum.NeedTips);
|
||||
}
|
||||
|
|
|
@ -611,19 +611,22 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
new ReadingCalculateData (){QuestionType=QuestionType.LiverAssessment,GetStringFun=GetLiverAssessment,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.InitialCalculation, ComputationTrigger.LiverStatus,}},
|
||||
|
||||
// 骨髓中是否存在局灶性 FDG亲和病灶的证据
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.EvidenceFocalFDG,GetStringFun=GetEvidenceFocalFDG,ComputationTriggerList=new List<ComputationTrigger>(){ }},
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.EvidenceFocalFDG,GetStringFun=GetEvidenceFocalFDG,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.ImageQuality, }},
|
||||
|
||||
//CT/MRI
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.CTandMRI,GetStringFun=CTMRIEvaluation,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.InitialCalculation, ComputationTrigger.LiverStatus,ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,ComputationTrigger.SplenicEvaluation,ComputationTrigger.CTSave,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,ComputationTrigger.MergeLesion,}},
|
||||
|
||||
//SUVmax
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.SUVmax,GetDecimalNullFun=GetSuvMax,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
|
||||
|
||||
// PET 5PS评分
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.PET5PS,GetStringFun=GetPET5PS,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.ImageQuality, ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,} },
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.PET5PS,GetStringFun=GetPET5PS,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.InitialCalculation, ComputationTrigger.ImageQuality, ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
|
||||
|
||||
// 修改PET 5PS评分备注
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.PSScoreRemarks,GetStringFun=GetPET5PSRemark,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
|
||||
|
||||
//与基线相比摄取值变化
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.UptakeChange,GetStringFun=GetUptakeChange,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.UptakeChange,GetStringFun=GetUptakeChange,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.InitialCalculation, ComputationTrigger.ImageQuality, ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
|
||||
|
||||
// FDG-PET 评估结果
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.FDGPET,GetStringFun=GetFDGPETOverallAssessment,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.InitialCalculation, ComputationTrigger.ImageQuality, ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,ComputationTrigger.PDGPET,}},
|
||||
|
@ -634,8 +637,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
// 影像学整体肿瘤评估
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.ImgOncology,GetStringFun=GetImgOncology,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.InitialCalculation, ComputationTrigger.LiverStatus,ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,ComputationTrigger.SplenicEvaluation,ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.CTSave,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,ComputationTrigger.PDGPET,ComputationTrigger.MergeLesion,}},
|
||||
|
||||
//SUVmax
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.SUVmax,GetDecimalNullFun=GetSuvMax,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
|
||||
|
||||
|
||||
// SUVmax所在病灶
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.SUVmaxLesion,GetStringFun=GetSuvMaxFocus,ComputationTriggerList=new List<ComputationTrigger>(){ ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
|
||||
|
@ -2521,9 +2523,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
}
|
||||
}
|
||||
|
||||
// 如果不是保存肝脏血池和纵隔血池
|
||||
if (inDto.ComputationTrigger != ComputationTrigger.LiverBloodPool && inDto.ComputationTrigger != ComputationTrigger.MediastinalPool)
|
||||
{
|
||||
|
||||
// 先在数据库查这几个值
|
||||
List<QuestionType?> needSearchTypes = new List<QuestionType?>()
|
||||
{
|
||||
|
@ -2535,18 +2535,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
{
|
||||
x.Answer,
|
||||
x.ReadingQuestionTrial.QuestionType
|
||||
}).ToListAsync(); ;
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
// 数据库中最大SUVmax
|
||||
var dataBaseSUVmax = dataBaseDataList.Where(x => x.QuestionType == QuestionType.SUVmax).Select(x => x.Answer).FirstIsNullReturnEmpty();
|
||||
|
||||
// 如果SUVmax没变 就不重新计算
|
||||
if (dataBaseSUVmax == (await GetSuvMax(inDto)).ToString())
|
||||
// 如果不是保存肝脏血池和纵隔血池
|
||||
if (inDto.ComputationTrigger != ComputationTrigger.LiverBloodPool && inDto.ComputationTrigger != ComputationTrigger.MediastinalPool&& dataBaseSUVmax == (await GetSuvMax(inDto)).ToString())
|
||||
{
|
||||
return dataBaseDataList.Where(x => x.QuestionType == QuestionType.PET5PS).Select(x => x.Answer).FirstIsNullReturnEmpty();
|
||||
|
||||
}
|
||||
|
||||
return dataBaseDataList.Where(x => x.QuestionType == QuestionType.PET5PS).Select(x => x.Answer).FirstIsNullReturnEmpty();
|
||||
|
||||
}
|
||||
|
||||
|
@ -2557,7 +2557,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
// return SpleenAssessment.Stabilization.GetEnumInt();
|
||||
//}
|
||||
|
||||
if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.ExistPET && x.Answer == ReadingYesOrNo.No.GetEnumInt()))
|
||||
else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.ExistPET && x.Answer == ReadingYesOrNo.No.GetEnumInt()))
|
||||
{
|
||||
return PET5PSScore.NE.GetEnumInt();
|
||||
}
|
||||
|
@ -2602,8 +2602,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
{
|
||||
result = PET5PSScore.Three;
|
||||
}
|
||||
//本访视点病灶的SUVmax(所有病灶中最大的)<纵隔血池SUVmax
|
||||
else if (maxSUVmax < MediastinumSUVmax && maxSUVmax != 0)
|
||||
//本访视点病灶的SUVmax(所有病灶中最大的)<=纵隔血池SUVmax
|
||||
else if (maxSUVmax <= MediastinumSUVmax && maxSUVmax != 0)
|
||||
{
|
||||
result = PET5PSScore.Two;
|
||||
}
|
||||
|
@ -2666,6 +2666,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
/// <returns></returns>
|
||||
public async Task<string> GetUptakeChange(ReadingCalculateDto inDto)
|
||||
{
|
||||
|
||||
if (await ImageQualityIsUnableFuse(inDto))
|
||||
{
|
||||
if (inDto.IsBaseLine)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
return SUVChangeVSBaseline.NotEvaluable.GetEnumInt();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//PET5ps评分改变时,才计算
|
||||
|
||||
List<QuestionType?> needSearchTypes = new List<QuestionType?>()
|
||||
|
@ -2797,7 +2811,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
|
||||
|
||||
|
||||
if (notExistPET)
|
||||
if (notExistPET || (await ImageQualityIsUnableFuse(inDto)))
|
||||
{
|
||||
return FDGPETOverallAssessment.NE.GetEnumInt();
|
||||
}
|
||||
|
@ -2906,6 +2920,19 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
/// <returns></returns>
|
||||
public async Task<string> GetEvidenceFocalFDG(ReadingCalculateDto inDto)
|
||||
{
|
||||
|
||||
if (await ImageQualityIsUnableFuse(inDto))
|
||||
{
|
||||
if (inDto.IsBaseLine)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FDGAffinityFociInBM.NE.GetEnumInt();
|
||||
}
|
||||
}
|
||||
|
||||
if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.ExistPET && x.Answer == ReadingYesOrNo.No.GetEnumInt()))
|
||||
{
|
||||
return FDGAffinityFociInBM.NE.GetEnumInt();
|
||||
|
|
Loading…
Reference in New Issue