bool DcmSend::cgetDcm() { OFVector<RetrieveResponse*> findResponses; DcmDataset req; // req.putAndInsertString(DCM_PatientName,"Nurmukhametov"); // req.putAndInsertString(DCM_SOPInstanceUID,"1.3.12.2.1107.5.4.5.55301.30000013021404234482800000106.512"); req.putAndInsertString(DCM_SeriesInstanceUID,"1.3.12.2.1107.5.2.13.20561.30000005042216091690600002608"); req.putAndInsertString(DCM_QueryRetrieveLevel,"SERIES"); // req.putAndInsertString(DCM_SOPClassUID,"1.2.840.10008.5.1.4.1.1.4"); // req.putAndInsertString(DCM_StudyInstanceUID,"1.2.840.113745.101000.1008000.38446.6272.7138759"); Sender.setStorageMode(DCMSCU_STORAGE_DISK); Sender.setStorageDir("/tmp/dcmstorage"); // req.putAndInsertOFStringArray(DCM_QueryRetrieveLevel, "STUDY"); // req.putAndInsertOFStringArray(DCM_StudyInstanceUID, ""); T_ASC_PresentationContextID presID = findUncompressedPC(UID_GETStudyRootQueryRetrieveInformationModel, Sender); if (presID == 0) { DCMNET_ERROR("There is no uncompressed presentation context for Study Root FIND"); return false; } result=Sender.sendCGETRequest(presID,&req,&findResponses); if (result.bad()) return false; return true; }
server::server()// : httpserver(8080, 10) { // configure logging dcmtk::log4cplus::SharedAppenderPtr logfile(new NDCAsFilenameAppender("C:\\PACS\\Log")); dcmtk::log4cplus::Logger my_log = dcmtk::log4cplus::Logger::getRoot(); my_log.addAppender(logfile); // do server wide init Poco::Data::MySQL::Connector::registerConnector(); config::registerCodecs(); config::createDBPool(); std::string errormsg; if(!config::test(errormsg)) { DCMNET_ERROR(errormsg); DCMNET_INFO("Exiting"); throw new std::exception(errormsg.c_str()); } // add scp init_scp(); io_service_.post(boost::bind(&MyDcmSCPPool::listen, &storageSCP)); // add sender io_service_.post(boost::bind(&SenderService::run, &senderService)); // add REST API httpserver.shutdownCallback = boost::bind(&server::stop, this); io_service_.post(boost::bind(&HttpServer::start, &httpserver)); }
bool DcmSend::queryDcm(QList <QString> &QueryPatientName, QList <QString> &QueryPatientID, QList <QString> &QueryAccessionNumber) { OFVector<QRResponse*> findResponses; DcmDataset req; req.insertEmptyElement(DCM_PatientName); req.insertEmptyElement(DCM_PatientID); req.insertEmptyElement(DCM_AccessionNumber); req.putAndInsertOFStringArray(DCM_QueryRetrieveLevel, "STUDY"); req.putAndInsertOFStringArray(DCM_StudyInstanceUID, ""); T_ASC_PresentationContextID presID = findUncompressedPC(UID_FINDStudyRootQueryRetrieveInformationModel, Sender); if (presID == 0) { DCMNET_ERROR("There is no uncompressed presentation context for Study Root FIND"); return 1; } result = Sender.sendFINDRequest(presID, &req,&findResponses); if (result.bad()) return false; OFString NamePatient; OFString PatientID; OFString AccessionNumber; for (int i=0;i<findResponses.size();i++){ if (findResponses.at(i)->m_dataset != NULL){ result= findResponses.at(i)->m_dataset->findAndGetOFString(DCM_PatientName,NamePatient); result= findResponses.at(i)->m_dataset->findAndGetOFString(DCM_AccessionNumber,AccessionNumber); result= findResponses.at(i)->m_dataset->findAndGetOFString(DCM_PatientID,PatientID); QueryPatientName << NamePatient.data(); QueryPatientID << PatientID.data(); QueryAccessionNumber << AccessionNumber.data(); } } return true; }