Saltar al contenido principal
La propiedad toolsArgs define la estructura de los datos clínicos que SofIA debe generar. Debe ser un esquema JSON Schema Draft-07 completo que especifique los campos, tipos y validaciones requeridas para la documentación médica.

Estructura requerida

El esquema debe incluir obligatoriamente:
  • $schema: Referencia al estándar JSON Schema Draft-07
  • title: Identificador del tipo de documento clínico
  • type: Debe ser “object” para documentos estructurados
  • required: Array con los campos obligatorios
  • properties: Definición detallada de cada campo

Ejemplo básico

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "create_clinical_notes/v1",
  "type": "object",
  "required": ["diagnostico_principal"],
  "properties": {
    "diagnostico_principal": {
      "type": "string",
      "description": "Diagnóstico principal del paciente",
      "source": "CIE10"
    },
    "sintomas": {
      "type": "array",
      "description": "Lista de síntomas observados",
      "items": {
        "type": "string"
      }
    },
    "exploracion_fisica": {
      "type": "object",
      "properties": {
        "tension_arterial": {
          "type": "object",
          "properties": {
            "sistolica": {"type": "number", "minimum": 50, "maximum": 250},
            "diastolica": {"type": "number", "minimum": 30, "maximum": 150}
          }
        },
        "frecuencia_cardiaca": {
          "type": "number",
          "description": "Frecuencia cardíaca en latidos por minuto"
        }
      }
    }
  }
}

Campos especializados

Fuente a terminologías médicas

Utilice la propiedad source para habilitar la normalización con terminologías estándar:
{
  "diagnostico": {
    "name": "diagnostico",
    "type": "array",
    "items": {
      "type": "object",
      "required": [
        "code",
        "nombre"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Código de diagnóstico usando el CIE10 y siendo lo más específico posible con la información proporcionada."
        },
        "nombre": {
          "type": "string",
          "description": "Nombre del diagnóstico usando el CIE10."
        },
        "descripcion": {
          "type": "string",
          "description": "Justificación o descripción del diagnóstico usando el CIE10."
        }
      }
    },
    "source": "cie_latam",
    "description": "Lista el/los diagnóstico(s) determinado(s) durante esta consulta médica, incluyendo nombre, descripción (justificación) y código CIE10 si aplica. Si no se establece ningún diagnóstico explícitamente, sugiere las posibilidades más probables basándote en la conversación."
  }

Constantes vitales estructuradas

{
  "constantes_vitales": {
    "type": "array",
    "description": "Constantes vitales del paciente",
    "items": {
      "type": "object",
      "required": ["parametro", "valor"],
      "properties": {
        "parametro": {
          "type": "string",
          "enum": ["Tensión Sistólica", "Tensión Diastólica", "Frecuencia Cardíaca", "Temperatura", "Saturación O2"]
        },
        "valor": {"type": "number"},
        "unidad": {"type": "string"},
        "fecha_medicion": {"type": "string", "format": "date-time"}
      }
    }
  }
}

Tipos de datos soportados

Tipos básicos

  • string: Texto libre o controlado
  • number: Valores numéricos (enteros o decimales)
  • boolean: Valores verdadero/falso
  • array: Listas de elementos
  • object: Estructuras complejas anidadas

Validaciones avanzadas

{
  "edad": {
    "type": "number",
    "minimum": 0,
    "maximum": 150,
    "description": "Edad del paciente en años"
  },
  "email": {
    "type": "string",
    "format": "email",
    "description": "Correo electrónico de contacto"
  },
  "fecha_nacimiento": {
    "type": "string",
    "format": "date",
    "description": "Fecha de nacimiento (YYYY-MM-DD)"
  },
  "genero": {
    "type": "string",
    "enum": ["Masculino", "Femenino", "Otro", "No especificado"],
    "description": "Género del paciente"
  }
}

Limitaciones técnicas

  • Tamaño máximo: 100 KB por esquema
  • Profundidad: Máximo 10 niveles de anidación
  • Complejidad: Evite esquemas excesivamente complejos que puedan afectar el rendimiento

Mejores prácticas

Descripciones detalladas

Proporcione descripciones claras y específicas para cada campo:
{
  "description": "Diagnóstico principal según criterios clínicos establecidos, utilizando terminología CIE-10 cuando sea posible"
}

Validaciones apropiadas

Implemente validaciones que reflejen la realidad clínica:
{
  "peso": {
    "type": "number",
    "minimum": 0.5,
    "maximum": 500,
    "description": "Peso del paciente en kilogramos"
  }
}

Estructuras flexibles

Diseñe esquemas que permitan variabilidad clínica:
{
  "medicamentos": {
    "type": "array",
    "items": {
      "type": "object",
      "required": ["nombre"],
      "properties": {
        "nombre": {"type": "string"},
        "dosis": {"type": "string"},
        "frecuencia": {"type": "string"},
        "via_administracion": {"type": "string"}
      }
    }
  }
}

Personalización de propiedades

Habilitar/deshabilitar personalización de parte del usuario

Utilice la propiedad isConfigurable: false para deshabilitar la personalización de parte del usuario:
{
  "diagnostico": {
    "isConfigurable": false,
    "name": "diagnostico",
    "type": "array",
    "items": {
      "type": "object",
      "required": [
        "code",
        "nombre"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Código de diagnóstico usando el CIE10 y siendo lo más específico posible con la información proporcionada."
        },
        "nombre": {
          "type": "string",
          "description": "Nombre del diagnóstico usando el CIE10."
        },
        "descripcion": {
          "type": "string",
          "description": "Justificación o descripción del diagnóstico usando el CIE10."
        }
      }
    },
    "description": "Lista el/los diagnóstico(s) determinado(s) durante esta consulta médica, incluyendo nombre, descripción (justificación) y código CIE10 si aplica. Si no se establece ningún diagnóstico explícitamente, sugiere las posibilidades más probables basándote en la conversación."
  },
  }

Validación y testing

Antes de desplegar un esquema en producción:
  1. Valide la sintaxis JSON utilizando herramientas de linting
  2. Pruebe con datos reales para verificar la generación correcta
  3. Revise con profesionales médicos la relevancia clínica de los campos
  4. Verifique las referencias a terminologías médicas estándar