IRC_NewDev
parent
6677f2a01e
commit
ebdec8dd62
|
@ -209,16 +209,22 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
public Guid CTSeriesId { get; set; }
|
||||
public Guid PTSeriesId { get; set; }
|
||||
|
||||
public Guid? SubjectVisitId { get; set; }
|
||||
|
||||
|
||||
public bool IsBaseLine { get; set; }
|
||||
|
||||
public string TaskBlindName { get; set; } = string.Empty;
|
||||
|
||||
public StudyInfo? StudyInfo { get; set; }
|
||||
public List<StudyInfo> StudyInfoList { get; set; }
|
||||
}
|
||||
|
||||
public class StudyInfo
|
||||
{
|
||||
public Guid StudyId { get; set; }
|
||||
public string StudyCode { get; set; } = String.Empty;
|
||||
|
||||
public Guid SubjectVisitId { get; set; }
|
||||
public string Modalities { get; set; } = String.Empty;
|
||||
|
||||
public bool IsCriticalSequence { get; set; } = false;
|
||||
|
@ -228,9 +234,9 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
public bool IsDicom { get; set; } = true;
|
||||
|
||||
public DicomSeriesDTO? CTSeries { get; set; }
|
||||
public List<DicomSeriesDTO> CTSeriesList { get; set; }
|
||||
|
||||
public DicomSeriesDTO? PTSeries { get; set; }
|
||||
public List<DicomSeriesDTO> PTSeriesList { get; set; }
|
||||
}
|
||||
|
||||
public class GetPTAndCtSeriesInDto
|
||||
|
|
|
@ -13,6 +13,7 @@ using MassTransit;
|
|||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using IRaCIS.Application.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using DocumentFormat.OpenXml.Drawing.Charts;
|
||||
|
||||
namespace IRaCIS.Core.Application.Services
|
||||
{
|
||||
|
@ -351,6 +352,8 @@ namespace IRaCIS.Core.Application.Services
|
|||
x.CTSeriesId,
|
||||
x.VisitTaskId,
|
||||
x.OtherStudyId,
|
||||
x.VisitTask.SourceSubjectVisitId,
|
||||
x.VisitTask.SourceSubjectVisit.IsBaseLine,
|
||||
x.VisitTask.VisitTaskNum,
|
||||
x.VisitTask.TaskBlindName,
|
||||
x.UpdateTime,
|
||||
|
@ -358,9 +361,9 @@ namespace IRaCIS.Core.Application.Services
|
|||
|
||||
List<GetPTAndCtSeriesOutDto> result = new List<GetPTAndCtSeriesOutDto>();
|
||||
|
||||
List<Guid> seriesIds = new List<Guid>();
|
||||
|
||||
List<Guid> ctseriesIds = visitSeriesList.Select(x => x.CTSeriesId.Value).ToList();
|
||||
|
||||
List<Guid> ptseriesIds = visitSeriesList.Select(x => x.PTSeriesId.Value).ToList();
|
||||
foreach (var item in visitTaskIds)
|
||||
{
|
||||
var visitSeries = visitSeriesList.Where(x => x.VisitTaskId == item).OrderByDescending(x => x.UpdateTime).FirstOrDefault();
|
||||
|
@ -371,16 +374,22 @@ namespace IRaCIS.Core.Application.Services
|
|||
PTSeriesId = visitSeries.PTSeriesId!.Value,
|
||||
CTSeriesId = visitSeries.CTSeriesId!.Value,
|
||||
TaskBlindName=visitSeries.TaskBlindName,
|
||||
VisitTaskId= item,
|
||||
SubjectVisitId= visitSeries.SourceSubjectVisitId!.Value,
|
||||
IsBaseLine=visitSeries.IsBaseLine,
|
||||
});
|
||||
|
||||
seriesIds.Add(visitSeries.PTSeriesId!.Value);
|
||||
seriesIds.Add(visitSeries.CTSeriesId!.Value);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
List<DicomSeriesDTO> seriesLists = await _repository.Where<DicomSeries>(s => seriesIds.Contains(s.Id)).ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
List<DicomSeriesDTO> ctseriesLists = await _repository.Where<DicomSeries>(s => ctseriesIds.Contains(s.Id)).ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
List<DicomSeriesDTO> ptseriesLists = await _repository.Where<DicomSeries>(s => ptseriesIds.Contains(s.Id)).ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
var seriesIds = ctseriesIds.Union(ptseriesIds).ToList(); //并集
|
||||
|
||||
var instanceList = await _repository.Where<DicomInstance>(t => seriesIds.Contains(t.SeriesId))
|
||||
.Select(t => new { t.SeriesId,t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath }).ToListAsync();
|
||||
|
||||
|
@ -394,61 +403,61 @@ namespace IRaCIS.Core.Application.Services
|
|||
SeriesCount = k.SeriesCount,
|
||||
StudyCode = k.StudyCode,
|
||||
StudyId = k.Id,
|
||||
SubjectVisitId=k.SubjectVisitId,
|
||||
}).ToListAsync();
|
||||
seriesLists.ForEach(series =>
|
||||
{
|
||||
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList();
|
||||
AddinstanceList(ctseriesLists);
|
||||
AddinstanceList(ptseriesLists);
|
||||
|
||||
void AddinstanceList(List<DicomSeriesDTO> list)
|
||||
{
|
||||
list.ForEach(series =>
|
||||
{
|
||||
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList();
|
||||
|
||||
|
||||
series.InstanceHtmlPathList = instanceList.Where(t => t.SeriesId == series.Id && t.HtmlPath != string.Empty).OrderBy(t => t.InstanceNumber).Select(k => k.HtmlPath).ToList();
|
||||
series.InstanceHtmlPathList = instanceList.Where(t => t.SeriesId == series.Id && t.HtmlPath != string.Empty).OrderBy(t => t.InstanceNumber).Select(k => k.HtmlPath).ToList();
|
||||
|
||||
//处理多帧
|
||||
series.InstancePathList = instanceList.Where(s => s.SeriesId == series.Id).OrderBy(t => t.InstanceNumber)
|
||||
.SelectMany(u =>
|
||||
{
|
||||
|
||||
if (u.NumberOfFrames > 1)
|
||||
//处理多帧
|
||||
series.InstancePathList = instanceList.Where(s => s.SeriesId == series.Id).OrderBy(t => t.InstanceNumber)
|
||||
.SelectMany(u =>
|
||||
{
|
||||
var pathList = new List<string>();
|
||||
|
||||
for (int i = 1; i <= u.NumberOfFrames; i++)
|
||||
if (u.NumberOfFrames > 1)
|
||||
{
|
||||
pathList.Add(u.Path + "?frame=" + (i - 1));
|
||||
var pathList = new List<string>();
|
||||
|
||||
for (int i = 1; i <= u.NumberOfFrames; i++)
|
||||
{
|
||||
pathList.Add(u.Path + "?frame=" + (i - 1));
|
||||
}
|
||||
return pathList;
|
||||
}
|
||||
return pathList;
|
||||
}
|
||||
else
|
||||
{
|
||||
return new List<string> { u.Path };
|
||||
else
|
||||
{
|
||||
return new List<string> { u.Path };
|
||||
|
||||
}
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
})
|
||||
.ToList();
|
||||
|
||||
series.WindowWidth = instanceList.FirstOrDefault()!.WindowWidth;
|
||||
series.WindowCenter = instanceList.FirstOrDefault()!.WindowCenter;
|
||||
});
|
||||
series.WindowWidth = instanceList.FirstOrDefault()!.WindowWidth;
|
||||
series.WindowCenter = instanceList.FirstOrDefault()!.WindowCenter;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
foreach (var item in result)
|
||||
|
||||
foreach (var item in result)
|
||||
{
|
||||
|
||||
var series = seriesLists.Where(x => x.Id == item.PTSeriesId).FirstOrDefault();
|
||||
item.StudyInfoList = studyList.Where(x => x.SubjectVisitId == item.SubjectVisitId).ToList();
|
||||
|
||||
if (series != null)
|
||||
foreach (var study in item.StudyInfoList)
|
||||
{
|
||||
item.StudyInfo = studyList.Where(x => x.StudyId == series.StudyId).FirstOrDefault();
|
||||
if (item.StudyInfo != null)
|
||||
{
|
||||
item.StudyInfo.PTSeries = seriesLists.Where(x => x.Id == item.PTSeriesId).FirstOrDefault();
|
||||
item.StudyInfo.CTSeries = seriesLists.Where(x => x.Id == item.CTSeriesId).FirstOrDefault();
|
||||
}
|
||||
|
||||
study.PTSeriesList = ptseriesLists.Where(x => x.SubjectVisitId == item.SubjectVisitId).ToList();
|
||||
study.CTSeriesList = ctseriesLists.Where(x => x.SubjectVisitId == item.SubjectVisitId).ToList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue