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