diff OrthancServer/Database/SQLiteDatabaseWrapper.cpp @ 3124:c0d7aee8c3f8 db-changes

Fix issue #58 (Patient recycling order should be defined by their received last instance)
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 15 Jan 2019 21:09:33 +0100
parents f86ebf971a72
children 4bbadcd03966
line wrap: on
line diff
--- a/OrthancServer/Database/SQLiteDatabaseWrapper.cpp	Mon Jan 14 16:23:08 2019 +0100
+++ b/OrthancServer/Database/SQLiteDatabaseWrapper.cpp	Tue Jan 15 21:09:33 2019 +0100
@@ -1323,8 +1323,29 @@
   }
 
 
-  void SQLiteDatabaseWrapper::TagAsMostRecentPatient(int64_t patient)
+  void SQLiteDatabaseWrapper::TagMostRecentPatient(int64_t patient)
   {
-    // TODO
+    {
+      SQLite::Statement s(db_, SQLITE_FROM_HERE,
+                          "DELETE FROM PatientRecyclingOrder WHERE patientId=?");
+      s.BindInt64(0, patient);
+      s.Run();
+
+      assert(db_.GetLastChangeCount() == 0 ||
+             db_.GetLastChangeCount() == 1);
+      
+      if (db_.GetLastChangeCount() == 0)
+      {
+        // The patient was protected, there was nothing to delete from the recycling order
+        return;
+      }
+    }
+
+    {
+      SQLite::Statement s(db_, SQLITE_FROM_HERE,
+                          "INSERT INTO PatientRecyclingOrder VALUES(NULL, ?)");
+      s.BindInt64(0, patient);
+      s.Run();
+    }
   }
 }