Ce qu'est Saphere

Une caméra, trente secondes, et une série d’indicateurs de santé. Rien à distribuer, et rien à porter pour l’utilisateur.

Saphere mesure des indicateurs de santé à partir d’une vidéo. Une personne regarde la caméra avant de son téléphone, ou la webcam de son ordinateur, pendant une trentaine de secondes. La lumière que sa peau renvoie porte le rythme de son pouls. Saphere lit ce rythme et en déduit une série d’indicateurs.

Il n’y a ni brassard, ni ceinture thoracique, ni pince au doigt. Le seul appareil en jeu est celui que vos utilisateurs possèdent déjà.

Les deux pièces

Saphere se compose de deux parties, et la plupart des intégrations utilisent les deux.

Saphere Scan est le widget. C’est un seul fichier JavaScript que vous placez dans une page ou dans une application mobile. Il prend en charge tout le parcours : expliquer la mesure, recueillir le consentement, guider la personne en position, conduire la capture, afficher le résultat. Il dit à votre code ce qui se passe à chaque étape. Vous lui donnez un conteneur et un moyen d’obtenir un jeton, il fait le reste.

L’api est tout ce qui entoure le widget. Elle délivre les jetons de courte durée que le widget utilise. Elle accepte une vidéo ou des images que vous avez enregistrées vous-même, si vous préférez vous passer du widget. Et elle conserve les mesures, pour que vous puissiez les relire plus tard.

De laquelle ai-je besoin ?

Si quelqu’un est présent et que vous voulez une mesure guidée, en direct, utilisez le widget. Si vous disposez déjà d’un fichier enregistré, une vidéo d’entretien ou une série de photos par exemple, envoyez-le à l’api et passez-vous entièrement du widget.

Ce qui revient

Une mesure terminée rend jusqu’à dix variables.

VariableCléUnitéForme de la valeur
Fréquence cardiaquehrbpmnumber
Fréquence respiratoirebrcpmnumber
Variabilité cardiaquehrvmsnumber
Niveau de stressstrs{ level, scale }
Pression artériellebpmmHg{ systole, diastole }
Risque tensionnelbpClass{ level, scale }
Âge apparentphysicalAgeyearsnumber
Indice de masse corporellebmikg/m²number
IMC estimé du visagefaceBmikg/m²number
Score de santé cardiovasculairehealthScorenumber

À côté d’elles vient le signal de pouls dont elles ont été tirées, de sorte qu’un résultat n’est jamais une simple série de nombres : vous voyez toujours ce qui l’a produit.

Chaque variable arrive dans l’un de deux états. Soit elle porte une valeur, soit elle porte un code d’erreur qui dit pourquoi elle n’a pas pu être produite. Rien n’est jamais absent en silence.

Ce qui est mesuré décrit chaque variable, et dit ce dont chacune a besoin pour être calculée.

Ce qu’il lui faut pour fonctionner

Saphere lit un signal lumineux très faible. Les conditions qui le rendent lisible ne se négocient pas, et votre interface doit aider les utilisateurs à les réunir plutôt que de les laisser deviner.

  • Un visage éclairé. La lumière doit tomber sur le visage. Une personne assise devant une fenêtre lumineuse devient une silhouette sombre, et il n’y a rien à lire dans une silhouette.
  • Une personne qui reste immobile. Le mouvement noie le changement de couleur dont la mesure dépend. Rester assis raisonnablement immobile trente secondes, c’est ce qui est demandé.
  • Un visage découvert. Écharpes, cols montants, chapeaux enfoncés et masques cachent la peau que la mesure lit.
  • Un visage dans le cadre, à la bonne distance. Le widget le guide par un repère à l’écran. Pour un fichier enregistré, l’api attend le même soin.

Les premiers écrans du widget existent pour expliquer ces quatre points, en dix langues, avant que la caméra ne s’ouvre.

Ce qu’il ne fait pas

Une mesure est une estimation. Elle vient d’un signal lumineux faible, dans des conditions que personne ne contrôle, sur du matériel grand public ordinaire. Traitez le résultat comme un indicateur, et concevez votre produit pour que l’utilisateur le lise comme tel.

Le widget s’adresse à des adultes. Son introduction dit qu’il est destiné aux personnes de 18 à 80 ans, et l’api refuse un age inférieur à 18 ou supérieur à 110.

Une mesure peut échouer, et le dire fait partie du contrat. Une caméra que l’utilisateur refuse, un visage qui sort du cadre, une lumière qui change en cours de route : chaque cas est rapporté à votre code avec un motif nommé plutôt qu’avec un échec vague, pour que votre support puisse encore le comprendre des mois plus tard.