etablissement_finess_by_nom
Cherche un établissement de santé par son NOM (« Institut Gustave Roussy », « Hôpital Foch », « Clinique Pasteur ») et rend ses fiches FINESS avec coordonnées exactes. À APPELER AVANT tout géocodage dès que le lieu cité est un hôpital, une clinique, un centre, un institut, un EHPAD… : l'annuaire d'adresses (BAN / geocode_adresse) ne connaît que des rues et renverrait une « rue Gustave » n'importe où en France. Passer le nom PROPRE de l'établissement (le sigle « IGR » n'est pas dans FINESS) et, si connue, la commune (nom_commune ou code_insee — Paris/Lyon/Marseille acceptés en ville entière) ou le departement.
Sortie : statut = unique (une fiche) | ambigu (plusieurs : homonymes OU plusieurs fiches d'un même campus — l'IGR en a 4 : CLCC, site EFS, service de santé au travail, site de Chevilly-Larue) | aucun. candidats[] (≥ seuil de similarité 0,8, triés : similarité, puis hôpitaux/cliniques avant pharmacies/CMP/EFS homonymes, puis libellé le plus court) avec coords, geo_precision, categorie.famille, similarite. commune_prouvee = la commune (commune-mère pour Paris/Lyon/Marseille) quand TOUS les candidats y sont — c'est le fait à utiliser pour ancrer une analyse territoriale ; null avec raison_commune: 'communes_divergentes' sinon (« Clinique Pasteur » sans commune = 16 fiches dans 9 villes → demander la commune, ne JAMAIS prendre le premier). Le point à utiliser = premier candidat avec coords non null (2,4 % des fiches n'ont pas de point). meilleure_similarite sous 0,8 sur aucun : le nom FINESS diffère (abréviations administratives : « HOP EUROPEEN G POMPIDOU ») → relancer avec la partie distinctive (« Pompidou ») + la commune ; meilleure_similarite: null = AUCUNE ligne dans le territoire demandé → vérifier la commune/le département avant de conclure que le nom n'existe pas. tronque: true (autant de lignes que limit) → la commune n'est PAS prouvée (raison_commune: 'tronque') : monter limit ou préciser le territoire. lignes_rejetees > 0 = lignes RPC illisibles écartées. Source : FINESS / ANS (flux quotidien, ingéré le 1ᵉʳ et le 15 ; établissements EN SERVICE uniquement). Chaque résultat porte geo_precision: "adresse" dès que coords est présent (point WGS84 ANS ou point BAN de l'adresse, jamais un centroïde ; un établissement sans coords n'a pas de point connu et est invisible des recherches par rayon) et siret_ans (SIRET déclaré par l'ANS, fait brut non vérifié SIRENE — pour le verdict : reconcilier_finess_sirene / verifier_site_actif). Note : champ email toujours null (non exposé par FINESS public).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| nom | Yes | Nom de l'établissement tel qu'on le dit (3 caractères min). Accents, casse et ponctuation indifférents. Sans le nom de la commune (le mettre dans `nom_commune`). | |
| limit | No | Candidats bruts lus avant seuil et tri (1-200, défaut 50). Monter si le nom est très partagé (« Saint Antoine » : 42 fiches). | |
| code_insee | No | Code INSEE de la commune (5 caractères). Paris/Lyon/Marseille : 75056 / 69123 / 13055 acceptés (ville entière) comme un arrondissement. XOR avec `nom_commune` et `departement`. | |
| departement | No | Code département (ex : '94', '2A', '971'). Seul = filtre département ; avec `nom_commune` = hint de désambiguïsation. | |
| nom_commune | No | Nom officiel de la commune où se trouve l'établissement (résolu via geo.api.gouv.fr). Ex : "Villejuif", "Paris". Combinable avec `departement` comme hint de désambiguïsation. XOR avec `code_insee`. | |
| 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. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| statut | Yes | ||
| tronque | Yes | ||
| candidats | Yes | ||
| raison_commune | Yes | ||
| commune_prouvee | Yes | { code_insee, ville } quand tous les candidats sont dans la même commune (commune-mère PLM), sinon null. | |
| lignes_rejetees | No | ||
| query_normalisee | No | ||
| communes_candidates | No | ||
| meilleure_similarite | No |