diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 302b2bed9..7d3d1cd21 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -1761,6 +1761,11 @@
基线任务Id
+
+
+ 影像是否无法融合
+
+
删除病灶获取起始病灶序号(RECIST1Point1 固定是1)
@@ -1811,6 +1816,13 @@
+
+
+ 获取影像是否无法融合
+
+
+
+
获取报告整体整体评估
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs
index 3c40540ca..bce37b092 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs
@@ -111,7 +111,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
///
private Guid? BaseLineTaskId;
- private string nAString = "NA";
+ ///
+ /// 影像是否无法融合
+ ///
+ private bool? isUnableFuse;
+
+
+ private string nAString = "NA";
#endregion
#region 删除病灶获取起始病灶序号
@@ -767,13 +773,32 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}
+ ///
+ /// 获取影像是否无法融合
+ ///
+ ///
+ ///
+ public async Task ImageQualityIsUnableFuse(ReadingCalculateDto inDto)
+ {
+ if (isUnableFuse != null)
+ {
+ return isUnableFuse.Value;
+ }
+ else
+ {
+ var imageQualityProblem = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.ImageQualityProblem).Select(x => x.Answer).FirstOrDefault();
+ isUnableFuse = imageQualityProblem == ((int)ImageQualityIssues.PETCTFailureFuse).ToString();
+ return isUnableFuse.Value;
+ }
- ///
- /// 获取报告整体整体评估
- ///
- ///
- ///
- public async Task GetReportTumor(Guid visitTaskId)
+ }
+
+ ///
+ /// 获取报告整体整体评估
+ ///
+ ///
+ ///
+ public async Task GetReportTumor(Guid visitTaskId)
{
return await GetTumor(await _generalCalculateService.GetReadingCalculateDto(visitTaskId));
}
@@ -2428,11 +2453,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
//无需标记,自主选择
else
{
- Console.WriteLine("计算了PET5PS,当前接口" + _userInfo.RequestUrl + "当前结果");
return string.Empty;
}
- Console.WriteLine("计算了PET5PS,当前接口" + _userInfo.RequestUrl+"当前结果"+ result.GetEnumInt());
return result.GetEnumInt();
}
#endregion
diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
index b4bf54ad2..93e01519e 100644
--- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
+++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
@@ -402,39 +402,67 @@ namespace IRaCIS.Core.Domain.Share
Min = 9
}
- ///
- /// 数值单位
- ///
- public enum ValueUnit
- {
- None = 0,
+ ///
+ /// 数值单位
+ ///
+ public enum ValueUnit
+ {
+ ///
+ /// 无
+ ///
+ none = 0,
- ///
- /// MM
- ///
- MM = 1,
+ ///
+ /// mm
+ ///
+ mm = 1,
- ///
- /// CM
- ///
- CM = 2,
+ ///
+ /// cm
+ ///
+ cm = 2,
- ///
- /// 个
- ///
- Individual = 3,
+ ///
+ /// 个
+ ///
+ individual = 3,
- ///
- /// 自定义
- ///
- Custom = 4,
- }
+ ///
+ /// 自定义
+ ///
+ Custom = 4,
+
+ ///
+ /// mm2
+ ///
+ mm2 = 5,
+
+ ///
+ /// mm3
+ ///
+ mm3 = 6,
+
+ ///
+ /// SUV
+ ///
+ SUV = 7,
+
+ ///
+ /// HU
+ ///
+ HU = 8,
+
+ ///
+ /// %
+ ///
+ percentage = 9,
+ }
- ///
- /// 数值类型
- ///
- public enum ValueOfType
+ ///
+ /// 数值类型
+ ///
+ public enum ValueOfType
{
///
@@ -1973,10 +2001,49 @@ public enum SUVChangeVSBaseline
}
- ///
- /// 问题类型 这里序号关系着计算顺序 请勿修改
- ///
- public enum QuestionType
+
+ ///
+ /// 影像质量问题
+ ///
+ public enum ImageQualityIssues
+ {
+ ///
+ /// 解剖不完整
+ ///
+ IncompleteAnatomy = 1,
+
+ ///
+ /// 扫描断层丢失
+ ///
+ MissingScanSlice=2,
+
+ ///
+ /// 存在运动伪影
+ ///
+ MotionArtifactsPresent = 3,
+
+ ///
+ /// 关键解剖部位缺失
+ ///
+ KeyAnatomyOutOfFieldOfView = 4,
+
+ ///
+ /// 其它(需要备注)
+ ///
+ OtherIssuesCommentsRequired=5,
+
+ ///
+ /// PET-CT影像无法融合
+ ///
+ PETCTFailureFuse = 6,
+
+ }
+
+
+ ///
+ /// 问题类型 这里序号关系着计算顺序 请勿修改
+ ///
+ public enum QuestionType
{
///
/// 靶病灶径线之和(SOD)
@@ -2287,6 +2354,11 @@ public enum SUVChangeVSBaseline
/// 脾底位置
///
SplenicBottomPosition = 61,
+
+ ///
+ /// 影像质量问题
+ ///
+ ImageQualityProblem = 67,
}
diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
index 6eefb8d0d..186af7474 100644
--- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
+++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
@@ -2700,7 +2700,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common
// 保存影像质量 、 修改整体肿瘤评估结果 、 非dicom 保存访视阅片结果 、附加评估
if (_userInfo.RequestUrl == "ReadingImageTask/changeDicomReadingQuestionAnswer"
|| _userInfo.RequestUrl == "ReadingImageTask/saveImageQuality"
- || _userInfo.RequestUrl == "ReadingImageTask/saveVisitTaskQuestions"
+ || _userInfo.RequestUrl.Contains("SaveTaskQuestion")
+ || _userInfo.RequestUrl == "ReadingImageTask/saveVisitTaskQuestions"
|| _userInfo.RequestUrl == "ReadingImageTask/changeCalculationAnswer"
|| _userInfo.RequestUrl == "ReadingImageTask/submitTaskAdditionalQuestion")
{
@@ -2718,7 +2719,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common
t.QuestionEnName,
QuestionId = t.Id,
t.DictionaryCode,
- t.ShowOrder,
+ t.Unit,
+ t.ShowOrder,
AnswerType = t.Type,
}).OrderBy(t => t.ShowOrder).ToListAsync();
@@ -2790,8 +2792,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common
}, new
{
- QuestionAnswerList = taskQuestionAnswerList.Join(quesionList, t => t.ReadingQuestionTrialId, u => u.QuestionId, (t, u) =>
- new { Answer = u.AnswerType == "upload" ? "❄❅❆❇❈❉❊" + t.Answer : t.Answer, u.DictionaryCode, u.QuestionName, u.QuestionEnName, u.ShowOrder }).OrderBy(t => t.ShowOrder).ToList()
+ QuestionAnswerList = taskQuestionAnswerList.Join(quesionList,
+ t => t.ReadingQuestionTrialId,
+ u => u.QuestionId,
+ (t, u) =>
+ new { Answer = u.AnswerType == "upload" ? "❄❅❆❇❈❉❊" + t.Answer : t.Answer, u.DictionaryCode, u.QuestionName, u.QuestionEnName, u.ShowOrder }).OrderBy(t => t.ShowOrder).ToList()
,
TableQuestionAndAnswerList = tableQuesionAndAnswerList
}
@@ -2848,9 +2853,15 @@ namespace IRaCIS.Core.Infra.EFCore.Common
originalRowMark = await _dbContext.ReadingTableAnswerRowInfo.Where(t => t.Id == entity.SplitRowId).Select(t => t.RowMark).FirstOrDefaultAsync();
}
- //处理标识 因为触发器在稽查后才进行操作
+ //处理标识 因为触发器在稽查后才进行操作
- entity.RowMark = entity.OrderMark + entity.RowIndex.GetLesionMark();
+ if (entity.OrderMark == string.Empty)
+ {
+ entity.OrderMark = await _dbContext.ReadingQuestionTrial.Where(x => x.Id == entity.QuestionId).Select(x => x.OrderMark).FirstOrDefaultAsync();
+
+ }
+
+ entity.RowMark = entity.OrderMark + entity.RowIndex.GetLesionMark();