OCT IVUS 修改1
continuous-integration/drone/push Build is passing Details

Test_IRC_Net8
he 2026-03-16 14:46:03 +08:00
parent 02a1ffe8b7
commit 991f1554ec
6 changed files with 123 additions and 44 deletions

View File

@ -8768,6 +8768,11 @@
IVUS测量值导入 IVUS测量值导入
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IVUSMeasuredValue.FrameNumber">
<summary>
帧数
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IVUSMeasuredValue.Emm"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IVUSMeasuredValue.Emm">
<summary> <summary>
外弹力膜面积Emm 外弹力膜面积Emm
@ -8783,6 +8788,11 @@
外弹力膜面积- 管腔面积 外弹力膜面积- 管腔面积
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OCTFCTUploadData.FrameNumber">
<summary>
帧数
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OCTFCTUploadData.FirstData"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OCTFCTUploadData.FirstData">
<summary> <summary>
第一次 第一次

View File

@ -213,20 +213,25 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
///// </summary> ///// </summary>
//public int PlaqueNum { get; set; } //public int PlaqueNum { get; set; }
/// <summary>
/// 帧数
/// </summary>
public decimal? FrameNumber { get; set; }
/// <summary> /// <summary>
/// 外弹力膜面积Emm /// 外弹力膜面积Emm
/// </summary> /// </summary>
public decimal Emm { get; set; } public decimal? Emm { get; set; }
/// <summary> /// <summary>
/// 管腔面积Lumen /// 管腔面积Lumen
/// </summary> /// </summary>
public decimal Lumen { get; set; } public decimal? Lumen { get; set; }
/// <summary> /// <summary>
/// 外弹力膜面积- 管腔面积 /// 外弹力膜面积- 管腔面积
/// </summary> /// </summary>
public decimal EmmSubtractionLumen public decimal? EmmSubtractionLumen
{ {
get get
{ {
@ -244,20 +249,25 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class OCTFCTUploadData public class OCTFCTUploadData
{ {
/// <summary>
/// 帧数
/// </summary>
public decimal? FrameNumber { get; set; }
/// <summary> /// <summary>
/// 第一次 /// 第一次
/// </summary> /// </summary>
public decimal FirstData { get; set; } public decimal? FirstData { get; set; }
/// <summary> /// <summary>
/// 第二次 /// 第二次
/// </summary> /// </summary>
public decimal SecondData { get; set; } public decimal? SecondData { get; set; }
/// <summary> /// <summary>
/// 第三次 /// 第三次
/// </summary> /// </summary>
public decimal ThirdData { get; set; } public decimal? ThirdData { get; set; }
/// <summary> /// <summary>
/// 巨噬细胞浸润测量 /// 巨噬细胞浸润测量
@ -291,7 +301,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public decimal? LipidAngle { get; set; } public decimal? LipidAngle { get; set; }
public decimal Avg { get { public decimal? Avg { get {
return ( FirstData + SecondData + ThirdData) / 3; return ( FirstData + SecondData + ThirdData) / 3;
} } } }

View File

@ -6,6 +6,7 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infra.EFCore.Common;
using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Infrastructure;
using MassTransit; using MassTransit;
using MathNet.Numerics;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; 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())); 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<IVUSMeasuredValue> measuredValueList = new List<IVUSMeasuredValue>(); List<IVUSMeasuredValue> measuredValueList = new List<IVUSMeasuredValue>();
var errorRow = new List<int> { }; var errorRow = new List<int> { };
@ -484,8 +512,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
iVUSMeasuredValue = new IVUSMeasuredValue() iVUSMeasuredValue = new IVUSMeasuredValue()
{ {
//PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()), //PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()),
Emm = getdecimalData(dataTable.Rows[i]["A"].ToString()), FrameNumber = getdecimalEmptyData(dataTable.Rows[i]["A"].ToString()),
Lumen = getdecimalData(dataTable.Rows[i]["B"].ToString()), Emm = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()),
Lumen = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString()),
}; };
} }
catch (Exception) 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(), // 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 // EMM
tableAnswers.Add(new ReadingTableQuestionAnswer() 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, QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId, TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id, VisitTaskId = taskinfo.Id,
@ -579,7 +610,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer() tableAnswers.Add(new ReadingTableQuestionAnswer()
{ {
Answer = lumen, Answer = getStringValue(item.Lumen),
QuestionId = questionInfo.Id, QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId, TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id, VisitTaskId = taskinfo.Id,
@ -590,7 +621,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer() tableAnswers.Add(new ReadingTableQuestionAnswer()
{ {
Answer = emmSubtractionLumen, Answer = getStringValue(item.EmmSubtractionLumen),
QuestionId = questionInfo.Id, QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId, TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id, VisitTaskId = taskinfo.Id,

View File

@ -354,15 +354,16 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
measuredValueList.Add(new OCTFCTUploadData() measuredValueList.Add(new OCTFCTUploadData()
{ {
//PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()), //PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()),
FirstData = getdecimalData(dataTable.Rows[i]["A"].ToString()), FrameNumber = getdecimalEmptyData(dataTable.Rows[i]["A"].ToString()),
SecondData = getdecimalData(dataTable.Rows[i]["B"].ToString()), FirstData = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()),
ThirdData = getdecimalData(dataTable.Rows[i]["C"].ToString()), SecondData = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString()),
MacrophageInfiltrationMeasurement = getNone(dataTable.Rows[i]["D"].ToString()), ThirdData = getdecimalEmptyData(dataTable.Rows[i]["D"].ToString()),
MacrophageInfiltrationAngle = getdecimalEmptyData(dataTable.Rows[i]["E"].ToString() ?? string.Empty), MacrophageInfiltrationMeasurement = getNone(dataTable.Rows[i]["E"].ToString()),
MicrochannelMeasurement = getNone(dataTable.Rows[i]["F"].ToString()), MacrophageInfiltrationAngle = getdecimalEmptyData(dataTable.Rows[i]["F"].ToString() ?? string.Empty),
CholesterolCrystalMeasurement = getNone(dataTable.Rows[i]["G"].ToString()), MicrochannelMeasurement = getNone(dataTable.Rows[i]["G"].ToString()),
LumenAreaMeasurement = getdecimalData(dataTable.Rows[i]["H"].ToString()), CholesterolCrystalMeasurement = getNone(dataTable.Rows[i]["H"].ToString()),
LipidAngle = getdecimalEmptyData(dataTable.Rows[i]["I"].ToString() ?? string.Empty), LumenAreaMeasurement = getdecimalEmptyData(dataTable.Rows[i]["I"].ToString()),
LipidAngle = getdecimalEmptyData(dataTable.Rows[i]["J"].ToString() ?? string.Empty),
}); });
} }
catch (Exception) 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(), // TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.PlaqueNumber).Select(x => x.Id).FirstOrDefault(),
//}); //});
var avg = item.Avg.ToString(); // 帧数
tableAnswers.Add(new ReadingTableQuestionAnswer()
if (taskinfo.TrialReadingCriterion.DigitPlaces != -1)
{ {
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() tableAnswers.Add(new ReadingTableQuestionAnswer()
{ {
Answer = item.FirstData.ToString(), Answer = item.FirstData.DecimalNullToString(digitPlaces),
QuestionId = questionInfo.Id, QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId, TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id, VisitTaskId = taskinfo.Id,
@ -486,7 +492,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer() tableAnswers.Add(new ReadingTableQuestionAnswer()
{ {
Answer = item.SecondData.ToString(), Answer = item.SecondData.DecimalNullToString(digitPlaces),
QuestionId = questionInfo.Id, QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId, TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id, VisitTaskId = taskinfo.Id,
@ -497,7 +503,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer() tableAnswers.Add(new ReadingTableQuestionAnswer()
{ {
Answer = item.ThirdData.ToString(), Answer = item.ThirdData.DecimalNullToString(digitPlaces),
QuestionId = questionInfo.Id, QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId, TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id, VisitTaskId = taskinfo.Id,
@ -508,7 +514,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
tableAnswers.Add(new ReadingTableQuestionAnswer() tableAnswers.Add(new ReadingTableQuestionAnswer()
{ {
Answer = avg, Answer = item.Avg.DecimalNullToString(digitPlaces),
QuestionId = questionInfo.Id, QuestionId = questionInfo.Id,
TrialId = taskinfo.TrialId, TrialId = taskinfo.TrialId,
VisitTaskId = taskinfo.Id, VisitTaskId = taskinfo.Id,

View File

@ -2466,7 +2466,12 @@ namespace IRaCIS.Core.Domain.Share
/// <summary> /// <summary>
/// 斑块到血管开口的距离 /// 斑块到血管开口的距离
/// </summary> /// </summary>
PlaqueToOstiumDistance=1031, PlaqueToOstiumDistance = 1031,
/// <summary>
/// 帧数
/// </summary>
FrameNumber =1032,
/// <summary> /// <summary>
/// 第一次测量 /// 第一次测量

View File

@ -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<ReadingCategory, decimal> TaskNumDic = new Dictionary<ReadingCategory, decimal>() public static Dictionary<ReadingCategory, decimal> TaskNumDic = new Dictionary<ReadingCategory, decimal>()
{ {
{ReadingCategory.Visit, 0 }, {ReadingCategory.Visit, 0 },