rpps_search_by_name
Find healthcare professionals by name, with optional filters for first name, department, and inclusion of students or public agents. Returns ranked results with geolocation and freshness metadata.
Instructions
Trouve un PS par identité (matching trigram tolérant aux accents/typos). Usage : "Dr Martin à Paris" → nom: "Martin", departement: "75". Nom obligatoire ; prenom et departement affinent.
Tri par match_score ∈ [0..1] décroissant (score trigram pg_trgm). Un score <0.5 = homonymie partielle à confirmer côté caller. Sans departement, des homonymes exacts ("Pierre Martin") ont TOUS le même score ~1.0 et ne sont pas départagés — toujours filtrer par dept ou prénom sur un nom commun.
truncated: true = d'autres résultats existent (restreindre, ne pas parcourir).
Chaque résultat géolocalisé porte geo_precision ∈ {"adresse", "etablissement_finess", "centroide_commune"} — lire ce champ pour évaluer la fiabilité des coords (précise BAN/FINESS au m près vs centroïde commune ~3 km, non discriminant intra-commune).
Catégorie par défaut : Civil (C, ~97 % — libéraux, salariés privés, hospitaliers contractuels). Opt-in : include_agents_publics: true ajoute Agents publics (M, ~0,3 % — PH titulaires, ARS, CNAM, Éducation nationale, PMI, militaires SSA) ; include_etudiants: true ajoute Étudiants (E, ~2,5 % — internes, externes, élèves IDE/SF). Réf : https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/.
Source : Annuaire Santé, Agence du Numérique en Santé (ANS) — Licence Ouverte v2.0
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| nom | Yes | Nom de famille (non vide). | |
| limit | No | Nombre max de résultats (1-500, défaut 100). | |
| prenom | No | Prénom du PS. | |
| departement | No | Code département INSEE (ex: '75', '2A', '2B', '971'). Métropole 2 caractères (Corse '2A'/'2B', pas '20'), DOM/COM 3 caractères. | |
| include_etudiants | No | ||
| include_freshness | No | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_success_at`, `staleness_days`) ET la dernière fois que la donnée a réellement changé (`last_data_change_at`, `data_age_days` — un run court-circuité « fichier amont identique » compte comme succès mais ne rajeunit pas la donnée ; c'est `data_age_days` qui dit l'âge réel de ce qui est servi). Opt-in pour ne pas alourdir les payloads par défaut. Cache 5min côté serveur — coût négligeable. | |
| include_agents_publics | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Nombre d'entrées retournées dans `results` (post-troncature). | |
| total | No | Effectif réel avant troncature. Présent sur les tools de nomenclature paginés (lister_*) : `count` = échantillon, `total` = total réel, re-appeler avec un `limit` supérieur si `truncated`. | |
| results | Yes | Entrées métier (shape spécifique au tool, cf. description du tool). | |
| freshness | No | Fraîcheur des sources (présent si `include_freshness: true`). | |
| perimetre | No | Lentille de la source : ce que le comptage inclut/exclut. Lire `completeness_note` et la restituer au lecteur final. | |
| truncated | No | true si le total réel dépasse `limit` (re-paginer via `offset` si supporté, ou augmenter `limit` sur les lister_*). Optional sur les tools de listing exhaustif (lister_*). | |
| query_metadata | No | Metadata de la query (radius_km, departement, filtres appliqués, …). | |
| activite_hebergee | No | Compte juxtaposé des sites hébergeant l'activité correspondant à la famille filtrée, sous une autre catégorie FINESS. Distinct du `count` principal — lire `note` pour comprendre la sémantique et ne JAMAIS additionner les deux comptes sans préciser leur nature. |