@@ -176,6 +176,19 @@ def get_nested_field(self, field, return_parent=False):
176176 return parent , desired
177177 return desired
178178
179+ def yield_child_fields (self , field ):
180+ """
181+ Yield child field UIDs for a given field.
182+
183+ This method identifies all field UIDs in self.fields that are nested under the provided field,
184+ based on the UID prefix convention (parent UID + '__').
185+ It is used to find and remove all child fields when blanking or deleting a parent field (e.g., a sequence).
186+ """
187+ field_uid_prefix = field .uid + "__"
188+ for uid in self .fields :
189+ if uid .startswith (field_uid_prefix ):
190+ yield uid
191+
179192 def delete_field (self , field ):
180193 """
181194 Delete a field from the dicom.
@@ -191,11 +204,7 @@ def delete_field(self, field):
191204 # Remove the field itself from the lookup
192205 self .fields .remove (field .uid )
193206 # Also remove any child fields that were nested under this field
194- field_uid_prefix = field .uid + "__"
195- child_uids = [
196- uid for uid in self .fields if uid .startswith (field_uid_prefix )
197- ]
198- for child_uid in child_uids :
207+ for child_uid in self .yield_child_fields (field ):
199208 self .fields .remove (child_uid )
200209
201210 def blank_field (self , field ):
@@ -211,11 +220,7 @@ def blank_field(self, field):
211220 if parent and desired in parent :
212221 parent [desired ].value = None
213222 # Also remove any child fields that were nested under this field
214- field_uid_prefix = field .uid + "__"
215- child_uids = [
216- uid for uid in self .fields if uid .startswith (field_uid_prefix )
217- ]
218- for child_uid in child_uids :
223+ for child_uid in self .yield_child_fields (field ):
219224 self .fields .remove (child_uid )
220225
221226 def replace_field (self , field , value ):
0 commit comments