+ tmpGr = it->Group;
+ tmpEl = it->Elem;
+ dictEntry = GetPubDict()->GetEntry(tmpGr, tmpEl);
+
+ entry = DataEntry::New( dictEntry );
+ entry->SetOffset(0); // just to avoid further missprinting
+
+ if ( header )
+ {
+ // NULL when we Build Up (ex nihilo) a DICOMDIR
+ // or when we add the META elems
+
+ val = header->GetEntryString(tmpGr, tmpEl);
+ }
+ else
+ {
+ val = GDCM_UNFOUND;
+ }
+
+ if ( val == GDCM_UNFOUND)
+ {
+ if ( tmpGr == 0x0004 ) // never present in File !
+ {
+ switch (tmpEl)
+ {
+ case 0x1130: // File-set ID
+ // force to the *end* File Name
+ val = Util::GetName( path );
+ break;
+
+ case 0x1500: // Only used for image
+ if ( header->GetFileName().substr(0, path.length()) != path )
+ {
+ gdcmWarningMacro( "The base path of file name is incorrect");
+ val = header->GetFileName();
+ }
+ else
+ {
+ //val = &(header->GetFileName().c_str()[path.length()+1]);
+ val = &(header->GetFileName().c_str()[path.length()]);
+ }
+ break;
+
+ case 0x1510: // Referenced SOP Class UID in File
+ referencedVal = header->GetEntryString(0x0008, 0x0016);
+ // FIXME : probabely something to check
+ val = referencedVal;
+ break;
+
+ case 0x1511: // Referenced SOP Instance UID in File
+ referencedVal = header->GetEntryString(0x0008, 0x0018);
+ // FIXME : probabely something to check
+ val = referencedVal;
+ break;
+
+ case 0x1512: // Referenced Transfer Syntax UID in File
+ referencedVal = header->GetEntryString(0x0002, 0x0010);
+ // FIXME : probabely something to check
+ val = referencedVal;
+ break;
+
+ default :
+ val = it->Value;
+ }
+ }
+ }
+ else
+ {
+ if ( header->GetEntryLength(tmpGr,tmpEl) == 0 )
+ val = it->Value;
+ }
+
+/* FIX later the pb of creating the 'Implementation Version Name'!
+
+ if (val == GDCM_UNFOUND)
+ val = "";
+
+ if ( tmpGr == 0x0002 && tmpEl == 0x0013)
+ {
+ // 'Implementation Version Name'
+ std::string val = "GDCM ";
+ val += Util::GetVersion();
+ }
+*/
+ entry->SetString( val ); // troubles expected when vr=SQ ...
+
+ if ( type == GDCM_DICOMDIR_META ) // fusible : should never print !
+ {
+ gdcmDebugMacro("GDCM_DICOMDIR_META ?!? should never print that");
+ }
+ si->AddEntry(entry);
+ entry->Delete();
+ }
+}