Compare commits

...

7 Commits

Author SHA1 Message Date
hang d98d8a0729 放开非肿瘤CDISC导出限制
continuous-integration/drone/push Build is passing Details
2026-03-18 15:56:37 +08:00
he 2ab8323291 OCT修改3
continuous-integration/drone/push Build is passing Details
2026-03-18 11:00:19 +08:00
he 1ac6bcd79f OCT修改2 2026-03-18 11:00:17 +08:00
he 3eab14960e OCT IVUS 修改1 2026-03-18 11:00:15 +08:00
hang bccb9bbbbb 增加查询条件以及导表修改
continuous-integration/drone/push Build is passing Details
2026-03-09 09:51:27 +08:00
hang fa29e1a53c 修改域名拼写错误
continuous-integration/drone/push Build is passing Details
2026-03-06 15:55:38 +08:00
hang f790193350 增加通知企业微信
continuous-integration/drone/push Build is passing Details
2026-03-06 15:37:05 +08:00
10 changed files with 157 additions and 50 deletions

View File

@ -8729,6 +8729,11 @@
IVUS测量值导入
</summary>
</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">
<summary>
外弹力膜面积Emm
@ -8744,6 +8749,11 @@
外弹力膜面积- 管腔面积
</summary>
</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">
<summary>
第一次

View File

@ -984,7 +984,7 @@ namespace IRaCIS.Core.Application.Service.Common
var query = _subjectVisitRepository.Where(x => x.TrialId == inQuery.TrialId)
.Where(t => t.Subject.IsSubjectQuit == false || t.SubmitState >= SubmitStateEnum.ToSubmit)
.WhereIf(inQuery.SubjectStatus != null, t => t.Subject.Status == inQuery.SubjectStatus)
.Where(t => t.Subject.FinalSubjectVisitId != null ? t.VisitNum <= t.Subject.FinalSubjectVisit.VisitNum : true)
.WhereIf(inQuery.TrialSiteId != null, t => t.TrialSiteId == inQuery.TrialSiteId)
.WhereIf(inQuery.SubjectId != null, t => t.Subject.Id == inQuery.SubjectId)
@ -1034,7 +1034,7 @@ namespace IRaCIS.Core.Application.Service.Common
var query = _subjectVisitRepository.Where(x => x.TrialId == inQuery.TrialId)
.Where(t => t.Subject.IsSubjectQuit == false || t.AuditState > AuditStateEnum.ToAudit)
.WhereIf(inQuery.SubjectStatus != null, t => t.Subject.Status == inQuery.SubjectStatus)
.WhereIf(inQuery.VisitId != null, t => t.Id == inQuery.VisitId)
.WhereIf(inQuery.CurrentActionUserId != null, t => t.CurrentActionUserId == inQuery.CurrentActionUserId)
.WhereIf(inQuery.ChallengeState != null, t => t.ChallengeState == inQuery.ChallengeState)
@ -2774,7 +2774,7 @@ namespace IRaCIS.Core.Application.Service.Common
{
list.Add(new ExportDocumentDes() { Code = StaticData.Export.IVUS_CDISC_Export, ExportCatogory = ExportResult.IVUS_CDISC_Export });
}
if (criterion.CriterionGroup != CriterionGroup.Tumor && criterion.CriterionType != CriterionType.OCT && criterion.CriterionType != CriterionType.IVUS)
if (criterion.CriterionGroup != CriterionGroup.Tumor /*&& criterion.CriterionType != CriterionType.OCT && criterion.CriterionType != CriterionType.IVUS*/)
{
list.Add(new ExportDocumentDes() { Code = StaticData.Export.CDISC_Reading_Export, ExportCatogory = ExportResult.NoneTumorCDISC });
}

View File

@ -60,6 +60,8 @@ namespace IRaCIS.Core.Application.Contracts
public string[]? VisitPlanArray { get; set; }
public bool? IsSubjectQuit { get; set; }
public SubjectStatus? SubjectStatus { get; set; }
}
public class GetNextQCInfoInDto
@ -98,6 +100,8 @@ namespace IRaCIS.Core.Application.Contracts
public DateTime? EndAuditTime { get; set; }
public SubjectStatus? SubjectStatus { get; set; }
public bool? IsSubjectQuit { get; set; }
}

View File

@ -85,6 +85,7 @@ namespace IRaCIS.Core.Application.Image.QA
var svExpression = QCCommon.GetSubjectVisitFilter(inQuery.VisitPlanArray);
var query = _subjectVisitRepository.Where(x => x.TrialId == inQuery.TrialId)
.WhereIf(inQuery.SubjectStatus != null, t => t.Subject.Status == inQuery.SubjectStatus)
.Where(t => !(t.Subject.Status == SubjectStatus.EndOfVisit && t.SubmitState == SubmitStateEnum.None && !t.Subject.SubjectVisitList.Any(c => c.VisitNum > t.VisitNum && c.SubmitState > SubmitStateEnum.None)))
.Where(t => t.Subject.FinalSubjectVisitId != null ? t.VisitNum <= t.Subject.FinalSubjectVisit.VisitNum : true)
.WhereIf(inQuery.TrialSiteId != null, t => t.TrialSiteId == inQuery.TrialSiteId)
@ -280,6 +281,7 @@ namespace IRaCIS.Core.Application.Image.QA
.WhereIf(inQuery.ChallengeState != null, t => t.ChallengeState == inQuery.ChallengeState)
.WhereIf(inQuery.TrialSiteId != null, t => t.TrialSiteId == inQuery.TrialSiteId)
.WhereIf(inQuery.SubjectId != null, t => t.Subject.Id == inQuery.SubjectId)
.WhereIf(inQuery.SubjectStatus != null, t => t.Subject.Status == inQuery.SubjectStatus)
.WhereIf(inQuery.IsSubjectQuit != null, t => t.Subject.IsSubjectQuit == inQuery.IsSubjectQuit)
.WhereIf(!string.IsNullOrEmpty(inQuery.SubjectInfo), t => /*t.Subject.FirstName.Contains(subjectInfo) || t.Subject.LastName.Contains(subjectInfo) ||*/ t.Subject.Code.Contains(inQuery.SubjectInfo))
.WhereIf(inQuery.VisitPlanArray != null && inQuery.VisitPlanArray?.Length > 0, svExpression)

View File

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

View File

@ -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<IVUSMeasuredValue> measuredValueList = new List<IVUSMeasuredValue>();
var errorRow = new List<int> { };
@ -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 = dataTable.Rows[i]["A"].ToString()??string.Empty,
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 = 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,

View File

@ -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 = dataTable.Rows[i]["A"].ToString() ?? string.Empty,
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,
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,

View File

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

View File

@ -131,6 +131,38 @@ namespace IRaCIS.Core.Infra.EFCore.Common
}
}
public static string IntNullToString(this int? value)
{
if (value == null)
{
return string.Empty;
}
else
{
return value.Value.ToString();
}
}
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>()
{
{ReadingCategory.Visit, 0 },

View File

@ -16,9 +16,16 @@ server:
from_secret: test_ssh_pwd
steps:
- name: build-uat-irc
commands:
- bash /opt/1panel/xc-deploy-new/Uat_IRC/devops-publish/uat-branch-publish.sh
- name: publish-test-irc
commands:
- bash /opt/1panel/xc-deploy-new/Uat_IRC/devops-publish/uat-branch-publish.sh
- name: notify-wecom
commands:
- bash /opt/1panel/xc-deploy-new/devops-center/drone-notify-wecom.sh "$DRONE_BUILD_STATUS" "$DRONE_REPO_NAME" "$DRONE_BRANCH" "$DRONE_BUILD_NUMBER" "4355b98e-1e72-4678-8dfb-2fc6ad0bf449" "$DRONE_COMMIT_MESSAGE" "$DRONE_COMMIT_AUTHOR" "Uat_IRC_API Uat_IRC_SCP_API" "irc.uat.extimaging.com"
when:
status:
- success
- failure
trigger:
branch: