DCM影像图片脱敏处理

  • Post author:
  • Post category:其他


DCM影像图片脱敏处理

现在很多医院设备拍片生成dcm格式的图片,里面有诸如病人姓名、出生年月、设备相关的一系列tag,前面应公司要求,需要对这些dcm格式的图片做一个脱敏处理,将一些敏感的私人信息模糊处理,如病人姓名“张三”,改为“张**”,以供其他非医疗人员学习调用该图片,避免了病人的隐私泄露。

处理效果对比图为:



需要的jar包:


程序源代码代码如下:

public class ModifiedDcm {
	public static void dealImg(String url){
		DicomObject dcmObj;
		DicomInputStream din=null;
	    HashMap<String, String> studyUIDBeforeAndAfter=new HashMap<String, String>();
		HashMap<String, String> serieUIDBeforeAndAfter=new HashMap<String, String>();
		ArrayList<String> dcmFiles4Changed=new ArrayList<String>();
		//File fileDCM=new File("E:\\DCM4CHEE\\DcmSend\\dcmsend\\CT23550\\1.dcm");
		File fileDCM=new File(url);//加载要修改的图片
		
		try {
			din=new DicomInputStream(fileDCM);
			if(din==null) return;
			dcmObj=din.readDicomObject();
			
			//修改patientName,如张三用张**代替
			String name=dcmObj.getString(Tag.PatientName);
			System.out.println(name);
			String[] arr=name.split("\\s+");
			StringBuffer sb=new StringBuffer();
			sb.append(arr[0]).append("**");
			dcmObj.remove(Tag.PatientName);//修改姓名tag
			dcmObj.putString(Tag.PatientName, VR.PN, sb.toString());
			
			din.close();
			
			//Save Changes
			FileOutputStream fos;
			try {
				fos = new FileOutputStream(fileDCM);
				BufferedOutputStream bos=new BufferedOutputStream(fos);
				DicomOutputStream dos=new DicomOutputStream(bos);
				try {
					dos.writeDicomFile(dcmObj);//将脱敏处理后的图片写入到输出文件
					dos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
		} catch (IOException e) {
			e.printStackTrace();
			return;
		}
	}
	public static void main(String[] args) {
		dealImg("D:\\db_pic\\101\\5206632-0000000001-0001-10001-1.2.392.200046.100.2.1.114365574053.131105094655.2.1.1.1.dcm");
	}
}



版权声明:本文为Porcelain_cs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。