This commit is contained in:
he
2022-12-19 13:06:30 +08:00
committed by {872297557@qq.com}
parent 067fd8f49d
commit 1ff6f32e8d
3 changed files with 56 additions and 6 deletions
@@ -189,6 +189,20 @@ namespace IRaCIS.Core.Application.Contracts
public Guid? VisitTaskId { get; set; }
}
public class TempInstance
{
public Guid Id { get; set; }
public string Path { get; set; }
public int NumberOfFrames { get; set; }
public int InstanceNumber { get; set; }
public int ShowOrder { get; set; }
public decimal RowIndex { get; set; }
}
public class VisitStudyDTO
{
public Guid StudyId { get; set; }
@@ -284,7 +284,14 @@ namespace IRaCIS.Core.Application.Services
{
var result = new List<VisitStudyDTO>();
var thisRowinfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == indto.VisitTaskId && x.StudyId != null).OrderBy(x=>x.ReadingQuestionTrial.ShowOrder).ThenBy(x=>x.RowIndex).ToListAsync();
var thisRowinfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == indto.VisitTaskId && x.StudyId != null).OrderBy(x=>x.ReadingQuestionTrial.ShowOrder).ThenBy(x=>x.RowIndex).Select(x=>new
{
x.ReadingQuestionTrial.ShowOrder,
x.RowIndex,
x.SeriesId,
x.StudyId,
x.InstanceId,
}).ToListAsync();
var taskInfo = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).FirstNotNullAsync();
@@ -292,8 +299,8 @@ namespace IRaCIS.Core.Application.Services
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
{
var thisStudyIds = thisRowinfo.Select(x => x.StudyId).Distinct().ToList();
var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).Select(x => x.SeriesId).Distinct().ToList();
var thisStudyIds = thisRowinfo.OrderBy(x=>x.ShowOrder).ThenBy(x=>x.RowIndex).Select(x => x.StudyId).Distinct().ToList();
var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).Select(x => x.SeriesId).Distinct().ToList();
if (thisRowinfo.Count > 0)
{
var thisVisitTaskStudy = await _repository.Where<DicomStudy>(t => thisStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO()
@@ -318,13 +325,31 @@ namespace IRaCIS.Core.Application.Services
{
item.SeriesInstanceUid = string.Empty;
item.InstanceList = thisRowinfo.Where(y => y.InstanceId != null).Select(y => y.InstanceId.Value).Distinct().ToList();
item.InstanceList = thisRowinfo.Where(y => y.InstanceId != null).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).Select(y => y.InstanceId.Value).Distinct().ToList();
var tempInstanceList = await _repository.Where<DicomInstance>(t => item.InstanceList.Contains(t.Id)).OrderBy(t => t.InstanceNumber)
.Select(t => new { t.Path, t.NumberOfFrames,t.InstanceNumber }).ToListAsync();
.Select(t => new TempInstance {
Id=t.Id,
Path=t.Path,
NumberOfFrames=t.NumberOfFrames,
InstanceNumber = t.InstanceNumber }).ToListAsync();
item.InstancePathList = tempInstanceList.OrderBy(t => t.InstanceNumber).SelectMany(u =>
tempInstanceList.ForEach(x =>
{
var item = thisRowinfo.FirstOrDefault(y => y.InstanceId == x.Id);
if (item != null)
{
x.ShowOrder = item.ShowOrder;
x.RowIndex = item.RowIndex;
}
});
item.InstancePathList = tempInstanceList.OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).SelectMany(u =>
{
if (u.NumberOfFrames > 1)