From 6061cf5d93bdd6eed2faf44169b6dab0c26b7593 Mon Sep 17 00:00:00 2001
From: he <109787524@qq.com>
Date: Thu, 11 Apr 2024 10:41:13 +0800
Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=AE=A1=E7=AE=97=E8=A7=A6?=
=?UTF-8?q?=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../IRaCIS.Core.Application.xml | 17 +-
.../Reading/Dto/ReadingCalculateViewModel.cs | 4 +-
.../Reading/Dto/ReadingImageTaskViewModel.cs | 7 +-
.../ReadingImageTaskService.cs | 33 ++-
.../General/ReadingCalculateService.cs | 4 +-
.../LuganoCalculateService.cs | 212 ++++++++++++++----
IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 88 ++++++--
7 files changed, 288 insertions(+), 77 deletions(-)
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 17f465189..8acab0990 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -2038,6 +2038,13 @@
+
+
+ 获取脾脏垂直径
+
+
+
+
与基线相比SPD变化的百分比
@@ -2095,6 +2102,13 @@
+
+
+ 获取脾脏状态
+
+
+
+
获取脾脏评估
@@ -13771,6 +13785,7 @@
保存任务问题 带动态稽查参数
+ 请求类型
@@ -13789,7 +13804,7 @@
- 提交表格问题答案 提交病灶
+ 提交表格问题答案 提交病灶 保存病灶
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
index 0d6644494..3a6f6edcd 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
@@ -222,7 +222,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Arm ArmEnum { get; set; }
- public ComputationTrigger ComputationTrigger { get; set; } = ComputationTrigger.Lesion;
+ public ComputationTrigger ComputationTrigger { get; set; }
///
/// 是否修改其他任务
@@ -353,7 +353,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public QuestionType QuestionType { get; set; }
- public ComputationTrigger? ComputationTrigger { get; set; }
+ public List ComputationTriggerList { get; set; }=new List();
public Func> GetDecimalFun { get; set; }
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
index a8b548954..f4f835247 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
@@ -588,8 +588,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
{
public Guid VisitTaskId { get; set; }
+ public ComputationTrigger ComputationTrigger { get; set; }
- public bool UpdateMark { get; set; } = false;
+ public bool UpdateMark { get; set; } = false;
public List Answers { get; set; }
@@ -2086,7 +2087,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
{
public Guid QuestionId { get; set; }
- public Guid? OrganInfoId { get; set; }
+ public ComputationTrigger ComputationTrigger { get; set; } = ComputationTrigger.CTSave;
+
+ public Guid? OrganInfoId { get; set; }
public int? NumberOfFrames { get; set; }
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
index 1f5bc9ce0..e6761b1d1 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
@@ -1637,7 +1637,7 @@ namespace IRaCIS.Application.Services
{
IsChangeOtherTask = false,
VisitTaskId = inDto.VisitTaskId,
- ComputationTrigger = ComputationTrigger.Lesion,
+ ComputationTrigger = ComputationTrigger.MergeLesion,
});
// 保存完了计算疾病进展
@@ -1746,19 +1746,32 @@ namespace IRaCIS.Application.Services
/// 保存任务问题 带动态稽查参数
///
///
+ /// 请求类型
///
[Route("/SaveTaskQuestion/{param}")]
[HttpPost]
public async Task SaveTaskQuestion(ChangeDicomReadingQuestionAnswerInDto inDto, string param)
{
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
- var result = await this.SaveImageQuality(inDto);
- // 保存脾尖或者脾底进行计算
- if (taskinfo.TrialReadingCriterion.CriterionType == CriterionType.Lugano2014 && (param == "4" || param == "5"))
- {
- await _luganoCalculateService.SaveSplenicCalculate(inDto.VisitTaskId);
- }
+ try
+ {
+ param = param == string.Empty ? "0" : param;
+ inDto.ComputationTrigger = (ComputationTrigger)int.Parse(param);
+ }
+ catch (Exception)
+ {
+
+ }
+ var result = await this.SaveImageQuality(inDto);
+
+ // 自动计算
+ await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
+ {
+ IsChangeOtherTask = false,
+ VisitTaskId = inDto.VisitTaskId,
+ ComputationTrigger = inDto.ComputationTrigger,
+ });
return result;
}
@@ -2055,7 +2068,7 @@ namespace IRaCIS.Application.Services
{
IsChangeOtherTask = false,
VisitTaskId = inDto.VisitTaskId,
- ComputationTrigger=ComputationTrigger.Lesion,
+ ComputationTrigger=ComputationTrigger.RemoveLesion,
});
@@ -2078,7 +2091,7 @@ namespace IRaCIS.Application.Services
///
- /// 提交表格问题答案 提交病灶
+ /// 提交表格问题答案 提交病灶 保存病灶
///
///
///
@@ -2453,7 +2466,7 @@ namespace IRaCIS.Application.Services
{
IsChangeOtherTask = false,
VisitTaskId = inDto.VisitTaskId,
- ComputationTrigger = ComputationTrigger.Lesion,
+ ComputationTrigger = inDto.ComputationTrigger,
});
// 保存完了计算疾病进展
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs
index 9939c4886..348d0815e 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs
@@ -154,7 +154,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
IsChangeOtherTask = false,
VisitTaskId = inDto.VisitTaskId,
- ComputationTrigger = ComputationTrigger.Report,
+ ComputationTrigger = ComputationTrigger.InitialCalculation,
});
}
}
@@ -209,7 +209,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
await service.CalculateTask(new CalculateTaskInDto()
{
- ComputationTrigger= ComputationTrigger.Report,
+ ComputationTrigger= ComputationTrigger.InitialCalculation,
VisitTaskId = inDto.VisitTaskId
});
}
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs
index 42424c3dc..921d1f8a8 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs
@@ -513,88 +513,81 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
List calculateList = new List()
{
- /*
- * 保存影像质量问题
- * 如果:不正常:PET-CT不能融合, FDG-PET的评估设置为NE
- *
- * 保存二维页面病灶
- *
- * 保存
- *
- *
- *
- */
-
// 是否存在Pet
- new ReadingCalculateData (){QuestionType=QuestionType.ExistPET,GetStringFun=GetExistPET},
+ new ReadingCalculateData (){QuestionType=QuestionType.ExistPET,GetStringFun=GetExistPET ,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, } },
//垂直径乘积之和(SPD)
- new ReadingCalculateData (){QuestionType=QuestionType.SPD,GetDecimalFun=GetSPD},
+ new ReadingCalculateData (){QuestionType=QuestionType.SPD,GetDecimalFun=GetSPD,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.CTSave,ComputationTrigger.RemoveLesion,}},
// 与基线相比SPD变化的百分比
- new ReadingCalculateData (){QuestionType=QuestionType.SPDChange,GetStringFun=CompareBaselineSPD},
+ new ReadingCalculateData (){QuestionType=QuestionType.SPDChange,GetStringFun=CompareBaselineSPD,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.CTSave,ComputationTrigger.RemoveLesion,}},
+
+ // 脾脏垂直径
+ new ReadingCalculateData (){QuestionType=QuestionType.SpleenLength,GetDecimalNullFun=GetSpleenLength,ComputationTriggerList=new List(){ ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,}},
// 与基线相比脾肿大增加的百分比
- new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusChange,GetStringFun=GetSplenoncusChange},
+ new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusChange,GetStringFun=GetSplenoncusChange,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,}},
// 与最低点相比脾脏垂直径长度的增加值
- new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusAdd,GetStringFun=GetSplenoncusAdd},
+ new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusAdd,GetStringFun=GetSplenoncusAdd,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,}},
// 与基线相比脾垂直径变化值
- new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusDiameterChange,GetStringFun=GetSplenoncusDiameterChange},
+ new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusDiameterChange,GetStringFun=GetSplenoncusDiameterChange,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,}},
// 脾肿垂直径最低点访视
- new ReadingCalculateData (){QuestionType=QuestionType.LowestSplenoncusVisit,GetStringFun=GetLowestSplenoncusVisit},
+ new ReadingCalculateData (){QuestionType=QuestionType.LowestSplenoncusVisit,GetStringFun=GetLowestSplenoncusVisit,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,}},
+
+ // 获取脾脏状态
+ new ReadingCalculateData (){QuestionType=QuestionType.SplenicStatus,GetStringFun=GetSplenicStatus,ComputationTriggerList=new List(){ ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,}},
// 获取脾脏评估
- new ReadingCalculateData (){QuestionType=QuestionType.SplenicEvaluation,GetStringFun=GetSplenicEvaluation},
+ new ReadingCalculateData (){QuestionType=QuestionType.SplenicEvaluation,GetStringFun=GetSplenicEvaluation,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,ComputationTrigger.SplenicEvaluation,}},
//靶病灶评估
- new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetTargetLesionEvaluate},
+ new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetTargetLesionEvaluate,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.CTSave,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,ComputationTrigger.MergeLesion,}},
//非靶病灶评估
- new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetNoTargetLesionEvaluate},
+ new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetNoTargetLesionEvaluate,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.CTSave,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
//新病灶评估
- new ReadingCalculateData (){QuestionType=QuestionType.NewLesionEvaluation,GetStringFun=GetNewLesionEvaluate},
+ new ReadingCalculateData (){QuestionType=QuestionType.NewLesionEvaluation,GetStringFun=GetNewLesionEvaluate,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.CTSave,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
//获取肝脏评估
- new ReadingCalculateData (){QuestionType=QuestionType.LiverAssessment,GetStringFun=GetLiverAssessment},
+ new ReadingCalculateData (){QuestionType=QuestionType.LiverAssessment,GetStringFun=GetLiverAssessment,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.LiverStatus,}},
- // // 骨髓中是否存在局灶性 FDG亲和病灶的证据
- //new ReadingCalculateData (){QuestionType=QuestionType.EvidenceFocalFDG,GetStringFun=GetEvidenceFocalFDG,ComputationTrigger=ComputationTrigger.Lesion},
+ // 骨髓中是否存在局灶性 FDG亲和病灶的证据
+ new ReadingCalculateData (){QuestionType=QuestionType.EvidenceFocalFDG,GetStringFun=GetEvidenceFocalFDG,ComputationTriggerList=new List(){ }},
//CT/MRI
- new ReadingCalculateData (){QuestionType=QuestionType.CTandMRI,GetStringFun=CTMRIEvaluation},
+ new ReadingCalculateData (){QuestionType=QuestionType.CTandMRI,GetStringFun=CTMRIEvaluation,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.LiverStatus,ComputationTrigger.SplenicApexPosition,ComputationTrigger.PositionSpleenFloor,ComputationTrigger.SplenicEvaluation,ComputationTrigger.CTSave,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,ComputationTrigger.MergeLesion,}},
// PET 5PS评分
- new ReadingCalculateData (){QuestionType=QuestionType.PET5PS,GetStringFun=GetPET5PS,ComputationTrigger=ComputationTrigger.Lesion},
+ new ReadingCalculateData (){QuestionType=QuestionType.PET5PS,GetStringFun=GetPET5PS,ComputationTriggerList=new List(){ ComputationTrigger.ImageQuality, ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,} },
// 修改PET 5PS评分备注
- new ReadingCalculateData (){QuestionType=QuestionType.PSScoreRemarks,GetStringFun=GetPET5PSRemark,ComputationTrigger=ComputationTrigger.Lesion},
+ new ReadingCalculateData (){QuestionType=QuestionType.PSScoreRemarks,GetStringFun=GetPET5PSRemark,ComputationTriggerList=new List(){ ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
//与基线相比摄取值变化
- new ReadingCalculateData (){QuestionType=QuestionType.UptakeChange,GetStringFun=GetUptakeChange,ComputationTrigger=ComputationTrigger.Lesion},
+ new ReadingCalculateData (){QuestionType=QuestionType.UptakeChange,GetStringFun=GetUptakeChange,ComputationTriggerList=new List(){ ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
// FDG-PET 评估结果
- new ReadingCalculateData (){QuestionType=QuestionType.FDGPET,GetStringFun=GetFDGPETOverallAssessment},
+ new ReadingCalculateData (){QuestionType=QuestionType.FDGPET,GetStringFun=GetFDGPETOverallAssessment,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.ImageQuality, ComputationTrigger.LiverBloodPool,ComputationTrigger.MediastinalPool,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,ComputationTrigger.PDGPET,}},
// 上一次 FDG-PET 评估结果
- new ReadingCalculateData (){QuestionType=QuestionType.LastFDGPET,GetStringFun=GetLastFDGPETOverallAssessment},
+ new ReadingCalculateData (){QuestionType=QuestionType.LastFDGPET,GetStringFun=GetLastFDGPETOverallAssessment,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
// 影像学整体肿瘤评估
- new ReadingCalculateData (){QuestionType=QuestionType.ImgOncology,GetStringFun=GetImgOncology},
+ new ReadingCalculateData (){QuestionType=QuestionType.ImgOncology,GetStringFun=GetImgOncology,ComputationTriggerList=new List(){ 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},
+ new ReadingCalculateData (){QuestionType=QuestionType.SUVmax,GetDecimalNullFun=GetSuvMax,ComputationTriggerList=new List(){ ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
// SUVmax所在病灶
- new ReadingCalculateData (){QuestionType=QuestionType.SUVmaxLesion,GetStringFun=GetSuvMaxFocus},
+ new ReadingCalculateData (){QuestionType=QuestionType.SUVmaxLesion,GetStringFun=GetSuvMaxFocus,ComputationTriggerList=new List(){ ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
//是否存在疾病
- new ReadingCalculateData (){QuestionType=QuestionType.ExistDisease,GetStringFun=GetIsExistDisease},
+ new ReadingCalculateData (){QuestionType=QuestionType.ExistDisease,GetStringFun=GetIsExistDisease,ComputationTriggerList=new List(){ ComputationTrigger.InitialCalculation, ComputationTrigger.CTSave,ComputationTrigger.MergeSave,ComputationTrigger.RemoveLesion,}},
@@ -681,7 +674,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}
- calculateList = calculateList.Where(x => x.ComputationTrigger == null || x.ComputationTrigger == inDto.ComputationTrigger).ToList();
+ calculateList = calculateList.Where(x =>x.ComputationTriggerList.Contains(inDto.ComputationTrigger)).ToList();
var typeNAList = new List
{
QuestionType.SODChange,
@@ -2046,13 +2039,42 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
#endregion
- #region 与基线相比SPD变化的百分比
+ #region 脾脏垂直径
///
- /// 与基线相比SPD变化的百分比
+ /// 获取脾脏垂直径
///
///
///
- public async Task CompareBaselineSPD(ReadingCalculateDto inDto)
+ public async Task GetSpleenLength(ReadingCalculateDto inDto)
+ {
+
+ // 脾尖答案
+ var splenicTopAnswer = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SplenicTopPosition).Select(x => x.Answer).FirstOrDefault();
+ // 脾底答案
+ var splenicBottomAnswer = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SplenicBottomPosition).Select(x => x.Answer).FirstOrDefault();
+
+ decimal? spleenLength=null;
+ if (splenicTopAnswer != null && splenicBottomAnswer != null)
+ {
+ spleenLength = splenicTopAnswer.IsNullOrEmptyReturn0() - splenicBottomAnswer.IsNullOrEmptyReturn0();
+ if (spleenLength < 0)
+ {
+ spleenLength = 0 - spleenLength;
+ }
+ return spleenLength;
+ }
+
+ return spleenLength;
+ }
+ #endregion
+
+ #region 与基线相比SPD变化的百分比
+ ///
+ /// 与基线相比SPD变化的百分比
+ ///
+ ///
+ ///
+ public async Task CompareBaselineSPD(ReadingCalculateDto inDto)
{
if (inDto.IsBaseLine)
{
@@ -2400,6 +2422,23 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}
+ ///
+ /// 获取脾脏状态
+ ///
+ ///
+ ///
+ public async Task GetSplenicStatus(ReadingCalculateDto inDto)
+ {
+ var spleenLength= inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefault();
+ if (spleenLength == string.Empty)
+ {
+ return string.Empty;
+ }
+ else
+ {
+ return await GetSplenicState(inDto.VisitTaskId, spleenLength.IsNullOrEmptyReturn0());
+ }
+ }
#region 获取脾脏评估
@@ -2488,12 +2527,52 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
///
public async Task GetPET5PS(ReadingCalculateDto inDto)
{
- //病灶最大SUVmax、肝脏血池、纵膈血池SUVmax未发生改变时,不用计算
+
+ // 如果是保存影像进来 PET-CT不能融合 就是NE
+ if (inDto.ComputationTrigger == ComputationTrigger.ImageQuality)
+ {
+ if (await ImageQualityIsUnableFuse(inDto))
+ {
+ return PET5PSScore.NE.GetEnumInt();
+ }
+ }
+
+ // 如果不是保存肝脏血池和纵隔血池
+ if (inDto.ComputationTrigger != ComputationTrigger.LiverBloodPool && inDto.ComputationTrigger != ComputationTrigger.MediastinalPool)
+ {
+ // 先在数据库查这几个值
+ List needSearchTypes = new List()
+ {
+ QuestionType.SUVmax,
+ QuestionType.PET5PS,
+ };
+
+ var dataBaseDataList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && needSearchTypes.Contains(x.ReadingQuestionTrial.QuestionType)).Select(x => new
+ {
+ x.Answer,
+ x.ReadingQuestionTrial.QuestionType
+ }).ToListAsync(); ;
+
+
+ // 数据库中最大SUVmax
+ var dataBaseSUVmax = dataBaseDataList.Where(x => x.QuestionType == QuestionType.SUVmax).Select(x => x.Answer).FirstIsNullReturnEmpty();
+
+ // 如果SUVmax没变 就不重新计算
+ if (dataBaseSUVmax == (await GetSuvMax(inDto)).ToString())
+ {
+ return dataBaseDataList.Where(x => x.QuestionType == QuestionType.PET5PS).Select(x => x.Answer).FirstIsNullReturnEmpty();
+
+ }
+
+ }
+
+
+
//if (inDto.IsBaseLine)
//{
// return SpleenAssessment.Stabilization.GetEnumInt();
//}
-
+
if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.ExistPET && x.Answer == ReadingYesOrNo.No.GetEnumInt()))
{
return PET5PSScore.NE.GetEnumInt();
@@ -2577,8 +2656,33 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
///
public async Task GetUptakeChange(ReadingCalculateDto inDto)
{
- //PET5ps评分改变时,才计算
- if (inDto.IsBaseLine)
+ //PET5ps评分改变时,才计算
+
+ List needSearchTypes = new List()
+ {
+ QuestionType.PET5PS,
+ QuestionType.UptakeChange,
+ };
+
+ var dataBaseDataList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && needSearchTypes.Contains(x.ReadingQuestionTrial.QuestionType)).Select(x => new
+ {
+ x.Answer,
+ x.ReadingQuestionTrial.QuestionType
+ }).ToListAsync(); ;
+
+
+ // 数据库中PET5ps评分
+ var dataBasePET5ps = dataBaseDataList.Where(x => x.QuestionType == QuestionType.PET5PS).Select(x => x.Answer).FirstIsNullReturnEmpty();
+
+
+ if (dataBasePET5ps == await GetPET5PS(inDto))
+ {
+ return dataBaseDataList.Where(x => x.QuestionType == QuestionType.UptakeChange).Select(x => x.Answer).FirstIsNullReturnEmpty();
+
+ }
+
+
+ if (inDto.IsBaseLine)
{
return SUVChangeVSBaseline.NA.GetEnumInt();
}
@@ -2658,7 +2762,23 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
public async Task GetFDGPETOverallAssessment(ReadingCalculateDto inDto)
{
- if (inDto.IsBaseLine)
+ // 如果是保存影像进来 PET-CT不能融合 就是NE
+ if (inDto.ComputationTrigger == ComputationTrigger.ImageQuality)
+ {
+ if (await ImageQualityIsUnableFuse(inDto))
+ {
+ if (inDto.IsBaseLine)
+ {
+ return FDGPETOverallAssessment.NA.GetEnumInt();
+ }
+ else
+ {
+ return FDGPETOverallAssessment.NE.GetEnumInt();
+ }
+ }
+ }
+
+ if (inDto.IsBaseLine)
{
return FDGPETOverallAssessment.NA.GetEnumInt();
}
diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
index 396877ef7..9e24174f9 100644
--- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
+++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
@@ -2405,21 +2405,81 @@ public enum PET5PSScore
}
- ///
- /// 计算触发
- ///
- public enum ComputationTrigger
- {
- ///
- /// 病灶
- ///
- Lesion=0,
+ ///
+ /// 计算触发 // 用的是SaveQuestionType 这个字典
+ ///
+ public enum ComputationTrigger //SaveQuestionType
+ {
+ ///
+ /// 分裂病灶
+ ///
+ SplitLesions = -6,
- ///
- /// 报告
- ///
- Report=1,
- }
+ ///
+ /// 融合病灶
+ ///
+ MergeLesion = -5,
+
+ ///
+ /// 删除病灶
+ ///
+ RemoveLesion = -4,
+
+ ///
+ /// 融合保存病灶
+ ///
+ MergeSave = -3,
+
+ ///
+ /// CT保存病灶
+ ///
+ CTSave = -2,
+
+ ///
+ /// 初始计算
+ ///
+ InitialCalculation = -1,
+
+ ///
+ /// 保存影像质量
+ ///
+ ImageQuality = 0,
+
+ ///
+ /// 保存PDG-PET
+ ///
+ PDGPET = 1,
+
+ ///
+ /// 测量肝脏血池
+ ///
+ LiverBloodPool = 2,
+
+ ///
+ /// 测量纵膈血池
+ ///
+ MediastinalPool = 3,
+
+ ///
+ /// 标注脾尖位置
+ ///
+ SplenicApexPosition = 4,
+
+ ///
+ /// 标注脾底位置
+ ///
+ PositionSpleenFloor = 5,
+
+ ///
+ /// 保存肝脏状态
+ ///
+ LiverStatus = 6,
+
+ ///
+ /// 保存脾脏评估
+ ///
+ SplenicEvaluation = 7,
+ }
///
/// 新靶病灶评估