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);