- gdcmDict *pubDict = gdcmGlobal::GetDicts()->GetDefaultPubDict();
- gdcmDictEntry *dictEntry = pubDict->GetDictEntryByName(name);
+ DataEntry *dataEntry = 0;
+ DocEntry *currentEntry = GetDocEntry( group, elem );
+ VRKey localVR = vr;
+ if (currentEntry)
+ {
+ dataEntry = dynamic_cast<DataEntry *>(currentEntry);
+
+ // Verify the VR
+ if ( dataEntry )
+ if ( dataEntry->GetVR()!=vr )
+ dataEntry = NULL;
+
+ // if currentEntry doesn't correspond to the requested dataEntry
+ if ( !dataEntry)
+ {
+ if ( !RemoveEntry(currentEntry) )
+ {
+ gdcmWarningMacro( "Removal of previous DocEntry failed.");
+ return NULL;
+ }
+ }
+ }
+
+ else // the 'currentEntry' was not found
+ {
+ if ( vr == GDCM_VRUNKNOWN ) // user didn't specify a VR.
+ // Probabely he trusts the Dicom Dict !
+ {
+ DictEntry *e =
+ Global::GetDicts()->GetDefaultPubDict()->GetEntry(group, elem);
+ if ( e )
+ {
+ localVR = e->GetVR();
+ e->Register(); // ?? JPRx
+ }
+ }
+ }