]> Creatis software - clitk.git/commitdiff
Check if it is really a rt-struct dicom before opening it
authorDavid Sarrut <david.sarrut@creatis.insa-lyon.fr>
Wed, 12 Jun 2013 09:35:59 +0000 (11:35 +0200)
committerDavid Sarrut <david.sarrut@creatis.insa-lyon.fr>
Wed, 12 Jun 2013 09:35:59 +0000 (11:35 +0200)
common/clitkImage2DicomRTStructFilter.txx

index 051211b6d0d325fa882875b86fc02f861035f8b3..1b241a99824a233a094058f1b8196d09c4e99772 100644 (file)
@@ -88,10 +88,22 @@ clitk::Image2DicomRTStructFilter<PixelType>::SetROIName(std::string name, std::s
 template<class PixelType>
 void clitk::Image2DicomRTStructFilter<PixelType>::Update() 
 {
+  // Check this is a RT-Struct
+  gdcm::Reader gdcm_reader;
+  gdcm_reader.SetFileName(m_StructureSetFilename.c_str());
+  if (!gdcm_reader.Read()) {
+    clitkExceptionMacro("Error could not open the file '" << m_StructureSetFilename << std::endl);
+  }
+  gdcm::MediaStorage ms;
+  ms.SetFromFile(gdcm_reader.GetFile());
+  if (ms != gdcm::MediaStorage::RTStructureSetStorage) {
+    clitkExceptionMacro("File '" << m_StructureSetFilename << "' is not a DICOM-RT-Struct file." << std::endl);
+  }
+
   // Read rt struct
   vtkSmartPointer<vtkGDCMPolyDataReader> reader = vtkGDCMPolyDataReader::New();
   reader->SetFileName(m_StructureSetFilename.c_str());
-  reader->Update();
+  reader->Update();  
 
   // Get properties
   vtkRTStructSetProperties * p = reader->GetRTStructSetProperties();