code: def _count_required_and_optional_fields(catalog):
      
  
      catalog = readers.read_catalog(catalog)
  
      # Archivo .json con el uso de cada campo. Lo cargamos a un dict
      catalog_fields_path = os.path.join(CATALOG_FIELDS_PATH,
                                         'fields.json')
      with open(catalog_fields_path) as f:
          catalog_fields = json.load(f)
  
      # Armado recursivo del resultado
      return _count_fields_recursive(catalog, catalog_fields)
docs: Cuenta los campos obligatorios/recomendados/requeridos usados en
      'catalog', junto con la cantidad máxima de dichos campos.
  
      Args:
          catalog (str o dict): path a un catálogo, o un dict de python que
              contenga a un catálogo ya leído
  
      Returns:
          dict: diccionario con las claves 'recomendado', 'optativo',
              'requerido', 'recomendado_total', 'optativo_total',
              'requerido_total', con la cantidad como valores.