code: def _fetch_datalist(self, request, datastore: Datastore):
      cache_dir = os.path.join(self.bundle_path, "cache", "train_ds")
      remove_file(cache_dir)
  
      source = request.get("dataset_source")
      max_region = request.get("dataset_max_region", (10240, 10240))
      max_region = (
          (max_region, max_region)
          if isinstance(max_region, int)
          else max_region[:2]
      )
  
      ds = split_dataset(
          datastore=datastore,
          cache_dir=cache_dir,
          source=source,
          groups=None,
          tile_size=self.tile_size,
          max_region=max_region,
          limit=request.get("dataset_limit", 0),
          randomize=request.get("dataset_randomize", True),
      )
      logger.info(f"Split data (len: {len(ds)}) based on each nuclei")
  
      limit = request.get("dataset_limit", 0)
      ds_new = []
      for d in tqdm(ds):
          ds_new.extend(
              split_nuclei_dataset(
                  d, os.path.join(cache_dir, "nuclei_flattened")
              )
          )
          if 0 < limit < len(ds_new):
              ds_new = ds_new[:limit]
              break
      logger.info(f"Final Records with nuclei split: {len(ds_new)}")
      return ds_new
  
file_path: MONAILabel/sample-apps/pathology/lib/trainers/nuclick.py
imports: import logging
  import os
  from typing import Dict, Optional
  from lib.utils import split_dataset, split_nuclei_dataset
  from tqdm import tqdm
  from monailabel.interfaces.datastore import Datastore
  from monailabel.tasks.train.bundle import BundleConstants, BundleTrainTask
  from monailabel.utils.others.generic import remove_file
label_desc: Use image node_id 2 for calling the NuClick obj's underlying member method code with example usage: obj._fetch_datalist(request, datastore) and returns: ds_new