Sfoglia il codice sorgente

Enabled removal on study level

Marco Nolden 13 anni fa
parent
commit
0314f02d69
2 ha cambiato i file con 24 aggiunte e 4 eliminazioni
  1. 23 3
      Libs/DICOM/Core/ctkDICOMDatabase.cpp
  2. 1 1
      Libs/DICOM/Core/ctkDICOMDatabase.h

+ 23 - 3
Libs/DICOM/Core/ctkDICOMDatabase.cpp

@@ -876,9 +876,29 @@ bool ctkDICOMDatabase::cleanup()
   seriesCleanup.exec("DELETE FROM Patients WHERE ( SELECT COUNT(*) FROM Studies WHERE Studies.PatientsUID = Patients.UID ) = 0;");
   return true;
 }
-/*
+
 bool ctkDICOMDatabase::removeStudy(const QString& studyInstanceUID)
 {
-  return false;
+  Q_D(ctkDICOMDatabase);
+  
+  QSqlQuery seriesForStudy( d->Database );
+  seriesForStudy.prepare("SELECT SeriesInstanceUID FROM Series WHERE StudyInstanceUID = :studyID");
+  seriesForStudy.bindValue(":studyID", studyInstanceUID);
+  bool success = seriesForStudy.exec();
+  if (!success)
+  {
+    logger.error("SQLITE ERROR: " + seriesForStudy.lastError().driverText());
+    return false;
+  }
+  bool result = true;
+  while ( seriesForStudy.next() )
+  {
+    QString seriesInstanceUID = seriesForStudy.value(seriesForStudy.record().indexOf("SeriesInstanceUID")).toString();
+    if ( ! this->removeSeries(seriesInstanceUID) )
+    {
+      result = false;
+    }
+  }
+  return result;;
 }
-*/
+

+ 1 - 1
Libs/DICOM/Core/ctkDICOMDatabase.h

@@ -148,7 +148,7 @@ public:
   /// remove the series from the database, including images and
   /// thumbnails  
   bool removeSeries(const QString& seriesInstanceUID);
-  // bool removeStudy(const QString& studyInstanceUID);
+  bool removeStudy(const QString& studyInstanceUID);
   bool cleanup();
 
 Q_SIGNALS: