tag 批量修改dicom_DICOM文件修改方法

该博客介绍了一个用于批量修改DICOM文件属性的方法,包括读取文件、比较文件名、更新DICOM信息如PatientID、PatientName、StudyInstanceUID等,并提供了具体的C#代码示例。
摘要由CSDN通过智能技术生成

///

/// 读取dicom文件

///

///

///

public static void ReadAndEditFileInfo(string srcdirectory, string desdirectory)

{

string[] Srcfilenames = Directory.GetFileSystemEntries(srcdirectory);

string[] Destfilenames = Directory.GetFileSystemEntries(desdirectory);

foreach (string srcfilename in Srcfilenames)

{

foreach (string destfilename in Destfilenames)

{

int oldLength = destfilename.Length;

int length = srcfilename.Length;

int oldlocation = destfilename.LastIndexOf("\\");

int location = srcfilename.LastIndexOf("\\");

string name = srcfilename.Substring(location, length - location);

string oldname = destfilename.Substring(oldlocation, oldLength - oldlocation);

//如果查找最后文件名称里面带.dcm的后缀就不进行文件比较了

if (!name.Contains(".dcm") || !oldname.Contains(".dcm"))

{

if (name == oldname)

{

//获取文件名称

if (Directory.Exists(srcfilename))

{

//获取文件夹下的所有文件名称

DirectoryInfo root = new DirectoryInfo(srcfilename);

FileInfo[] files = root.GetFiles();

DirectoryInfo oldroot = new DirectoryInfo(destfilename);

FileInfo[] oldfiles = oldroot.GetFiles();

foreach (var file in files)

{

foreach (var oldfile in oldfiles)

{

if (file.Name == oldfile.Name)

{

string path = srcfilename + "\\" + file;

string oldpath = destfilename + "\\" + oldfile;

ImageEditor.UpdateDicomFileInfo(oldpath, path);

}

}

}

}

ReadAndEditFileInfo(srcfilename, destfilename);

}

}

}

}

}

///

/// 修改DICOM文件属性值

///

///

///

///

public static bool UpdateDicomFileInfo(string srcdic, string desdic)

{

try

{

FileStream fs = new FileStream(desdic, FileMode.Create);

Stream stream = fs;

var dicomFile = DicomFile.Open(srcdic);

var datasetFile = dicomFile.Dataset.GetDicomItem(DicomTag.StudyDate);

string patientId = dicomFile.Dataset.GetString(DicomTag.PatientID);

string patientName = dicomFile.Dataset.GetString(DicomTag.PatientName);

string studyInstanceUId = dicomFile.Dataset.GetString(DicomTag.StudyInstanceUID);

string seriesInstanceUId = dicomFile.Dataset.GetString(DicomTag.SeriesInstanceUID);

//dicomFile.Dataset.AddOrUpdate(DicomTag.StudyDate, DateTime.Now);

//dicomFile.Dataset.AddOrUpdate(DicomTag.StudyTime, DateTime.Now);

//dicomFile.Dataset.AddOrUpdate(DicomTag.PatientSex, "F");

//dicomFile.Dataset.AddOrUpdate(DicomTag.PatientAge, "015Y");//DWMY (year,month,week,day)

dicomFile.Dataset.AddOrUpdate(DicomTag.Manufacturer, "");

dicomFile.Dataset.AddOrUpdate(DicomTag.ManufacturerModelName, "");

dicomFile.Dataset.AddOrUpdate(DicomTag.PatientName, patientName + "-Name");

dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, patientId + "-ID");

dicomFile.Dataset.AddOrUpdate(DicomTag.StudyInstanceUID, studyInstanceUId + "1");

dicomFile.Dataset.AddOrUpdate(DicomTag.SeriesInstanceUID, seriesInstanceUId + "2");

//dicomFile.Dataset.AddOrUpdate(DicomTag.TableHeight,12.13);

dicomFile.Save(stream);

}

catch(Exception e)

{

return false;

}

return true;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值