diff OrthancServer/ServerIndex.cpp @ 179:78e28d0098d9

refactoring
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 09 Nov 2012 11:30:16 +0100
parents 5739b4d10a4b
children 626777d01dc4
line wrap: on
line diff
--- a/OrthancServer/ServerIndex.cpp	Fri Nov 09 11:13:29 2012 +0100
+++ b/OrthancServer/ServerIndex.cpp	Fri Nov 09 11:30:16 2012 +0100
@@ -42,7 +42,6 @@
 #include "../Core/Toolbox.h"
 #include "../Core/Uuid.h"
 #include "../Core/DicomFormat/DicomArray.h"
-#include "../Core/DicomFormat/DicomInstanceHasher.h"
 #include "../Core/SQLite/Transaction.h"
 #include "FromDcmtkBridge.h"
 
@@ -207,10 +206,10 @@
   }
 
   bool ServerIndex::HasInstance(std::string& instanceUuid,
-                                const std::string& dicomInstance)
+                                const DicomInstanceHasher& hasher)
   {
     SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT uuid FROM Instances WHERE dicomInstance=?");
-    s.BindString(0, dicomInstance);
+    s.BindString(0, hasher.GetInstanceUid());
     if (s.Step())
     {
       instanceUuid = s.ColumnString(0);
@@ -234,7 +233,7 @@
 
 
   std::string ServerIndex::CreateInstance(const std::string& parentSeriesUuid,
-                                          const std::string& dicomInstance,
+                                          const DicomInstanceHasher& hasher,
                                           const DicomMap& dicomSummary,
                                           const std::string& fileUuid,
                                           uint64_t fileSize,
@@ -251,7 +250,7 @@
     SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Instances VALUES(?, ?, ?, ?, ?, ?, ?, ?)");
     s.BindString(0, instanceUuid);
     s.BindString(1, parentSeriesUuid);
-    s.BindString(2, dicomInstance);
+    s.BindString(2, hasher.GetInstanceUid());
     s.BindString(3, fileUuid);
     s.BindInt64(4, fileSize);
     s.BindString(5, jsonUuid);
@@ -287,10 +286,10 @@
   }
 
   bool ServerIndex::HasSeries(std::string& seriesUuid,
-                              const std::string& dicomSeries)
+                              const DicomInstanceHasher& hasher)
   {
     SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT uuid FROM Series WHERE dicomSeries=?");
-    s.BindString(0, dicomSeries);
+    s.BindString(0, hasher.GetSeriesUid());
     if (s.Step())
     {
       seriesUuid = s.ColumnString(0);
@@ -303,7 +302,7 @@
   }
 
   std::string ServerIndex::CreateSeries(const std::string& parentStudyUuid,
-                                        const std::string& dicomSeries,
+                                        const DicomInstanceHasher& hasher,
                                         const DicomMap& dicomSummary)
   {
     std::string seriesUuid = Toolbox::GenerateUuid();
@@ -316,7 +315,7 @@
     SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Series VALUES(?, ?, ?, ?)");
     s.BindString(0, seriesUuid);
     s.BindString(1, parentStudyUuid);
-    s.BindString(2, dicomSeries);
+    s.BindString(2, hasher.GetSeriesUid());
 
     const DicomValue* expectedNumberOfInstances;
     if (//(expectedNumberOfInstances = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_FRAMES)) != NULL ||
@@ -343,10 +342,10 @@
   }
 
   bool ServerIndex::HasStudy(std::string& studyUuid,
-                             const std::string& dicomStudy)
+                             const DicomInstanceHasher& hasher)
   {
     SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT uuid FROM Studies WHERE dicomStudy=?");
-    s.BindString(0, dicomStudy);
+    s.BindString(0, hasher.GetStudyUid());
     if (s.Step())
     {
       studyUuid = s.ColumnString(0);
@@ -359,7 +358,7 @@
   }
 
   std::string ServerIndex::CreateStudy(const std::string& parentPatientUuid,
-                                       const std::string& dicomStudy,
+                                       const DicomInstanceHasher& hasher,
                                        const DicomMap& dicomSummary)
   {
     std::string studyUuid = Toolbox::GenerateUuid();
@@ -372,7 +371,7 @@
     SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Studies VALUES(?, ?, ?)");
     s.BindString(0, studyUuid);
     s.BindString(1, parentPatientUuid);
-    s.BindString(2, dicomStudy);
+    s.BindString(2, hasher.GetStudyUid());
     s.Run();
 
     RecordChange("studies", studyUuid);
@@ -387,10 +386,10 @@
 
 
   bool ServerIndex::HasPatient(std::string& patientUuid,
-                               const std::string& dicomPatientId)
+                               const DicomInstanceHasher& hasher)
   {
     SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT uuid FROM Patients WHERE dicomPatientId=?");
-    s.BindString(0, dicomPatientId);
+    s.BindString(0,hasher.GetPatientId());
     if (s.Step())
     {
       patientUuid = s.ColumnString(0);
@@ -402,7 +401,7 @@
     }
   }
 
-  std::string ServerIndex::CreatePatient(const std::string& patientId,
+  std::string ServerIndex::CreatePatient(const DicomInstanceHasher& hasher, 
                                          const DicomMap& dicomSummary)
   {
     std::string patientUuid = Toolbox::GenerateUuid();
@@ -538,43 +537,43 @@
       SQLite::Transaction t(db_);
       t.Begin();
 
-      if (HasInstance(instanceUuid, hasher.GetInstanceUid()))
+      if (HasInstance(instanceUuid, hasher))
       {
         return StoreStatus_AlreadyStored;
         // TODO: Check consistency?
       }
 
       std::string patientUuid;
-      if (HasPatient(patientUuid, hasher.GetPatientId()))
+      if (HasPatient(patientUuid, hasher))
       {
         // TODO: Check consistency?
       }
       else
       {
-        patientUuid = CreatePatient(hasher.GetPatientId(), dicomSummary);
+        patientUuid = CreatePatient(hasher, dicomSummary);
       }
 
       std::string studyUuid;
-      if (HasStudy(studyUuid, hasher.GetStudyUid()))
+      if (HasStudy(studyUuid, hasher))
       {
         // TODO: Check consistency?
       }
       else
       {
-        studyUuid = CreateStudy(patientUuid, hasher.GetStudyUid(), dicomSummary);
+        studyUuid = CreateStudy(patientUuid, hasher, dicomSummary);
       }
 
       std::string seriesUuid;
-      if (HasSeries(seriesUuid, hasher.GetSeriesUid()))
+      if (HasSeries(seriesUuid, hasher))
       {
         // TODO: Check consistency?
       }
       else
       {
-        seriesUuid = CreateSeries(studyUuid, hasher.GetSeriesUid(), dicomSummary);
+        seriesUuid = CreateSeries(studyUuid, hasher, dicomSummary);
       }
 
-      instanceUuid = CreateInstance(seriesUuid, hasher.GetInstanceUid(), dicomSummary, fileUuid, 
+      instanceUuid = CreateInstance(seriesUuid, hasher, dicomSummary, fileUuid, 
                                     uncompressedFileSize, jsonUuid, distantAet);
       
       t.Commit();