ソースを参照

Further infrastructure for query/retrieve through gui

Add widgets to specify where the selected images should be
moved to and on what port.  The server on the other end
also needs to be configured to allow this send to take place.
Steve Pieper 14 年 前
コミット
2a9943994f
共有3 個のファイルを変更した36 個の追加2 個の削除を含む
  1. 19 2
      Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp
  2. 16 0
      Libs/DICOM/Widgets/ctkDICOMServerNodeWidget.cpp
  3. 1 0
      Libs/DICOM/Widgets/ctkDICOMServerNodeWidget.h

+ 19 - 2
Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp

@@ -148,6 +148,8 @@ void ctkDICOMQueryRetrieveWidget::processRetrieve()
 {
   Q_D(ctkDICOMQueryRetrieveWidget);
 
+  QMap<QString,QVariant> serverParameters = d->ServerNodeWidget->parameters();
+
   foreach( QString studyUID, d->queriesByStudyUID.keys() )
   {
     logger.debug("need to retrieve " + studyUID + " from " + d->queriesByStudyUID[studyUID]->host());
@@ -156,8 +158,23 @@ void ctkDICOMQueryRetrieveWidget::processRetrieve()
     d->retrievalsByStudyUID[studyUID] = retrieve;
     retrieve->setCallingAETitle( query->callingAETitle() );
     retrieve->setCalledAETitle( query->calledAETitle() );
-    retrieve->setHost( query->host() );
-    //retrieve->setCallingPort( query->port() );
     retrieve->setCalledPort( query->port() );
+    retrieve->setHost( query->host() );
+
+    // pull from GUI
+    retrieve->setMoveDestinationAETitle( serverParameters["StorageAETitle"].toString() );
+    retrieve->setCallingPort( serverParameters["StoragePort"].toInt() );
+
+    logger.info ( "Starting to retrieve" );
+    try
+      {
+      retrieve->retrieveStudy ( studyUID, QDir("/tmp/ctk") );
+      }
+    catch (std::exception e)
+      {
+      logger.error ( "Retrieve failed" );
+      return;
+      }
+    logger.info ( "Retrieve success" );
   }
 }

+ 16 - 0
Libs/DICOM/Widgets/ctkDICOMServerNodeWidget.cpp

@@ -218,6 +218,20 @@ QString ctkDICOMServerNodeWidget::callingAETitle()
 }
 
 //----------------------------------------------------------------------------
+QMap<QString,QVariant> ctkDICOMServerNodeWidget::parameters()
+{
+  Q_D(ctkDICOMServerNodeWidget);
+
+  QMap<QString, QVariant> parameters;
+
+  parameters["CallingAETitle"] = d->CallingAETitle->text();
+  parameters["StorageAETitle"] = d->StorageAETitle->text();
+  parameters["StoragePort"] = d->StoragePort->text();
+
+  return parameters;
+}
+
+//----------------------------------------------------------------------------
 QStringList ctkDICOMServerNodeWidget::nodes()
 {
   Q_D(ctkDICOMServerNodeWidget);
@@ -237,6 +251,7 @@ QMap<QString, QVariant> ctkDICOMServerNodeWidget::nodeParameters(QString &node)
   Q_D(ctkDICOMServerNodeWidget);
 
   QMap<QString, QVariant> parameters;
+
   int count = d->NodeTable->rowCount();
   QStringList keys;
   keys << "Name" << "AETitle" << "Address" << "Port";
@@ -254,5 +269,6 @@ QMap<QString, QVariant> ctkDICOMServerNodeWidget::nodeParameters(QString &node)
       }
     }
   }
+
   return parameters;
 }

+ 1 - 0
Libs/DICOM/Widgets/ctkDICOMServerNodeWidget.h

@@ -41,6 +41,7 @@ public:
   virtual ~ctkDICOMServerNodeWidget();
 
   QString callingAETitle();
+  QMap<QString,QVariant> parameters();
   QStringList nodes();
   QMap<QString,QVariant> nodeParameters(QString &node);