Cómo funciona
POST /v1/scribe-sessions/livedevuelve una URL de WebSocket.- Conéctese a esa URL y transmita el audio a medida que se captura.
- Envíe
stop_recordingcuando termine la consulta. - El webhook
scribe_session.completed(webhooks) le indica que el registro está listo. - Obtenga el registro desde Documentos de Registro Médico.
Qué debe tener la clave API
La clave que use aquí necesita las tres condiciones siguientes, o la llamada falla con403:
- El permiso
scribe:write, otorgado de forma explícita. Una clave antigua sin el claim de permisos funciona en otros endpoints, pero aquí se rechaza; regenere la clave para obtener una válida. - El rol
doctor. - Un vínculo con una institución.
Crear una sesión
El cuerpo de la solicitud lleva el contexto de la consulta: cuál es la consulta, qué plantilla se completa, a qué paciente pertenece y el contexto escrito que usted ya tenga.live.url como opaca y manéjela como un secreto. Conéctese exactamente a la URL devuelta y no la construya usted mismo: el host, la ruta y la credencial cambian sin aviso.
La credencial se verifica solo cuando el socket se abre. Una conexión establecida antes de expiresAt sigue transmitiendo después de ese instante, y una conexión intentada después se rechaza, así que solicite una sesión nueva en lugar de reutilizar una URL vencida.
Campos de la solicitud
Elegir la plantilla
template acepta un id o el propio JSON de la plantilla. Envíe exactamente uno de los dos.
Enviar ambos, o ninguno, devuelve
400 con param igual a template.
La forma en línea:
Identificar al paciente
patient también acepta un id o la identidad en línea. Envíe exactamente uno.
Reintentar la misma consulta
Llamar al endpoint de nuevo con el mismoconsultation.id mientras la sesión sigue grabando devuelve la misma sesión con una URL nueva. Esa es la forma admitida de recuperarse de una conexión caída. No compare las dos URL entre sí y no almacene la primera. Una vez detenida la grabación, el mismo id devuelve 409.
Enviar audio
Conéctese alive.url. El servidor envía un mensaje ready cuando está preparado para recibir audio.
Envíe el audio como frames binarios de WebSocket. Se aceptan dos formatos:
Envíe aproximadamente 100 ms de audio por frame, al ritmo en que se captura. Una carga PCM menor a 1024 bytes (cerca de 32 ms) se conserva en la grabación, pero no se reenvía al reconocedor en vivo, así que los frames muy pequeños retrasan el texto que usted ve en lugar de perder audio.
Mantener la conexión viva
Envíe{"type": "ping", "data": {}} cuando quiera confirmar que el socket está sano; el servidor responde con {"type": "pong", "data": {}}. Cualquier frame entrante, incluido el audio, cuenta como actividad. Una sesión que no recibe nada durante 15 minutos es cerrada por el servidor, así que envíe audio de forma continua, o haga ping durante las pausas largas.
Mensajes que usted recibe
Cada mensaje es JSON con un campotype y un campo data.
Una
correction reemplaza lo que un transcript informó para el mismo segmento. Cuando muestre texto a un médico, aplique las correcciones a medida que llegan.
reconnect lleva dos motivos. server_draining significa que el servidor se está reiniciando: reconéctese y siga transmitiendo. resume_upload significa que la detención llegó antes que todo el audio: reconéctese y envíe el audio que falta.
Finalizar la sesión
Envíe este mensaje cuando termine la consulta:scribe_completed con data.status igual a processing y cierra la conexión.
Recibir el registro
El webhookscribe_session.completed incluye consultationInternalId, el mismo consultation.id que usted envió. Obtenga el registro con él:
stop_recording. La generación ocurre en parte mientras el audio se transmite, así que una consulta más larga no tarda proporcionalmente más en terminar.
Pérdida de conexión
Reconectarse es esperado y seguro.- El socket se cae durante la grabación. Llame de nuevo a
POST /v1/scribe-sessions/livecon el mismoconsultation.idy conéctese a la URL devuelta. El audio ya recibido se conserva. live.urlllega aexpiresAt. Solicite una sesión nueva con el mismoconsultation.id. Un socket ya abierto no se ve afectado.- Cierre 1013. Reintentable: el servidor está ocupado o reiniciando. Espere un momento y reconéctese.
- Cierre 1003. El audio no se pudo decodificar. La sesión pasa a estado de error, así que reconectarse no la recupera. Corrija el codificador y comience una consulta nueva.
- Cierre 1008. Terminal: la credencial o la sesión no son válidas. No se reconecte; reintentar devuelve el mismo resultado.
Errores
Consulte Errores para el envelope completo de respuesta.