1

我使用 AddFile(dicomFile,name) 方法添加 dicom 文件,但没有出现帧数标记。

var sourcePath = Path.Combine(tempDirectory, "DICOM", $"PATIENT{i + 1}", $"STUDY{j + 1}", $"SERIES{k + 1}", $"SUBSERIES{l + 1}");       
var dicomDir = new DicomDirectory { AutoValidate = false };

            foreach (var file in new DirectoryInfo(tempDirectory).GetFiles("*.*", SearchOption.AllDirectories))
            {
                try
                {
                    var dicomFile = DicomFile.Open(file.FullName);

                    if (dicomFile != null)
                    {
                     

                        var referenceField = file.FullName.Replace(tempDirectory, string.Empty).Trim('\\');
                        dicomDir.AddFile(dicomFile, referenceField);
                   
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex, ex.Message);
                }
            }

            var dicomDirPath = Path.Combine(tempDirectory, "DICOMDIR");
            dicomDir.Save(dicomDirPath);
            resultDirectories.Add(dicomDirPath);

我也尝试了 addorupdate 方法,但它不起作用。
我使用 fo-dicom 库 4.0.7

4

1 回答 1

0

AddFile当通过迭代调用每个文件来使用 fo-dicom 构建 DICOMDIR 时,您将获得一个包含所有必需 DicomTags 的 DICOMDIR。但是当然有很多标签是可选的,您可以自己添加它们。该方法AddFile返回一个类型的实例DicomDirectoryEntry,它为您提供对患者记录条目、研究记录条目、系列记录条目和实例记录条目的引用。您可以在此处添加任意数量的附加可选数据。在你的情况下,它看起来像

               [...]
               if (dicomFile != null)
               {
                   var referenceField = file.FullName.Replace(tempDirectory, string.Empty).Trim('\\');
                   var entries = dicomDir.AddFile(dicomFile, referenceField);

                   // now you can add some additional data.
                   // but before adding values, make sure that those values are available
                   // in your original DicomFile to avoid NullReferenceExceptions. 
                   if (dicomFile.Dataset.Contains(DicomTag.NumberOfFrames))
                   {
                       entries.InstanceRecord.AddOrUpdate(DicomTag.NumberOfFrames, dicomFile.Dataset.GetSingleValue<int>(DicomTag.NumberOfFrames));
                   }
                }
于 2021-10-11T14:23:23.863 回答