Bladeren bron

Merge branch '224-optimize-tag-caching'

Closes #224

* 224-optimize-tag-caching:
  Precache all tags with a single load of the dataset
Steve Pieper 13 jaren geleden
bovenliggende
commit
eade37d9f6
1 gewijzigde bestanden met toevoegingen van 10 en 1 verwijderingen
  1. 10 1
      Libs/DICOM/Core/ctkDICOMDatabase.cpp

+ 10 - 1
Libs/DICOM/Core/ctkDICOMDatabase.cpp

@@ -1029,9 +1029,18 @@ const QStringList ctkDICOMDatabase::tagsToPrecache()
 void ctkDICOMDatabasePrivate::precacheTags( const QString sopInstanceUID )
 {
   Q_Q(ctkDICOMDatabase);
+
+  ctkDICOMDataset dataset;
+  QString fileName = q->fileForInstance(sopInstanceUID);
+  dataset.InitializeFromFile(fileName);
+
   foreach (const QString &tag, this->TagsToPrecache)
     {
-    q->instanceValue(sopInstanceUID, tag);
+    unsigned short group, element;
+    q->tagToGroupElement(tag, group, element);
+    DcmTagKey tagKey(group, element);
+    QString value = dataset.GetAllElementValuesAsString(tagKey);
+    q->cacheTag(sopInstanceUID, tag, value);
     }
 }