diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 58b19553f..5009139ec 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -18826,7 +18826,7 @@
-
+
影像库 和影像下载界面批量下载原始影像 患者列表只传递 患者Id数组 检查列表,把患者Id数组 和检查Id数组都传递
diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs
index 7ec09d0fa..deb8f3db0 100644
--- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs
@@ -3186,8 +3186,7 @@ namespace IRaCIS.Application.Services
///
///
///
- public async Task TrialImageAddExtralField(Guid trialId,
- [FromServices] IRepository _scpInstanceRepository,
+ public async Task TrialImageAddExtralField([FromServices] IRepository _scpInstanceRepository,
[FromServices] IRepository _instanceRepository,
[FromServices] IOSSService _oSSService)
{
@@ -3206,29 +3205,40 @@ namespace IRaCIS.Application.Services
foreach (var item in seriesList)
{
- var stream = await _oSSService.GetStreamFromOSSAsync(item.Path);
-
- var dicomFile = DicomFile.Open(stream);
-
- var pixelData = DicomPixelData.Create(dicomFile.Dataset);
-
- //获取像素是否为封装形式
- var syntax = dicomFile.Dataset.InternalTransferSyntax;
-
- //读取需要维护的值
- var transferSyntaxUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.TransferSyntaxUID, string.Empty);
- var mediaStorageSOPClassUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.MediaStorageSOPClassUID, string.Empty);
- var mediaStorageSOPInstanceUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.MediaStorageSOPInstanceUID, string.Empty);
- var sOPClassUID = dicomFile.Dataset.GetSingleValueOrDefault(DicomTag.SOPClassUID, string.Empty);
-
- //维护序列层级四个字段 后再用sql 维护study series 时间拆分 和 MediaStorageSOPInstanceUID
- await _scpInstanceRepository.BatchUpdateNoTrackingAsync(t => t.SeriesId == item.SeriesId, t => new SCPInstance()
+ try
{
- IsEncapsulated = syntax.IsEncapsulated,
- TransferSyntaxUID = transferSyntaxUID,
- MediaStorageSOPClassUID = mediaStorageSOPClassUID,
- SOPClassUID = sOPClassUID,
- });
+ var stream = await _oSSService.GetStreamFromOSSAsync(item.Path);
+
+ var dicomFile = DicomFile.Open(stream);
+
+ //var pixelData = DicomPixelData.Create(dicomFile.Dataset);
+
+ //获取像素是否为封装形式
+ var syntax = dicomFile.Dataset.InternalTransferSyntax;
+
+ //读取需要维护的值
+ var transferSyntaxUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.TransferSyntaxUID, string.Empty);
+ var mediaStorageSOPClassUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.MediaStorageSOPClassUID, string.Empty);
+ var mediaStorageSOPInstanceUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.MediaStorageSOPInstanceUID, string.Empty);
+ var sOPClassUID = dicomFile.Dataset.GetSingleValueOrDefault(DicomTag.SOPClassUID, string.Empty);
+
+ //维护序列层级四个字段 后再用sql 维护study series 时间拆分 和 MediaStorageSOPInstanceUID
+ await _scpInstanceRepository.BatchUpdateNoTrackingAsync(t => t.SeriesId == item.SeriesId, t => new SCPInstance()
+ {
+ IsEncapsulated = syntax.IsEncapsulated,
+ TransferSyntaxUID = transferSyntaxUID,
+ MediaStorageSOPClassUID = mediaStorageSOPClassUID,
+ SOPClassUID = sOPClassUID,
+ });
+ }
+ catch (Exception ex)
+ {
+
+ Console.WriteLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] SCP下载失败 SeriesId: {item.SeriesId} Path:{item.Path} Error: {ex.Message}\n" );
+
+ }
+
+
}
@@ -3241,29 +3251,39 @@ namespace IRaCIS.Application.Services
foreach (var item in seriesList2)
{
- var stream = await _oSSService.GetStreamFromOSSAsync(item.Path);
-
- var dicomFile = DicomFile.Open(stream);
-
- var pixelData = DicomPixelData.Create(dicomFile.Dataset);
-
- //获取像素是否为封装形式
- var syntax = dicomFile.Dataset.InternalTransferSyntax;
-
- //读取需要维护的值
- var transferSyntaxUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.TransferSyntaxUID, string.Empty);
- var mediaStorageSOPClassUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.MediaStorageSOPClassUID, string.Empty);
- var mediaStorageSOPInstanceUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.MediaStorageSOPInstanceUID, string.Empty);
- var sOPClassUID = dicomFile.Dataset.GetSingleValueOrDefault(DicomTag.SOPClassUID, string.Empty);
-
- //维护序列层级四个字段 后再用sql 维护study series 时间拆分 和 MediaStorageSOPInstanceUID
- await _instanceRepository.BatchUpdateNoTrackingAsync(t => t.SeriesId == item.SeriesId, t => new DicomInstance()
+ try
{
- IsEncapsulated = syntax.IsEncapsulated,
- TransferSyntaxUID = transferSyntaxUID,
- MediaStorageSOPClassUID = mediaStorageSOPClassUID,
- SOPClassUID = sOPClassUID,
- });
+ var stream = await _oSSService.GetStreamFromOSSAsync(item.Path);
+
+ var dicomFile = DicomFile.Open(stream);
+
+ //var pixelData = DicomPixelData.Create(dicomFile.Dataset);
+
+ //获取像素是否为封装形式
+ var syntax = dicomFile.Dataset.InternalTransferSyntax;
+
+ //读取需要维护的值
+ var transferSyntaxUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.TransferSyntaxUID, string.Empty);
+ var mediaStorageSOPClassUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.MediaStorageSOPClassUID, string.Empty);
+ var mediaStorageSOPInstanceUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.MediaStorageSOPInstanceUID, string.Empty);
+ var sOPClassUID = dicomFile.Dataset.GetSingleValueOrDefault(DicomTag.SOPClassUID, string.Empty);
+
+ //维护序列层级四个字段 后再用sql 维护study series 时间拆分 和 MediaStorageSOPInstanceUID
+ await _instanceRepository.BatchUpdateNoTrackingAsync(t => t.SeriesId == item.SeriesId, t => new DicomInstance()
+ {
+ IsEncapsulated = syntax.IsEncapsulated,
+ TransferSyntaxUID = transferSyntaxUID,
+ MediaStorageSOPClassUID = mediaStorageSOPClassUID,
+ SOPClassUID = sOPClassUID,
+ });
+ }
+ catch (Exception ex)
+ {
+
+ Console.WriteLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] 下载失败 SeriesId: {item.SeriesId} Path:{item.Path} Error: {ex.Message}\n");
+ }
+
+
}