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
1
Entrada
La plantilla JSON Schema y el contexto de conversación se proporcionan al SofIA SDK.
2
Procesamiento IA
El SDK envía los datos mediante LangGraph Streaming para el procesamiento de IA.
3
Salida estructurada
La IA genera un reporte estructurado conforme al esquema, entregado al EHR/HIS mediante el callback
handle-report.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
Hay dos formas de obtener códigos clínicos estandarizados en un campo:-
Establece el
sourcedel campo apuntando a un master. Un master es una terminología o catálogo de códigos controlado que Omniloy mantiene para tu cuenta. El valor desourcevincula el campo con ese master, de modo que SofIA normaliza el valor extraído contra él. ¿Necesitas codificar contra tus propios datos — un catálogo personalizado, un conjunto de códigos interno o una terminología de especialidad? Contacta a support@omniloy.com: el equipo de Omniloy provisiona el master personalizado para tu cuenta y te proporciona el valor desourcea usar. Unsourcepersonalizado solo funciona una vez que su master ha sido creado para tu cuenta. -
Solicita la terminología en la
descriptiondel campo — p. ej."Diagnóstico principal con su código CIE-10". Los agentes de SofIA aplican la codificación solicitada durante la extracción, incluso sin un valorsource. Es útil para solicitudes puntuales donde no hace falta un master dedicado.
Campos especializados
Fuente a terminologías médicas
Apunta un campo a un master personalizado consource (provisionado por Omniloy — consulta Fuentes de codificación clínica). También puedes dirigir la codificación desde la description de cada campo, como se muestra abajo. Reemplaza "tu-master-personalizado" por el valor de source que Omniloy te proporcione:
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:
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