diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index fb95d88cd..6abd62171 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -3841,6 +3841,13 @@
+
+
+ 获取报表数据
+
+
+
+
获取阅片报告
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs
index f96cbb832..ba703b0eb 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs
@@ -23,8 +23,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IHttpContextAccessor httpContext,
IOSSService oSSService,
IRepository _readingQuestionCriterionTrialRepository,
- IStringLocalizer _localizer, IUserInfo _userInfo
+ IStringLocalizer _localizer, IUserInfo _userInfo,
+ IRepository _readingTableQuestionAnswerRepository,
+ IRepository _readingTableQuestionTrialRepository,
+ IRepository _readingTableAnswerRowInfoRepository,
+ IRepository _readingQuestionTrialRepository,
+ IRepository _organInfoRepository,
+ IRepository _readingGlobalTaskInfoRepository,
+ IRepository _subjectVisitRepository,
+ IRepository _tumorAssessmentRepository,
+ IGeneralCalculateService _generalCalculateService,
+ IRepository _readingTaskQuestionAnswerRepository,
+ IVisitTaskHelpeService _visitTaskHelpeService,
+ IMapper _mapper
) : BaseService, IReadingCalculateService
{
private ICriterionCalculateService _useCriterion;
@@ -469,7 +481,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
).OrderByDescending(x => x.VisitTaskNum).FirstOrDefaultAsync();
if (task != null)
{
- data = await GetReadingReportEvaluation(new GetReadingReportEvaluationInDto()
+ data = await GetReportsChartData(new GetReadingReportEvaluationInDto()
{
TrialId = task.TrialId,
VisitTaskId = task.Id,
@@ -594,10 +606,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
};
if (negativeToString.Contains(item.QuestionType))
{
- cd.Value.ForEach(item1 =>
- {
- item1 = item1 == "-1" ? string.Empty : item1;
- });
+ cd.Value = cd.Value.Select(item => item == "-1" ? string.Empty : item).ToList();
}
chartList.Add(cd);
}
@@ -666,6 +675,102 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}
+
+ ///
+ /// 获取报表数据
+ ///
+ ///
+ ///
+ private async Task GetReportsChartData(GetReadingReportEvaluationInDto indto)
+ {
+ GetReadingReportEvaluationOutDto result = new GetReadingReportEvaluationOutDto();
+ var isConvertTask = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).Select(x => x.IsConvertedTask).FirstNotNullAsync();
+ var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).FirstNotNullAsync();
+ result.CalculateResult = await this.GetReportVerify(new GetReportVerifyInDto()
+ {
+ VisitTaskId = indto.VisitTaskId,
+ IsConvertTask = isConvertTask,
+ BeforeConvertedTaskId = visitTaskInfo.BeforeConvertedTaskId,
+ });
+
+
+
+
+
+
+
+
+ result.ReadingTaskState = visitTaskInfo.ReadingTaskState;
+ var taskInfoList = await _generalCalculateService.GetReadingReportTaskList(indto.VisitTaskId);
+
+ result.VisitTaskList = taskInfoList;
+
+ var visitTaskIds = taskInfoList.Select(x => x.VisitTaskId).ToList();
+
+ var criterionId = visitTaskInfo.TrialReadingCriterionId;
+ var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId)
+ .ToListAsync();
+ var tableQuestionList = await _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == criterionId).OrderBy(x => x.ShowOrder).ToListAsync();
+ var tableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == indto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
+
+ result.LesionCountList = tableAnsweRowInfos.GroupBy(x => x.LesionType).Select(x => new LesionDto
+ {
+ LesionType = x.Key!.Value,
+ Count = x.ToList().Count()
+ }).ToList();
+
+ var lesionsIndexs = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).GroupBy(x => new { x.QuestionId }).Select(x => new lesionsIndexDto()
+ {
+ QuestionId = x.Key.QuestionId,
+ Rowindexs = x.Select(x => x.RowIndex).Distinct().OrderBy(x => x).ToList()
+
+ }).ToListAsync();
+
+ var answers = await _readingTaskQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync();
+ var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync();
+ var globalanswerList = await _readingGlobalTaskInfoRepository.Where(x => visitTaskIds.Contains(x.TaskId) && x.GlobalVisitTask.TaskState == TaskState.Effect && x.Answer != string.Empty).Select(x => new Globalanswer()
+ {
+ TaskId = x.TaskId,
+ VisitTaskNum = x.GlobalVisitTask.VisitTaskNum,
+ QuestionId = x.QuestionId,
+ Answer = x.Answer
+ }).ToListAsync();
+ var alltableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync();
+ var organIds = alltableAnsweRowInfos.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList();
+ var organInfos = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync();
+
+ var needChangeType = new List() {
+ QuestionMark.Organ,
+ QuestionMark.Location,
+ QuestionMark.Part,
+ };
+
+ // 第一级
+
+ List questions = await _generalCalculateService.GetReadingReportQuestion
+ (
+ questionList,
+ taskInfoList,
+ globalanswerList,
+ answers,
+ tableAnsweRowInfos,
+ tableQuestionList,
+ alltableAnsweRowInfos,
+ tableAnswers,
+ organInfos,
+ needChangeType
+ );
+
+
+
+ result.TaskQuestions = questions;
+
+
+
+ return result;
+
+ }
+
///
/// 获取阅片报告
///