/// <summary>
/// 读取dicom文件
/// </summary>
/// <param name="srcdirectory"></param>
/// <param name="desdirectory"></param>
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);
}
}
}

}
}

/// <summary>
/// 修改DICOM文件属性值
/// </summary>
/// <param name="srcdic"></param>
/// <param name="desdic"></param>
/// <returns></returns>
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<Dicom.DicomStringElement>(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;
}

DICOM文件修改方法的更多相关文章

  1. 提高Linux安全性--hosts.allow, hosts.deny 文件修改方法

    有一种办法来提高Linux安全性--修改 hosts.allow , hosts.deny 这2个文件来配置 允许某个ip访问, 或者禁止访问. 可以通过这种方式设置限制 sshd 的远程访问, 只允 ...

  2. Magento后台手动修改订单状态方法及手动修改方法php

    订单详细内容页手动修改订单状态方法: 打开此文件:app\design\adminhtml\default\default\template\sales\order\view\history.phtm ...

  3. php文件上传大小限制的修改方法大全

    php文件上传大小限制的修改方法大全 基本就是修改maxsize选项,当然为了提高上传文件的成功率,还需要设置超时时间等. 文章如下: [php文件上传]php文件上传大小限制修改,phpmyadmi ...

  4. 详述 hosts 文件的作用及修改 hosts 文件的方法

    1 什么是hosts文件? hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联“ 数据库 ”.当用户在浏览器中输入一个需要登录的网址时,系统会首 ...

  5. PDF文件怎么修改,PDF文件编辑方法

    PDF文件是一种独特的文件,在日常办公中已经成为我们使用最广泛的电子文档格式.在使用PDF文件中会遇到PDF文件有错区的时候,再从新制作一个PDF文件会比较麻烦,只能通过工具来对PDF文件进行修改,这 ...

  6. Mac OS系统四种修改Hosts文件的方法列举

    转自:https://blog.csdn.net/u012460084/article/details/40186973 使用Mac OS X系统的用户,在某些时候可能遇到了需要修改系统Hosts文件 ...

  7. 苹果Mac OS系统修改Hosts文件的方法

    使用苹果Mac OS X系统的用户有很多,近期也有不少童鞋问我Mac怎么修改hosts,修改hosts的方式有很多,下面我就整理两种比较方便的方法吧,希望能够帮到大家. 在某些时候可能遇到了需要修改系 ...

  8. Hosts文件路径及修改方法

    (转自:http://www.techolics.com/softdev/20111029_100.html) 什么是Hosts文件? 根据百度百科的定义,Hosts文件是一个系统文件,这是一个本地的 ...

  9. CentOS 7下修改rabbitmq打开文件数量方法

    以下为使用systemd的修改方法:   1.系统层修改: 通过修改sysctl配置,提高系统的打开文件数量 vim /etc/sysctl.conf,添加: fs.file-max = 65535 ...

随机推荐

  1. HDFS的NameNode与SecondaryNameNode的工作原理

    原文:https://blog.51cto.com/xpleaf/2147375 看完之后确实对nameNode的工作更加清晰一些 在Hadoop中,有一些命名不好的模块,Secondary Name ...

  2. Linux下的命令,删除文件夹下的所有文件,而不删除文件夹本身

    Linux下的命令,删除文件夹下的所有文件,而不删除文件夹本身 rm -rf *

  3. python函数,定义,参数,返回值

    python中可以将某些具备一定功能的代码写成一个函数,通过函数可以在一定程度上减少代码的冗余,节约书写代码的时间.因为有一些代码实现的功能我们可能会在很多地方用到. 1.函数的声明与定义 通过def ...

  4. mybatis问题。foreach循环遍历数组报错情况,及其解决方法

    根据条件查询数据列表,mybatis查询代码如下 如果只查询属于特定部门拥有的数据权限.这需要用 String[ ] codes保存当前部门及其子部门的部门编码. 所以需要在mybatis中遍历编码数 ...

  5. python之hashlib模块(MD5校验)

    示例:大文件md5校验 def md5(fileMd5): import hashlib md5_value = hashlib.md5() with open(fileMd5,'rb') as f: ...

  6. Cache数据库新增用户并分配权限(Caché)

    1.通过浏览器登录管理中心,Caché自带的客户端工具是网页的,访问地址:     http://localhost:57772/csp/sys/UtilHome.csp 2.选择功能链接:系统管理- ...

  7. spring boot跨域问题的简便解决方案

    刚学spring boot的时候被跨域问题拦住好久,最终好不容易从网上抄了别人的极端代码才解决. 但是前些天看一同事的代码时,发现spring boot中用注解就可以解决. 在controller上添 ...

  8. outlook寻找/删除指定日期范围内的邮件

    总是收到很多系统预警邮件,时间久了攒了好多垃圾邮件.实际上只需保存近期预警邮件,之前的完全可以删除. 上网找了一圈也没找到方法,然后自己想到了一种,步骤如下: 使用outlook规则,将指定日期范围内 ...

  9. list集合的一些小见解

    关于LIst集合 前言: 第一次写博客,有些东西可能总结的到位,发表一下自己的一些观点,欢迎大佬们点评和指教 正文: list集合可以分为ArrayLlst和LinkedList. ArrayList ...

  10. linux日常常用命令分析

    日志处理: 测试网络路由: xargs使用方法: tcpdump命令分析: dd 写入磁盘测试 cpu个数: 查看网卡流量 查看端口联通情况,临时加端口 ntpdate同步: 可以取出变动的密码: 导 ...