onReportApply.
Esta página explica cómo activarlo, desactivarlo y usarlo.
El mismo modal se reutiliza para curar acciones clínicas (extras) — peticiones, citas, pruebas, derivaciones — por un canal paralelo. Ahí el gate es
showInsertionPreview y la presencia de templateExtras (en lugar de template), y al Aplicar los items van a handleExtras. Ver Acciones clínicas (Extras).Cómo encaja en el flujo
1
Grabación → Detener
Cuando el médico detiene la grabación, un auto-review en segundo plano borronea un informe. El borrador no se muestra todavía — espera, igual que el botón Generar.
2
El usuario hace clic en Generar (o Regenerar)
El modal nunca se abre solo desde el auto-review en segundo plano. Espeja el botón Generar y espera un clic del usuario. Todo resultado iniciado por el usuario —incluso tras una generación automática fallida— abre el modal.
3
Curar en el modal
La vista previa se abre con los campos del informe. El médico puede seleccionar, editar o completar cada uno. Los campos obligatorios bloquean Aplicar hasta que se completen.
4
Aplicar → onReportApply(curado)
Al hacer clic en Aplicar, tu app recibe el payload curado —solo los campos que el médico dejó o editó— vía
onReportApply. Tu app lo inserta en el EHR/HIS.Si la función está desactivada, un informe entrante pasa directo a tu callback
handleReport (comportamiento legacy) — el modal no se renderiza.Activar el modal
El modal tiene dos canales independientes: uno para informes y otro para acciones clínicas (extras). Cada uno se activa solo cuando se cumplen sus dos condiciones. Ambos comparten el mismo flag de backend, pero cada uno tiene su propio esquema:showInsertionPreview es por API key y común a ambos canales. Los esquemas son independientes: puedes activar el modal solo para informes (template), solo para extras (templateExtras), o para los dos.
Activar el flag de backend
El flag es por API key y vive en tus ajustes de perfil de Omniloy (showInsertionPreview). No puedes activarlo desde el frontend — contacta a support@omniloy.com para que lo activen para tu key. Hasta que sea true, el SDK ignora el modal por completo y cae en handleReport.
Pasar un template
Eltemplate es el JSON Schema que describe la estructura del informe (el mismo esquema usado para generarlo). Debe estar presente para que el modal se abra. Consulta Esquemas de datos clínicos.
Desactivar el modal (opt-out)
El modal está apagado por defecto — solo aparece cuando se cumplen ambas condiciones de activación de arriba. No hay un interruptor “off” especial: hacer que cualquiera de las condiciones sea falsa lo desactiva. Tienes dos palancas independientes:
Cuando está desactivado, los informes generados se entregan a tu callback
handleReport como antes — sin modal, sin paso de curación. Este es el comportamiento legacy.
Errores comunes al activarlo/desactivarlo
No existe ninguna prop ni atributo HTML que active/desactive la función
No existe ninguna prop ni atributo HTML que active/desactive la función
En algún código de demo aparece un atributo
show-insertion-preview — es un no-op: el SDK nunca lo lee. Las únicas palancas de activación/desactivación son el flag de backend showInsertionPreview y la presencia de template.Omitir onReportApply no desactiva el modal
Omitir onReportApply no desactiva el modal
Si la función está activa, el modal igual se abre; al Aplicar simplemente cae en
handleReport (y avisa por log si no hay ninguno cableado). Para no mostrar el modal, usa una de las dos palancas de arriba.Un template vacío igual cuenta como presente
Un template vacío igual cuenta como presente
El gate solo verifica que
template sea truthy, así que pasar {} (o un objeto sin properties) puede abrir un modal sin campos. Pasa un JSON Schema real, u omite template por completo.Usarlo
En el web component,
template e insertionPreviewClassNames son props JSON y onReportApply/handleReport son props de función — asígnalas como propiedades JS del elemento, no como atributos HTML. Las funciones no pueden ir como atributos HTML, y el atributo template se elimina del DOM tras leerse (es un dato sensible).Referencia de props
Claves de
InsertionPreviewClassNames (todas opcionales): backdrop, panel, header, body, footer, group, row, gapRow, applyButton, cancelButton.
Los tipos CuratedReport e InsertionPreviewClassNames son estructurales (Record<string, unknown> y un mapa plano de strings de class-name opcionales) — tipa tus handlers contra esas formas directamente.
Qué puede hacer el médico en el modal
- Seleccionar / deseleccionar campos — solo los campos tildados terminan en el payload curado.
- Editar valores inline (texto, prosa, número, booleano, fecha, enum, multi-enum y arrays de objetos).
- Completar huecos — los campos vacíos que el template espera se muestran como gaps.
- Editar con voz — dictar para refinar campos mientras el modal permanece abierto.
- Aplicar — emite
onReportApply(curated). Deshabilitado mientras haya algún gap obligatorio sin completar. - Cancelar — cierra sin emitir.
Esquema del template
Eltemplate es un objeto JSON Schema estándar. Además de las palabras clave estándar, el modal entiende:
required(estándar) — el agente debería producir el campo cuando pueda.mandatory(palabra clave personalizada) — más fuerte querequired: el médico debe revisarlo/completarlo antes de permitir Aplicar. Los campos obligatorios vacíos se muestran como gaps bloqueantes y deshabilitan Aplicar.- Los tipos de campo se infieren del esquema:
string,prose(texto largo),number,boolean,date(víapattern),enum,multi-enum(array de enums) yarray-of-objects(cononeOf+discriminatoropcional para variantes por fila).
Checklist rápido
- El flag de backend
showInsertionPreviewestá entruepara tu API key (contacta a soporte para activarlo). Es común a ambos canales. - Para informes: pasas un
template(JSON Schema), cononReportApplycableado para el payload curado yhandleReportcomo fallback. - Para extras: pasas un
templateExtras(JSON Schema), conhandleExtrascableado para recibir los items curados. Ver Acciones clínicas (Extras). - (Opcional)
insertionPreviewClassNamesseteado para estilos del lado del host.
Próximos pasos
- Esquemas de datos clínicos — diseña el
templatey usa la palabra clavemandatory - Pre-cargar desde tu EMR — alimenta contenido ya escrito en la generación con
updateTemplate - Propiedades opcionales — referencia completa de callbacks