【问题标题】:Retrieve Dicom image from Pacs server从 Pacs 服务器检索 Dicom 图像
【发布时间】:2014-05-08 12:52:48
【问题描述】:

我正在使用 DcmQR 从远程 Pacs 服务器查询/检索 dicom 图像,我能够按指定条件获取 Dicom 对象列表。 1. 在编写 dicom 对象时,它只显示 1 kb 的大小。 2.打印对象数据时,打印每个数据为空。 我在这方面很新,请帮帮我.. :(

     My code :

    public static void main(String args[]){

    dcmqr = new DcmQR("DCM4CHEE");
    dcmqr.setCalledAET("DCM4CHEE", true);
    dcmqr.setRemoteHost("remote ip");
    dcmqr.setRemotePort(remote port);
    dcmqr.getKeys();
    dcmqr.setDateTimeMatching(true);
    dcmqr.setCFind(true);
    dcmqr.setCGet(true);


    dcmqr.setQueryLevel(DcmQR.QueryRetrieveLevel.IMAGE);
    dcmqr.addMatchingKey(Tag.toTagPath("PatientName"),"Vicens^DICOM");
    dcmqr.configureTransferCapability(true);

    List<DicomObject> result = null;    
    try {
    dcmqr.start();
    dcmqr.open();
    result = dcmqr.query();
    dcmqr.get(result);
    System.out.println("List Size : " + result.size());
    displayObjectDetails(result);
    for (DicomObject dco : result) {
               Byte data[] = toByteArray(dco);

               // here how can get dicom image ??


    }

    } catch (Exception e) {
        System.out.println("error " + e);
    }
    try {
      if (dcmqr != null) {
        dcmqr.stop();
        dcmqr.close();
      }
    } catch (Exception e) {
       e.printStackTrace();
      }
    }

// toByteArray Method here 
private static byte[] toByteArray(DicomObject obj) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        BufferedOutputStream bos = new BufferedOutputStream(baos);
        DicomOutputStream dos = new DicomOutputStream(bos);
        dos.writeDicomFile(obj);
        dos.close();          
        byte[] data = baos.toByteArray();  
        return data;
}

// display object details

private static void displayObjectDetails(List resultimg) {

DicomObject obj = new BasicDicomObject();
List<String> listimg = new ArrayList<String>();
for (int i = 0; i < resultimg.size(); i++) {
    obj = resultimg.get(i);

    System.out.println("InstanceNumber : "+obj.getString(Tag.InstanceNumber, VR.IS));
    System.out.println("ImageType : "+obj.getString(Tag.ImageType, VR.CS));
    System.out.println("ImageID : "+obj.getString(Tag.ImageID, VR.SH));
    System.out.println("RetrieveAETitle : "+obj.getString(Tag.RetrieveAETitle, VR.AE));
    System.out.println("SOPInstanceUID : "+obj.getString(Tag.SOPInstanceUID, VR.UI));

    System.out.println("PatientName : "+obj.getString(Tag.PatientName, VR.PN));
    System.out.println("PatientBirthDate : "+obj.getString(Tag.PatientBirthDate, VR.DA));
    System.out.println("PatientSex : "+obj.getString(Tag.PatientSex, VR.CS));
    System.out.println("ReferringPhysicianName : "+obj.getString(Tag.ReferringPhysicianName, VR.PN));
    System.out.println("StudyDescription : "+obj.getString(Tag.StudyDescription, VR.LO));
    System.out.println("SeriesDescription : "+obj.getString(Tag.SeriesDescription, VR.LO));

    }

// 输出 列表大小 = 8 实例编号:1 图像类型:空 图像类型:空 检索AETitle:DCM4CHEE SOPInstanceUID:1.3.12.2.1107.5.2.5.11090.5.0.582504825601085 患者姓名:空 患者出生日期:空 患者性别:空 推荐医师姓名:空 研究描述:空 系列描述:空

【问题讨论】:

  • 或者我可以在本地系统上写入/存储 dicom 图像吗???
  • 尝试删除 dcmqr.setCFind(true); 部分,仅使用 CGet。
  • 您好吉尔伯托,非常感谢您的回复。我评论了 dcmdr.setCFind(true);但输出是一样的,每件事都是空的。
  • 当我尝试 getBufferedIamge AS 时:bais = new ByteArrayInputStream(dicomData); iter = ImageIO.getImageReadersByFormatName("DICOM"); reader = (ImageReader) iter.next();参数 =reader.getDefaultReadParam(); ImageInputStream iis = ImageIO.createImageInputStream(bais); reader.setInput(iis, false); bufferImage = reader.read(0, param);它给 java.lang.ArrayIndexOutOfBoundsException: 0 at Line //bufferImage = reader.read(0, param);请帮忙
  • 文档中给出的cli示例是“dcmqr -L DCMQR DCM4CHEE@RadiologyServer:11112 -q00100020=QCTEST1 -q00100021=JHH -cget -cstore 1.2.840.10008.5.1.4.1.1.128 -cstoredest C :\Test" 你用了什么命令?你知道要检索的对象的 sop 类 uid 吗?

标签: java dicom


【解决方案1】:

您是否可能只保存查询响应?从 PACS 中检索图像有两种方法,一种是发送 C-MOVE,并将移动目标 AE 设置为 DICOM 侦听器的 AE。第二种方式虽然不是很常见,但是发送一个 C-GET 请求。

【讨论】:

  • 您好 LEADTOOLS,感谢您的回复。我已经做到了,并且使用 c-move 运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 2015-11-17
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
相关资源
最近更新 更多