From d4bbe47b8147e30bd55429b11640f204964f3637 Mon Sep 17 00:00:00 2001
From: he <109787524@qq.com>
Date: Tue, 4 Aug 2026 13:32:51 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Reading/Dto/ReadingCalculateViewModel.cs | 31 ++++++++++
.../ReadingCalculate/IVUSCalculateService.cs | 61 ++++++++++++++++++-
.../ReadingCalculate/OCTCalculateService.cs | 59 ++++++++++++++++++
IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 5 ++
4 files changed, 155 insertions(+), 1 deletion(-)
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
index ff52940a3..9b98c98cb 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
@@ -250,6 +250,37 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string TaskBlindName { get; set; }
public string SubjectID { get; set; }
+
+ ///
+ /// 靶段
+ ///
+ public string TargetSegment { get; set; }
+
+ ///
+ /// 靶段备注
+ ///
+ public string TargetSegmentRemarks { get; set; }
+
+ ///
+ /// ROI段落总长度
+ ///
+ public string ROIAllLength { get; set; }
+
+ ///
+ /// 回撤中的图像帧数
+ ///
+ public string PullbackFrameCount { get; set; }
+
+ ///
+ /// 斑块类型
+ ///
+ public string PlaqueType { get; set; }
+
+ ///
+ /// 访视点备注(如有)
+ ///
+ public string AdjustReason { get; set; }
+
}
public class OCTFCTUploadData
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
index ed0469fe2..11c01d139 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
@@ -1,4 +1,6 @@
-using IRaCIS.Core.Application.Service.Reading.Dto;
+using DocumentFormat.OpenXml.Spreadsheet;
+using IRaCIS.Core.Application.Interfaces;
+using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Infra.EFCore.Common;
using IRaCIS.Core.Infrastructure;
@@ -6,6 +8,7 @@ using MassTransit;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
@@ -18,6 +21,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IRepository _readingTableAnswerRowInfoRepository,
IRepository _readingQuestionTrialRepository,
IRepository _organInfoRepository,
+ ISubjectVisitService iSubjectVisitService,
+ IRepository _dictionaryRepository,
IRepository _readingGlobalTaskInfoRepository,
IRepository _subjectVisitRepository,
IRepository _tumorAssessmentRepository,
@@ -414,10 +419,64 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x=>x.Subject).FirstNotNullAsync();
+ //靶段
+ var targetSegmentdic = await _dictionaryRepository.Where(x => x.Parent.Code == "TargetSegment").ToListAsync();
+
+ //斑块类型
+ var plaqueTypedic = await _dictionaryRepository.Where(x => x.Parent.Code == "PlaqueType").ToListAsync();
+
+
+
+
+ var awswerList=await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).Include(x=>x.ReadingQuestionTrial).ToListAsync();
+
+
+
+ var targetSegmentAnswer = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.TargetSegment).Select(x => x.Answer).FirstOrDefault() ?? string.Empty;
+ if (targetSegmentAnswer.IsNotNullOrEmpty())
+ {
+ var data= JsonConvert.DeserializeObject>(targetSegmentAnswer);
+ targetSegmentAnswer = string.Join(",", targetSegmentdic
+ .Where(x => data.Contains(x.Code))
+ .Select(x => x.Value));
+ }
+ else
+ {
+ var targetSegmentData = await iSubjectVisitService.GetReadingVisitStudyList(new Contracts.GetReadingVisitStudyListIndto()
+ {
+ SujectVisitId = taskinfo.SourceSubjectVisitId ?? default(Guid),
+ TrialId = taskinfo.TrialId,
+ VisitTaskId = inDto.VisitTaskId
+ });
+ targetSegmentAnswer = string.Join(",", targetSegmentData
+ .Where(x =>x.BodyPartForEdit.IsNotNullOrEmpty())
+ .Select(x => x.BodyPartForEdit));
+ }
+
+
+ var plaqueTypeAnswer = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.PlaqueType).Select(x => x.Answer).FirstOrDefault() ?? string.Empty;
+ if (plaqueTypeAnswer.IsNotNullOrEmpty())
+ {
+ var data = JsonConvert.DeserializeObject>(plaqueTypeAnswer);
+ plaqueTypeAnswer = string.Join(",", plaqueTypedic
+ .Where(x => data.Contains(x.Code))
+ .Select(x => x.Value));
+ }
+
+
var values = new TemplateData()
{
SubjectID = (taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode),
TaskBlindName = taskinfo.TaskBlindName,
+ TargetSegment= targetSegmentAnswer,
+ TargetSegmentRemarks = awswerList.Where(x=>x.ReadingQuestionTrial.QuestionType == QuestionType.TargetSegmentRemarks).Select(x=>x.Answer).FirstOrDefault()??string.Empty,
+ ROIAllLength = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.ROIAllLength).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
+ PullbackFrameCount = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.PullbackFrameCount).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
+ AdjustReason = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.AdjustReason).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
+ PlaqueType = plaqueTypeAnswer,
+
+
+
};
return await _visitTaskHelpeService.ExportTemplateAsync(new IRaCIS.Application.Contracts.ExportTemplateAsyncDto()
{
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
index 862855b7d..8f2bcc7ab 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
@@ -2,6 +2,7 @@
using DocumentFormat.OpenXml.Drawing.Spreadsheet;
using DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.MsForms;
using DocumentFormat.OpenXml.Office2010.Excel;
+using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Models;
@@ -12,6 +13,7 @@ using MassTransit;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
@@ -24,6 +26,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IRepository _readingTableAnswerRowInfoRepository,
IRepository _readingQuestionTrialRepository,
IRepository _organInfoRepository,
+ ISubjectVisitService iSubjectVisitService,
+ IRepository _dictionaryRepository,
IHttpContextAccessor httpContext,
IRepository _readingGlobalTaskInfoRepository,
IRepository _subjectVisitRepository,
@@ -271,10 +275,65 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
public async Task GetOCTFCTTemplate(GetExportTemplateInDto inDto)
{
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.Subject).FirstNotNullAsync();
+
+ //靶段
+ var targetSegmentdic = await _dictionaryRepository.Where(x => x.Parent.Code == "TargetSegment").ToListAsync();
+
+ //斑块类型
+ var plaqueTypedic = await _dictionaryRepository.Where(x => x.Parent.Code == "PlaqueType").ToListAsync();
+
+
+
+
+ var awswerList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).Include(x => x.ReadingQuestionTrial).ToListAsync();
+
+
+
+ var targetSegmentAnswer = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.TargetSegment).Select(x => x.Answer).FirstOrDefault() ?? string.Empty;
+ if (targetSegmentAnswer.IsNotNullOrEmpty())
+ {
+ var data = JsonConvert.DeserializeObject>(targetSegmentAnswer);
+ targetSegmentAnswer = string.Join(",", targetSegmentdic
+ .Where(x => data.Contains(x.Code))
+ .Select(x => x.Value));
+ }
+ else
+ {
+ var targetSegmentData = await iSubjectVisitService.GetReadingVisitStudyList(new Contracts.GetReadingVisitStudyListIndto()
+ {
+ SujectVisitId = taskinfo.SourceSubjectVisitId ?? default(Guid),
+ TrialId = taskinfo.TrialId,
+ VisitTaskId = inDto.VisitTaskId
+ });
+ targetSegmentAnswer = string.Join(",", targetSegmentData
+ .Where(x => x.BodyPartForEdit.IsNotNullOrEmpty())
+ .Select(x => x.BodyPartForEdit));
+ }
+
+
+ var plaqueTypeAnswer = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.PlaqueType).Select(x => x.Answer).FirstOrDefault() ?? string.Empty;
+ if (plaqueTypeAnswer.IsNotNullOrEmpty())
+ {
+ var data = JsonConvert.DeserializeObject>(plaqueTypeAnswer);
+ plaqueTypeAnswer = string.Join(",", plaqueTypedic
+ .Where(x => data.Contains(x.Code))
+ .Select(x => x.Value));
+ }
+
+
var values = new TemplateData()
{
SubjectID = (taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode),
TaskBlindName = taskinfo.TaskBlindName,
+ TargetSegment = targetSegmentAnswer,
+ TargetSegmentRemarks = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.TargetSegmentRemarks).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
+ ROIAllLength = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.ROIAllLength).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
+ //PullbackFrameCount = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.PullbackFrameCount).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
+ AdjustReason = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.AdjustReason).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
+ PlaqueType = plaqueTypeAnswer,
+
+
+
};
return await _visitTaskHelpeService.ExportTemplateAsync(new IRaCIS.Application.Contracts.ExportTemplateAsyncDto()
{
diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
index 2b7eea0f7..8240f31c5 100644
--- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
+++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
@@ -3060,6 +3060,11 @@ namespace IRaCIS.Core.Domain.Share
///
ROIAllLength = 1015,
+ ///
+ /// 斑块类型
+ ///
+ PlaqueType=1018,
+
///
/// PAV(冠状动脉粥样硬化体积百分比)
///
From 5c8ccdf434f3111de580940590fd0684e9990d07 Mon Sep 17 00:00:00 2001
From: he <109787524@qq.com>
Date: Tue, 4 Aug 2026 14:10:22 +0800
Subject: [PATCH 2/5] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ReadingCalculate/IVUSCalculateService.cs | 95 ++++++++++++++++++-
.../ReadingCalculate/OCTCalculateService.cs | 88 ++++++++++++++++-
2 files changed, 181 insertions(+), 2 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
index 11c01d139..51733f545 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
@@ -588,7 +588,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
List measuredValueList = new List();
var errorRow = new List { };
- for (int i = 3; i < dataTable.Rows.Count; i++)
+ for (int i = 8; i < dataTable.Rows.Count; i++)
{
IVUSMeasuredValue iVUSMeasuredValue = new IVUSMeasuredValue() { };
try
@@ -750,7 +750,100 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}
}
+ #region 构造外层问题答案
+ List questionAnswers = new List();
+ var readingQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();
+ var targetSegmentAnswer = dataTable.Rows[2]["B"].ToString();
+
+ if (targetSegmentAnswer.IsNotNullOrEmpty())
+ {
+ var targetSegmentValues = targetSegmentAnswer.Replace(",", ",").Split(",").ToList();
+ var targetSegmentdic = await _dictionaryRepository.Where(x => x.Parent.Code == "TargetSegment").ToListAsync();
+ targetSegmentAnswer = JsonConvert.SerializeObject(targetSegmentdic.Where(x => targetSegmentValues.Contains(x.Value)).Select(x => x.Code).ToList());
+ }
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer= targetSegmentAnswer??string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.TargetSegment).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId= taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = dataTable.Rows[3]["B"].ToString()??string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.TargetSegmentRemarks).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = dataTable.Rows[4]["B"].ToString() ?? string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.ROIAllLength).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = dataTable.Rows[5]["B"].ToString() ?? string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.PullbackFrameCount).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+
+ var plaqueTypeAnswer = dataTable.Rows[6]["B"].ToString();
+
+ if (plaqueTypeAnswer.IsNotNullOrEmpty())
+ {
+ var plaqueTypeAnswerValues = plaqueTypeAnswer.Replace(",", ",").Split(",").ToList();
+ var plaqueTypeAnswerdic = await _dictionaryRepository.Where(x => x.Parent.Code == "PlaqueType").ToListAsync();
+ plaqueTypeAnswer = JsonConvert.SerializeObject(plaqueTypeAnswerdic
+ .Where(x => plaqueTypeAnswerValues.Any(val => x.Value.Contains(val)))
+ .Select(x => x.Code)
+ .ToList());
+ }
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = plaqueTypeAnswer ?? string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.PlaqueType).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = dataTable.Rows[7]["B"].ToString() ?? string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.AdjustReason).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+ var questionids = questionAnswers.Select(x => x.ReadingQuestionTrialId).ToList();
+ await _readingTaskQuestionAnswerRepository.DeleteFromQueryAsync(x => x.VisitTaskId == taskinfo.Id && questionids.Contains(x.ReadingQuestionTrialId));
+ await _readingTableQuestionAnswerRepository.SaveChangesAsync();
+ await _readingTaskQuestionAnswerRepository.AddRangeAsync(questionAnswers);
+ await _readingTaskQuestionAnswerRepository.SaveChangesAsync();
+ #endregion
await _readingTableAnswerRowInfoRepository.DeleteFromQueryAsync(x => x.QuestionId == questionInfo.Id && x.VisitTaskId == taskinfo.Id);
await _readingTableQuestionAnswerRepository.DeleteFromQueryAsync(x => x.QuestionId == questionInfo.Id && x.VisitTaskId == taskinfo.Id);
await _readingTableQuestionAnswerRepository.SaveChangesAsync();
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
index 8f2bcc7ab..5f0d3c305 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
@@ -329,8 +329,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
TargetSegmentRemarks = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.TargetSegmentRemarks).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
ROIAllLength = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.ROIAllLength).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
//PullbackFrameCount = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.PullbackFrameCount).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
- AdjustReason = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.AdjustReason).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
PlaqueType = plaqueTypeAnswer,
+ AdjustReason = awswerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.AdjustReason).Select(x => x.Answer).FirstOrDefault() ?? string.Empty,
+
@@ -723,6 +724,91 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}
}
+
+ #region 构造外层问题答案
+ List questionAnswers = new List();
+
+ var readingQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();
+ var targetSegmentAnswer = dataTable.Rows[2]["B"].ToString();
+
+ if (targetSegmentAnswer.IsNotNullOrEmpty())
+ {
+ var targetSegmentValues = targetSegmentAnswer.Replace(",", ",").Split(",").ToList();
+ var targetSegmentdic = await _dictionaryRepository.Where(x => x.Parent.Code == "TargetSegment").ToListAsync();
+ targetSegmentAnswer = JsonConvert.SerializeObject(targetSegmentdic.Where(x => targetSegmentValues.Contains(x.Value)).Select(x => x.Code).ToList());
+ }
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = targetSegmentAnswer ?? string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.TargetSegment).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = dataTable.Rows[3]["B"].ToString() ?? string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.TargetSegmentRemarks).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = dataTable.Rows[4]["B"].ToString() ?? string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.ROIAllLength).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+
+ var plaqueTypeAnswer = dataTable.Rows[5]["B"].ToString();
+
+ if (plaqueTypeAnswer.IsNotNullOrEmpty())
+ {
+ var plaqueTypeAnswerValues = plaqueTypeAnswer.Replace(",", ",").Split(",").ToList();
+ var plaqueTypeAnswerdic = await _dictionaryRepository.Where(x => x.Parent.Code == "PlaqueType").ToListAsync();
+ plaqueTypeAnswer = JsonConvert.SerializeObject(plaqueTypeAnswerdic
+ .Where(x => plaqueTypeAnswerValues.Any(val => x.Value.Contains(val)))
+ .Select(x => x.Code)
+ .ToList());
+ }
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = plaqueTypeAnswer ?? string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.PlaqueType).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+ questionAnswers.Add(new ReadingTaskQuestionAnswer()
+ {
+ Answer = dataTable.Rows[6]["B"].ToString() ?? string.Empty,
+ ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
+ ReadingQuestionTrialId = readingQuestionList.Where(x => x.QuestionType == QuestionType.AdjustReason).Select(x => x.Id).FirstOrDefault(),
+ TrialId = taskinfo.TrialId,
+ SubjectId = taskinfo.SubjectId,
+ VisitTaskId = taskinfo.Id,
+ });
+
+ var questionids = questionAnswers.Select(x => x.ReadingQuestionTrialId).ToList();
+ await _readingTaskQuestionAnswerRepository.DeleteFromQueryAsync(x => x.VisitTaskId == taskinfo.Id && questionids.Contains(x.ReadingQuestionTrialId));
+ await _readingTableQuestionAnswerRepository.SaveChangesAsync();
+ await _readingTaskQuestionAnswerRepository.AddRangeAsync(questionAnswers);
+ await _readingTaskQuestionAnswerRepository.SaveChangesAsync();
+ #endregion
+
await _readingTableAnswerRowInfoRepository.DeleteFromQueryAsync(x => x.QuestionId == questionInfo.Id && x.VisitTaskId == taskinfo.Id);
await _readingTableQuestionAnswerRepository.DeleteFromQueryAsync(x => x.QuestionId == questionInfo.Id && x.VisitTaskId == taskinfo.Id);
await _readingTableQuestionAnswerRepository.SaveChangesAsync();
From 739f610d4e7ace4ac5544d0783b5ecb58fe93dd5 Mon Sep 17 00:00:00 2001
From: he <109787524@qq.com>
Date: Tue, 4 Aug 2026 14:15:13 +0800
Subject: [PATCH 3/5] =?UTF-8?q?=E5=AD=97=E5=85=B8=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Service/ReadingCalculate/IVUSCalculateService.cs | 8 ++++----
.../Service/ReadingCalculate/OCTCalculateService.cs | 8 ++++----
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
index 51733f545..cc51931d6 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
@@ -438,7 +438,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var data= JsonConvert.DeserializeObject>(targetSegmentAnswer);
targetSegmentAnswer = string.Join(",", targetSegmentdic
.Where(x => data.Contains(x.Code))
- .Select(x => x.Value));
+ .Select(x => x.ValueCN));
}
else
{
@@ -460,7 +460,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var data = JsonConvert.DeserializeObject>(plaqueTypeAnswer);
plaqueTypeAnswer = string.Join(",", plaqueTypedic
.Where(x => data.Contains(x.Code))
- .Select(x => x.Value));
+ .Select(x => x.ValueCN));
}
@@ -760,7 +760,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
var targetSegmentValues = targetSegmentAnswer.Replace(",", ",").Split(",").ToList();
var targetSegmentdic = await _dictionaryRepository.Where(x => x.Parent.Code == "TargetSegment").ToListAsync();
- targetSegmentAnswer = JsonConvert.SerializeObject(targetSegmentdic.Where(x => targetSegmentValues.Contains(x.Value)).Select(x => x.Code).ToList());
+ targetSegmentAnswer = JsonConvert.SerializeObject(targetSegmentdic.Where(x => targetSegmentValues.Contains(x.ValueCN)).Select(x => x.Code).ToList());
}
questionAnswers.Add(new ReadingTaskQuestionAnswer()
@@ -813,7 +813,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var plaqueTypeAnswerValues = plaqueTypeAnswer.Replace(",", ",").Split(",").ToList();
var plaqueTypeAnswerdic = await _dictionaryRepository.Where(x => x.Parent.Code == "PlaqueType").ToListAsync();
plaqueTypeAnswer = JsonConvert.SerializeObject(plaqueTypeAnswerdic
- .Where(x => plaqueTypeAnswerValues.Any(val => x.Value.Contains(val)))
+ .Where(x => plaqueTypeAnswerValues.Any(val => x.ValueCN.Contains(val)))
.Select(x => x.Code)
.ToList());
}
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
index 5f0d3c305..c10997fda 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
@@ -295,7 +295,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var data = JsonConvert.DeserializeObject>(targetSegmentAnswer);
targetSegmentAnswer = string.Join(",", targetSegmentdic
.Where(x => data.Contains(x.Code))
- .Select(x => x.Value));
+ .Select(x => x.ValueCN));
}
else
{
@@ -317,7 +317,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var data = JsonConvert.DeserializeObject>(plaqueTypeAnswer);
plaqueTypeAnswer = string.Join(",", plaqueTypedic
.Where(x => data.Contains(x.Code))
- .Select(x => x.Value));
+ .Select(x => x.ValueCN));
}
@@ -735,7 +735,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
var targetSegmentValues = targetSegmentAnswer.Replace(",", ",").Split(",").ToList();
var targetSegmentdic = await _dictionaryRepository.Where(x => x.Parent.Code == "TargetSegment").ToListAsync();
- targetSegmentAnswer = JsonConvert.SerializeObject(targetSegmentdic.Where(x => targetSegmentValues.Contains(x.Value)).Select(x => x.Code).ToList());
+ targetSegmentAnswer = JsonConvert.SerializeObject(targetSegmentdic.Where(x => targetSegmentValues.Contains(x.ValueCN)).Select(x => x.Code).ToList());
}
questionAnswers.Add(new ReadingTaskQuestionAnswer()
@@ -777,7 +777,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var plaqueTypeAnswerValues = plaqueTypeAnswer.Replace(",", ",").Split(",").ToList();
var plaqueTypeAnswerdic = await _dictionaryRepository.Where(x => x.Parent.Code == "PlaqueType").ToListAsync();
plaqueTypeAnswer = JsonConvert.SerializeObject(plaqueTypeAnswerdic
- .Where(x => plaqueTypeAnswerValues.Any(val => x.Value.Contains(val)))
+ .Where(x => plaqueTypeAnswerValues.Any(val => x.ValueCN.Contains(val)))
.Select(x => x.Code)
.ToList());
}
From c5eaf847cc1644e04e06d03f634e40872059f464 Mon Sep 17 00:00:00 2001
From: he <109787524@qq.com>
Date: Tue, 4 Aug 2026 14:27:46 +0800
Subject: [PATCH 4/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A1=8C=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Service/ReadingCalculate/IVUSCalculateService.cs | 2 +-
.../Service/ReadingCalculate/OCTCalculateService.cs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
index cc51931d6..672413414 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
@@ -588,7 +588,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
List measuredValueList = new List();
var errorRow = new List { };
- for (int i = 8; i < dataTable.Rows.Count; i++)
+ for (int i = 9; i < dataTable.Rows.Count; i++)
{
IVUSMeasuredValue iVUSMeasuredValue = new IVUSMeasuredValue() { };
try
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
index c10997fda..9f949fe33 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
@@ -416,7 +416,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
return value;
}
}
- for (int i = 3; i < dataTable.Rows.Count; i++)
+ for (int i = 8; i < dataTable.Rows.Count; i++)
{
try
{
From ef7f0ebc4a434521574230203f9cb3176ccf5042 Mon Sep 17 00:00:00 2001
From: he <109787524@qq.com>
Date: Tue, 4 Aug 2026 14:32:19 +0800
Subject: [PATCH 5/5] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8F=91=E5=B8=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Service/ReadingCalculate/OCTCalculateService.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
index 9f949fe33..e5bdc061b 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
@@ -421,6 +421,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
try
{
+
// 手动抛出异常进入catch
if (!yesOrNo.ContainsKey(dataTable.Rows[i]["K"].ToString())|| !yesOrNo.ContainsKey(dataTable.Rows[i]["L"].ToString()))
{