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.
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.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
- 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,
nullyundefinedse 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
Referencia de props
Qué hace el SDK con eso
- Pull — llama a
updateTemplate()(esperándolo si devuelve una Promise). - 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. - Anonimización (saliente) — el
existingValueinyectado 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. - 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.
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:updateTemplateno 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.
Checklist rápido
- Pasas una
template(JSON Schema) al SDK. -
updateTemplatedevuelve 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>.existingValuedeljson_schema. - (Sin acción por PII) — el SDK anonimiza al salir y restaura al volver.
Próximos pasos
- Esquemas de datos clínicos — la
templatecon cuyos ids de property deben coincidir tus claves - Modal de vista previa de inserción — deja que el médico cure el informe generado antes de que llegue a tu app
- Datos del paciente — cómo se anonimizan los datos contextuales