2015-04-24 36 views
0

我想發送一個dicom文件(dicomized pdf報告文件)到幾個PACS系統。在某些情況下,我可以做到這一點,而在其他一些情況下,我的日誌不會發送任何錯誤。Dcm4che無法發送dicom文件到幾個PACS - 永久應用程序上下文名稱不支持

這裏是我的Java代碼:

public void sendDicomPdfToPacs(String dcmFilePath) throws Exception, IOException { 

    Path tmpPdfDcm = Paths.get(dcmFilePath+".dcm"); 

    GlobalConfig cfg = new GlobalConfig(); 
    String localPacsAet = ""; 
    String localPacsIp=""; 
    int localPacsPort=0; 
    localPacsAet = cfg.getLocalPacsAet1(); 
    localPacsPort = cfg.getLocalPacsPort1(); 
    localPacsIp = cfg.getLocalPacsIp(); 

    DcmEcho dcmEcho = new DcmEcho("device"); 
    dcmEcho.setRemoteHost(localPacsIp); 
    dcmEcho.setRemotePort(localPacsPort); 
    dcmEcho.setCalledAET(localPacsAet, true); 
    dcmEcho.setCalling("DCMROUTER"); 

    Boolean dcmPacsStatus=false; 

    try { 
     dcmEcho.open(); 
     dcmPacsStatus=true; 
     log.info("PACS is up and running"); 
     dcmEcho.close(); 
    } catch (IOException ex) { 
     ... 
    } 


    if(dcmPacsStatus) { 
     DcmSnd dcmsnd = new DcmSnd("device"); 

     //Set parameters AET 
     dcmsnd.setCalledAET(localPacsAet); 
     dcmsnd.setRemoteHost(localPacsIp); 
     dcmsnd.setRemotePort(localPacsPort); 
     dcmsnd.setCalling("DCMROUTER"); 

     //Set other default parameters 
     dcmsnd.setOfferDefaultTransferSyntaxInSeparatePresentationContext(false); 
     dcmsnd.setSendFileRef(false); 
     dcmsnd.setStorageCommitment(false); 
     dcmsnd.setPackPDV(true); 
     dcmsnd.setTcpNoDelay(true); 
     //Add DICOM file 
     dcmsnd.addFile(tmpPdfDcm.toFile()); 
     // Configure transfer capability 
     dcmsnd.configureTransferCapability(); 
     try { 
      dcmsnd.start(); 
      log.info("Dicom Send initiated..."); 
     } catch (Exception e) { 
      ... 
     } 

     try { 
      long t1 = System.currentTimeMillis(); 
      dcmsnd.open(); 
      long t2 = System.currentTimeMillis(); 
      Logger.getLogger("Connected to " + localPacsAet + " in " + ((t2-t1)/1000F)+ "s"); 
      dcmsnd.send(); 
      dcmsnd.close(); 
      log.info("Released connection to " + localPacsAet); 
     } catch (IOException e) { 
      ... 
     } finally { 
      dcmsnd.stop(); 

      /* delete dicom file! */ 
      ... 

     } 
    } else { 
     log.info("Local PACS is down... Can not perform DICOM send request."); 
    } 
} 

,如果我嘗試發送到Osirix PACS則DICOM文件將被髮送成功地...

,如果我嘗試發送到其他PACS系統(如愛克發),然後我收到以下消息我的日誌:

Encapsulated Document: (0042,0011) OB #795856 [25\50\44\46\2D\31\2E\33\0A\25\E2\E3\CF\D3\0A\31\20\30\20\6F\62\...] 
MIME Type of Encapsulated Document:  (0042,0012) LO #16 [application/pdf] 
2015-04-24 15:57:02 INFO ProcessPdfReportFiles:487 - Going to perfom DICOM send request for file: C:\XXXXXXXX\5912.pdf.dcm to local pacs: [email protected]:104 
38920 [DefaultQuartzScheduler_Worker-2] INFO org.dcm4che2.net.Association - Association(1) initiated Socket[addr=/10.37.5.50,port=104,localport=53580] 
38920 [DefaultQuartzScheduler_Worker-2] INFO org.dcm4che2.net.PDUEncoder - PACS(1): A-ASSOCIATE-RQ PACS << DCMROUTER 
39040 [device-2] INFO org.dcm4che2.net.Association - PACS(1): A-ASSOCIATE-AC DCMROUTER >> PACS 
2015-04-24 15:57:02 INFO ProcessPdfReportFiles:500 - PACS is up and running 
39041 [DefaultQuartzScheduler_Worker-2] INFO org.dcm4che2.net.PDUEncoder - PACS(1) << A-RELEASE-RQ 
39045 [device-2] INFO org.dcm4che2.net.Association - PACS(1) >> A-RELEASE-RP 
39045 [device-2] INFO org.dcm4che2.net.Association - PACS(1): close Socket[addr=/10.37.5.50,port=104,localport=53580] 
.2015-04-24 15:57:02 INFO ProcessPdfReportFiles:535 - Dicom Send initiated... 
39058 [DefaultQuartzScheduler_Worker-2] INFO org.dcm4che2.net.Association - Association(2) initiated Socket[addr=/10.37.5.50,port=104,localport=53581] 
39059 [DefaultQuartzScheduler_Worker-2] INFO org.dcm4che2.net.PDUEncoder - PACS(2): A-ASSOCIATE-RQ PACS << DCMROUTER 
39191 [device-3] INFO org.dcm4che2.net.Association - PACS(2) >> org.dcm4che2.net.pdu.AAssociateRJ: A-ASSOCIATE-RJ[result=1, source=1, reason=2]: 
permanent application-context-name-not-supported 
39192 [device-3] INFO org.dcm4che2.net.Association - PACS(2): close Socket[addr=/10.37.5.50,port=104,localport=53581] 

所以我想,這個特殊的PACS否認,因爲我的發送請求:

A-ASSOCIATE-RJ[result=1, source=1, reason=2]: permanent application-context-name-not-supported 

那麼這是什麼意思?我在這裏錯過了什麼?

+0

我也嘗試使用命令行中的dcmsnd工具發送文件:dcmsnd [email protected]:104 5912 .pdf.dcm 和我相同:錯誤:無法建立關聯:A-ASSOCIATE-RJ [result = 1,source = 1,reason = 2]:永久應用程序上下文名稱不支持 我是否必須設置任何內容才能成功發送文件?例如關聯參數? – thanili

回答

1

你是對的。 PACS可能不支持封裝PDF SOP類。通過將日誌放在DEBUG上,您可以獲得更多信息 - 如果啓用了DEBUG日誌記錄,則您收到的A-ASSOCIATE-RJ消息將指示不支持什麼表示上下文(SOP類+傳輸語法)。

http://medical.nema.org/dicom/2013/output/chtml/part08/sect_9.3.html是標準中的相關部分。

簡單存儲數據很可能在Agfa PACS系統中配置。通過您提出的演示文稿上下文聯繫網站的PACS管理員,他們可以添加它。

0

服務器提供的關聯拒絕原因是「應用程序上下文名稱不受支持」。這意味着SCU提出了SCP不支持的應用程序上下文名稱的UID。 嘗試使用DICOM 3.0的默認應用程序上下文名稱UID - 「1.2.840.10008.3.1.1.1」

相關問題