code: def _get_annotated_images(self):
      data = self.gc.get("annotation", parameters={"limit": 0})
  
      images = []
      for d in data:
          if not self.annotation_groups:
              images.append(d["itemId"])
              continue
  
          # get annotations and find if any matching groups exist
          matched = [
              g
              for g in d["groups"]
              if g in self.annotation_groups
              or (g and g.lower() in self.annotation_groups)
          ]
          if matched:
              images.append(d["itemId"])
      return images
  
imports: import logging
  import os
  import pathlib
  from io import BytesIO
  from pathlib import Path
  from typing import Any, Dict, List, Optional
  import girder_client
  import numpy
  from PIL import Image
  from monailabel.interfaces.datastore import Datastore, DefaultLabelTag
  from monailabel.utils.others.generic import md5_digest
label_desc: Use image node_id 17 for calling the DSADatastore obj's underlying member method code with example usage: obj._get_annotated_images() and returns: images