{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://clinicaneurobee.com.br/neurodados/schemas/avaliabase.schema.json",
  "title": "Registro da AvaliaBase",
  "description": "Um conceito, etapa, documento, orientação ou instrumento da avaliação psicológica e neuropsicológica. Instrumento entra só com metadados públicos e a situação no SATEPSI, com a data da consulta; nunca com item, prancha, estímulo ou resposta.",
  "type": "object",
  "additionalProperties": false,
  "required": ["id", "slug", "base", "nome", "categoria", "definicao", "afirmacoes", "limitacoes", "fontes", "estado", "revisao", "versao", "criado_em", "atualizado_em", "historico"],
  "properties": {
    "$schema": { "type": "string" },
    "id": { "type": "string", "pattern": "^avaliabase\\.[a-z0-9]+(?:-[a-z0-9]+)*$" },
    "slug": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
    "base": { "const": "avaliabase" },
    "nome": { "type": "string", "minLength": 2, "maxLength": 160 },
    "sigla": { "type": "string", "minLength": 2, "maxLength": 30 },
    "nomes_alternativos": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 2, "maxLength": 160 } },
    "categoria": { "enum": ["conceito", "etapa", "documento", "orientacao", "instrumento"] },
    "faixa_etaria": { "$ref": "comum.schema.json#/$defs/faixa_etaria" },
    "instrumento": {
      "type": "object",
      "additionalProperties": false,
      "required": ["construtos", "uso", "satepsi"],
      "description": "Obrigatório quando a categoria é instrumento.",
      "properties": {
        "nome_original": { "type": "string", "maxLength": 200 },
        "construtos": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 2, "maxLength": 120 } },
        "faixa_etaria": { "$ref": "comum.schema.json#/$defs/faixa_etaria" },
        "uso": { "enum": ["privativo_do_psicologo", "nao_privativo"] },
        "satepsi": {
          "type": "object",
          "additionalProperties": false,
          "required": ["situacao", "consultado_em", "fonte"],
          "properties": {
            "situacao": {
              "enum": ["favoravel", "desfavoravel", "nao_avaliado", "nao_privativo", "nao_consta"],
              "description": "Como o instrumento aparece nas listas do SATEPSI na data da consulta. nao_consta: a busca pelo nome não achou o instrumento em nenhuma lista."
            },
            "normas_validas_ate": { "$ref": "comum.schema.json#/$defs/data" },
            "consultado_em": { "$ref": "comum.schema.json#/$defs/data" },
            "fonte": { "$ref": "comum.schema.json#/$defs/id_fonte" }
          }
        }
      }
    },
    "definicao": { "type": "string", "minLength": 40, "maxLength": 600 },
    "descricao": { "type": "string", "maxLength": 3000 },
    "afirmacoes": { "type": "array", "minItems": 1, "items": { "$ref": "comum.schema.json#/$defs/afirmacao" } },
    "relacionados": { "type": "array", "items": { "$ref": "comum.schema.json#/$defs/relacionamento" } },
    "limitacoes": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 10, "maxLength": 500 } },
    "fontes": { "type": "array", "minItems": 1, "items": { "$ref": "comum.schema.json#/$defs/fonte" } },
    "estado": { "enum": ["rascunho", "publicado", "desatualizado", "arquivado"] },
    "revisao": { "$ref": "comum.schema.json#/$defs/revisao" },
    "versao": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+$" },
    "criado_em": { "$ref": "comum.schema.json#/$defs/data" },
    "atualizado_em": { "$ref": "comum.schema.json#/$defs/data" },
    "historico": { "type": "array", "minItems": 1, "items": { "$ref": "comum.schema.json#/$defs/historico" } }
  }
}
