图表修改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
5725e684c0
commit
9d7bd3c35b
|
|
@ -3834,6 +3834,13 @@
|
|||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.ReadingCalculateService.GetReportsChartSummary(IRaCIS.Core.Application.Service.Reading.Dto.GetReportsChartSummaryInDto)">
|
||||
<summary>
|
||||
获取报告图表汇总
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.ReadingCalculateService.GetReadingReportEvaluation(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingReportEvaluationInDto)">
|
||||
<summary>
|
||||
获取阅片报告
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using Newtonsoft.Json;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
|
@ -198,9 +198,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
public GetReportVerifyOutDto CalculateResult { get; set; }
|
||||
public ReadingTaskState ReadingTaskState { get; set; }
|
||||
|
||||
public List<VisitTaskInfo> VisitTaskList { get; set; }
|
||||
public List<VisitTaskInfo> VisitTaskList { get; set; } =new List<VisitTaskInfo> { };
|
||||
|
||||
public List<ReadingReportDto> TaskQuestions { get; set; }
|
||||
public List<ReadingReportDto> TaskQuestions { get; set; } =new List<ReadingReportDto> { };
|
||||
|
||||
public List<LesionDto> LesionCountList { get; set; } = new List<LesionDto>();
|
||||
|
||||
|
|
@ -507,7 +507,27 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
}
|
||||
|
||||
public class GetReportsChartSummaryOutDto
|
||||
{
|
||||
{
|
||||
public EvaluationColumn Evaluation { get; set; }
|
||||
public List<ChartItem> Charts { get; set; } = new List<ChartItem>();
|
||||
}
|
||||
|
||||
|
||||
public class EvaluationColumn
|
||||
{
|
||||
public List<List<string>> Evaluation { get; set; }
|
||||
public string DictionaryCode { get; set; }
|
||||
}
|
||||
|
||||
public class ChartItem
|
||||
{
|
||||
public Arm Arm { get; set; }
|
||||
public ReportChartType? ChartType { get; set; }
|
||||
public string GroupName { get; set; }
|
||||
public ValueUnit? Unit { get; set; }
|
||||
public List<string> VisitTaskNameList { get; set; } = new List<string>();
|
||||
public List<DateTime?> LatestScanDateList { get; set; } = new List<DateTime?>();
|
||||
public List<ReportChartData> ChartDataList { get; set; } = new List<ReportChartData>();
|
||||
}
|
||||
|
||||
public class GetReportsChartDataInDto
|
||||
|
|
|
|||
|
|
@ -337,7 +337,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
private async Task<GetReportsChartDataOutDto> GetReportsChartTypeData(GetReportsChartTypeDataInDto inDto)
|
||||
{
|
||||
var visitTaskNameList = inDto.Data.VisitTaskList.Select(x => x.BlindName).ToList();
|
||||
GetReportsChartDataOutDto result = new GetReportsChartDataOutDto() { };
|
||||
GetReportsChartDataOutDto result = new GetReportsChartDataOutDto() {
|
||||
|
||||
ChartDataList=new List<ReportChartData>() { },
|
||||
|
||||
};
|
||||
switch (inDto.ReportChartTypeEnum)
|
||||
{
|
||||
case ReportChartType.Target:
|
||||
|
|
@ -458,6 +462,112 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
return data;
|
||||
}
|
||||
|
||||
|
||||
EvaluationColumn BuildEvaluationTable(GetReadingReportEvaluationOutDto r1, GetReadingReportEvaluationOutDto r2)
|
||||
{
|
||||
EvaluationColumn result = new EvaluationColumn()
|
||||
{
|
||||
Evaluation = new List<List<string>>() { }
|
||||
};
|
||||
|
||||
var data = r1.VisitTaskList.Count() > r2.VisitTaskList.Count() ? r1 : r2;
|
||||
var visitTaskName = data.VisitTaskList.Select(x => x.BlindName).ToList();
|
||||
var length = data.VisitTaskList.Count();
|
||||
result.Evaluation.Add(visitTaskName);
|
||||
result.DictionaryCode = data.TaskQuestions.SelectMany(x => x.Childrens).Where(x => x.QuestionType == QuestionType.Tumor).Select(x => x.DictionaryCode).FirstIsNullReturnEmpty();
|
||||
|
||||
var r1data = r1.TaskQuestions.SelectMany(x => x.Childrens).Where(x => x.QuestionType == QuestionType.Tumor).SelectMany(x => x.Answer).Select(x => x.Answer).ToList();
|
||||
r1data = r1data.Concat(Enumerable.Repeat("", length))
|
||||
.Take(length)
|
||||
.ToList();
|
||||
|
||||
result.Evaluation.Add(r1data);
|
||||
|
||||
var r2data = r2.TaskQuestions.SelectMany(x => x.Childrens).Where(x => x.QuestionType == QuestionType.Tumor).SelectMany(x => x.Answer).Select(x => x.Answer).ToList();
|
||||
r2data = r2data.Concat(Enumerable.Repeat("", length))
|
||||
.Take(length)
|
||||
.ToList();
|
||||
|
||||
result.Evaluation.Add(r2data);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
List<ChartItem> BuildShowChartGroups(GetReadingReportEvaluationOutDto data, Arm arm)
|
||||
{
|
||||
var groups = new List<ChartItem>();
|
||||
if (data.TaskQuestions == null || data.VisitTaskList == null) return groups;
|
||||
foreach (var g in data.TaskQuestions)
|
||||
{
|
||||
var items = g.Childrens?.Where(c => c.ShowChartTypeEnum != ShowChartType.NotShow).ToList() ?? new List<ReadingReportDto>();
|
||||
if (items.Count == 0) continue;
|
||||
var chartList = new List<ReportChartData>();
|
||||
foreach (var item in items)
|
||||
{
|
||||
var cd = new ReportChartData
|
||||
{
|
||||
Name = item.QuestionName,
|
||||
Value = item.Answer?.Select(a => a.Answer).ToList() ?? new List<string>()
|
||||
};
|
||||
chartList.Add(cd);
|
||||
}
|
||||
groups.Add(new ChartItem
|
||||
{
|
||||
Arm = arm,
|
||||
ChartType = null,
|
||||
GroupName = g.GroupName,
|
||||
Unit = items.FirstOrDefault()?.Unit,
|
||||
VisitTaskNameList = data.VisitTaskList.Select(x => x.BlindName).ToList(),
|
||||
LatestScanDateList = data.VisitTaskList.Select(x => x.LatestScanDate).ToList(),
|
||||
ChartDataList = chartList
|
||||
});
|
||||
}
|
||||
return groups;
|
||||
}
|
||||
|
||||
async Task<ChartItem> BuildTargetChart(GetReadingReportEvaluationOutDto data, Arm arm)
|
||||
{
|
||||
var item = new ChartItem
|
||||
{
|
||||
Arm = arm,
|
||||
ChartType = ReportChartType.Target,
|
||||
GroupName = "Target",
|
||||
VisitTaskNameList = data.VisitTaskList?.Select(x => x.BlindName).ToList() ?? new List<string>(),
|
||||
LatestScanDateList = data.VisitTaskList?.Select(x => x.LatestScanDate).ToList() ?? new List<DateTime?>(),
|
||||
ChartDataList = new List<ReportChartData>(),
|
||||
};
|
||||
if (data.VisitTaskList != null && data.TaskQuestions != null)
|
||||
{
|
||||
var chart = await GetReportsChartTypeData(new GetReportsChartTypeDataInDto
|
||||
{
|
||||
CriterionType = inDto.CriterionType,
|
||||
Data = data,
|
||||
ReportChartTypeEnum = ReportChartType.Target
|
||||
});
|
||||
item.ChartDataList = chart.ChartDataList;
|
||||
item.Unit = chart.Unit;
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
result.Evaluation = BuildEvaluationTable(r1Data, r2Data);
|
||||
if (r1Data != null)
|
||||
{
|
||||
var r1Target = await BuildTargetChart(r1Data, Arm.DoubleReadingArm1);
|
||||
result.Charts.Add(r1Target);
|
||||
var r1Groups = BuildShowChartGroups(r1Data, Arm.DoubleReadingArm1);
|
||||
result.Charts.AddRange(r1Groups);
|
||||
}
|
||||
|
||||
if (r2Data != null)
|
||||
{
|
||||
var r2Target = await BuildTargetChart(r2Data, Arm.DoubleReadingArm2);
|
||||
result.Charts.Add(r2Target);
|
||||
var r2Groups = BuildShowChartGroups(r2Data, Arm.DoubleReadingArm2);
|
||||
result.Charts.AddRange(r2Groups);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue