+ int group = (i->second)->GetGroup();
+
+ if (yetOutsideMetaElements==false && group == 0x0002)
+ insideMetaElements = true;
+
+ if (insideMetaElements == true && group != 0x0002)
+ {
+ yetOutsideMetaElements = true;
+ insideMetaElements = false;
+ }
+
+ // depending on the gdcm::Document type
+ // (gdcm::File; gdcm::DicomDir, (more to come ?)
+ // some groups *cannot* be present.
+ // We hereby protect gdcm for writting stupid things
+ // if they were found in the original document.
+ if ( !MayIWrite( group ) )
+ continue;
+
+ // Skip 'Group Length' element, since it may be wrong.
+ // except for Group 0x0002
+ // ( keep it as well for Group 0x0008 of ACR Files,
+ // since some ACR readers *need* it )
+
+ if ( (i->second)->GetElement() != 0x0000
+ ||
+ ( (i->second)->GetGroup() == 0x0002
+ ||( (filetype == ACR || filetype == ACR_LIBIDO ) && (i->second)->GetGroup() == 0x0008 ) )
+ )
+ {
+ // There are DocEntries, written recursively
+ // false : we are outside any Sequence
+ i->second->WriteContent(fp, filetype, insideMetaElements, false );
+ }