class_docstr: Consider implementing a random strategy for active learning for WSI Images
code: def __call__(self, request, datastore: Datastore):
      image = request.get("image")
  
      # Fetch Random Image
      if not image:
          return super().__call__(request, datastore)
  
      # Fetch Random Patch
      image_size = request.get("image_size", [0, 0])
      patch_size = request.get("patch_size", [1024, 1024])
  
      image_size[0] = (
          patch_size[0] if image_size[0] <= 0 else image_size[0]
      )
      image_size[1] = (
          patch_size[1] if image_size[1] <= 0 else image_size[1]
      )
  
      max_x = max(0, image_size[0] - patch_size[0])
      max_y = max(0, image_size[1] - patch_size[1])
  
      x = random.randint(0, max_x - 1)
      y = random.randint(0, max_y - 1)
      w = min(image_size[0], patch_size[0])
      h = min(image_size[1], patch_size[1])
  
      if x + w > image_size[0]:
          x = x - (w - image_size[0])
      if y + h > image_size[1]:
          y = y - (h - image_size[1])
  
      bbox = [x, y, w, h]
      logger.info(f"Using BBOX: {bbox}")
      return {"id": image, "bbox": bbox}
  
imports: import logging
  import random
  from monailabel.interfaces.datastore import Datastore
  from monailabel.tasks.activelearning.random import Random
label_desc: Use image node_id 2 for calling the WSIRandom obj's underlying member method code with example usage: obj.__call__(request, datastore) and returns: dict, super