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