RDV par ticket (app Pass)
Le point d'entrée de l'app patient « Pass » en saisie manuelle : le patient tape le numéro imprimé sur son ticket et sa date de naissance — vous résolvez le RDV du jour correspondant.
/appointments/by-ticket{editorBaseUrl}/api/apiborneIntegrationService/v1Auth : X-Kiosk-Auth-Key + X-Kiosk-Device-IdRoute obligatoirePourquoi cette route existe
Après son passage borne, le patient repart avec un ticket imprimé. L'app « Pass » lui permet de suivre son dossier depuis son téléphone : quand il n'a pas scanné de QR, il saisit le numéro de son ticket et sa date de naissance — cette dernière sert de garde d'accès (le numéro seul, court et séquentiel, ne suffit pas à protéger un dossier). Pas de tickets exposés chez vous ? La route reste obligatoire — répondez systématiquement 404 UNKNOWN_APPOINTMENT.
Sémantique
- Corps :
ticketNumber,birthDateetofficePlaceVisibleIdrequis (+contextoptionnel) — le numéro de ticket est recyclé par lieu, la résolution est scopée au lieu d'émission ; - accepter le format de ticket que vous exposez : brut (
2) ou formaté (RA-2) ; - vérifier que la date de naissance correspond au patient du RDV — non concordant →
404 UNKNOWN_APPOINTMENT, jamais le RDV d'un autre patient ; - réponse
200: même forme que by-code (patient+appointment+otherAppointments).
Requête et réponse
curl -sS -X POST "$BASE/appointments/by-ticket" "${AUTH[@]}" \
-H "Content-Type: application/json" \
-d '{ "ticketNumber": "RA-2", "birthDate": "1980-05-12", "officePlaceVisibleId": "loc-42" }'{
"patient": { "id": "pat-77", "firstName": "Marie", "lastName": "Durand", "birthDate": "1980-05-12" },
"appointment": { "id": "apt-1001", "examLabel": "IRM lombaire", "status": "checkedIn", "ticketNumberFormatted": "RA-2" },
"otherAppointments": []
}Points d'attention
404 — sans indiquer si c'est le ticket ou la naissance qui est en cause (pas d'énumération possible).Implémentation de référence
src/app/api/apiborneIntegrationService/v1/appointments/by-ticket/route.ts → — la démo résout le ticket sur les RDV du jour du lieu, formats brut et formaté acceptés.
