Orthanc服务器使用java上传dicom影像文件

Orthanc服务器搭好后就可以通过AET标识接收来自CT设备发送过来的dcm文件,也可以通过java代码直接发送dcm文件到接口。

代码如下:

复制代码
package mycmf.util;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths; 

/* todo:上传dcm文件到Orthanc服务器   */

public class httpost{ 
	
	String postUrl = "http://127.0.0.1:8042/instances/";
	String upfile = "d:/tmp/aaa.dcm" ;
	
	public static void main(String[] args) throws IOException {
		String ree     = "";
		String postUrl = "http://127.0.0.1:8042/instances/";
		String upfile1 = "d:/tmp/aaa.dcm" ;
		String upfile2 = "d:/tmp/bbb.dcm" ;
		String upfile3 = "d:/tmp/ccc.dcm" ;
		httpost http   = new httpost();
		       ree     =  http.postDcm(upfile1, postUrl , "");
			   System.out.println(ree);
			   ree     =  http.postDcm(upfile2, postUrl , "");
			   System.out.println(ree);
			   ree     =  http.postDcm(upfile3, postUrl , "");
			   System.out.println(ree);
	   /*
	   {
		   "ID" : "ab75a1a7-845fcc81-194b8484-e04fe3f4-7330b852",
		   "ParentPatient" : "38bf71cf-d3b6ba1d-db6cfb58-e793c50d-33538aa4",
		   "ParentSeries" : "c089267e-79df16ea-9d05eef9-584379bd-acf3fe5d",
		   "ParentStudy" : "3ab4506b-5a84e3f4-816c8a3c-9283b402-0eda4767",
		   "Path" : "/instances/ab75a1a7-845fcc81-194b8484-e04fe3f4-7330b852",
		   "Status" : "AlreadyStored"   <-- 重复传送同一个dcm文件会提示已保存
		}
		{
		   "ID" : "f929967c-6bb6581f-9d82fe8b-35d3d395-57ad17ba",
		   "ParentPatient" : "38bf71cf-d3b6ba1d-db6cfb58-e793c50d-33538aa4",
		   "ParentSeries" : "5b194237-b6ff79c1-6e885d0e-f97cfdfa-39c4212b",
		   "ParentStudy" : "3ab4506b-5a84e3f4-816c8a3c-9283b402-0eda4767",
		   "Path" : "/instances/f929967c-6bb6581f-9d82fe8b-35d3d395-57ad17ba",
		   "Status" : "Success"
		}
		{
		   "ID" : "3002cfed-1b0f01e2-01b90ca4-33d0fa15-298f206c",
		   "ParentPatient" : "38bf71cf-d3b6ba1d-db6cfb58-e793c50d-33538aa4",
		   "ParentSeries" : "5b194237-b6ff79c1-6e885d0e-f97cfdfa-39c4212b",
		   "ParentStudy" : "3ab4506b-5a84e3f4-816c8a3c-9283b402-0eda4767",
		   "Path" : "/instances/3002cfed-1b0f01e2-01b90ca4-33d0fa15-298f206c",
		   "Status" : "Success"
		}	    
	    * */
	}
	
	/* 上传dcm文件到Orthanc服务器   */
	/*
	 * String filePath = "E:\\Dicom\\20220331093824\\ExpMPR.303.5.dcm";
     * String ree =  HP.postDcm(filePath,"http://localhost:8042/instances/","");
	 * */
	public String postDcm(String filePath, String orthancUrl, String token) throws IOException {
		String ree = "";
        URL url = new URL(orthancUrl);
        HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();

        httpCon.setDoOutput(true);
        httpCon.setRequestMethod("POST");
      
        //Optional: 如果需要,可以加上token等其它header信息
        httpCon.setRequestProperty ("Authorization", "Bearer " + token);
      
        OutputStream os = httpCon.getOutputStream();
        byte[] bytes = Files.readAllBytes(Paths.get(filePath));
        os.write(bytes);
        os.flush();
        os.close();
        httpCon.connect();

        // 打印出response
        String result;
        BufferedInputStream bis = new BufferedInputStream(httpCon.getInputStream());
        ByteArrayOutputStream buf = new ByteArrayOutputStream();
        int result2 = bis.read();
        while(result2 != -1) {
            buf.write((byte) result2);
            result2 = bis.read();
        }
        result = buf.toString();
        bis.close();
        buf.close();
        httpCon.disconnect();
        //System.out.println(result);
        ree = result ;
        return ree ;
    }  
	
	
}

上传成功后出现两个序列组,一个1图,一个2图,因为我测试的3个dcm文件来自两组序列,Orthanc会自动识别所属分组。

文件上传后resources表里对应的记录:

相关推荐
顺风尿一寸1 小时前
记一次 Spring AOP 与定时任务引发的死锁排查
java
用户446139430271 小时前
从单体到微服务:我们项目的拆分思路和踩坑记录
java
BullSmall1 小时前
Anolis OS 8.10 Docker 部署 SonarQube 9.9 完整教程
运维·docker·容器
AAA@峥1 小时前
CentOS7 搭建 ELK 企业级日志集群:从部署到日志可视化完整实战
运维·elk·centos
ZKNOW甄知科技1 小时前
燕千云深度集成飞书:以AI之力,开启无感IT运维体验
大数据·运维·网络·数据库·人工智能·低代码·集成学习
叮咚侠2 小时前
docker安装的kibana+elasticsearch,突然kibana界面打不开了
运维·jenkins
nVisual2 小时前
数据中心机柜负载均衡与三相相位监控方案
运维·网络·负载均衡·数据中心布线·综合布线管理软件
国服第二切图仔2 小时前
02-breakpoint-system
运维·harmonyos
TDengine (老段)2 小时前
TDengine 免费版说明
java·大数据·数据库·物联网·时序数据库·tdengine