目录
系列文章目录
第一章:PACS-医学影像(一)
一、创建连接
public class PacsMain {
private DcmQR dcmqr;
/**
* 下载数据的方法
*
* @param queryLevel 查询级别
* @param matchingKey 查询条件
*/
public List<DicomObject> download(PacsInfo pacsInfo, DcmQR.QueryRetrieveLevel queryLevel, Map<String, String> matchingKey) throws Exception {
List<DicomObject> returnList;
// 设置参数
creatInstance(pacsInfo.getScpAE(), pacsInfo.getScpHostname(), pacsInfo.getScpPort(), pacsInfo.getScuAE());
setQueryLevel(queryLevel);
setMatchingKey(matchingKey);
returnList = downloadImage();
dcmqr.start();
dcmqr.open();
dcmqr.close();
dcmqr.stop();
return returnList;
}
/**
* 创建查询、下载请求功能类
* @param scpAE 服务端AE
* @param scpHost 服务端IP
* @param scpPort 服务端PORT
* @param scuAE 客户端AE
*/
public synchronized void creatInstance(String scpAE, String scpHost,
int scpPort, String scuAE) {
dcmqr = new DcmQR(scuAE);
dcmqr.setCalledAET(scpAE, false);
dcmqr.setRemoteHost(scpHost);
dcmqr.setRemotePort(scpPort);
dcmqr.setPackPDV(true);
dcmqr.setTcpNoDelay(true);
dcmqr.setMaxOpsInvoked(1);
dcmqr.setMaxOpsPerformed(0);
dcmqr.setCFind(true);
dcmqr.setCGet(false);
dcmqr.setMoveDest(scuAE);
dcmqr.addDefReturnKeys();
dcmqr.configureTransferCapability(false);
}
public void setQueryLevel(DcmQR.QueryRetrieveLevel queryRetrieveLevel) {
dcmqr.setQueryLevel(queryRetrieveLevel);
}
public void setMatchingKey(Map<String, String> matchConf) {
for (Map.Entry<String, String> entry : matchConf.entrySet()) {
dcmqr.addMatchingKey(Tag.toTagPath(entry.getKey()),
entry.getValue());
}
}
二、接收参数
1.DicomObject
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package org.dcm4che2.data;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;
import java.util.Iterator;
public interface DicomObject extends Serializable {
int size();
boolean isEmpty();
void clear();
DicomObject getRoot();
boolean isRoot();
DicomObject getParent();
void setParent(DicomObject var1);
SpecificCharacterSet getSpecificCharacterSet();
Iterator<DicomElement> iterator();
Iterator<DicomElement> iterator(int var1, int var2);
Iterator<DicomElement> commandIterator();
Iterator<DicomElement> fileMetaInfoIterator();
Iterator<DicomElement> datasetIterator();
int getItemPosition();
void setItemPosition(int var1);
long getItemOffset();
void setItemOffset(long var1);
VR vrOf(int var1);
String nameOf(int var1);
int resolveTag(int var1, String var2);
int resolveTag(int var1, String var2, boolean var3);
String getPrivateCreator(int var1);
int vm(int var1);
boolean contains(int var1);
boolean containsValue(int var1);
boolean containsAll(DicomObject var1);
boolean accept(DicomObject.Visitor var1);
void add(DicomElement var1);
DicomElement remove(int var1);
DicomElement remove(int[] var1);
DicomElement get(int var1);
DicomElement get(int var1, VR var2);
DicomElement get(int[] var1);
DicomElement get(int[] var1, VR var2);
byte[] getBytes(int var1, boolean var2);
byte[] getBytes(int var1);
byte[] getBytes(int[] var1, boolean var2);
byte[] getBytes(int[] var1);
DicomObject getNestedDicomObject(int var1);
DicomObject getNestedDicomObject(int[] var1);
int getInt(int var1);
int getInt(int var1, VR var2);
int getInt(int var1, int var2);
int getInt(int var1, VR var2, int var3);
int getInt(int[] var1);
int getInt(int[] var1, VR var2);
int getInt(int[] var1, int var2);
int getInt(int[] var1, VR var2, int var3);
int[] getInts(int var1);
int[] getInts(int var1, VR var2);
int[] getInts(int var1, int[] var2);
int[] getInts(int var1, VR var2, int[] var3);
int[] getInts(int[] var1);
int[] getInts(int[] var1, VR var2);
int[] getInts(int[] var1, int[] var2);
int[] getInts(int[] var1, VR var2, int[] var3);
short[] getShorts(int var1);
short[] getShorts(int var1, VR var2);
short[] getShorts(int var1, short[] var2);
short[] getShorts(int var1, VR var2, short[] var3);
short[] getShorts(int[] var1);
short[] getShorts(int[] var1, VR var2);
short[] getShorts(int[] var1, short[] var2);
short[] getShorts(int[] var1, VR var2, short[] var3);
float getFloat(int var1);
float getFloat(int var1, VR var2);
float getFloat(int var1, float var2);
float getFloat(int var1, VR var2, float var3);
float getFloat(int[] var1);
float getFloat(int[] var1, VR var2);
float getFloat(int[] var1, float var2);
float getFloat(int[] var1, VR var2, float var3);
float[] getFloats(int var1);
float[] getFloats(int var1, VR var2);
float[] getFloats(int var1, float[] var2);
float[] getFloats(int var1, VR var2, float[] var3);
float[] getFloats(int[] var1);
float[] getFloats(int[] var1, VR var2);
float[] getFloats(int[] var1, float[] var2);
float[] getFloats(int[] var1, VR var2, float[] var3);
double getDouble(int var1);
double getDouble(int var1, VR var2);
double getDouble(int var1, double var2);
double getDouble(int var1, VR var2, double var3);
double getDouble(int[] var1);
double getDouble(int[] var1, VR var2);
double getDouble(int[] var1, double var2);
double getDouble(int[] var1, VR var2, double var3);
double[] getDoubles(int var1);
double[] getDoubles(int var1, VR var2);
double[] getDoubles(int var1, double[] var2);
double[] getDoubles(int var1, VR var2, double[] var3);
double[] getDoubles(int[] var1);
double[] getDoubles(int[] var1, VR var2);
double[] getDoubles(int[] var1, double[] var2);
double[] getDoubles(int[] var1, VR var2, double[] var3);
String getString(int var1);
String getString(int var1, VR var2);
String getString(int var1, String var2);
String getString(int var1, VR var2, String var3);
String getString(int[] var1);
String getString(int[] var1, VR var2);
String getString(int[] var1, String var2);
String getString(int[] var1, VR var2, String var3);
String[] getStrings(int var1);
String[] getStrings(int var1, VR var2);
String[] getStrings(int var1, String[] var2);
String[] getStrings(int var1, VR var2, String[] var3);
String[] getStrings(int[] var1);
String[] getStrings(int[] var1, VR var2);
String[] getStrings(int[] var1, String[] var2);
String[] getStrings(int[] var1, VR var2, String[] var3);
Date getDate(int var1);
Date getDate(int var1, VR var2);
Date getDate(int var1, Date var2);
Date getDate(int var1, VR var2, Date var3);
Date getDate(int var1, int var2);
Date getDate(int var1, int var2, Date var3);
Date getDate(int[] var1);
Date getDate(int[] var1, VR var2);
Date getDate(int[] var1, Date var2);
Date getDate(int[] var1, VR var2, Date var3);
Date getDate(int[] var1, int var2, int var3);
Date getDate(int[] var1, int var2, int var3, Date var4);
Date[] getDates(int var1);
Date[] getDates(int var1, VR var2);
Date[] getDates(int var1, Date[] var2);
Date[] getDates(int var1, VR var2, Date[] var3);
Date[] getDates(int var1, int var2);
Date[] getDates(int var1, int var2, Date[] var3);
Date[] getDates(int[] var1);
Date[] getDates(int[] var1, VR var2);
Date[] getDates(int[] var1, Date[] var2);
Date[] getDates(int[] var1, VR var2, Date[] var3);
Date[] getDates(int[] var1, int var2, int var3);
Date[] getDates(int[] var1, int var2, int var3, Date[] var4);
DateRange getDateRange(int var1);
DateRange getDateRange(int var1, VR var2);
DateRange getDateRange(int var1, DateRange var2);
DateRange getDateRange(int var1, VR var2, DateRange var3);
DateRange getDateRange(int var1, int var2);
DateRange getDateRange(int var1, int var2, DateRange var3);
DateRange getDateRange(int[] var1);
DateRange getDateRange(int[] var1, VR var2);
DateRange getDateRange(int[] var1, DateRange var2);
DateRange getDateRange(int[] var1, VR var2, DateRange var3);
DateRange getDateRange(int[] var1, int var2, int var3);
DateRange getDateRange(int[] var1, int var2, int var3, DateRange var4);
DicomElement putNull(int var1, VR var2);
DicomElement putBytes(int var1, VR var2, byte[] var3);
DicomElement putBytes(int var1, VR var2, byte[] var3, boolean var4);
DicomElement putNestedDicomObject(int var1, DicomObject var2);
DicomElement putInt(int var1, VR var2, int var3);
DicomElement putInts(int var1, VR var2, int[] var3);
DicomElement putShorts(int var1, VR var2, short[] var3);
DicomElement putFloat(int var1, VR var2, float var3);
DicomElement putFloats(int var1, VR var2, float[] var3);
DicomElement putDouble(int var1, VR var2, double var3);
DicomElement putDoubles(int var1, VR var2, double[] var3);
DicomElement putString(int var1, VR var2, String var3);
DicomElement putStrings(int var1, VR var2, String[] var3);
DicomElement putDate(int var1, VR var2, Date var3);
DicomElement putDates(int var1, VR var2, Date[] var3);
DicomElement putDateRange(int var1, VR var2, DateRange var3);
DicomElement putSequence(int var1);
DicomElement putSequence(int var1, int var2);
DicomElement putFragments(int var1, VR var2, boolean var3);
DicomElement putFragments(int var1, VR var2, boolean var3, int var4);
DicomElement putNull(int[] var1, VR var2);
DicomElement putBytes(int[] var1, VR var2, byte[] var3);
DicomElement putBytes(int[] var1, VR var2, byte[] var3, boolean var4);
DicomElement putNestedDicomObject(int[] var1, DicomObject var2);
DicomElement putInt(int[] var1, VR var2, int var3);
DicomElement putInts(int[] var1, VR var2, int[] var3);
DicomElement putShorts(int[] var1, VR var2, short[] var3);
DicomElement putFloat(int[] var1, VR var2, float var3);
DicomElement putFloats(int[] var1, VR var2, float[] var3);
DicomElement putDouble(int[] var1, VR var2, double var3);
DicomElement putDoubles(int[] var1, VR var2, double[] var3);
DicomElement putString(int[] var1, VR var2, String var3);
DicomElement putStrings(int[] var1, VR var2, String[] var3);
DicomElement putDate(int[] var1, VR var2, Date var3);
DicomElement putDates(int[] var1, VR var2, Date[] var3);
DicomElement putDateRange(int[] var1, VR var2, DateRange var3);
DicomElement putSequence(int[] var1);
DicomElement putSequence(int[] var1, int var2);
DicomElement putFragments(int[] var1, VR var2, boolean var3);
DicomElement putFragments(int[] var1, VR var2, boolean var3, int var4);
void shareElements();
void serializeElements(ObjectOutputStream var1) throws IOException;
void copyTo(DicomObject var1);
boolean matches(DicomObject var1, boolean var2);
boolean cacheGet();
void cacheGet(boolean var1);
boolean cachePut();
void cachePut(boolean var1);
boolean bigEndian();
void bigEndian(boolean var1);
DicomObject command();
DicomObject dataset();
DicomObject fileMetaInfo();
DicomObject subSet(DicomObject var1);
DicomObject subSet(int var1, int var2);
DicomObject subSet(int[] var1);
DicomObject exclude(int[] var1);
DicomObject excludePrivate();
void initFileMetaInformation(String var1);
void initFileMetaInformation(String var1, String var2, String var3);
int toStringBuffer(StringBuffer var1, DicomObjectToStringParam var2);
public interface Visitor {
boolean visit(DicomElement var1);
}
}
2.接收dicom文件
代码如下(示例):
private List<DicomObject> downloadImage() throws IOException, InterruptedException {
List<DicomObject> result = Collections.singletonList(dcmqr.getKeys());
if (dcmqr.isCMove()) {
dcmqr.move(result);
} else if (dcmqr.isCGet()) {
dcmqr.get(result);
}
return result;
}
本文介绍接收dicom文件的方法,有兴趣留言沟通~