代码表整理
This commit is contained in:
@@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
private readonly IRepository<DicomStudy> _studyRepository;
|
||||
private readonly IRepository<KeyInstance> _keyInstanceRepository;
|
||||
public SeriesService(IRepository<DicomInstance> instanceRepository, IRepository<DicomStudy> studyRepository,
|
||||
IRepository<KeyInstance> keyInstanceRepository, IRepository<DicomSeries> seriesRepository, IRepository<ImageLabel> imageLabelRepository)
|
||||
IRepository<KeyInstance> keyInstanceRepository, IRepository<DicomSeries> seriesRepository, IRepository<ImageLabel> imageLabelRepository)
|
||||
{
|
||||
_seriesRepository = seriesRepository;
|
||||
_instanceRepository = instanceRepository;
|
||||
@@ -35,56 +35,74 @@ namespace IRaCIS.Core.Application.Services
|
||||
public async Task<IResponseOutput<List<DicomSeriesWithLabelDTO>>> List(Guid studyId, string? tpCode)
|
||||
{
|
||||
|
||||
var seriesList = await _seriesRepository.Where(s => s.StudyId == studyId).OrderBy(s => s.SeriesNumber).
|
||||
var seriesList = await _seriesRepository.Where(s => s.StudyId == studyId).OrderBy(s => s.SeriesNumber).
|
||||
ThenBy(s => s.SeriesTime).ThenBy(s => s.CreateTime)
|
||||
.ProjectTo<DicomSeriesWithLabelDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
bool hasKeyInstance = false;
|
||||
var SeriesIdList = _imageLabelRepository.Where(u => u.TpCode == tpCode).Select(s => s.SeriesId).Distinct().ToList();
|
||||
var instanceIdList = _imageLabelRepository.Where(u => u.TpCode == tpCode).Select(s => s.InstanceId).Distinct().ToList();
|
||||
foreach (var item in seriesList)
|
||||
{
|
||||
if (SeriesIdList.Contains(item.Id))
|
||||
{
|
||||
item.HasLabel = true;
|
||||
hasKeyInstance = true;
|
||||
}
|
||||
else item.HasLabel = false;
|
||||
}
|
||||
if (hasKeyInstance)
|
||||
{
|
||||
seriesList.Add(new DicomSeriesWithLabelDTO
|
||||
{
|
||||
KeySeries = true,
|
||||
Id = SeriesIdList[0],
|
||||
InstanceCount = instanceIdList.Count,
|
||||
HasLabel = true,
|
||||
Modality = seriesList[0].Modality,
|
||||
Description = "Key Series"
|
||||
});
|
||||
}
|
||||
|
||||
var idList = await _instanceRepository.Where(s => s.StudyId == studyId).OrderBy(t=>t.SeriesId).ThenBy(t => t.InstanceNumber)
|
||||
var idList = await _instanceRepository.Where(s => s.StudyId == studyId).OrderBy(t => t.SeriesId).ThenBy(t => t.InstanceNumber)
|
||||
.ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime)
|
||||
.Select(t=>new {t.SeriesId, t.Id,t.Path}).ToListAsync();//.GroupBy(u => u.SeriesId);
|
||||
.Select(t => new { t.SeriesId, t.Id, t.Path }).ToListAsync();//.GroupBy(u => u.SeriesId);
|
||||
|
||||
foreach (var item in seriesList)
|
||||
{
|
||||
if (item.KeySeries)
|
||||
{
|
||||
item.InstanceList = instanceIdList;
|
||||
}
|
||||
else
|
||||
{
|
||||
//item.InstanceList = idList.Where(s => s.SeriesId == item.Id).OrderBy(t => t.InstanceNumber)
|
||||
// .ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime).Select(u => u.Id).ToList();
|
||||
item.InstanceList = idList.Where(s => s.SeriesId == item.Id).Select(u => u.Id).ToList();
|
||||
|
||||
item.InstanceList = idList.Where(s => s.SeriesId == item.Id).Select(u => u.Id).ToList();
|
||||
|
||||
item.InstancePathList = idList.Where(s => s.SeriesId == item.Id).Select(u => u.Path).ToList();
|
||||
}
|
||||
item.InstancePathList = idList.Where(s => s.SeriesId == item.Id).Select(u => u.Path).ToList();
|
||||
}
|
||||
|
||||
#region 暂时废弃
|
||||
|
||||
//bool hasKeyInstance = false;
|
||||
//var SeriesIdList = _imageLabelRepository.Where(u => u.TpCode == tpCode).Select(s => s.SeriesId).Distinct().ToList();
|
||||
//var instanceIdList = _imageLabelRepository.Where(u => u.TpCode == tpCode).Select(s => s.InstanceId).Distinct().ToList();
|
||||
//foreach (var item in seriesList)
|
||||
//{
|
||||
// if (SeriesIdList.Contains(item.Id))
|
||||
// {
|
||||
// item.HasLabel = true;
|
||||
// hasKeyInstance = true;
|
||||
// }
|
||||
// else item.HasLabel = false;
|
||||
//}
|
||||
//if (hasKeyInstance)
|
||||
//{
|
||||
// seriesList.Add(new DicomSeriesWithLabelDTO
|
||||
// {
|
||||
// KeySeries = true,
|
||||
// Id = SeriesIdList[0],
|
||||
// InstanceCount = instanceIdList.Count,
|
||||
// HasLabel = true,
|
||||
// Modality = seriesList[0].Modality,
|
||||
// Description = "Key Series"
|
||||
// });
|
||||
//}
|
||||
|
||||
//var idList = await _instanceRepository.Where(s => s.StudyId == studyId).OrderBy(t => t.SeriesId).ThenBy(t => t.InstanceNumber)
|
||||
// .ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime)
|
||||
// .Select(t => new { t.SeriesId, t.Id, t.Path }).ToListAsync();//.GroupBy(u => u.SeriesId);
|
||||
|
||||
//foreach (var item in seriesList)
|
||||
//{
|
||||
// if (item.KeySeries)
|
||||
// {
|
||||
// item.InstanceList = instanceIdList;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //item.InstanceList = idList.Where(s => s.SeriesId == item.Id).OrderBy(t => t.InstanceNumber)
|
||||
// // .ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime).Select(u => u.Id).ToList();
|
||||
|
||||
// item.InstanceList = idList.Where(s => s.SeriesId == item.Id).Select(u => u.Id).ToList();
|
||||
|
||||
// item.InstancePathList = idList.Where(s => s.SeriesId == item.Id).Select(u => u.Path).ToList();
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
return ResponseOutput.Ok(seriesList);
|
||||
}
|
||||
|
||||
@@ -100,7 +118,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
{
|
||||
string path = string.Empty;
|
||||
|
||||
path= (await _instanceRepository.Where(s => s.SeriesId == seriesId).Select(t=>t.Path).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
path = (await _instanceRepository.Where(s => s.SeriesId == seriesId).Select(t => t.Path).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
||||
var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path);
|
||||
|
||||
|
||||
@@ -317,18 +317,20 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
{
|
||||
string path = String.Empty;
|
||||
|
||||
DicomInstance dicomInstance = await _repository.FirstOrDefaultAsync<DicomInstance>(s => s.StudyId == studyId);
|
||||
path = (await _dicomInstanceRepository.Where(s => s.StudyId == studyId).Select(t => t.Path).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
||||
if (dicomInstance != null)
|
||||
{
|
||||
DicomStudy dicomStudy = await _repository.FirstOrDefaultAsync<DicomStudy>(s => s.Id == dicomInstance.StudyId);
|
||||
if (dicomStudy != null)
|
||||
{
|
||||
var( physicalPath ,relativePath )= FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
||||
//DicomInstance dicomInstance = await _repository.FirstOrDefaultAsync<DicomInstance>(s => s.StudyId == studyId);
|
||||
|
||||
path = physicalPath;
|
||||
}
|
||||
}
|
||||
//if (dicomInstance != null)
|
||||
//{
|
||||
// DicomStudy dicomStudy = await _repository.FirstOrDefaultAsync<DicomStudy>(s => s.Id == dicomInstance.StudyId);
|
||||
// if (dicomStudy != null)
|
||||
// {
|
||||
// var( physicalPath ,relativePath )= FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
||||
|
||||
// path = physicalPath;
|
||||
// }
|
||||
//}
|
||||
|
||||
using (var sw = ImageHelper.RenderPreviewJpeg(path))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user