一、使用dcm4che3的准备工作
1.1、dcm4che git地址:GitHub - dcm4che/dcm4che: DICOM Implementation in JAVA

1.2、 执行 mvn install -DskipTests 命令进行安装( 我下载的是5.24.0 版本)
这是执行成功的效果,中间那种找包就不在这里阐述了;大家如果想要直接使用的话,我已经把包上传到CSDN上了:传送门

二、操作 Dicom 文件
2.1、引入jar包
<dependency>
<groupId>org.dcm4che</groupId>
<artifactId>dcm4che-core</artifactId>
<version>5.24.0</version>
</dependency>2.2、代码例子
package com.exampl;
import org.dcm4che3.data.Attributes;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.VR;
import org.dcm4che3.io.DicomInputStream;
import org.dcm4che3.io.DicomOutputStream;
import org.springframework.util.StringUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
/**
* @ClassName PrecessDcmUtils
* @Description
* @Author WangJing
* @Date 2021/8/9 10:39 上午
* @Version V1.1.0
*/
public class PrecessDcmUtils2 {
public static void execute(String path, String newPath) throws IOException {
DicomInputStream in = null;
Attributes attr = null;
DicomOutputStream dout = null;
try {
in = new DicomInputStream(new File(path));
attr = in.readDataset();
//========患者信息
//患者ID
attr.setString(Tag.PatientID, VR.LO, "****");
//患者姓名
attr.setString(Tag.PatientName, VR.PN, "****");
//出生日期
attr.setString(Tag.PatientBirthDate, VR.DA, "20210101");
//性别
attr.setString(Tag.PatientSex, VR.CS, "F");
//年龄
attr.setString(Tag.PatientAge, VR.AS, "99Y");
//========医院信息
//医院姓名
attr.setString(Tag.InstitutionName, VR.LO, "********");
//医院地址
attr.setString(Tag.InstitutionAddress, VR.ST, "**********");
//检查信息
String referringPhysicianName = attr.getString(Tag.ReferringPhysicianName);
if (!StringUtils.isEmpty(referringPhysicianName)) {
attr.setString(Tag.ReferringPhysicianName, VR.PN, "****");
}
File newFile = new File(newPath);
dout = new DicomOutputStream(newFile);
//Attribute写入,完成更改
dout.writeDataset(in.getFileMetaInformation(), attr);
} catch (Exception exception) {
System.out.println(exception);
} finally {
//老老实实挨个关掉清理
if (dout != null) {
dout.finish();
dout.flush();
dout.close();
}
if (in != null) {
in.close();
}
}
}
public static void main(String[] args) throws IOException {
execute("/Users/wangjing/Desktop/dcm文件包/03682330/", "/Users/wangjing/Desktop/dcm文件包/03682330/");
}
}
三、执行效果
3.1、原文件(源文件涉及到敏感信息就不展示了)
3.2、新文件


注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!
版权声明:本文为wang_jing_jing原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。