C# 如何使用fo Dicom修改Dicom标记
我正在创建一个控制台应用程序,它将修改dicom标记。我将加载一个dicom文件并更新PatientID标签 我似乎无法得到任何修改。我能够阅读标签,但更新/添加似乎对我不起作用。以前我在powershell上使用过DICOM工具包,它非常简单明了,但我想开始用c#开发,但到目前为止我失败了C# 如何使用fo Dicom修改Dicom标记,c#,console,fo-dicom,C#,Console,Fo Dicom,我正在创建一个控制台应用程序,它将修改dicom标记。我将加载一个dicom文件并更新PatientID标签 我似乎无法得到任何修改。我能够阅读标签,但更新/添加似乎对我不起作用。以前我在powershell上使用过DICOM工具包,它非常简单明了,但我想开始用c#开发,但到目前为止我失败了 使用系统; 使用System.IO; 使用spiromicImporterPrep.FileMethods; 使用Dicom; 命名空间SpiromicsImporterPrep { 班级计划 { 静态vo
使用系统;
使用System.IO;
使用spiromicImporterPrep.FileMethods;
使用Dicom;
命名空间SpiromicsImporterPrep
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串文件名=@“Z:\SPIROMICS\Human\u Scans\Dispatch\u Received\NO\u BACKUP\u DONE\u HERE\MIFAR\FORCE\JH114062-FU4\119755500\Non\u Con\u FRC\u 0.75\u Qr40\u 5\u 7094\IM001139”;
var file=DicomFile.Open(文件名,readOption:FileReadOption.ReadAll);
var dicomdaset=file.Dataset;
dicomDataset.AddOrUpdate(DicomTag.PatientID,“测试患者”);
}
}
}
运行代码后,当我使用ImageJ或和其他Dicom读取器查看此文件的Dicom头标记时,我希望PatientID标记的值为“TEST-PATIENT”。代码运行时没有错误,但在查看Dicom头时,似乎没有更新或更改任何内容。您应该调用DicomFile.Save()方法
string[]files=System.IO.Directory.GetFiles(@“D:\AcquiredImages\20191107\1.2.826.0.1.3680043.2.461.11107149.32666627937\1.2.276.0.7230010.3.1.3.3632557514.6848.1573106796.739”);
foreach(文件中的var项)
{
DicomFile DicomFile=DicomFile.Open(item,FileReadOption.ReadAll);
dicomFile.Dataset.AddOrUpdate(DicomTag.PatientName,“abc”);
保存(项);
}
FileReadOption.ReadAll是必需的。
DicomFile.Open()
将文件加载到内存中,您可以在内存中对其进行操作,但如果要更新磁盘上的文件,则需要调用保存()
方法。多亏了这个,Save方法是我所缺少的,您还解决了我修改数据集中所有dicom而不是一个文件的问题。你知道加快速度的方法吗?我工作,但相当慢。
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);
}