X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmFileHelper.cxx;h=33807ec5cff62c055767344aa534cb6ff0e41ee7;hb=9852277ba03803d8ee9810413f30962a94c09ddd;hp=1ec952328eea41e0c55b42ad2f289504537420da;hpb=f075d67fa2d7ee9312d7e9203eb0d8cef321ef7a;p=gdcm.git diff --git a/src/gdcmFileHelper.cxx b/src/gdcmFileHelper.cxx index 1ec95232..33807ec5 100644 --- a/src/gdcmFileHelper.cxx +++ b/src/gdcmFileHelper.cxx @@ -4,8 +4,8 @@ Module: $RCSfile: gdcmFileHelper.cxx,v $ Language: C++ - Date: $Date: 2007/10/17 10:03:59 $ - Version: $Revision: 1.133 $ + Date: $Date: 2008/06/12 13:18:15 $ + Version: $Revision: 1.137 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -33,9 +33,15 @@ #include "gdcmDocEntryArchive.h" #include "gdcmDictSet.h" #include "gdcmOrientation.h" - + + + +#include // for transform? + #if defined(__BORLANDC__) - #include // for memset + #include // for memset + #include //for toupper + #include #endif #include @@ -869,7 +875,14 @@ bool FileHelper::CheckWriteIntegrity() if ( abs((long)(decSize-userDataSize))>1) // ignore padding zero { gdcmWarningMacro( "Data size (Raw) is incorrect. Should be " - << decSize << " / Found :" + << decSize << "(" + << FileInternal->GetXSize() << " * " + << FileInternal->GetYSize() << " * " + << FileInternal->GetZSize() << " * " + << FileInternal->GetTSize() << " * " + << FileInternal->GetSamplesPerPixel() << " * " + << numberBitsAllocated / 8 + << ") / Found :" << userDataSize ); return false; } @@ -1504,17 +1517,26 @@ void FileHelper::CheckMandatoryElements() // --------------------- For DataSet --------------------- - /// \todo check that 0018|0015 [CS] [Body Part Examined] value is UPPER CASE - /// (avoid dciodvfy to complain!) - + // check whether 0018|0015 [CS] [Body Part Examined] value is UPPER CASE + // (avoid dciodvfy to complain!) + DataEntry *e_0018_0015 = FileInternal->GetDataEntry(0x0018, 0x0015); + if ( e_0018_0015) + { + std::string bodyPartExamined = e_0018_0015->GetString(); + std::transform(bodyPartExamined.begin(), bodyPartExamined.end(), bodyPartExamined.begin(), + (int(*)(int)) toupper); + CopyMandatoryEntry(0x0018,0x0015,bodyPartExamined,"CS"); + } if ( ContentType != USER_OWN_IMAGE) // when it's not a user made image { // If 'SOP Class UID' and 'SOP Instance UID' exist ('true DICOM' image) // we create the 'Source Image Sequence' SeqEntry // to hold informations about the Source Image - + + // 'SOP Instance UID' DataEntry *e_0008_0016 = FileInternal->GetDataEntry(0x0008, 0x0016); + // DataEntry *e_0008_0018 = FileInternal->GetDataEntry(0x0008, 0x0018); if ( e_0008_0016 && e_0008_0018) { @@ -1530,7 +1552,7 @@ void FileHelper::CheckMandatoryElements() e_0008_1150->Delete(); // create 'Referenced SOP Instance UID' from 'SOP Instance UID' - DataEntry *e_0008_0018 = FileInternal->GetDataEntry(0x0008, 0x0018); + // DataEntry *e_0008_0018 = FileInternal->GetDataEntry(0x0008, 0x0018); DataEntry *e_0008_1155 = DataEntry::New(0x0008, 0x1155, "UI"); e_0008_1155->SetString( e_0008_0018->GetString());