Aller au contenu
OpesCare Développeurs

Architecture et flux

Vérification du QR Health ID

Le QR Health ID permet à quiconque, au comptoir, de confirmer qu’une carte est authentique et à jour. La réponse est toujours l’un de quatre états clairs, jamais une simple erreur.

Le flux

Faites défiler les étapes sous le diagramme, ou survolez-en une, pour la mettre en évidence.

Vérification du QR Health ID Un vérificateur scanne le QR Health ID du patient et opescare.com répond par l’un de quatre états ; un scan réussi est enregistré. Présenter le QR Health ID Patient Scan, /verify/qr/{token} Vérificateur Vérifier l’état du jeton opescare.com Enregistrer le scan réussi Journal Invalide jeton inconnu Révoqué la carte a été remplacée Expiré présenter un code récent Vérifié authentique et à jour présente valide Personne ou appareil Données stockées Décision Issue : réussie Issue : refusée Requête Réponse Refus ou échec
  1. Présenter le QR Health ID Le patient ouvre sa carte Health ID en mode présentation.
  2. Scan, /verify/qr/{token} N’importe quelle caméra ouvre la page de vérification sur opescare.com.
  3. Vérifier l’état du jeton Le jeton est recherché et contrôlé : expiration et révocation.
  4. Vérifié, expiré, révoqué ou invalide La page affiche exactement l’un des quatre états.
  5. Enregistrer le scan réussi Une vérification réussie est enregistrée comme événement de vérification.
Comment ce diagramme est vérifié 21 contrôles sur 21 réussis

L'image, les étapes, le PDF et le JSON sont générés à partir d'une seule spécification. Un test automatisé démontre le graphe et vérifie chaque référence ci-dessous dans l'application en fonctionnement.

  • Chaque carte a un identifiant unique
  • Chaque carte a un type connu
  • Chaque flèche relie deux cartes existantes
  • Un seul point de départ (personne, appareil ou partenaire)
  • Chaque carte est atteignable depuis le départ
  • Chaque carte mène à une issue (aucune impasse)
  • Aucun cycle sauf les boucles de nouvel essai déclarées
  • Chaque étape numérotée suit de vraies flèches
  • Les issues terminent le flux
  • Deux cartes ne partagent jamais une case
  • Chaque carte cite sa preuve
  • Chaque route, classe, méthode et réglage existe
  • Chaque icône vient du jeu Lucide
  • Chaque icône correspond au type de sa carte
  • Chaque libellé existe en anglais et en français
  • Chaque libellé tient dans sa carte
  • Aucune flèche ne traverse une carte
  • Deux flèches sans rapport ne se superposent jamais
  • Aucune étiquette de flèche ne couvre une carte ou une autre étiquette
  • Chaque pointe de flèche est visible
  • Deux cartes reliées de types différents ne partagent jamais une couleur
CartePreuve dans le code
Présenter le QR Health ID route:portals.patient.health-id-card method:App\Services\Identity\QrTokenService::generateToken
Scan, /verify/qr/{token} route:verify.qr
Vérifier l’état du jeton method:App\Http\Controllers\MedicalId\VerifyController::qr method:App\Services\Identity\QrTokenService::verifyToken method:App\Services\Identity\QrTokenService::failureState
Enregistrer le scan réussi class:App\Models\HealthIdVerificationEvent
Invalide method:App\Services\Identity\QrTokenService::failureState
Révoqué method:App\Services\Identity\QrTokenService::revokeToken
Expiré class:App\Models\HealthIdQrToken
Vérifié route:verify.qr

Tous les flux en JSON

Ce que cela garantit

  • Le QR porte un jeton, pas de données médicales.
  • Chaque réponse est l’un de quatre états exploitables.
  • Les vérifications réussies sont enregistrées.

Où cela se trouve dans le code

  • route:portals.patient.health-id-card
  • method:App\Services\Identity\QrTokenService::generateToken
  • route:verify.qr
  • method:App\Http\Controllers\MedicalId\VerifyController::qr
  • method:App\Services\Identity\QrTokenService::verifyToken
  • method:App\Services\Identity\QrTokenService::failureState
  • class:App\Models\HealthIdVerificationEvent
  • method:App\Services\Identity\QrTokenService::revokeToken
  • class:App\Models\HealthIdQrToken