code: def _download_zip(
      self,
      dest_dir,
      dest_zip,
      dicom_dir,
      project,
      subject,
      experiment,
      scan,
  ):
      url = "{}/data/projects/{}/subjects/{}/experiments/{}/scans/{}/files?format=zip".format(
          self.api_url,
          quote_plus(project),
          quote_plus(subject),
          quote_plus(experiment),
          quote_plus(scan),
      )
  
      response = self._request_get(url)
      if not response.ok:
          logger.info(
              f"Image Fetch Failed: {response.status_code} {response.reason}"
          )
          return ""
  
      os.makedirs(dest_dir, exist_ok=True)
      with open(dest_zip, "wb") as fp:
          fp.write(response.content)
  
      extract_dir = os.path.join(dest_dir, "temp")
      shutil.unpack_archive(dest_zip, extract_dir)
  
      os.makedirs(dicom_dir, exist_ok=True)
      for root, _, files in os.walk(extract_dir):
          for f in files:
              if f.endswith(".dcm"):
                  shutil.move(os.path.join(root, f), dicom_dir)
  
      shutil.rmtree(extract_dir)
      return dicom_dir
  
imports: import io
  import logging
  import os
  import pathlib
  import shutil
  import time
  from typing import Any, Dict, List, Optional
  from urllib.parse import quote_plus
  from xml.etree import ElementTree
  import requests
  from requests.auth import HTTPBasicAuth
  from monailabel.datastore.utils.convert import nifti_to_dicom_seg
  from monailabel.interfaces.datastore import Datastore
  from monailabel.utils.others.generic import md5_digest
label_desc: Use image node_id 30 for calling the XNATDatastore obj's underlying member method code with example usage: obj._download_zip(dest_dir, dest_zip, dicom_dir, project, subject, experiment, scan) and returns: dicom_dir, str