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表里对应的记录:

相关推荐
rannn_1112 小时前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
leisoo80972 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
爱喝水的鱼丶3 小时前
SAP-ABAP:接口与报表场景专项优化:RFC/ODATA 接口、ALV 报表的性能提升方案
运维·性能优化·接口·sap·abap·rfc·经验交流
IKUN家族4 小时前
Spring IoC&DI
java·spring·rpc
码上上班4 小时前
tengine知识点
linux·服务器·centos
画中有画4 小时前
自动化脚本开发最佳实践
运维·自动化
山荷枝5 小时前
03-框架--Spring
java·后端·spring
ChaHae-In5 小时前
SpringBoot统一功能处理
java·spring boot·后端
coder!mq6 小时前
说几个常见的语法糖?
java·开发语言·算法
gugucoding6 小时前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言