+
+/**
+ * \brief Re-computes the length of a ACR-NEMA/Dicom group from a DcmHeader
+ * @param filetype Type of the File to be written
+ */
+int Document::ComputeGroup0002Length( FileType filetype )
+{
+ uint16_t gr, el;
+ std::string vr;
+
+ int groupLength = 0;
+ bool found0002 = false;
+
+ // for each zero-level Tag in the DCM Header
+ DocEntry *entry;
+
+ Initialize();
+
+ for (;;)
+ {
+ entry = GetNextEntry();
+
+ if ( entry == 0 )
+ break;
+
+ gr = entry->GetGroup();
+
+ if (gr == 0x0002)
+ found0002 = true;
+ else
+ if (found0002 )
+ break;
+ else
+ continue;
+
+ el = entry->GetElement();
+ vr = entry->GetVR();
+
+ if (filetype == ExplicitVR)
+ {
+ if ( (vr == "OB") || (vr == "OW") || (vr == "SQ") )
+ {
+ groupLength += 4; // explicit VR AND OB, OW, SQ : 4 more bytes
+ }
+ }
+ groupLength += 2 + 2 + 4 + entry->GetLength();
+ }
+ return groupLength;
+}
+