diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index df6badcbf..f7b3bc8aa 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -17510,17 +17510,17 @@
- 质疑
+ ����
- 一致性核查
+ һ���Ժ˲�
- 复制
+ ����
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
index cb1f35c6b..6dfb141b8 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
@@ -192,6 +192,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class GetReadingReportEvaluationOutDto
{
+ public Guid? VisitTaskId { get; set; }
public object ReportCalculateResult { get; set; }
@@ -472,6 +473,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid? StudyId { get; set; }
public string StudyInstanceUid { get; set; }
+ public string SopInstanceUid { get; set; }
}
public class GetCustomTagInDto
@@ -566,6 +568,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string Value { get; set; }
public string DictionaryCode { get; set; }
+
+ public bool IsHighlight { get; set; } = false;
}
public class ChartItem
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
index 20e5b109f..e53f97492 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
@@ -457,6 +457,7 @@ namespace IRaCIS.Core.Application.Service
InstanceId = x.InstanceId,
SeriesId = x.SeriesId,
StudyId = x.StudyId,
+ SopInstanceUid = x.Instance.SopInstanceUid,
StudyInstanceUid = x.Instance.StudyInstanceUid,
}).ToListAsync();
@@ -471,6 +472,7 @@ namespace IRaCIS.Core.Application.Service
InstanceId = x.InstanceId,
SeriesId = x.SeriesId,
StudyId = x.StudyId,
+ SopInstanceUid = x.Instance.SopInstanceUid,
StudyInstanceUid = x.Instance.StudyInstanceUid,
}).ToListAsync();
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs
index e99eba672..cc20f70a7 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs
@@ -30,6 +30,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IRepository _readingQuestionTrialRepository,
IRepository _organInfoRepository,
IRepository _readingGlobalTaskInfoRepository,
+ IRepository _readingJudgeInfoRepository,
IRepository _subjectVisitRepository,
IRepository _tumorAssessmentRepository,
IGeneralCalculateService _generalCalculateService,
@@ -508,12 +509,14 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
TrialId = task.TrialId,
VisitTaskId = task.Id,
});
+
+ data.VisitTaskId= task.Id;
}
return data;
}
- EvaluationColumn BuildEvaluationTable(GetReadingReportEvaluationOutDto r1, GetReadingReportEvaluationOutDto r2)
+ async Task BuildEvaluationTable(GetReadingReportEvaluationOutDto r1, GetReadingReportEvaluationOutDto r2)
{
EvaluationColumn result = new EvaluationColumn()
{
@@ -537,6 +540,54 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
break;
}
+ Arm? highlightArm = null;
+ ArbitrationRule? highlightRule = null;
+ decimal? highlightVisitTaskNum = null;
+
+ if (r1.VisitTaskId != null && r2.VisitTaskList != null)
+ {
+ var judgeInfo =await _visitTaskRepository.Where(x => x.SubjectId == inDto.SubjectId && x.TrialReadingCriterionId == inDto.TrialCriterionId
+ && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned
+ && x.ReadingCategory== ReadingCategory.Judge
+
+ ).OrderByDescending(x => x.VisitTaskNum).Include(x=>x.JudgeResultTask).FirstOrDefaultAsync();
+
+
+ if (judgeInfo != null && judgeInfo.JudgeResultTask != null)
+ {
+ if (judgeInfo.JudgeResultTask.ArmEnum == Arm.DoubleReadingArm1
+ || judgeInfo.JudgeResultTask.ArmEnum == Arm.DoubleReadingArm2)
+ {
+ highlightArm = judgeInfo.JudgeResultTask.ArmEnum;
+ highlightRule = criterion.ArbitrationRule;
+ highlightVisitTaskNum = judgeInfo.VisitTaskNum;
+ }
+ }
+ }
+
+ void SetHighlight(List data, Arm arm)
+ {
+ if (highlightArm != arm || highlightVisitTaskNum == null)
+ {
+ return;
+ }
+
+ if (highlightRule == ArbitrationRule.Reading)
+ {
+ for (var index = 0; index < data.Count && index < highlightVisitTaskNum.Value; index++)
+ {
+ data[index].IsHighlight = true;
+ }
+ }
+ else if (highlightRule == ArbitrationRule.Visit)
+ {
+ var index = decimal.ToInt32(decimal.Floor(highlightVisitTaskNum.Value));
+ if (index >= 0 && index < data.Count)
+ {
+ data[index].IsHighlight = true;
+ }
+ }
+ }
result.Evaluation.Add(visitTaskName.Select(x => new EvaluationValue()
@@ -570,6 +621,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
r1data = r1data.Concat(Enumerable.Repeat(new EvaluationValue() { Value = "" }, length))
.Take(length)
.ToList();
+ SetHighlight(r1data, Arm.DoubleReadingArm1);
result.Evaluation.Add(r1data);
@@ -601,6 +653,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
r2data = r2data.Concat(Enumerable.Repeat(new EvaluationValue() { Value = "" }, length))
.Take(length)
.ToList();
+ SetHighlight(r2data, Arm.DoubleReadingArm2);
result.Evaluation.Add(r2data);
}
@@ -679,7 +732,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}
- result.Evaluation = BuildEvaluationTable(r1Data, r2Data);
+ result.Evaluation =await BuildEvaluationTable(r1Data, r2Data);
if (r1Data != null)
{
var r1Target = await BuildTargetChart(r1Data, Arm.DoubleReadingArm1);