帧数标记出现在数据集中但不在 DICOMDIR C# 中

The number of frames tag appears in the dataset but is not in the DICOMDIR C#

我使用 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

当通过为每个文件迭代调用 AddFile 来使用 fo-dicom 构建 DICOMDIR 时,您将获得一个包含所有必需的 DicomTag 的 DICOMDIR。但是当然有很多标签是可选的,你可以自己添加。 方法 AddFile returns 类型 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));
                   }
                }