多帧配合玲姐修改模块1
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
af282d2bb8
commit
a4b9c44cfa
|
@ -33,19 +33,43 @@
|
||||||
public bool IsDeleted { get; set; }
|
public bool IsDeleted { get; set; }
|
||||||
public bool IsReading { get; set; } = true;
|
public bool IsReading { get; set; } = true;
|
||||||
|
|
||||||
|
|
||||||
|
public List<InstanceBasicInfo> InstanceInfoList { get; set; }
|
||||||
|
|
||||||
|
public bool IsExistMutiFrames => InstanceInfoList.Any(t => t.NumberOfFrames > 1);
|
||||||
|
|
||||||
|
|
||||||
|
#region 以后废弃
|
||||||
|
|
||||||
public List<Guid> InstanceList { get; set; } = new List<Guid>();
|
public List<Guid> InstanceList { get; set; } = new List<Guid>();
|
||||||
|
|
||||||
public List<string> InstancePathList { get; set; } = new List<string>();
|
public List<string> InstancePathList { get; set; } = new List<string>();
|
||||||
|
|
||||||
public List<string> InstanceHtmlPathList { get; set; }
|
public List<string> InstanceHtmlPathList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//存放在instance 上面
|
//存放在instance 上面
|
||||||
public string WindowCenter { get; set; } = string.Empty;
|
public string WindowCenter { get; set; } = string.Empty;
|
||||||
public string WindowWidth { get; set; } = string.Empty;
|
public string WindowWidth { get; set; } = string.Empty;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public string ImageResizePath { get; set; }
|
public string ImageResizePath { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class InstanceBasicInfo
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
public string Path { get; set; }
|
||||||
|
|
||||||
|
public string HtmlPath { get; set; }
|
||||||
|
|
||||||
|
public int NumberOfFrames { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class DicomSeriesWithLabelDTO : DicomSeriesDTO
|
public class DicomSeriesWithLabelDTO : DicomSeriesDTO
|
||||||
{
|
{
|
||||||
public bool HasLabel { get; set; } = false;
|
public bool HasLabel { get; set; } = false;
|
||||||
|
|
|
@ -269,8 +269,8 @@ namespace IRaCIS.Core.Application.Services
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
var studyIds = studyList.Select(t => t.StudyId).ToList();
|
var studyIds = studyList.Select(t => t.StudyId).ToList();
|
||||||
|
|
||||||
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId) )
|
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId))
|
||||||
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.HtmlPath }).ToListAsync();
|
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.HtmlPath }).ToListAsync();
|
||||||
|
|
||||||
foreach (var t in studyList)
|
foreach (var t in studyList)
|
||||||
{
|
{
|
||||||
|
@ -281,42 +281,22 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
t.SeriesList.ForEach(series =>
|
t.SeriesList.ForEach(series =>
|
||||||
{
|
{
|
||||||
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList();
|
|
||||||
|
|
||||||
|
series.InstanceInfoList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k =>
|
||||||
series.InstanceHtmlPathList = instanceList.Where(t => t.SeriesId == series.Id && t.HtmlPath != string.Empty).OrderBy(t => t.InstanceNumber).Select(k => k.HtmlPath).ToList();
|
new InstanceBasicInfo()
|
||||||
|
|
||||||
|
|
||||||
//处理多帧
|
|
||||||
series.InstancePathList = instanceList.OrderBy(t => t.InstanceNumber).Where(s => s.SeriesId == series.Id)
|
|
||||||
.SelectMany(u =>
|
|
||||||
{
|
{
|
||||||
|
Id = k.Id,
|
||||||
if (u.NumberOfFrames > 1)
|
NumberOfFrames = k.NumberOfFrames,
|
||||||
{
|
HtmlPath = k.HtmlPath,
|
||||||
var pathList = new List<string>();
|
Path = k.Path
|
||||||
|
}).ToList();
|
||||||
for (int i = 1; i <= u.NumberOfFrames; i++)
|
|
||||||
{
|
|
||||||
pathList.Add(u.Path + "?frame=" + (i - 1));
|
|
||||||
}
|
|
||||||
return pathList;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return new List<string> { u.Path };
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
//设置为阅片与否 不更改数据库检查 的instance数量 和 SeriesCount 所以这里要实时统计
|
//设置为阅片与否 不更改数据库检查 的instance数量 和 SeriesCount 所以这里要实时统计
|
||||||
t.SeriesCount = t.SeriesList.Count;
|
t.SeriesCount = t.SeriesList.Count;
|
||||||
t.InstanceCount = t.SeriesList.SelectMany(t => t.InstanceList).Count();
|
t.InstanceCount = t.SeriesList.SelectMany(t => t.InstanceInfoList).Count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -336,11 +316,11 @@ namespace IRaCIS.Core.Application.Services
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<DicomSeriesDTO> GetDicomSeriesInfo(GetDicomSeriesInfoInDto inDto)
|
public async Task<DicomSeriesDTO> GetDicomSeriesInfo(GetDicomSeriesInfoInDto inDto)
|
||||||
{
|
{
|
||||||
DicomSeriesDTO series = await _repository.Where<DicomSeries>(s =>s.Id==inDto.SeriesId ).ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
DicomSeriesDTO series = await _repository.Where<DicomSeries>(s => s.Id == inDto.SeriesId).ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
||||||
|
|
||||||
var instanceList = await _repository.Where<DicomInstance>(t => t.SeriesId==inDto.SeriesId )
|
var instanceList = await _repository.Where<DicomInstance>(t => t.SeriesId == inDto.SeriesId)
|
||||||
.Select(t => new { t.SeriesId, t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath ,t.SliceLocation}).ToListAsync();
|
.Select(t => new { t.SeriesId, t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath, t.SliceLocation }).ToListAsync();
|
||||||
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderByDescending(t => t.SliceLocation).ThenBy(t=>t.InstanceNumber).Select(k => k.Id).ToList();
|
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderByDescending(t => t.SliceLocation).ThenBy(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();
|
||||||
|
@ -386,13 +366,13 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var pastResultList= await this.iServiceProvider.GetService<IReadingImageTaskService>().GetReadingPastResultList(new GetReadingPastResultListInDto()
|
var pastResultList = await this.iServiceProvider.GetService<IReadingImageTaskService>().GetReadingPastResultList(new GetReadingPastResultListInDto()
|
||||||
{
|
{
|
||||||
VisitTaskId = inDto.VisitTaskId
|
VisitTaskId = inDto.VisitTaskId
|
||||||
}) ;
|
});
|
||||||
|
|
||||||
var visitTaskIds = pastResultList.Select(x => x.VisitTaskId).ToList();
|
var visitTaskIds = pastResultList.Select(x => x.VisitTaskId).ToList();
|
||||||
var visitSeriesList=await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId))
|
var visitSeriesList = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId))
|
||||||
.Where(x => x.PTSeriesId != null && x.CTSeriesId != null)
|
.Where(x => x.PTSeriesId != null && x.CTSeriesId != null)
|
||||||
.Select(x => new
|
.Select(x => new
|
||||||
{
|
{
|
||||||
|
@ -421,10 +401,10 @@ namespace IRaCIS.Core.Application.Services
|
||||||
{
|
{
|
||||||
PTSeriesId = visitSeries.PTSeriesId!.Value,
|
PTSeriesId = visitSeries.PTSeriesId!.Value,
|
||||||
CTSeriesId = visitSeries.CTSeriesId!.Value,
|
CTSeriesId = visitSeries.CTSeriesId!.Value,
|
||||||
TaskBlindName=visitSeries.TaskBlindName,
|
TaskBlindName = visitSeries.TaskBlindName,
|
||||||
VisitTaskId= item,
|
VisitTaskId = item,
|
||||||
SubjectVisitId= visitSeries.SourceSubjectVisitId!.Value,
|
SubjectVisitId = visitSeries.SourceSubjectVisitId!.Value,
|
||||||
IsBaseLineTask=visitSeries.IsBaseLine,
|
IsBaseLineTask = visitSeries.IsBaseLine,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -439,7 +419,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
var seriesIds = ctseriesIds.Union(ptseriesIds).ToList(); //并集
|
var seriesIds = ctseriesIds.Union(ptseriesIds).ToList(); //并集
|
||||||
|
|
||||||
var instanceList = await _repository.Where<DicomInstance>(t => seriesIds.Contains(t.SeriesId))
|
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();
|
.Select(t => new { t.SeriesId, t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath }).ToListAsync();
|
||||||
|
|
||||||
var studyIds = instanceList.Select(x => x.StudyId).Distinct().ToList();
|
var studyIds = instanceList.Select(x => x.StudyId).Distinct().ToList();
|
||||||
|
|
||||||
|
@ -451,7 +431,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
SeriesCount = k.SeriesCount,
|
SeriesCount = k.SeriesCount,
|
||||||
StudyCode = k.StudyCode,
|
StudyCode = k.StudyCode,
|
||||||
StudyId = k.Id,
|
StudyId = k.Id,
|
||||||
SubjectVisitId=k.SubjectVisitId,
|
SubjectVisitId = k.SubjectVisitId,
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
AddinstanceList(ctseriesLists);
|
AddinstanceList(ctseriesLists);
|
||||||
AddinstanceList(ptseriesLists);
|
AddinstanceList(ptseriesLists);
|
||||||
|
@ -544,7 +524,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).Select(x => x.SeriesId).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)
|
if (thisRowinfo.Count > 0)
|
||||||
{
|
{
|
||||||
var thisVisitTaskStudy = await _repository.Where<DicomStudy>(t => thisStudyIds.Contains(t.Id) ).Select(k => new VisitStudyDTO()
|
var thisVisitTaskStudy = await _repository.Where<DicomStudy>(t => thisStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO()
|
||||||
{
|
{
|
||||||
InstanceCount = k.InstanceCount,
|
InstanceCount = k.InstanceCount,
|
||||||
|
|
||||||
|
@ -558,7 +538,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
if (thisVisitTaskStudy != null)
|
if (thisVisitTaskStudy != null)
|
||||||
{
|
{
|
||||||
thisVisitTaskStudy.StudyId = default(Guid);
|
thisVisitTaskStudy.StudyId = default(Guid);
|
||||||
var item = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id) ).OrderBy(s => s.SeriesNumber).
|
var item = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber).
|
||||||
ThenBy(s => s.SeriesTime)
|
ThenBy(s => s.SeriesTime)
|
||||||
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
@ -568,7 +548,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
item.InstanceList = thisRowinfo.Where(y => y.InstanceId != null).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).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)
|
var tempInstanceList = await _repository.Where<DicomInstance>(t => item.InstanceList.Contains(t.Id)).OrderBy(t => t.InstanceNumber)
|
||||||
.Select(t => new TempInstance
|
.Select(t => new TempInstance
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -617,7 +597,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
item.Description = "Key Series";
|
item.Description = "Key Series";
|
||||||
|
|
||||||
var modalityList = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id) ).OrderBy(s => s.SeriesNumber).
|
var modalityList = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber).
|
||||||
ThenBy(s => s.SeriesTime).Select(x => x.Modality).Distinct().ToListAsync(); ;
|
ThenBy(s => s.SeriesTime).Select(x => x.Modality).Distinct().ToListAsync(); ;
|
||||||
item.Modality = string.Join(",", modalityList);
|
item.Modality = string.Join(",", modalityList);
|
||||||
thisVisitTaskStudy.SeriesList.Add(item);
|
thisVisitTaskStudy.SeriesList.Add(item);
|
||||||
|
@ -642,7 +622,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
var isManualGenerate = await _trialReadingCriterionRepository.AnyAsync(t => t.Id == taskInfo.TrialReadingCriterionId && t.IsAutoCreate == false);
|
var isManualGenerate = await _trialReadingCriterionRepository.AnyAsync(t => t.Id == taskInfo.TrialReadingCriterionId && t.IsAutoCreate == false);
|
||||||
|
|
||||||
var studyList = await _repository.Where<DicomStudy>(t => t.TrialId == indto.TrialId && t.SubjectVisitId == indto.SujectVisitId)
|
var studyList = await _repository.Where<DicomStudy>(t => t.TrialId == indto.TrialId && t.SubjectVisitId == indto.SujectVisitId)
|
||||||
.WhereIf(isManualGenerate,t=>t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t=>t.TrialReadingCriterionId==taskInfo.TrialReadingCriterionId && t.IsConfirmed &&t.IsReading ))
|
.WhereIf(isManualGenerate, t => t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t => t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.IsConfirmed && t.IsReading))
|
||||||
.Select(k => new VisitStudyDTO()
|
.Select(k => new VisitStudyDTO()
|
||||||
{
|
{
|
||||||
InstanceCount = k.InstanceCount,
|
InstanceCount = k.InstanceCount,
|
||||||
|
@ -654,13 +634,13 @@ namespace IRaCIS.Core.Application.Services
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
var studyIds = studyList.Select(t => t.StudyId).ToList();
|
var studyIds = studyList.Select(t => t.StudyId).ToList();
|
||||||
|
|
||||||
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId) )
|
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId))
|
||||||
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.WindowCenter,t.WindowWidth,t.HtmlPath }).ToListAsync();
|
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath }).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<DicomSeriesDTO> seriesLists = await _repository.Where<DicomSeries>(s => studyIds.Contains(s.StudyId) /*&& s.IsReading*/)
|
List<DicomSeriesDTO> seriesLists = await _repository.Where<DicomSeries>(s => studyIds.Contains(s.StudyId) /*&& s.IsReading*/)
|
||||||
.WhereIf(isManualGenerate==false, t => t.IsReading)
|
.WhereIf(isManualGenerate == false, t => t.IsReading)
|
||||||
.WhereIf(isManualGenerate, t => t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t => t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.IsConfirmed && t.IsReading))
|
.WhereIf(isManualGenerate, t => t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t => t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.IsConfirmed && t.IsReading))
|
||||||
.OrderBy(s => s.SeriesNumber).
|
.OrderBy(s => s.SeriesNumber).
|
||||||
ThenBy(s => s.SeriesTime)
|
ThenBy(s => s.SeriesTime)
|
||||||
|
@ -675,7 +655,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList();
|
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)
|
series.InstancePathList = instanceList.Where(s => s.SeriesId == series.Id).OrderBy(t => t.InstanceNumber)
|
||||||
|
|
Loading…
Reference in New Issue