From facb3181809ebd6009cc0cd127dccb2855fba927 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 21 Nov 2025 13:44:33 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=B4=E6=8A=A4=E8=84=9A?=
=?UTF-8?q?=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../IRaCIS.Core.Application.xml | 2 +-
.../Service/Visit/PatientService.cs | 112 +++++++++++-------
2 files changed, 67 insertions(+), 47 deletions(-)
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");
+ }
+
+
}