Estas propiedades te permiten personalizar el comportamiento y apariencia del componente SofIA SDK para adaptarse a las necesidades específicas de tu implementación.
Propiedades Activas
Control de Interfaz
| Propiedad | Tipo | Valor por Defecto | Descripción |
|---|
| isopen | boolean | true | Estado de visibilidad del componente, permite control bidireccional del estado abierto/cerrado. Cuando no se proporciona, el componente se inicia abierto por defecto |
Callbacks
| Propiedad | Tipo | Descripción |
|---|
| handleReport | function | Función callback que recibe el reporte clínico estructurado generado por SofIA. También disponible como atributo handle-report. Puede referenciarse como nombre de función global |
| setIsOpen | function | Función callback para manejar cambios de visibilidad solicitados por el componente |
| setGetLastReport | function | Un callback que recibe una función para recuperar el último reporte generado |
Firmas de Callbacks
handleReport
handleReport: (report: Record<string, unknown>) => void
Se invoca cuando el usuario activa la generación de reportes. El objeto report coincide con la estructura definida en tu JSON Schema template. Ejemplo de payload:
{
"diagnosis": "Diabetes Mellitus Tipo 2",
"treatment_plan": "Metformina 500mg dos veces al día"
}
setIsOpen
setIsOpen: (isOpen: boolean) => void
Se invoca cuando el SDK solicita un cambio de visibilidad (ej.: el usuario hace clic en el botón de cerrar).
setGetLastReport
setGetLastReport: (getter: () => Promise<Record<string, unknown> | undefined>) => void
Se invoca una vez durante la inicialización. Proporciona una función que puedes almacenar y llamar posteriormente para recuperar el último reporte generado para la sesión actual de paciente/usuario.
Datos Contextuales
| Propiedad | Tipo | Valor por Defecto | Descripción |
|---|
| patientdata | string (JSON) | object | undefined | Información contextual del paciente (antecedentes, notas previas, referencias) para enriquecer el procesamiento clínico |
Indicador de Consentimiento
| Propiedad | Tipo | Valor por Defecto | Descripción |
|---|
| showconsentindicator | boolean | false | Muestra el indicador de estado de consentimiento en el encabezado. Funciona con el campo signedConsent en patientdata |
Localización
| Propiedad | Tipo | Valor por Defecto | Descripción |
|---|
| language | string | "es" | Idioma de la interfaz. Valores soportados: "es" (Español), "en" (Inglés) |
El idioma por defecto es "es" (Español). Si tu aplicación está dirigida a usuarios de habla inglesa, establece language="en" explícitamente.
Depuración
| Propiedad | Tipo | Valor por Defecto | Descripción |
|---|
| debug | boolean | false | Habilita logging detallado para propósitos de depuración |
Recuperación Manual de Reportes
Además de recibir el reporte automáticamente, puedes solicitarlo bajo demanda desde tu aplicación.
La propiedad set-get-last-report ejecuta un callback que te proporciona una función asíncrona. Debes almacenar esta referencia para usarla cuando necesites recuperar el último reporte generado.
let getLastReportFn = null;
// Callback asignado a: set-get-last-report
function registerGetter(fn) {
getLastReportFn = fn;
}
// Ejemplo de uso en un botón externo
async function handleSaveClick() {
if (getLastReportFn) {
const report = await getLastReportFn();
console.log("Reporte recuperado:", report);
}
}
Ejemplos de Uso
Configuración básica con datos del paciente
<sofia-sdk
patientdata='{"age": 45, "history": "Hipertensión arterial"}'
language="es"
baseurl="https://api.example.com/v1"
wssurl="wss://ws.example.com"
apikey="sk-your-api-key-here"
userid="user_12345"
patientid="patient_67890"
template='{"type": "object"}'
templateid="soap-general-v1"
isopen="true"
handleReport="handleReport"
setIsOpen="setIsOpen"
>
</sofia-sdk>
Modo solo chat (sin generación de reportes)
Para usar SofIA en modo solo chat, simplemente omita las propiedades template y templateid. El botón de generar no aparecerá.
<sofia-sdk
baseurl="https://api.example.com/v1"
wssurl="wss://ws.example.com"
apikey="sk-your-api-key-here"
userid="user_12345"
patientid="patient_67890"
language="es"
>
</sofia-sdk>
Configuración avanzada con callbacks
<sofia-sdk
setGetLastReport="setGetReportFunction"
handleReport="handleReport"
debug="true"
baseurl="https://api.example.com/v1"
wssurl="wss://ws.example.com"
apikey="sk-your-api-key-here"
userid="user_12345"
patientid="patient_67890"
>
</sofia-sdk>
Convención de nombres para callbacks: Al asignar callbacks vía JavaScript, use camelCase (ej.: element.handleReport = fn). En atributos HTML, handle-report también funciona como alias. Las propiedades simples como isopen, patientdata y debug usan el mismo nombre en minúsculas tanto en HTML como en JS.| Atributo HTML | Propiedad JS | Notas |
|---|
handle-report o handleReport | handleReport | Ambas formas funcionan como atributo HTML |
setIsOpen | setIsOpen | Usar camelCase en HTML |
setGetLastReport | setGetLastReport | Usar camelCase en HTML |
patientdata | patientdata | Igual en ambos |
isopen | isopen | Igual en ambos |
debug | debug | Igual en ambos |
Propiedades Deprecadas
Las siguientes propiedades están deprecadas y serán eliminadas en v2.0. No tienen efecto en la arquitectura actual basada en Chat.
| Propiedad | Migración |
|---|
| toolsargs | Renombrada a template. Ver Propiedades Requeridas |
| isonlychat | Ya no es necesaria. El modo solo chat es automático cuando no se proporcionan template/templateid |
| disableactions | Para deshabilitar todas las acciones, no monte el componente <sofia-sdk> |
| disablegenerate | Para ocultar el botón de generar, no pase template/templateid |
| sofiatitle | Ya no es configurable. El título siempre es “SofIA” |
| isscreenloading | No disponible en la UI basada en Chat |
| transcriptorselectvalues | No se usa en la UI basada en Chat |
| render-report-content | No disponible en la UI basada en Chat |
| handleFill | No disponible en la UI basada en Chat |
| toast | Ya no tiene efecto |
Notas Importantes
- patientdata: Debe contener solo información necesaria para el contexto clínico, siguiendo principios de minimización de datos.
- Estados: Los cambios en propiedades booleanas se reflejan inmediatamente en la interfaz.
- Localización: Cambiar el idioma afecta toda la interfaz del componente, incluyendo mensajes de error y etiquetas.
- Callbacks: Las funciones pueden referenciarse por su nombre global (ej.:
handleReport="myFunction" resuelve a window.myFunction) o asignarse programáticamente (ej.: element.handleReport = fn).