X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkDicomRT_StructureSet.cxx;h=a26804b1839a49f0a3d6e5c51693ccc09c98dead;hb=c7a6bc15ce7ef75426e8f1db97453635fa430370;hp=4ac4705ef73a673b0487980e569aac56ba3f01ef;hpb=e1098dccba022441144bfc1c44a2b58db7dde34e;p=clitk.git diff --git a/common/clitkDicomRT_StructureSet.cxx b/common/clitkDicomRT_StructureSet.cxx index 4ac4705..a26804b 100644 --- a/common/clitkDicomRT_StructureSet.cxx +++ b/common/clitkDicomRT_StructureSet.cxx @@ -407,6 +407,49 @@ void clitk::DicomRT_StructureSet::Read(const std::string & filename) //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +bool clitk::DicomRT_StructureSet::IsDicomRTStruct(const std::string & filename) +{ + // Open DICOM +#if GDCM_MAJOR_VERSION == 2 + // Read gdcm file + mReader = new gdcm::Reader; + mReader->SetFileName(filename.c_str()); + mReader->Read(); + mFile = &(mReader->GetFile()); + const gdcm::DataSet & ds = mFile->GetDataSet(); + + // Check file type + //Verify if the file is a RT-Structure-Set dicom file + gdcm::MediaStorage ms; + ms.SetFromFile(*mFile); + if( ms != gdcm::MediaStorage::RTStructureSetStorage ) return false; + + gdcm::Attribute<0x8,0x60> modality; + modality.SetFromDataSet( ds ); + if( modality.GetValue() != "RTSTRUCT" ) return false; + + return true; + + //---------------------------------------------------------------------------------------- +#else + mFile = new gdcm::File; + mFile->SetFileName(filename.c_str()); + mFile->SetMaxSizeLoadEntry(16384); // Needed ... + mFile->SetLoadMode(gdcm::LD_NOSHADOW); // don't load shadow tags (in order to save memory) + mFile->Load(); + + // Check file type + //Verify if the file is a RT-Structure-Set dicom file + if (!gdcm::Util::DicomStringEqual(mFile->GetEntryValue(0x0008,0x0016),"1.2.840.10008.5.1.4.1.1.481.3")) + return false; + if (!gdcm::Util::DicomStringEqual(mFile->GetEntryValue(0x0008,0x0060),"RTSTRUCT")) return false; + +#endif +} +//-------------------------------------------------------------------- + + //-------------------------------------------------------------------- int clitk::DicomRT_StructureSet::AddBinaryImageAsNewROI(vvImage * im, std::string n) {