diff --git a/IRaCIS.Core.Application/Service/Common/TrialImageDownloadService.cs b/IRaCIS.Core.Application/Service/Common/TrialImageDownloadService.cs
index 0de78c012..07036b3d6 100644
--- a/IRaCIS.Core.Application/Service/Common/TrialImageDownloadService.cs
+++ b/IRaCIS.Core.Application/Service/Common/TrialImageDownloadService.cs
@@ -231,6 +231,27 @@ namespace IRaCIS.Core.Application.Service
}
+
+ /////
+ ///// 下载影像 维护dir信息 并回传到OSS
+ /////
+ /////
+ /////
+ //[HttpGet]
+ //[AllowAnonymous]
+ //public async Task DownloadAndUploadTrialData(Guid trialId, [FromServices] IRepository _instanceRepository,
+ // [FromServices] IRepository _studyRepository,
+ // [FromServices] IRepository _seriesRepository)
+ //{
+ // var list = await _instanceRepository.Where(t => t.TrialId == trialId)
+ // .Select(t => new { t.SeriesId, t.StudyId, t.Id, t.Path }).ToListAsync();
+
+ // foreach (var item in list)
+ // {
+
+ // }
+ //}
+
}
}
\ No newline at end of file
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs
index a5639acdf..138b962b2 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs
@@ -784,58 +784,60 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
#region DIR处理导出文件名,并将对应关系上传到OSS里面存储
-
- var list = _subjectVisitRepository.Where(t => t.Id == inQuery.SubjectVisitId).SelectMany(t => t.StudyList)
- .Where(t => isQueryDicom ? inQuery.DicomStudyIdList.Contains(t.Id) : false)
- .SelectMany(t => t.InstanceList)
- .Select(t => new StudyDIRInfo()
- {
-
- DicomStudyId = t.DicomStudy.Id,
-
- PatientId = t.DicomStudy.PatientId,
- PatientName = t.DicomStudy.PatientName,
- PatientBirthDate = t.DicomStudy.PatientBirthDate,
- PatientSex = t.DicomStudy.PatientSex,
-
- StudyInstanceUid = t.StudyInstanceUid,
- StudyId = t.DicomStudy.StudyId,
- DicomStudyDate = t.DicomStudy.DicomStudyDate,
- DicomStudyTime = t.DicomStudy.DicomStudyTime,
- AccessionNumber = t.DicomStudy.AccessionNumber,
-
- StudyDescription = t.DicomStudy.Description,
-
- SeriesInstanceUid = t.DicomSerie.SeriesInstanceUid,
- Modality = t.DicomSerie.Modality,
- DicomSeriesDate = t.DicomSerie.DicomSeriesDate,
- DicomSeriesTime = t.DicomSerie.DicomSeriesTime,
- SeriesNumber = t.DicomSerie.SeriesNumber,
- SeriesDescription = t.DicomSerie.Description,
-
- InstanceId = t.Id,
- SopInstanceUid = t.SopInstanceUid,
- SOPClassUID = t.SOPClassUID,
- InstanceNumber = t.InstanceNumber,
- MediaStorageSOPClassUID = t.MediaStorageSOPClassUID,
- MediaStorageSOPInstanceUID = t.MediaStorageSOPInstanceUID,
- TransferSytaxUID = t.TransferSytaxUID,
-
- }).ToList();
-
- var pathInfo = await _subjectVisitRepository.Where(t => t.Id == inQuery.SubjectVisitId).Select(t => new { t.TrialId, t.SubjectId, VisitId = t.Id }).FirstNotNullAsync();
-
- foreach (var item in list.GroupBy(t => new { t.StudyInstanceUid, t.DicomStudyId }))
+ //有传输语法值的导出 才生成DIR
+ if (_subjectVisitRepository.Any(t => t.Id == inQuery.SubjectVisitId && t.StudyList.SelectMany(t => t.InstanceList).Any(c => c.TransferSytaxUID != string.Empty)))
{
- var ossFolder = $"{pathInfo.TrialId}/Image/{pathInfo.SubjectId}/{pathInfo.VisitId}/{item.Key.StudyInstanceUid}";
+ var list = _subjectVisitRepository.Where(t => t.Id == inQuery.SubjectVisitId).SelectMany(t => t.StudyList)
+ .Where(t => isQueryDicom ? inQuery.DicomStudyIdList.Contains(t.Id) : false)
+ .SelectMany(t => t.InstanceList)
+ .Select(t => new StudyDIRInfo()
+ {
- await DicomDIRHelper.GenerateStudyDIRAndUploadAsync(item.ToList(), ossFolder, _oSSService);
+ DicomStudyId = t.DicomStudy.Id,
- await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new DicomStudy() { StudyDIRPath = $"/{ossFolder}/DICOMDIR" });
+ PatientId = t.DicomStudy.PatientId,
+ PatientName = t.DicomStudy.PatientName,
+ PatientBirthDate = t.DicomStudy.PatientBirthDate,
+ PatientSex = t.DicomStudy.PatientSex,
+
+ StudyInstanceUid = t.StudyInstanceUid,
+ StudyId = t.DicomStudy.StudyId,
+ DicomStudyDate = t.DicomStudy.DicomStudyDate,
+ DicomStudyTime = t.DicomStudy.DicomStudyTime,
+ AccessionNumber = t.DicomStudy.AccessionNumber,
+
+ StudyDescription = t.DicomStudy.Description,
+
+ SeriesInstanceUid = t.DicomSerie.SeriesInstanceUid,
+ Modality = t.DicomSerie.Modality,
+ DicomSeriesDate = t.DicomSerie.DicomSeriesDate,
+ DicomSeriesTime = t.DicomSerie.DicomSeriesTime,
+ SeriesNumber = t.DicomSerie.SeriesNumber,
+ SeriesDescription = t.DicomSerie.Description,
+
+ InstanceId = t.Id,
+ SopInstanceUid = t.SopInstanceUid,
+ SOPClassUID = t.SOPClassUID,
+ InstanceNumber = t.InstanceNumber,
+ MediaStorageSOPClassUID = t.MediaStorageSOPClassUID,
+ MediaStorageSOPInstanceUID = t.MediaStorageSOPInstanceUID,
+ TransferSytaxUID = t.TransferSytaxUID,
+
+ }).ToList();
+
+ var pathInfo = await _subjectVisitRepository.Where(t => t.Id == inQuery.SubjectVisitId).Select(t => new { t.TrialId, t.SubjectId, VisitId = t.Id }).FirstNotNullAsync();
+
+ foreach (var item in list.GroupBy(t => new { t.StudyInstanceUid, t.DicomStudyId }))
+ {
+ var ossFolder = $"{pathInfo.TrialId}/Image/{pathInfo.SubjectId}/{pathInfo.VisitId}/{item.Key.StudyInstanceUid}";
+
+ await DicomDIRHelper.GenerateStudyDIRAndUploadAsync(item.ToList(), ossFolder, _oSSService);
+
+ await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new DicomStudy() { StudyDIRPath = $"/{ossFolder}/DICOMDIR" });
+ }
}
-
#endregion
var query = from sv in _subjectVisitRepository.Where(t => t.Id == inQuery.SubjectVisitId)
@@ -1070,7 +1072,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
#region 在下载前先处理DIR文件
- var list = _subjectRepository.Where(t => t.Id == inQuery.SubjectId).SelectMany(t => t.SubjectVisitList.Where(t => subjectVisitIdList.Contains(t.Id))).SelectMany(t => t.StudyList)
+ //有传输语法值的导出 才生成DIR
+ if (_subjectVisitRepository.Any(t => t.SubjectId == inQuery.SubjectId && t.StudyList.SelectMany(t => t.InstanceList).Any(c => c.TransferSytaxUID != string.Empty)))
+ {
+ var list = _subjectRepository.Where(t => t.Id == inQuery.SubjectId).SelectMany(t => t.SubjectVisitList.Where(t => subjectVisitIdList.Contains(t.Id))).SelectMany(t => t.StudyList)
.Where(t => isQueryDicom ? inQuery.DicomStudyIdList.Contains(t.Id) : false)
.Where(t => info.IsImageFilter ? ("|" + info.CriterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|") : true)
.SelectMany(t => t.InstanceList.Where(t => t.IsReading && t.DicomSerie.IsReading))
@@ -1110,18 +1115,20 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}).ToList();
- var pathInfo = await _subjectRepository.Where(t => t.Id == inQuery.SubjectId).Select(t => new { t.TrialId, SubjectId = t.Id }).FirstNotNullAsync();
+ var pathInfo = await _subjectRepository.Where(t => t.Id == inQuery.SubjectId).Select(t => new { t.TrialId, SubjectId = t.Id }).FirstNotNullAsync();
- foreach (var item in list.GroupBy(t => new { t.StudyInstanceUid, t.DicomStudyId }))
- {
- var visitId = item.First().SubjectVisitId;
+ foreach (var item in list.GroupBy(t => new { t.StudyInstanceUid, t.DicomStudyId }))
+ {
+ var visitId = item.First().SubjectVisitId;
- var ossFolder = $"{pathInfo.TrialId}/Image/{pathInfo.SubjectId}/{visitId}/{item.Key.StudyInstanceUid}";
+ var ossFolder = $"{pathInfo.TrialId}/Image/{pathInfo.SubjectId}/{visitId}/{item.Key.StudyInstanceUid}";
- await DicomDIRHelper.GenerateStudyDIRAndUploadAsync(item.ToList(), ossFolder, _oSSService);
+ await DicomDIRHelper.GenerateStudyDIRAndUploadAsync(item.ToList(), ossFolder, _oSSService);
- await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new DicomStudy() { StudyDIRPath = $"/{ossFolder}/DICOMDIR" });
+ await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new DicomStudy() { StudyDIRPath = $"/{ossFolder}/DICOMDIR" });
+ }
}
+
#endregion
var query = from sv in _subjectRepository.Where(t => t.Id == inQuery.SubjectId).SelectMany(t => t.SubjectVisitList.Where(t => subjectVisitIdList.Contains(t.Id)))