Explorar el Código

Function to construct uuid list for getData

Ivo Wolf hace 13 años
padre
commit
4d6322fbf6

+ 21 - 0
Plugins/org.commontk.dah.core/ctkDicomAvailableDataHelper.cpp

@@ -319,4 +319,25 @@ bool appendToAvailableData(ctkDicomAppHosting::AvailableData& dest,
   return true;
 }
 
+//----------------------------------------------------------------------------
+QList<QUuid> getAllUuids(const ctkDicomAppHosting::Patient& patient)
+{
+  QList<QUuid> uuidlist;
+
+  for (QList<ctkDicomAppHosting::Study>::ConstIterator sit = patient.studies.begin();
+    sit < patient.studies.end(); sit++)
+    {
+    for (QList<ctkDicomAppHosting::Series>::ConstIterator seit = sit->series.begin();
+      seit < sit->series.end(); seit++)
+      {
+        for (QList<ctkDicomAppHosting::ObjectDescriptor>::ConstIterator oit = seit->objectDescriptors.begin();
+          oit < seit->objectDescriptors.end(); oit++)
+          {
+            uuidlist.append(oit->descriptorUUID);
+          }
+      }
+    }
+  return uuidlist;
+}
+
 } //end namespace ctkDicomAvailableDataHelper

+ 14 - 1
Plugins/org.commontk.dah.core/ctkDicomAvailableDataHelper.h

@@ -26,6 +26,7 @@
 // Qt includes
 #include <QObject>
 #include <QString>
+#include <QUuid>
 
 // CTK includes
 #include <org_commontk_dah_core_Export.h>
@@ -99,10 +100,22 @@ bool org_commontk_dah_core_EXPORT addNonDICOMToAvailableData(ctkDicomAppHosting:
                         const QString& uri);
 
 //----------------------------------------------------------------------------
-bool appendToAvailableData(ctkDicomAppHosting::AvailableData& dest,
+bool org_commontk_dah_core_EXPORT appendToAvailableData(ctkDicomAppHosting::AvailableData& dest,
                         const ctkDicomAppHosting::AvailableData& src);
 
 
+//----------------------------------------------------------------------------
+/**
+ * \brief Build list of all UUIDs of data available for patient.
+ *
+ * Result can be used to retrieve data by calling ctkDicomExchangeInterface::getData.
+ *
+ * \return alls UUIDs of data for patient inside available data, otherwise empty.
+ */
+QList<QUuid> org_commontk_dah_core_EXPORT getAllUuids(const ctkDicomAppHosting::Patient& patient);
+
+
+
 } //end namespace ctkDicomAvailableDataHelper
 
 #endif // CTKDICOMAVAILABLEDATAHELPER_H

+ 7 - 3
Plugins/org.commontk.dah.exampleapp/ctkExampleDicomAppLogic.cpp

@@ -206,7 +206,7 @@ void ctkExampleDicomAppLogic::onDataAvailable()
       {
         s=s+" uid:" + data.patients.begin()->studies.begin()->series.begin()->seriesUID;
 //        QUuid uuid("93097dc1-caf9-43a3-a814-51a57f8d861d");//data.patients.begin()->studies.begin()->series.begin()->seriesUID);
-        uuid = data.patients.begin()->studies.begin()->series.begin()->objectDescriptors.begin()->descriptorUUID;
+        QUuid uuid = data.patients.begin()->studies.begin()->series.begin()->objectDescriptors.begin()->descriptorUUID;
         s=s+" uuid:"+uuid.toString();
       }
     }
@@ -218,8 +218,12 @@ void ctkExampleDicomAppLogic::onDataAvailable()
 
 void ctkExampleDicomAppLogic::onLoadDataClicked()
 {
-  QList<QUuid> uuidlist;
-  uuidlist.append(uuid);
+  const ctkDicomAppHosting::AvailableData& data = getIncomingAvailableData();
+  if(data.patients.count()==0)
+    return;
+  const ctkDicomAppHosting::Patient& firstpatient = *data.patients.begin();
+  QList<QUuid> uuidlist = ctkDicomAvailableDataHelper::getAllUuids(firstpatient);
+  
   QString transfersyntax("1.2.840.10008.1.2.1");
   QList<QUuid> transfersyntaxlist;
   transfersyntaxlist.append(transfersyntax);

+ 0 - 2
Plugins/org.commontk.dah.exampleapp/ctkExampleDicomAppLogic_p.h

@@ -80,8 +80,6 @@ private:
   QWidget * AppWidget;
   Ui::ctkExampleDicomAppWidget ui;
 
-  QUuid uuid;
-
   ctkDicomAppHosting::AvailableData* ResultData;
 }; // ctkExampleDicomAppLogic