template 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.
La prop
template acepta un JSON Schema que define la estructura del reporte. A lo largo de esta página, “template” se refiere a la prop y “schema” se refiere al contenido del JSON Schema.Accesibilidad (a11y)
Si tu integración envía un payload de configuración (contemplate o con toolsargs legacy), puedes incluir una variable adicional accessibility al mismo nivel para declarar preferencias visuales.
Usa los nombres de propiedad exactamente como aparecen a continuación (claves de payload agnósticas al idioma). Para mantener consistencia, cada valor se define como un array de etiquetas/alias aceptados.
Término técnico recomendado:
Accessibility (a11y). El número 11 representa las letras entre la a y la y.Cómo Funcionan las Plantillas
El
template define qué datos extraer. La IA de SofIA lee el contexto de la conversación y rellena los campos del esquema automáticamente, entregando un reporte JSON estructurado que coincide con su esquema.
Estructura requerida
El esquema debe incluir:- $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
Pasar templates al componente
Como atributo HTML — envuelve el JSON en comillas simples, usa comillas dobles dentro:Fuentes de codificación clínica
Use la propiedadsource en un campo para habilitar la normalización con terminologías médicas estándar. Los siguientes valores son soportados:
| Valor | Sistema | Descripción |
|---|---|---|
"ICD10" | ICD-10 (Internacional) | Clasificación Internacional de Enfermedades, 10.a revisión |
"cie_latam" | CIE-10 (Latinoamérica) | Adaptación latinoamericana de la CIE-10 |
Contacte a support@omniloy.com para soporte de sistemas de codificación adicionales (ej.: SNOMED CT, LOINC).
Campos especializados
Fuente a terminologías médicas
Utilice la propiedadsource para habilitar la normalización con terminologías estándar:
Constantes vitales estructuradas
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
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:Validaciones apropiadas
Implemente validaciones que reflejen la realidad clínica:Estructuras flexibles
Diseñe esquemas que permitan variabilidad clínica:Personalización de propiedades
La propiedad isConfigurable
Valor por defecto: true (todos los campos son configurables por defecto)
Cuando isConfigurable es true (valor por defecto), el profesional sanitario puede editar el valor del campo generado en la interfaz de SofIA antes de finalizar el reporte. Establezca a false para campos que deben generarse pero no ser editables.
Campo configurable (comportamiento por defecto):
Depuración de tu template
Habilitar modo debug
Añadedebug="true" al componente SofIA para habilitar logs detallados en consola. Todos los logs del SDK tienen el prefijo [Sofia SDK], lo que facilita filtrarlos en las DevTools del navegador.
Checklist de validación del template
Antes de depurar en el navegador, verifica estos cinco puntos:- JSON Schema válido — incluye el header
"$schema": "http://json-schema.org/draft-07/schema#" - Tanto
templatecomotemplateidestán presentes — el botón generar solo aparece cuando ambos están configurados propertiesdefinidas con al menos 1 campo — un objetopropertiesvacío resulta en modo solo-chat- Tamaño del esquema menor a 100KB — esquemas más grandes son rechazados
- Los campos
requiredcoinciden con properties existentes — cualquier discrepancia causa errores de validación
Referencia de logs de consola
Cuandodebug="true" está habilitado, estos son los mensajes clave relacionados con templates y generación de reportes:
| Mensaje en consola | Significado | Acción |
|---|---|---|
[Sofia SDK] Settings - Template loaded: {n} fields | El template fue parseado exitosamente con n campos | Ninguna — este es el mensaje esperado de éxito |
[Sofia SDK] Settings - Template validation failed | El JSON del template está malformado o le faltan claves requeridas del esquema | Verificar sintaxis JSON y asegurar que $schema, type y properties estén presentes |
[Sofia SDK] Settings - Using fallback template | El template local era inválido; el SDK usó el template del servidor como respaldo | Corregir la prop template local — verificar errores de sintaxis o tipos de campo inválidos |
[Sofia SDK] API - Report generation started | El usuario hizo clic en Generar; el procesamiento ha comenzado | Ninguna — esperar a que complete o falle |
[Sofia SDK] API - Report generation completed | El reporte fue generado y entregado a handleReport | Verificar los datos en tu callback handleReport |
[Sofia SDK] API - Report generation failed: {error} | La generación del reporte encontró un error | Revisar el mensaje de error para detalles (configError, authError, apiError o settingsError) |
Problemas comunes
El botón Generar no aparece
El botón Generar no aparece
Síntoma: El componente SofIA carga en modo solo-chat — no se ve el botón de generar.Causa: El botón de generar requiere que tanto
template como templateid estén presentes y sean válidos. Si alguno falta o si el template tiene cero campos parseables, hasTemplateConfig se evalúa como false y el botón se oculta.Solución:- Verificar que ambos atributos
templateytemplateidestén configurados en el componente - Habilitar
debug="true"y buscarTemplate loaded: {n} fields— sines 0 o el mensaje no aparece, el template es inválido - Validar que
templatecontenga al menos una propiedad dentro deproperties
handleReport retorna un objeto vacío
handleReport retorna un objeto vacío
Síntoma: El callback
handleReport se ejecuta pero el objeto del reporte es {} o contiene solo valores vacíos.Causa: Los campos del template no coinciden con el contexto de la conversación. SofIA extrae datos basándose en lo que se discutió — si la conversación no contiene información relevante para los campos de tu template, esos campos estarán vacíos.Solución:- Asegurar que la conversación cubra temas relacionados con los campos de tu template antes de hacer clic en Generar
- Verificar que los valores de
descriptionde los campos sean claros y específicos — descripciones vagas llevan a una extracción deficiente - Habilitar
debug="true"y verificar que aparezcaReport generation completed(nofailed)
handleReport retorna datos parciales
handleReport retorna datos parciales
Síntoma: Algunos campos del reporte están poblados pero otros faltan o son null.Causa: La IA solo pudo extraer datos para campos que fueron discutidos en la conversación. Los campos marcados como
required en tu esquema son priorizados, pero los campos opcionales pueden omitirse si la conversación no contiene información relevante.Solución:- Revisar qué campos faltan — ¿corresponden a temas discutidos en la conversación?
- Añadir valores de
descriptionmás específicos para ayudar a la IA a identificar información relevante - Considerar marcar los campos críticos como
requireden tu esquema
El template usa los valores por defecto del servidor
El template usa los valores por defecto del servidor
Síntoma: El reporte generado usa una estructura diferente a tu template local. En modo debug, ves
Using fallback template.Causa: El SDK no pudo parsear tu prop template local. Intenta tres estrategias de parsing (JSON.parse, eliminación de prefijo, eval con Function) — si todas fallan, usa como respaldo el template configurado en el servidor para tu templateid.Solución:- Validar tu JSON del template en jsonlint.com
- Asegurar que el template se pasa como un string JSON válido, no como un objeto JavaScript
- Verificar caracteres especiales o problemas de encoding en el string del template
- En modo debug, buscar
Template validation failedpara detalles específicos del error