瀏覽代碼

Enabled removal on patient level

Marco Nolden 14 年之前
父節點
當前提交
f5bd6569a9
共有 2 個文件被更改,包括 26 次插入0 次删除
  1. 25 0
      Libs/DICOM/Core/ctkDICOMDatabase.cpp
  2. 1 0
      Libs/DICOM/Core/ctkDICOMDatabase.h

+ 25 - 0
Libs/DICOM/Core/ctkDICOMDatabase.cpp

@@ -902,3 +902,28 @@ bool ctkDICOMDatabase::removeStudy(const QString& studyInstanceUID)
   return result;;
 }
 
+bool ctkDICOMDatabase::removePatient(const QString& patientID)
+{
+  Q_D(ctkDICOMDatabase);
+
+  QSqlQuery studiesForPatient( d->Database );
+  studiesForPatient.prepare("SELECT StudyInstanceUID FROM Studies WHERE PatientsUID = :patientsID");
+  studiesForPatient.bindValue(":patientsID", patientID);
+  bool success = studiesForPatient.exec();
+  if (!success)
+  {
+    logger.error("SQLITE ERROR: " + studiesForPatient.lastError().driverText());
+    return false;
+  }
+  bool result = true;
+  while ( studiesForPatient.next() )
+  {
+    QString studyInstanceUID = studiesForPatient.value(studiesForPatient.record().indexOf("StudyInstanceUID")).toString();
+    if ( ! this->removeStudy(studyInstanceUID) )
+    {
+      result = false;
+    }
+  }
+  return result;;
+}
+

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

@@ -149,6 +149,7 @@ public:
   /// thumbnails  
   bool removeSeries(const QString& seriesInstanceUID);
   bool removeStudy(const QString& studyInstanceUID);
+  bool removePatient(const QString& patientID);
   bool cleanup();
 
 Q_SIGNALS: