diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 833c80a3d..f8f0bee30 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -8768,6 +8768,11 @@
IVUS测量值导入
+
+
+ 帧数
+
+
外弹力膜面积Emm
@@ -8783,6 +8788,11 @@
外弹力膜面积- 管腔面积
+
+
+ 帧数
+
+
第一次
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
index 80c66feed..33c6da229 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
@@ -213,20 +213,25 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/////
//public int PlaqueNum { get; set; }
+ ///
+ /// 帧数
+ ///
+ public decimal? FrameNumber { get; set; }
+
///
/// 外弹力膜面积Emm
///
- public decimal Emm { get; set; }
+ public decimal? Emm { get; set; }
///
/// 管腔面积Lumen
///
- public decimal Lumen { get; set; }
+ public decimal? Lumen { get; set; }
///
/// 外弹力膜面积- 管腔面积
///
- public decimal EmmSubtractionLumen
+ public decimal? EmmSubtractionLumen
{
get
{
@@ -244,20 +249,25 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class OCTFCTUploadData
{
+ ///
+ /// 帧数
+ ///
+ public decimal? FrameNumber { get; set; }
+
///
/// 第一次
///
- public decimal FirstData { get; set; }
+ public decimal? FirstData { get; set; }
///
/// 第二次
///
- public decimal SecondData { get; set; }
+ public decimal? SecondData { get; set; }
///
/// 第三次
///
- public decimal ThirdData { get; set; }
+ public decimal? ThirdData { get; set; }
///
/// 巨噬细胞浸润测量
@@ -291,7 +301,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public decimal? LipidAngle { get; set; }
- public decimal Avg { get {
+ public decimal? Avg { get {
return ( FirstData + SecondData + ThirdData) / 3;
} }
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
index 20a4eebcf..a8d119aaa 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
@@ -6,6 +6,7 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore.Common;
using IRaCIS.Core.Infrastructure;
using MassTransit;
+using MathNet.Numerics;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
@@ -473,6 +474,33 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
return decimal.Parse(decimal.Round(decimal.Parse(value ?? "0"), digitPlaces, MidpointRounding.AwayFromZero).ToString("F" + digitPlaces.ToString()));
};
+
+ decimal? getdecimalEmptyData(string value)
+ {
+ if (value == string.Empty)
+ {
+ return null;
+ }
+ return decimal.Parse(decimal.Round(decimal.Parse(value ?? "0"), digitPlaces, MidpointRounding.AwayFromZero).ToString("F" + digitPlaces.ToString()));
+ }
+
+ string getStringValue(decimal? value)
+ {
+ if (value == null)
+ {
+ return string.Empty;
+ }
+ if (digitPlaces == -1)
+ {
+ return value.Value.ToString();
+ }
+ else
+ {
+ return decimal.Round(value.Value, digitPlaces, MidpointRounding.AwayFromZero).ToString("F" + digitPlaces.ToString());
+ }
+
+ }
+
List measuredValueList = new List();
var errorRow = new List { };
@@ -484,8 +512,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
iVUSMeasuredValue = new IVUSMeasuredValue()
{
//PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()),
- Emm = getdecimalData(dataTable.Rows[i]["A"].ToString()),
- Lumen = getdecimalData(dataTable.Rows[i]["B"].ToString()),
+ FrameNumber = getdecimalEmptyData(dataTable.Rows[i]["A"].ToString()),
+ Emm = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()),
+ Lumen = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString()),
};
}
catch (Exception)
@@ -553,22 +582,24 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.PlaqueNumber).Select(x => x.Id).FirstOrDefault(),
//});
- var emm = item.Emm.ToString();
- var lumen=item.Lumen.ToString();
- var emmSubtractionLumen = item.EmmSubtractionLumen.ToString();
-
- if (taskinfo.TrialReadingCriterion.DigitPlaces != -1)
- {
-
- emm = decimal.Round(decimal.Parse(emm ?? "0"), digitPlaces, MidpointRounding.AwayFromZero).ToString("F" + digitPlaces.ToString());
- lumen = decimal.Round(decimal.Parse(lumen ?? "0"), digitPlaces, MidpointRounding.AwayFromZero).ToString("F" + digitPlaces.ToString());
- emmSubtractionLumen = decimal.Round(decimal.Parse(emmSubtractionLumen ?? "0"), digitPlaces, MidpointRounding.AwayFromZero).ToString("F" + digitPlaces.ToString());
- }
+
// EMM
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
- Answer = emm,
+ Answer = getStringValue(item.FrameNumber),
+ QuestionId = questionInfo.Id,
+ TrialId = taskinfo.TrialId,
+ VisitTaskId = taskinfo.Id,
+ RowId = newRowId,
+ RowIndex = maxnum,
+ TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.FrameNumber).Select(x => x.Id).FirstOrDefault(),
+ });
+
+ // EMM
+ tableAnswers.Add(new ReadingTableQuestionAnswer()
+ {
+ Answer = getStringValue(item.Emm),
QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id,
@@ -579,7 +610,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
- Answer = lumen,
+ Answer = getStringValue(item.Lumen),
QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id,
@@ -590,7 +621,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
- Answer = emmSubtractionLumen,
+ Answer = getStringValue(item.EmmSubtractionLumen),
QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id,
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
index f84acadca..a74ae2b33 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
@@ -354,15 +354,16 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
measuredValueList.Add(new OCTFCTUploadData()
{
//PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()),
- FirstData = getdecimalData(dataTable.Rows[i]["A"].ToString()),
- SecondData = getdecimalData(dataTable.Rows[i]["B"].ToString()),
- ThirdData = getdecimalData(dataTable.Rows[i]["C"].ToString()),
- MacrophageInfiltrationMeasurement = getNone(dataTable.Rows[i]["D"].ToString()),
- MacrophageInfiltrationAngle = getdecimalEmptyData(dataTable.Rows[i]["E"].ToString() ?? string.Empty),
- MicrochannelMeasurement = getNone(dataTable.Rows[i]["F"].ToString()),
- CholesterolCrystalMeasurement = getNone(dataTable.Rows[i]["G"].ToString()),
- LumenAreaMeasurement = getdecimalData(dataTable.Rows[i]["H"].ToString()),
- LipidAngle = getdecimalEmptyData(dataTable.Rows[i]["I"].ToString() ?? string.Empty),
+ FrameNumber = getdecimalEmptyData(dataTable.Rows[i]["A"].ToString()),
+ FirstData = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()),
+ SecondData = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString()),
+ ThirdData = getdecimalEmptyData(dataTable.Rows[i]["D"].ToString()),
+ MacrophageInfiltrationMeasurement = getNone(dataTable.Rows[i]["E"].ToString()),
+ MacrophageInfiltrationAngle = getdecimalEmptyData(dataTable.Rows[i]["F"].ToString() ?? string.Empty),
+ MicrochannelMeasurement = getNone(dataTable.Rows[i]["G"].ToString()),
+ CholesterolCrystalMeasurement = getNone(dataTable.Rows[i]["H"].ToString()),
+ LumenAreaMeasurement = getdecimalEmptyData(dataTable.Rows[i]["I"].ToString()),
+ LipidAngle = getdecimalEmptyData(dataTable.Rows[i]["J"].ToString() ?? string.Empty),
});
}
catch (Exception)
@@ -463,19 +464,24 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.PlaqueNumber).Select(x => x.Id).FirstOrDefault(),
//});
- var avg = item.Avg.ToString();
-
-
- if (taskinfo.TrialReadingCriterion.DigitPlaces != -1)
+ // 帧数
+ tableAnswers.Add(new ReadingTableQuestionAnswer()
{
- avg = decimal.Round(decimal.Parse(avg ?? "0"), digitPlaces, MidpointRounding.AwayFromZero).ToString("F" + digitPlaces.ToString());
-
- }
+ Answer = item.FrameNumber.DecimalNullToString(digitPlaces),
+ QuestionId = questionInfo.Id,
+ TrialId = taskinfo.TrialId,
+ VisitTaskId = taskinfo.Id,
+ RowId = newRowId,
+ RowIndex = maxnum,
+ TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.FrameNumber).Select(x => x.Id).FirstOrDefault(),
+ });
+
+
// 第一次
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
- Answer = item.FirstData.ToString(),
+ Answer = item.FirstData.DecimalNullToString(digitPlaces),
QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id,
@@ -486,7 +492,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
- Answer = item.SecondData.ToString(),
+ Answer = item.SecondData.DecimalNullToString(digitPlaces),
QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id,
@@ -497,7 +503,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
- Answer = item.ThirdData.ToString(),
+ Answer = item.ThirdData.DecimalNullToString(digitPlaces),
QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id,
@@ -508,7 +514,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
- Answer = avg,
+ Answer = item.Avg.DecimalNullToString(digitPlaces),
QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id,
diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
index b8cd392f9..b6539dfaa 100644
--- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
+++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
@@ -2466,7 +2466,12 @@ namespace IRaCIS.Core.Domain.Share
///
/// 斑块到血管开口的距离
///
- PlaqueToOstiumDistance=1031,
+ PlaqueToOstiumDistance = 1031,
+
+ ///
+ /// 帧数
+ ///
+ FrameNumber =1032,
///
/// 第一次测量
diff --git a/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs
index 8a835bc1f..7d632c633 100644
--- a/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs
+++ b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs
@@ -131,6 +131,23 @@ namespace IRaCIS.Core.Infra.EFCore.Common
}
}
+ public static string DecimalNullToString (this decimal? value,int ? digitPlaces)
+ {
+ digitPlaces = digitPlaces ?? 0;
+ if (value==null)
+ {
+ return string.Empty;
+ }
+ if (digitPlaces == -1)
+ {
+ return value.Value.ToString();
+ }
+ else
+ {
+ return decimal.Round(value.Value, digitPlaces.Value, MidpointRounding.AwayFromZero).ToString("F" + digitPlaces.ToString());
+ }
+ }
+
public static Dictionary TaskNumDic = new Dictionary()
{
{ReadingCategory.Visit, 0 },