1

我正在创建一个将修改 dicom 标签的控制台应用程序。我将加载单个 dicom 文件并更新 PatientID 标签。

我似乎无法得到任何修改。我能够阅读标签,但更新/添加似乎对我不起作用。以前我在 powershell 上使用过 DICOM ToolKit,它非常简单明了,但我想开始用 c# 进行开发,但到目前为止我失败了。

using System;
using System.IO;
using SpiromicsImporterPrep.FileMethods;
using Dicom;

namespace SpiromicsImporterPrep
{
    class Program
    {
        static void Main(string[] args)
        {
            string filename = @"Z:\SPIROMICS\Human_Scans\Dispatch_Received\NO_BACKUP_DONE_HERE\MIFAR\FORCE\JH114062-FU4\119755500\Non_Con_FRC__0.75__Qr40__5_7094\IM001139";
            var file = DicomFile.Open(filename, readOption: FileReadOption.ReadAll);
            var dicomDataset = file.Dataset;
            dicomDataset.AddOrUpdate(DicomTag.PatientID, "TEST-PATIENT");

        }
    }
}

当我使用 ImageJ 或其他 dicom 阅读器查看此文件的 Dicom Header 标记时,我希望在运行代码后,PatientID 标记的值将是“TEST-PATIENT”代码运行没有错误但似乎没有任何更新或在我查看 dicom 标头时更改。

4

1 回答 1

2

你应该调用 DicomFile.Save() 方法。

            string[] files = System.IO.Directory.GetFiles(@"D:\AcquiredImages\20191107\1.2.826.0.1.3680043.2.461.11107149.3266627937\1.2.276.0.7230010.3.1.3.3632557514.6848.1573106796.739");

            foreach (var item in files)
            {
                DicomFile dicomFile = DicomFile.Open(item,FileReadOption.ReadAll);             

                dicomFile.Dataset.AddOrUpdate<string>(DicomTag.PatientName, "abc");

                dicomFile.Save(item);
            }

FileReadOption.ReadAll 是必需的。

于 2019-11-07T07:28:18.843 回答