Skip to main content
updateTemplate es un callback del host que le permite a tu EMR (SINA/HIS) entregarle a SofIA lo que el médico ya escribió en tus propios campos del formulario. SofIA mergea ese contenido en la plantilla de extracción como contexto, para que la nota clínica generada integre lo ya documentado en lugar de:
  • producir una copia idéntica al pulsar Regenerar, o
  • ignorar las notas que el médico tomó durante la consulta.
Tú provees una función; el SDK la llama (un “pull”) en los momentos correctos y se encarga del resto — el merge, la anonimización y la de-anonimización pasan todo dentro del SDK. Esta página explica el contrato, cuándo se llama y cómo cablearlo.

Cómo encaja en el flujo

El SDK llama (pull) tu callback en cuatro momentos y mergea el resultado en la plantilla que envía al backend de extracción:
1

Empieza la grabación

updateTemplate() alimenta la extracción parcial en vivo — una nota puede llevar contexto antes incluso de empezar a grabar.
2

Para la grabación

updateTemplate() alimenta el borrador automático de fondo.
3

Click en Generar

updateTemplate() se vuelve a llamar para el informe generado.
4

Click en Regenerar

updateTemplate() se vuelve a llamar para que la nota regenerada refleje el contenido más reciente del formulario.
Cada valor devuelto se mergea en la plantilla como properties.<campo>.existingValue, y se envía al backend de extracción como contexto de generación. Tú no llamas nada — solo asignas la función, y el SDK la invoca cuando necesita el contenido más fresco.

El contrato

Devuelve un objeto cuyas claves sean los ids de las properties de la plantilla y cuyos valores sean el contenido actual de esos campos en tu EMR:
Reglas:
  • Las claves deben coincidir exactamente con los ids de las properties. Las claves que no matcheen ninguna property se ignoran.
  • Los valores vacíos se descartan. Strings vacíos, strings solo con espacios, arrays vacíos, null y undefined se omiten — ese campo cae a generación normal solo desde la transcripción (sin degradación).
  • La función puede ser sync o async. Devuelve null/undefined/{} cuando no haya nada para aportar.
  • Devuelve solo los campos de los que tengas contenido — no hace falta mandar todas las claves.

Cómo usarlo

El callback se lee fresco en cada pull, así que puedes devolver valores en vivo del estado actual de tu formulario — no hace falta re-asignarlo cuando el formulario cambia.

Referencia de props

Qué hace el SDK con eso

  1. Pull — llama a updateTemplate() (esperándolo si devuelve una Promise).
  2. Merge — por cada clave devuelta que matchee una property y tenga contenido no vacío, la inyecta como template.properties.<campo>.existingValue. La plantilla que pasaste nunca se muta — se envía una copia.
  3. Anonimización (saliente) — el existingValue inyectado se scrubea con el mismo mapa real→placeholder que ya se aplica a la transcripción, antes de salir hacia el transcriptor (WebSocket) y el LLM de extracción (HTTP). No necesitas anonimizar nada por tu cuenta.
  4. De-anonimización (entrante) — cuando el modelo devuelve tu contenido en el resultado, el SDK restaura los valores reales, así el médico ve exactamente lo que escribió — nunca un placeholder.
Tu backend lee el contenido desde properties.<campo>.existingValue en el json_schema que recibe. No hace falta cambiar la forma del payload — el contenido viaja dentro de la plantilla que ya se envía.
La anonimización aquí espeja el flujo de datos del paciente: los identificadores directos de patientdata y el existingValue inyectado se enmascaran antes de salir del navegador y se restauran en el resultado final.

Comportamiento cuando no hay nada para agregar

Este camino es seguro a propósito:
  • updateTemplate no provisto → el SDK se comporta igual que antes.
  • Devuelve null / undefined / {} → no se inyecta nada; generación normal.
  • Un campo está vacío o su clave no matchea una property → ese campo se omite; los demás campos igual se usan.
En todos estos casos la generación procede normal desde la transcripción — no hay degradación ni error.

Checklist rápido

  • Pasas una template (JSON Schema) al SDK.
  • updateTemplate devuelve un objeto por ids de properties de la plantilla.
  • Los campos de prosa son strings; las secciones array son arrays de entradas.
  • Los campos vacíos/desconocidos se omiten (o se dejan vacíos — el SDK los saltea).
  • Tu backend lee properties.<campo>.existingValue del json_schema.
  • (Sin acción por PII) — el SDK anonimiza al salir y restaura al volver.
Si las notas regeneradas siguen saliendo idénticas, verifica que las claves de tu updateTemplate coincidan con los ids de las properties de la plantilla y que los valores no estén vacíos — las claves que no matchean o están vacías se saltean por diseño.

Próximos pasos