diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index df5f8df92..67822db65 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -30,6 +30,7 @@ using NPOI.XWPF.UserModel; using System.Globalization; using System.Runtime.InteropServices; using System.Text; +using Log = Serilog.Log; @@ -78,6 +79,7 @@ namespace IRaCIS.Core.Application.Service // DicomStudyTime = REPLACE(CONVERT(char(8), StudyTime, 108), ':', ''); --HHmmss // where DicomStudyDate = '' + var errorCount = 0; //instance 找到传输语法为空的,然后分组 var seriesList = _instanceRepository.Where(t => t.TransferSyntaxUID == "") @@ -88,29 +90,40 @@ namespace IRaCIS.Core.Application.Service 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 _instanceRepository.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 _instanceRepository.BatchUpdateNoTrackingAsync(t => t.SeriesId == item.SeriesId, t => new SCPInstance() + { + IsEncapsulated = syntax.IsEncapsulated, + TransferSyntaxUID = transferSyntaxUID, + MediaStorageSOPClassUID = mediaStorageSOPClassUID, + SOPClassUID = sOPClassUID, + }); + } + catch (Exception e) + { + errorCount++; + + Log.Logger.Error($"错误数量:{errorCount} 路径:{item.Path}"); + Log.Logger.Error(e.InnerException is null ? e.Message + e.StackTrace : e.InnerException?.Message + e.InnerException?.StackTrace); + } + }