diff OrthancServer/FromDcmtkBridge.cpp @ 176:81f11fb357f2

uid generation
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 07 Nov 2012 17:21:21 +0100
parents fe180eae201d
children 4031f73fe0e4
line wrap: on
line diff
--- a/OrthancServer/FromDcmtkBridge.cpp	Mon Nov 05 12:31:02 2012 +0100
+++ b/OrthancServer/FromDcmtkBridge.cpp	Wed Nov 07 17:21:21 2012 +0100
@@ -57,6 +57,7 @@
 #include <dcmtk/dcmdata/dcvrss.h>
 #include <dcmtk/dcmdata/dcvrul.h>
 #include <dcmtk/dcmdata/dcvrus.h>
+#include <dcmtk/dcmdata/dcuid.h>
 
 #include <boost/math/special_functions/round.hpp>
 
@@ -614,4 +615,26 @@
       result[GetName(it->first)] = it->second->AsString();
     }
   }
+
+
+  std::string FromDcmtkBridge::GenerateUniqueIdentifier(DicomRootLevel level)
+  {
+    char uid[100];
+
+    switch (level)
+    {
+    case DicomRootLevel_Instance:
+      return dcmGenerateUniqueIdentifier(uid, SITE_INSTANCE_UID_ROOT);
+
+    case DicomRootLevel_Series:
+      return dcmGenerateUniqueIdentifier(uid, SITE_SERIES_UID_ROOT);
+
+    case DicomRootLevel_Study:
+      return dcmGenerateUniqueIdentifier(uid, SITE_STUDY_UID_ROOT);
+
+    default:
+      throw OrthancException(ErrorCode_ParameterOutOfRange);
+    }
+  }
+
 }