Sistema de notificaciones
Propósito y alcance del sistema
Trak envía las notificaciones a través del servicio AWS SNS en conjunto de AWS Lambda para enviar notificaciones por HTTPs a cada cliente con una firma SHA1withRSA para su verificación.

Para más información consultar:
AWS
AWS SNS
Nota: Este sistema está en continua evolución. Para asegurar la versión más reciente, contactar con
soporte@trak.es
.
Configuración y requerimientos
Suscripción a las notificaciones
Para activar o desactivar la recepción de notificaciones el cliente deberá comunicarlo por el buzón de soporte soporte@trak.es
o su personal de contacto en Trak,
el cliente debe proporcionar un punto de conexión donde hacer las llamadas, así como la clave de acceso.
Ejemplo punto de conexión:
https://api.test.com/api/v2/trak/notificaciones/
Ejemplos claves de acceso:
"apikey 1234xxxxx"
"Bearer 1234xxxxx"
"Basic 1234xxxxx"
Recepción de las notificaciones
Una vez activado la recepción de notificaciones, Trak enviará notificaciones de todo los eventos existentes que ocurran en la plataforma, el cliente tendrá que filtrar y usar aquellos que les convenga.
Formato de la notificación
Formato de la petición será similar a la siguiente, donde se incluyen las cabeceras HTTP y el formato JSON de la petición:
POST / HTTP/1.1
Content-Length: 1596
Content-type: application/json
X-Amz-Sns-message-type: SubscriptionConfirmation
X-Amz-Sns-message-id: aa3999bb-286e-4cc3-ad6a-761be641b0f5
X-Amz-Sns-Topic-Arn: arn:aws:sns:us-west-2:123456789012:MyTopic
Host: ec2-50-17-44-49.compute-1.amazonaws.com
Connection: Keep-Alive
user-Agent: Amazon Simple Notification Service Agent
Accept-Encoding: gzip,deflate
{
"type" : "Notification",
"messageId" : "da41e39f-ea4d-435a-b922-c6aae3915ebe",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "test",
"message" : "<TRAK-PLAYLOAD-JSON>",
"Timestamp" : "2012-04-25T21:49:25.719Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLElDMXvB8r9R83tGoNn0ecwd5UjllzsvSvbItzfaMpN2nk5HVSw7XnOn/49IkxDKz8YrlH2qJXj2iZB0Zo2O71c4qQk1fMUDi3LGpij7RCW7AW9vYYsSqIKRnFS94ilu7NFhUzLiieYr4BKHpdTmdD6c0esKEYBpabxDSc=",
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55"
}
El contenido del mensaje de la notificación se enviará, como JSON, dentro del campo "message" : "<TRAK-PLAYLOAD-JSON>
", el siguiente formato:
{
"message": "Mensaje",
"severity": "urgent",
"day": "2014-11-14 09:03:42.466716+00:00",
"receiver": "physio",
"user": "xxxxxxx",
"type": "email",
"code": "NOT-001"
}
Notificaciones
Las notificaciones están diseñadas para informar, advertir o alertar a los usuarios que emplean Trak, ya sean profesionales sanitarios o pacientes. Los eventos se generan cuando se cumplen ciertas condiciones o acontecimientos dentro de la app. Por ejemplo, si un paciente no realiza una sesión programada, se generará una notificación para su fisioterapeuta, quien podrá tomar las acciones necesarias para asegurar el buen manejo de sus pacientes.
La integración de las notificaciones en el sistema del cliente puede ayudar a los responsables del centro o negocio a tener una visión global del uso de la aplicación por parte de los usuarios, permitiéndoles detectar anomalías, identificar usos indebidos o extraer métricas de uso.
Criticidad de la notificación
Trak clasifica las notificaciones por 3 tipos de gravedad, esta información normalmente viene en el cuerpo del JSON como "severity"
Son aquellos eventos informativos. Por ejemplo, recuperación de sesión, usuario sin protocolo activo, etc.
Son aquellos eventos que pueden indicar un futuro problema, a los que hay que prestar atención pero su gestión no es urgente. Por ejemplo, mensaje nuevo en el chat, facilidad de ejecución de ejercicio.
Son aquellos eventos que deben de ser gestionados inmediatamente. Por ejemplo, empeoramiento de las sesiones, 5 sesiones consecutivas sin realizar, etc.
Codificación
Cada evento tiene un código único que le sirve al cliente para quue pueda identificar de forma rápida si la notificación tiene interés para ellos,
tienen el siguiente formato: NOT-001
, NOT-002
. El cliente deberá hacer la comprobación al inicio y descartar con respuesta de status 200
aquellas notificaciones que no les interese.
Notificaciones para profesionales sanitarios
Notificación NOT-001
-
Severity: 🔴 Urgent
-
Descripción: Empeoramiento en la sesión del
MM/DD/YYYY
-
Payload JSON:
{
"message": "Empeoramiento en la sesión del <DD/MM>",
"severity": "urgent",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"code": "NOT-001"
}
Notificación NOT-002
-
Severity: 🔴 Urgent
-
Descripción: 5 sesiones sin hacer seguidas
-
Payload JSON:
{
"message": "5 últimas sesiones sin realizar <ID_SESSION>",
"severity": "urgent",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "email",
"code": "NOT-002"
}
Notificación NOT-003
-
Severity: 🔴 Urgent
-
Descripción: El usuario saltó el ejercicio X por dolor
-
Payload JSON:
{
"message": "El usuario ha saltado el ejercicio <nombre-ejercicio> por dolor",
"severity": "urgent",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"code": "NOT-003"
}
Notificación NOT-004
-
Severity: 🟠 Warning
-
Descripción: El usuario dice X por el chat, respondele
-
Payload JSON:
{
"message": "<message>",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"code": "NOT-004"
}
Notificación NOT-005
-
Severity: 🟠 Warning
-
Descripción: El usuario ha indicado extrema dificultad para acabar los ejercicios en la sesión del DD/MM
-
Payload JSON:
{
"message": "Mucho esfuerzo en la sesión del <DD/MM>",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"code": "NOT-005"
}
Notificación NOT-006
-
Severity: 🟠 Warning
-
Descripción: El usuario ha indicado extrema facilidad para realizar los ejercicios en la sesión del DD/MM
-
Payload JSON:
{
"message": "Poco esfuerzo en la sesión del <DD/MM>",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"code": "NOT-006"
}
Notificación NOT-008
-
Severity: 🟠 Warning
-
Descripción: Mensaje escrito por el paciente en el EVA al finalizar la sesión
-
Payload JSON:
{
"message": "<message>",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"code": "NOT-008"
}
Notificación NOT-009
-
Severity: 🔵 Info
-
Descripción: Sesión del día DD/MM recuperada
-
Payload JSON:
{
"message": "Sesión del <DD/MM> recuperada",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"code": "NOT-009"
}
Notificación NOT-010
-
Severity: 🔵 Info
-
Descripción: Usuario sin protocolo activo. Genera un protocolo o dale de alta
-
Payload JSON:
{
"message": "Paciente sin protocolo activo (<ID_SESSION>: Ninguno)",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "email",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"code": "NOT-010"
}
Notificación NOT-014
-
Severity: 🟠 Warning
-
Descripción: El paciente usa el botón para pedir más ejercicios
-
Payload JSON:
{
"message": "Me gustaría recibir más ejercicios",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"code": "NOT-014"
}
Notificación NOT-015
-
Severity: 🔵 Info
-
Descripción: Reporte de resultados (pdf)
-
Payload JSON:
{
"message": "Reporte de <identificador patient>",
"file": "https:presigned.s3.url.report.com",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"user": "<identificador patient>",
"type": "report",
"episode": "213313",
"encounter": "1232131",
"code": "NOT-015"
}
Notificación NOT-016
-
Severity: 🔴 Urgent
-
Descripción: Este usuario aún no ha entrado a la plataforma. Hace 2 días que se le dio acceso.
-
Payload JSON:
{
"message": "Este usuario aún no ha entrado a la plataforma. Hace 2 días que se le dio acceso.",
"severity": "urgent",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"code": "NOT-016"
}
Notificación NOT-017
-
Severity: 🔴 Urgent
-
Descripción: Este usuario aún no ha entrado a la plataforma. Hace más de 6 días que se le dio acceso
-
Payload JSON:
{
"message": "Este usuario aún no ha entrado a la plataforma. Hace más de 6 días que se le dio acceso.",
"severity": "urgent",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "email",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"code": "NOT-017"
}
Notificación NOT-018
-
Severity: 🔴 Urgent
-
Descripción: Este usuario aún no ha entrado a la plataforma. Hace más de 12 días que se le dio acceso
-
Payload JSON:
{
"message": "Este usuario aún no ha entrado a la plataforma. Hace más de 12 días que se le dio acceso.",
"severity": "urgent",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "email",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"code": "NOT-018"
}
Notificación NOT-019
-
Severity: 🔴 Urgent
-
Descripción: Este usuario aún no ha entrado a la plataforma. Hace más de 20 días que se le dio acceso
-
Payload JSON:
{
"message": "Este usuario aún no ha entrado a la plataforma. Hace más de 20 días que se le dio acceso.",
"severity": "urgent",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "email",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"code": "NOT-019"
}
Notificación NOT-020
-
Severity: 🟠 Warning
-
Descripción: El usuario no ha hecho la sesión del día DD/MM
-
Payload JSON:
{
"message": "Sesion del <YYYY-MM-DD> no completada",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"code": "NOT-020"
}
Notificación NOT-021
-
Severity: 🟠 Warning
-
Descripción: El usuario ha indicado extremo dolor para acabar los ejercicios en la sesión del DD/MM
-
Payload JSON:
{
"message": "Mucho dolor en la sesión del <DD/MM>",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"code": "NOT-021"
}
Notificación NOT-022
-
Severity: 🔵 Info
-
Descripción: Sesión de rehabilitación finalizada
-
Payload JSON:
{
"message": "Sesión de rehabilitación finalizada",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"user": "<identificador paciente>",
"type": "notification",
"episode": "213313",
"encounter": "1232131",
"code": "NOT-022"
}
Notificación NOT-024
-
Severity: 🟠 Warning
-
Descripción: El usuario saltó el ejercicio X
-
Payload JSON:
{
"message": "Fisioterapeuta <identificador physio> ha compartido el ejercicio <nombre-ejercicio> contigo",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "notification",
"code": "NOT-024"
}
Notificación NOT-025
-
Severity: 🟠 Warning
-
Descripción: Ejercicio saltado
-
Payload JSON:
{
"message": "El usuario ha saltado el ejercicio <nombre-ejercicio>",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "notification",
"code": "NOT-025"
}
Notificación NOT-026
-
Severity: 🟠 Warning
-
Descripción: Bajo tiempo en cámara
-
Payload JSON:
{
"message": "Bajo tiempo en cámara en la sesión del día <YYYY-MM-DD>",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "notification",
"code": "NOT-026"
}
Notificación NOT-027
-
Severity: 🟠 Warning
-
Descripción: Menos del 70% de ejercicios completados
-
Payload JSON:
{
"message": "Sesion del día <YYYY-MM-DD> con menos del 70% de ejercicios completados",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador physio que comparte>",
"type": "notification",
"code": "NOT-027"
}
Notificación NOT-031
-
Severity: 🟠 Warning
-
Descripción: Ejercicio saltado por cansancio
-
Payload JSON:
{
"message": "El usuario ha saltado el ejercicio <nombre-ejercicio> por cansancio",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "notification",
"code": "NOT-031"
}
Notificación NOT-032
-
Severity: 🟠 Warning
-
Descripción: Ejercicio saltado por velocidad no adecuada
-
Payload JSON:
{
"message": "El usuario ha saltado el ejercicio <nombre-ejercicio> por velocidad no adecuada",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "notification",
"code": "NOT-032"
}
Notificación NOT-033
-
Severity: 🔵 Info
-
Descripción: Sesión de rehabilitación completada
-
Payload JSON:
{
"message": "El usuario ha completado una sesión de rehabilitación",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "notification",
"code": "NOT-033"
}
Notificación NOT-034
-
Severity: 🔵 Info
-
Descripción: Protocolo a 3 días de finalizar
-
Payload JSON:
{
"message": "El protocolo con id: <identificador protocol> de <identificador patient> se acabará en menos de tres días (<YYYY-MM-DD>)",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "notification",
"code": "NOT-034"
}
Notificaciones para pacientes
Notificación NOT-007
-
Severity: 🟡 Warning
-
Descripción: El usuario no ha hecho la sesión del día DD/MM
-
Payload JSON:
{
"message": "Sesión del <YYYY-MM-DD> no completada. Tienes dos días para recuperarla",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "patient",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"code": "NOT-007"
}
Notificación NOT-011
-
Severity: 🔴 Urgent
-
Descripción: Hoy tiene sesión (también por email)
-
Payload JSON:
{
"message": "Tiene sesión el <DD-MM-YYYY>",
"severity": "urgent",
"day": "<DD-MM-YYYY>",
"receiver": "patient",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"type": "email",
"code": "NOT-011"
}
Notificación NOT-012
-
Severity: 🔴 Urgent
-
Descripción: Aún puedes recuperar tu sesión (también por email)
-
Payload JSON:
{
"message": "<YYYY-MM-DD>: Opción a recuperar la sesión del <YYYY-MM-DD>",
"severity": "urgent",
"day": "<DD-MM-YYYY>",
"receiver": "patient",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"type": "email",
"code": "NOT-012"
}
Notificación NOT-013
-
Severity: 🟠 Warning
-
Descripción: Tu fisioterapeuta dice X, respondele
-
Payload JSON:
{
"message": "<message>",
"severity": "warning",
"day": "<DD-MM-YYYY>",
"receiver": "patient",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "chat",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"code": "NOT-013"
}
Notificación NOT-023
-
Severity: 🔵 Info
-
Descripción: Fisioterapeuta X ha compartido el ejercicio Y contigo
-
Payload JSON:
{
"message": "Fisioterapeuta <identificador physio> ha compartido el ejercicio <nombre-ejercicio> contigo",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "patient",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "email",
"episode": "<identificador episode>",
"encounter": "<identificador encounter>",
"code": "NOT-023"
}
Notificaciones generales
Notificación NOT-000
-
Severity: 🔵 Info
-
Descripción: Notificación DUMMY para pruebas
-
Payload JSON:
{
"message": null,
"code": "NOT-000",
"severity": "info",
"sesion_id": null,
"with_ai": null,
"date": "<YYYY-MM-DD HH:MM:SS(UTC)>",
"user": "<identificador patient>",
"physio": "<identificador physio>",
"protocol_info": null
}
Notificación NOT-044
-
Severity: 🟠 Warning
-
Descripción: Alerta sobre la adherencia media de los pacientes de un Fisioterapeuta por debajo del 50%
-
Payload JSON:
{
"message": "La adherencia media de los pacientes de {physio.email} es inferior o igual al 50%.",
"code": "NOT-044",
"severity": "warning",
"sesion_id": null,
"with_ai": null,
"date": "<YYYY-MM-DD HH:MM:SS(UTC)>",
"user": null,
"physio": "<identificador physio>",
"protocol_info": null
}
Notificación NOT-045
-
Severity: 🔵 Info
-
Descripción: Sesión empezada, el usuario ha comenzado una sesión
-
Payload JSON:
{
"message": "Sesion started",
"code": "NOT-045",
"severity": "info",
"sesion_id": "<identificador de la sesión>",
"with_ai": "<con inteligencia artificial o no (Boolean)>",
"date": "<YYYY-MM-DD HH:MM:SS(UTC)>",
"user": "<identificador patient>",
"physio": "<identificador physio>",
"protocol_info": {
"id": "<identificador del protocolo>",
"title": "<título del protocolo>",
"num_exercise": "<cantidad de ejercicios en el protocolo>"
}
}
Notificación NOT-046
-
Severity: 🔵 Info
-
Descripción: Ejercicio empezado
-
Payload JSON:
{
"message": "Ejercicio empezado",
"code": "NOT-046",
"severity": "info",
"sesion_id": "<identificador de la sesión>",
"with_ai": "<con inteligencia artificial o no (Boolean)>",
"date": "<YYYY-MM-DD HH:MM:SS(UTC)>",
"user": "<identificador patient>",
"physio": "<identificador physio>",
"exercise_info": {
"id": "<identificador del ejercicio>",
"name": "<nombre del ejercicio>",
"sets": "<series configurado para el ejercicio>",
"reps": "<repeticiones configurado para el ejercicio>>"
},
"protocol_info": {
"id": "<identificador del protocolo>",
"title": "<título del protocolo>",
"num_exercise": "<cantidad de ejercicios en el protocolo>"
}
}
Notificación NOT-047
-
Severity: 🔵 Info
-
Descripción: Ejercicio terminado
-
Payload JSON:
{
"message": "Ejercicio finalizado",
"code": "NOT-047",
"severity": "info",
"sesion_id": "<identificador de la sesión>",
"with_ai": "<con inteligencia artificial o no (Boolean)>",
"date": "<YYYY-MM-DD HH:MM:SS(UTC)>",
"user": "<identificador patient>",
"physio": "<identificador physio>",
"exercise_info": {
"id": "<identificador del ejercicio>",
"name": "<nombre del ejercicio>",
"sets": "<series configurado para el ejercicio>",
"reps": "<repeticiones configurado para el ejercicio>>"
},
"protocol_info": {
"id": "<identificador del protocolo>",
"title": "<título del protocolo>",
"num_exercise": "<cantidad de ejercicios en el protocolo>"
}
}
Códigos no activos
Notificación NOT-028
-
Severity: 🔵 Info
-
Descripción: Usuario compartido contigo
-
Payload JSON:
{
"message": "Fisioterapeuta {{physio_username}} ha compartido el usuario {{user_username}} contigo",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador patient>",
"type": "notification",
"code": "NOT-028"
}
Notificación NOT-029
-
Severity: 🔵 Info
-
Descripción: Protocolo compartido contigo
-
Payload JSON:
{
"message": "Fisioterapeuta {{physio_username}} ha compartido el protocolo {{protocol_title}} contigo",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio that shared>",
"user": "<identificador physio que comparte>",
"type": "notification",
"code": "NOT-029"
}
Notificación NOT-030
-
Severity: 🔵 Info
-
Descripción: Ejercicio compartido contigo
-
Payload JSON:
{
"message": "Fisioterapeuta {{physio_username}} ha compartido el ejercicio {{exercise_name}} contigo",
"severity": "info",
"day": "<DD-MM-YYYY>",
"receiver": "physio",
"physio": "<identificador physio>",
"user": "<identificador physio que comparte>",
"type": "notification",
"code": "NOT-030"
}