cturkieh/france-data-mcp

cturkieh/france-data-mcp

от cturkieh
Перекрёстная проверка 13 французских реестров (INSEE, FINESS, RPPS, DVF) в одном MCP-сервере. Выявляет скрытые закрытия SIRET, оценивает потенциал недвижимости по DVF и PLU, анализирует здравоохран...

france-data-mcp

MCP TypeScript qui croise et réconcilie 13 référentiels publics français (INSEE SIRENE, IRIS & Melodi, FINESS DREES, RPPS / Annuaire Santé ANS, Annuaire Santé Ameli, Centres de Santé CNAM, DVF / DGFiP, Sit@del / SDES, PLU via apicarto, IGN Géoplateforme, geo.api.gouv.fr & Recherche Entreprises DINUM). Détecte les SIRET fermés invisibles côté DREES, distingue site vs groupe, croise l'offre de soins avec la démographie au quartier, évalue le potentiel immobilier d'un site (prix DVF €/m², permis de construire, zones AU du PLU), expose la fraîcheur de chaque source.

License: MIT CI MCP npm smithery badge

🇫🇷 Documentation principale en français. English version →


Installation

Option 1 — URL distante (claude.ai, Claude Code, Cursor)

https://france-data-mcp.vercel.app/mcp

Client Config
claude.ai Settings → Connectors → Add custom connector → URL ci-dessus
Claude Code ~/.claude.jsonmcpServers{ "type": "http", "url": "..." }
Cursor ~/.cursor/mcp.json → même configuration
Инструменты были проиндексированы:
autocomplete_communeтолько чтениеидемпотентныйвнешний мир

Поиск французских коммун по названию, почтовому индексу или коду INSEE. Идеально для автодополнения. Источник: geo.api.gouv.fr (DINUM/Etalab). Требуется хотя бы один из параметров: nom, codePostal, code. Допустимые псевдонимы: q/query/search → nom, codepostal/postal_code → codePostal, code_insee/insee → code.

Параметры
  • boostPopulationboolean

    Сортировать по убыванию населения. Рекомендуется для неоднозначных названий (например: «Charleville»).

  • codestring

    Точный код INSEE (5 символов). Пример: "59009".

  • codePostalstring

    Точный почтовый индекс (5 цифр). Например: '59650'.

  • limitnumber

    Максимальное количество результатов (1-30, по умолчанию 10).

  • nomstring

    Поиск по названию (автодополнение). Пример: "Villeneuve d'Ascq", "Lyon".

centres_sante_by_finessтолько чтениеидемпотентныйвнешний мир

Возвращает детали Центра здоровья (CDS) по номеру FINESS. Отличие от etablissement_by_finess: показывает carte_vitale, APCV и специальности, практикуемые на месте (Приложение A CNAM). Возвращает LookupResult с дискриминатором found. found: true — полный payload CDS (название организации, accepte_carte_vitale/apcv, specialites.codes/libelles по стандарту, тип учреждения 124/125, адрес, координаты центроида коммуны, телефон). found: false — {found: false, key, lookupStatus: 'not_found', message}, когда номер FINESS указывает на структуру не-CDS (больница, дом престарелых, лаборатория) или на совсем новый CDS (задержка CNAM ~1 неделя). Источник: Annuaire santé Ameli, Assurance Maladie (еженедельная синхронизация CNAM, обязательное упоминание L.1461-2 CSP). Для структур не-CDS используйте etablissement_by_finess. Допустимые псевдонимы: numFiness/finess/etab_finess → num_finess.

Параметры
  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • num_finessstringобязательный

    Номер FINESS: ровно 9 цифр. Например: '590048997'.

centres_sante_in_radiusтолько чтениеидемпотентныйвнешний мир

Ищет Центры здоровья (CDS) в географическом радиусе (PostGIS ST_DWithin). Источник: справочник здравоохранения Ameli, Assurance Maladie (обязательное упоминание L.1461-2 CSP — еженедельная синхронизация CNAM). Отличие от etablissements_finess_in_radius с фильтром famille=124: возвращает carte_vitale, APCV, специальности, осуществляемые на месте (Приложение A номенклатуры CNAM, ~70 кодов). CDS = амбулаторные некоммерческие структуры, регулируемые L.6323-1 CSP (ассоциации, взаимные общества, муниципалитеты, больницы). Объём — около 3 тыс. по Франции. Фильтры: - specialite_codes : массив из Приложения A (например, ['01'] общая медицина, ['53'] стоматология). Match any-of — возвращает CDS, которые осуществляют ХОТЯ БЫ ОДНУ из запрошенных специальностей. - accepte_carte_vitale : true / false / опущено. Практически все CDS принимают CV → фильтр в основном полезен при false для проверок. - type_etab_codes : ['124'] стандартный CDS, ['125'] стоматологический CDS (устаревший CNAM, постепенно исчезает). Координаты = центроид коммуны (~3 км в среднем) — для точного адреса переключайтесь через etab_finess, возвращаемый с etablissement_by_finess. Часы работы / тарифы / сектор 1/2 ОТСУТСТВУЮТ (убраны из нового справочника CNAM после 2025 года). Допустимые псевдонимы: radius/radius_meters → radius_km, latitude/longitude → lat/lon.

Параметры
  • accepte_carte_vitaleboolean

    Фильтр по приему карты Vitale. true - только CDS, которые принимают CV, false - только те, которые не принимают. Опущено - без фильтра.

  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • latnumberобязательный

    Широта центра (WGS84). Пример: 48.872 (Париж).

  • limitnumber

    Максимальное количество результатов (1-30, по умолчанию 10).

  • lonnumberобязательный

    Долгота центра (WGS84). Пример: 2.317 (Paris).

  • radius_kmnumber

    Радиус в км (0.1–10, по умолчанию 3).

  • specialite_codesstring[]

    Коды специальности CNAM Annexe A (например, ['01'] общая медицина, ['53'] стоматолог-хирург). Совпадение по принципу any-of. Пусто = фильтр по специальности не задан.

  • type_etab_codesstring[]

    Коды типа учреждения, Приложение B: ['124'] CDS standard (неявно по умолчанию), ['125'] CDS dentaire устаревший. Пусто = все типы.

compare_adresse_cnam_vs_finessтолько чтениеидемпотентныйвнешний мир

Сравнивает адрес центра здоровья со стороны CNAM (Справочник здоровья Ameli) и FINESS DREES для одного номера finess. Сырой примитив БЕЗ бизнес-интерпретации — возвращает оба адреса, score_dice (0..1, информативный; null, если нечего сравнивать, потому что finess_absent) и statut. Вызывающий код решает, что делать с расхождением. Польза: зафиксировать переезд, который распространился в одном источнике, но пока нет в другом (например, CNAM '5 RUE DE L'ARQUEBUSE AUTUN' vs FINESS '15 BD BERNARD GIBERSTEIN AUTUN' для одного FINESS). Аналог compare_raison_sociale_finess_vs_rpps для центров здоровья. Статус (присутствует только при found: true): - match: адреса строго совпадают после нормализации - match_after_abbreviation_normalization: совпадают после раскрытия сокращений типов улиц во французском (R/RUE, BD/BOULEVARD, AV/AVENUE…) — ТОТ ЖЕ адрес, просто разная запись сокращений в DREES и CNAM, НЕ переезд - divergent_after_normalization: адреса действительно разные (переезд не синхронизирован между источниками) - finess_absent: центр здоровья есть в CNAM, но номера finess нет в FINESS DREES (задержка двухнедельной синхронизации) Формат: объект LookupResult, различаемый по полю found. Если номер finess НЕ является центром здоровья CNAM, инструмент возвращает {found: false, lookupStatus: 'not_found', message} (используйте etablissement_by_finess для учреждения, не являющегося CDS).

Параметры
  • num_finessstringобязательный

    Точный номер FINESS (9 цифр).

compare_raison_sociale_finess_vs_rppsтолько чтениеидемпотентныйвнешний мир

Сравнивает наименование (raison sociale) из FINESS DREES с данными RPPS / Annuaire Santé ANS для одного и того же num_finess. Примитивная функция БЕЗ бизнес-интерпретации — возвращает только два значения + статус сравнения. Вызывающий код сам решает, что делать с расхождением. Зачем это нужно: RPPS часто быстрее отражает ребрендинги после слияний и поглощений, чем FINESS DREES (например, купленная лаборатория остаётся 'DIAGNOVIE' в DREES, хотя в ANS она уже 'BIOGROUP NORD'). Этот инструмент показывает фактическое расхождение; он НЕ СООБЩАЕТ, кто кого купил (это основано на знании торговых марок, которое не является публичным). Возвращаемый статус (поле statut присутствует только при found: true): - exact_match: FINESS и хотя бы один RPPS строго совпадают после нормализации. - divergent_after_normalization: ни один RPPS не совпадает с FINESS — реальное расхождение. - rpps_absent: ни один RPPS не заявлял этот FINESS (невозможно установить соответствие). Формат: объект LookupResult, различаемый по полю found. Когда num_finess отсутствует в FINESS DREES, инструмент возвращает {found: false, lookupStatus: 'not_found', message, ...} — поле statut в этом случае НЕ ПЕРЕДАЁТСЯ.

Параметры
  • num_finessstringобязательный

    Точный номер FINESS (9 цифр).

cout_foncierтолько чтениеидемпотентныйвнешний мир

Стоимость земли в зоне (точка + радиус): медианная цена за м² ЖИЛОЙ застройки — только дома + квартиры, НЕ коммерческие/профессиональные помещения (+ квартили p25/p75), объём продаж, охватываемый период. Источник DGFiP DVF (реальные продажи с геолокацией). Для профессионального помещения (лаборатория, кабинет) эта жилая цена — ПРИБЛИЗИТЕЛЬНЫЙ ОРИЕНТИР, а не цена коммерческого помещения. ИНФОРМАЦИЯ для бизнес-кейса размещения — НЕ ВНОСИТЬ в заметку о привлекательности: стоимость установки отличается от рыночного потенциала.

Параметры
  • latnumberобязательный

    Широта центра (WGS84).

  • lonnumberобязательный

    Долгота центра (WGS84).

  • rayon_kmnumber

    Радиус в км (0.1–10, по умолчанию 3).

data_freshnessтолько чтениевнешний мир

Возвращает свежесть загруженных дампов данных на стороне сервера: FINESS DREES (раз в два месяца), Annuaire Santé Ameli (еженедельно), RPPS / Annuaire Santé ANS (ежемесячно), Centres de Santé CNAM (еженедельно). Для каждого источника: last_success_at (ISO timestamp), last_success_row_count, last_attempt_at, last_attempt_status, staleness_days (дней с последней успешной загрузки), cadence_hint (ожидаемая периодичность со стороны редактора). Типичное использование: перед территориальным аудитом или временным анализом вызывающий этот инструмент проверяет, актуальны ли данные. staleness_days > 90 для FINESS — тревога (последняя синхронизация DREES пропущена), > 14 для Ameli — тревога (сломан еженедельный job), > 45 для RPPS — тревога (сломан ежемесячный job), > 14 для CDS — тревога (сломан еженедельный job). Источники LIVE (DINUM Recherche Entreprises, INSEE SIRENE V3.11, ANS FHIR live) здесь НЕ перечислены, так как у них нет цикла загрузки — их свежесть определяется вышестоящими API (live, ~секунды). Кеш сервера: 5 минут. Стоимость: в худшем случае 1 SELECT по ingest_log (иначе попадание в кеш).

Параметры

Без параметров.

densite_santeтолько чтениеидемпотентныйвнешний мир

Плотность на 100 000 жителей — cible: professionnels (RPPS) ИЛИ cible: etablissements (FINESS). Уровень департамент (code_dept) ИЛИ коммуна (code_insee / nom_commune). Обязателен ровно один scope из трёх. Скрещиваем счёт (RPPS или FINESS) и INSEE Melodi (муниципальное население PMUN, перепись 2023). cible='professionnels' (RPPS) — методология DREES по умолчанию: врачи (profession_code='10') в активной практике (mode_exercice L, S, M), без студентов. Фильтры: profession_code (60 — медсестра, 21 — фармацевт, 50 — акушерка…), savoir_faire_code (например 'SM04' — Кардиология, 'SM02' — Анестезиология-реанимация; смотри lister_nomenclature справочника rpps_savoir_faire), mode_exercice_codes (['L'] — только частнопрактикующие). cible='etablissements' (FINESS) — famille ОБЯЗАТЕЛЬНО: лаборатория, аптека, дом престарелых, MCO, SSR, психиатрия, диализ, визуализация, HAD, MSP/CPTS, помощь детям-инвалидам, помощь взрослым-инвалидам, аддиктология, PMI, профилактика_здоровья и т.д. Без семьи коэффициент смешал бы лаборатории/больницы/дома престарелых — бессмыслица. Условная семантика `code_dept`: один = scope расчёта (весь департамент); в паре с nom_commune = подсказка для разрешения ИСКЛЮЧИТЕЛЬНО (фильтрует омонимы), расчёт всё равно идёт по разрешённой коммуне. Париж/Марсель/Лион: плотность по code_insee НЕДОСТУПНА (RPPS/FINESS привязаны к округам, INSEE даёт население только для целой коммуны) → RangeError; используй code_dept (75, 13, 69). compare_national: true добавляет плотность по всей Франции (включая ДОМ) + разница в % (положительная — переизбыток, отрицательная — дефицит). Псевдонимы: dept/departement → code_dept, codeInsee/insee → code_insee. НЕ возвращает никакой профессиональной интерпретации (нет порога «медицинская пустыня» в автоматическом режиме). Категория по умолчанию: Гражданские (C, ~97 % — частнопрактикующие, работники частного сектора, контрактные больничные). Opt-in: include_agents_publics: true добавляет Государственных служащих (M, ~0.3 % — штатные PH, ARS, CNAM, Национальное образование, PMI, военные SSA);…

Параметры
  • cibleenumобязательный

    professionnels = плотность медицинских работников (RPPS, фильтры по коду профессии/коду компетенции/коду режима практики) ; etablissements = плотность учреждений (FINESS, обязательное поле famille).

  • code_deptstring

    Код INSEE департамента, 2-3 символа. Пример: «75» — Париж, «59» — Нор, «2A» — Южная Корсика, «971» — Гваделупа. Условная семантика: отдельно = охват всего департамента; в сочетании с nom_commune = подсказка для разрешения неоднозначности тёзок. Взаимоисключающе с code_insee.

  • code_inseestring

    Код INSEE коммуны — 5 символов. Пример: «59009» Вильнёв-д’Аск, «33063» Бордо, «2A004» Аяччо. Париж/Лион/Марсель НЕ поддерживаются на уровне коммуны (плотность недоступна — см. описание): используйте code_dept. XOR с code_dept и nom_commune.

  • compare_nationalboolean

    Добавьте расчёт по всей Франции + относительное отклонение в % (рекомендуется для определения «недоукомплектованности»/«переукомплектованности»).

  • famillestring

    cible='etablissements' ТОЛЬКО (обязательно): семейство FINESS для учёта (labo, pharmacie, ehpad, mco, ssr, psychiatrie, dialyse, imagerie, had, msp_cpts, handicap_enfants, handicap_adultes, addictologie, pmi, prevention_sante и т.д.).

  • include_agents_publicsboolean
  • include_etudiantsboolean
  • mode_exercice_codesstring[]

    Цель='профессионалы' ТОЛЬКО: коды режима практики ANS для включения. По умолчанию ['L','S','M'] (частная + наемная + смешанная = регулярная деятельность DREES). Передайте ['L'] для только частных практик. Коды режима практики ANS: L - частная, S - наемная, M - смешанная, R - замещающая, B - волонтерская, A - другая.

  • nom_communestring

    Официальное название коммуны (альтернатива code_insee). Пример: «Lille», «Villeneuve-d'Ascq». Сервер выполняет сопоставление внутри через geo.api.gouv.fr. Можно комбинировать с code_dept как подсказкой для устранения неоднозначности при совпадении названий (например, «Saint-Martin» + dept «65»). Взаимоисключающе с code_insee.

  • profession_codestring

    cible='professionnels' ТОЛЬКО: код профессии ANS (TRE_R94). По умолчанию '10' (Врач). Пример: '60' Медсестра, '21' Фармацевт, '50' Акушерка, '40' Хирург-стоматолог, '70' Физиотерапевт.

  • savoir_faire_codestring

    ТОЛЬКО для профессионалов: код специальности (savoir_faire). Особенно актуален для profession_code=10 (врач). Примеры: 'SM04' — Кардиология, 'SM15' — Дерматология и венерология, 'SM02' — Анестезиология-реаниматология, 'SM26' — Общая медицина. Полный список смотрите в lister_nomenclature(referentiel:'rpps_savoir_faire').

dynamique_immobiliereтолько чтениеидемпотентныйвнешний мир

Динамика недвижимости и потенциал роста зоны (точка + радиус). Объединяет 3 официальных источника: разрешения на строительство (Sit@del/SDES, ячейка КОММУНА — недавно разрешённые/начатые жилые помещения → ожидаемые жители), зоны AU из PLU (Géoportail de l'Urbanisme/IGN — будущие зарезервированные кварталы, геолокализованные), продажи участков под застройку (DGFiP DVF, геолокализованные). Выход в 2 регистра: 'note' = ОБЪЁМ (разрешённые/начатые жилые помещения, количество и непосредственность зон AU) — для скоринга потенциала; 'info' = затрагиваемые кварталы (с названиями), ожидаемые жители, ориентировочные цены (контекст, вне скоринга). В плотном городе разрешения-коммуны неточны → опираться на зоны AU + участки (геолокализованные). Прибрежная/изолированная точка без коммуны при обратном геокодировании → couverture.permis='indisponible:commune_introuvable' и meta.code_commune=null, НО зоны AU + участки остаются (расчёт по радиусу) — инструмент никогда из-за этого не падает. 'geojson' = полигоны зон AU для карты. Источники: SDES, IGN/GPU, DGFiP.

Параметры
  • latnumberобязательный

    Широта центра (WGS84).

  • lonnumberобязательный

    Долгота центра (WGS84).

  • rayon_kmnumber

    Радиус в км (0.1–10, по умолчанию 3).

enrichir_concurrentsтолько чтениеидемпотентныйвнешний мир

Глубокое исследование топ-конкурентов (V0.23). Для каждого FINESS: активный статус + размер команды + недавняя история (inspect_site), сигнал M&A — текущий ребрендинг — (сравнить юридическое наименование FINESS vs RPPS), головная группа (entreprise_by_siren: Biogroup/Cerballiance/… + est_grand_groupe). Жёсткий лимит max=3 (inspect_site ~7 K токенов/вызов — НИКОГДА 10+). Флаг couverture ДЛЯ КАЖДОГО конкурента ("ok" | "partiel:<причина>"): сбой у одного конкурента не отменяет остальных. Обычно вызывается на concurrents.top[0..2].finess, возвращённых panorama_implantation_complet. Источники: FINESS/ANS, RPPS/ANS, SIRENE/DINUM.

Параметры
  • finessstring[]обязательный

    Номера FINESS для проверки (как правило, топ-3 конкурентов по расстоянию).

  • maxnumber

    Жесткий предел количества исследуемых конкурентов. По умолчанию: 3.

entreprise_by_sirenтолько чтениеидемпотентныйвнешний мир

Получает детали французской компании по SIREN (9 цифр): наименование, NAF, финансовая история, руководители, филиалы. Источник: DINUM Recherche Entreprises. Формат ответа: объект LookupResult, различаемый по полю found. - found: true — компания возвращается плоским списком (поля siren, nomComplet, etablissements, enrichmentStatus, …) - found: false — { found: false, key, lookupStatus: 'not_found' | 'ambiguous', message }. not_found: SIREN не проиндексирован DINUM (часто частичная публикация INSEE — компания всё ещё может существовать в SIRENE). ambiguous: регрессия API, о которой нужно сообщить. ⚠️ Когда found: true, список etablissements может быть обрезан. Поле nombreEtablissements (подсчёт SIRENE) отражает реальное общее количество. Читайте `enrichmentStatus`, чтобы узнать, полный ли список: - success: etablissements содержит все адреса - partial: часть адресов отсутствует (несколько департаментов или NAF, отличный от головного) — см. enrichmentWarning - failed: обогащение не удалось (лимит запросов, сбой API) — указан только головной офис - not_attempted: компания с одним адресом или отсутствуют данные SIRENE Для полного перечисления по нескольким департаментам используйте entreprises_in_radius по географической зоне. Стоимость: 1 или 2 вызова API DINUM на один запуск (фактический лимит запросов ~1 req/s).

Параметры
  • sirenstringобязательный

    Точный SIREN, 9 цифр.

entreprises_in_radiusтолько чтениеидемпотентныйвнешний мир

Поиск французских компаний с фильтрами по коду NAF, почтовому индексу, департаменту или географическому радиусу. Охватывает все секторы (здравоохранение через коды NAF 8690B, 4773Z, 8710A, 8621Z и т.д.). Источник: DINUM Recherche Entreprises (SIRENE + RNE). Возвращает оборот, руководителей, диапазоны численности сотрудников и даты создания. Два ИСКЛЮЧИТЕЛЬНЫХ режима (разные эндпоинты DINUM): (1) по близости — lat+lon+radiusKm (опционально + naf), нативно разрешается через /near_point; (2) административный — q (свободный текст) и/или naf + codePostal/departement, через /search. Поиск по близости НЕ поддерживает q и codePostal/departement (комбинация отклоняется с явной ошибкой: выберите один режим). radiusKm ограничен 50 км. Сокращение payload (V0.13): includeDirigeants: false вырезает список руководителей RNE из каждой компании — полезно при массовом перечислении (Geo Intel), где руководители не используются, а группы типа Biogroup могут выводить их по 20+ на сущность (бесполезное раздувание). По умолчанию true для сохранения контракта V0.12 (строгая обратная совместимость).

Параметры
  • codePostalstring

    Альтернативный фильтр: точный почтовый индекс.

  • departementstring

    Альтернативный фильтр: код департамента.

  • includeDirigeantsboolean

    Включать список руководителей RNE в каждую компанию (по умолчанию true). false удаляет dirigeants: [] на стороне обраотчика: полезно при массовом перечислении, где руководители не используются (экономия токенов, такие группы, как Biogroup, могут перечислять 20+ руководителей на сущность).

  • latnumber

    Широта центра круга поиска.

  • lonnumber

    Долгота центра круга поиска.

  • nafstring

    Основной код NAF (например: '8690B' = лаборатории, '4773Z' = аптеки, '8710A' = EHPAD, '8621Z' = MG).

  • pagenumber

    Страница (нумерация с 1).

  • perPagenumber

    Результатов на странице (1-25, по умолчанию 10).

  • qstring

    Свободный текстовый поиск (наименование, руководитель...).

  • radiusKmnumber

    Радиус в км (0.1-50).

etablissement_by_finessтолько чтениеидемпотентныйвнешний мир

Получает полные сведения о медицинском учреждении по номеру FINESS (9 цифр): наименование, категорию + семейство, полный адрес (улица + индекс + город + код INSEE + департамент), координаты GPS, телефон. Возвращает объект LookupResult, дискриминируемый по полю found. found: true → поля FINESS в плоской структуре. found: false → { found: false, key, lookupStatus: 'not_found', message }. Справочник DREES отстаёт от реальности на 1–2 месяца: для новых структур (недавние CPTS, MSP на этапе согласования) сверяйтесь с данными ARS / Service Public. Источник: FINESS / DREES. Примечание: поле email всегда null (не раскрывается публичным FINESS). Примечание: raison_sociale берётся из дампа DREES, который сокращает длинные названия (~38 символов макс., например 'CERBALLIANCE HA' вместо 'CERBALLIANCE HAZEBROUCK'). Для полного юридического названия сверяйтесь через SIREN/SIRET (entreprise_by_siren / etablissement_by_siret).

Параметры
  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • num_finessstringобязательный

    Точный номер FINESS (9 цифр).

etablissement_by_siretтолько чтениеидемпотентныйвнешний мир

Получает детали организации по SIRET (14 цифр) через API SIRENE INSEE V3.11: наименование юридического лица, коммерческое обозначение, код NAF организации, даты создания/закрытия, статус (активна/закрыта), полный адрес, диапазон численности сотрудников. Источник: SIRENE INSEE V3.11 (api.insee.fr). Формат ответа: объект LookupResult, дискриминируемый по полю found. - found: true → плоский объект организации (siret, siren, actif, dateFermeture, enseigne, adresse, …) - found: false → { found: false, key, lookupStatus: 'not_found', message }. Типичные случаи: ключ INSEE_SIRENE_API_KEY не настроен на стороне сервера (явное сообщение), SIRET не существует в SIRENE, частичная публикация данных INSEE. ⚠️ Отличие от entreprise_by_siren: этот инструмент возвращает ОДНУ конкретную организацию (одно место), а entreprise_by_siren возвращает юридическое лицо + список его организаций. Чтобы определить закрытую организацию, которая всё ещё числится активной в FINESS, смотрите actif: false + dateFermeture. Нет координат: эндпоинт INSEE /siret/<siret> не возвращает GPS-координаты. Для геолокации объединяйте с geocode_adresse на стороне вызывающего кода или используйте entreprises_in_radius. Ограничение запросов INSEE: 30 запросов в минуту (повторная попытка после ожидания обрабатывается на стороне сервера).

Параметры
  • siretstringобязательный

    Точный SIRET, 14 цифр.

etablissements_finess_by_categorieтолько чтениеидемпотентныйвнешний мир

Список учреждений FINESS по категории, с опциональным фильтром по департаменту или коммуне. Без радиуса — для полного перечисления административной зоны. 24 доступные категории: mco, ssr, sld, had, psychiatrie, dialyse, ambulatoire, labo, imagerie, pharmacie, msp_cpts, ehpad, residence_autonomie, senior_accompagnement, ssiad, aide_domicile, handicap_enfants, handicap_adultes, addictologie, enfance_protection, pmi, hebergement_social, prevention_sante, groupement. V0.19.0: принимает nom_commune (строка) как альтернативу code_insee (разрешается через geo.api.gouv.fr). Строгое XOR — передавать ЛИБО departement, ЛИБО code_insee, ЛИБО nom_commune (можно комбинировать с departement, который тогда действует как подсказка для устранения неоднозначности для омонимов типа "Saint-Martin"). Без параметра зона = вся Франция (допускается). Источник: FINESS / DREES. Примечание: поле email всегда null (не раскрывается публичным FINESS). Примечание: raison_sociale берется из дампа DREES, который сокращает длинные названия (~38 символов макс., например 'CERBALLIANCE HA' вместо 'CERBALLIANCE HAZEBROUCK'). Для полного юридического названия делайте перекрестную проверку через SIREN/SIRET (entreprise_by_siren / etablissement_by_siret). Важно: фильтр familles учитывает учреждения по их основной категории FINESS. Деятельность, размещенная на площадке другой категории (например, лабораторный корпус больницы при famille=labo), не учитывается — см. поле perimetre ответа. Категория imagerie чаще всего возвращает 0 результатов (FINESS не учитывает кабинеты лучевой диагностики).

Параметры
  • categorieenumобязательный

    Запрашиваемая семья FINESS (доступно 24 значения, см. enum).

  • code_inseestring

    Код INSEE коммуны (5 символов). Необязательно. Строгий XOR с departement и nom_commune.

  • departementstring

    Код департамента INSEE (например, '75', '2A', '2B', '971'). Метрополия: 2 символа (Корсика '2A'/'2B', не '20'), DOM/TOM: 3 символа. Необязательно. Комбинируется с nom_commune как hint resolver (фильтрует омонимы), в противном случае строгий XOR с code_insee и nom_commune.

  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • limitnumber

    Максимальное количество результатов (1-30, по умолчанию 10).

  • nom_communestring

    Официальное название коммуны (альтернатива code_insee, V0.19). Пример: "Lille", "Saint-Étienne". Сервер разрешает внутренне через geo.api.gouv.fr. Если название неоднозначно (например, "Saint-Martin" → 5 городов), возвращает структированную ошибу с канддатами. Комбинируется с departement как подсказка для устранения неоднозначности. Сокращения типа "St-Martin" не распознаются: используйте полное официалное название.

etablissements_finess_in_radiusтолько чтениеидемпотентныйвнешний мир

Поиск медицинских учреждений FINESS в географическом радиусе (PostGIS ST_DWithin). Фильтруется по семействам. Доступно 24 значения: mco, ssr, sld, had, psychiatrie, dialyse, ambulatoire, labo, imagerie, pharmacie, msp_cpts, ehpad, residence_autonomie, senior_accompagnement, ssiad, aide_domicile, handicap_enfants, handicap_adultes, addictologie, enfance_protection, pmi, hebergement_social, prevention_sante, groupement. Источник: FINESS / DREES (дамп CSV, загруженный локально). Примечание: поле email всегда null (не раскрывается публичным FINESS). Примечание: raison_sociale берётся из дампа DREES, который сокращает длинные названия (~38 символов макс., например 'CERBALLIANCE HA' вместо 'CERBALLIANCE HAZEBROUCK'). Для полного юридического названия — перекрёстная проверка через SIREN/SIRET (entreprise_by_siren / etablissement_by_siret). Важно: фильтр familles считает учреждения по их основной категории FINESS. Деятельность, размещённая на площадке другой категории (например, лаборатория в больнице при famille=labo), не учитывается — смотрите поле perimetre в ответе. Семейство imagerie чаще всего возвращает 0 результатов (FINESS не перечисляет кабинеты визуализации).

Параметры
  • famillesenum[]

    Семейства FINESS для включения (доступно 24 значения, см. enum). Если не указано, все категории.

  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • latnumberобязательный

    Широта центра (WGS84).

  • limitnumber

    Максимальное количество результатов (1-30, по умолчанию 10).

  • lonnumberобязательный

    Долгота центра (WGS84).

  • radius_kmnumber

    Радиус в км (0.1–10, по умолчанию 3).

finess_sirene_coverage_in_radiusтолько чтениеидемпотентныйвнешний мир

Сравнивает покрытие реестра FINESS DREES (физические площадки, аккредитованные как LBM/аптеки/и т.д.) с реестром SIRENE DINUM (физические SIRET, активные по целевому NAF) в географическом радиусе. Метрика: отношение сайтов FINESS к SIRET SIRENE. Помогает выявить завышение данных FINESS (сайты ещё числятся, но SIRET закрыты) или занижение данных DREES (сайты SIRENE не аккредитованы FINESS). Включает явную методологию + предостережения. V0.13.2: если familles не передан, область FINESS автоматически выводится из целевого NAF (гарантирует согласованное отношение — иначе finess_sites смешало бы все семейства, расположенные в радиусе). Сопоставление FINESS↔SIRET управляется через активность NAF↔семейство (пример: Hôpital Franco-Britannique: IFSI и лаборатория на 4 rue Kléber больше не путаются). Источник: FINESS DREES + DINUM Recherche Entreprises + SIRENE INSEE.

Параметры
  • famillesenum[]

    Семейства FINESS для включения на стороне DREES. V0.13.2: если параметр опущен, значение автоматически выводится из целевого кода NAF через таблицу naf-finess-mapping (например: naf=8690B → familles=[labo]; naf=8610Z → несколько больничных категорий). Передавайте параметр явно, если хотите дополнительно ограничить область действия. Возможные значения: mco, ssr, sld, had, psychiatrie, dialyse, ambulatoire, labo, imagerie, pharmacie, msp_cpts, ehpad, residence_autonomie, senior_accompagnement, ssiad, aide_domicile, handicap_enfants, handicap_adultes, addictologie, enfance_protection, pmi, hebbergement_social, prevention_sante, groupement.

  • latnumberобязательный

    Широта WGS84 центра зоны.

  • lonnumberобязательный

    Долгота WGS84 центра зоны.

  • max_unites_legalesnumber

    Максимальное количество юридических лиц DINUM для разворачивания (1-25, по умолчанию 10). Свыше этого: truncated_unites_legales=true.

  • nafstringобязательный

    Код NAF SIRENE для сравнения (например, '8690B' (лаборатории медицинских анализов), '4773Z' (аптеки), '8621Z' (общая медицина)).

  • radius_kmnumber

    Радиус зоны в км (0.1-50, по умолчанию 5).

geocode_adresseтолько чтениеидемпотентныйвнешний мир

Геокодирует французский адрес в GPS-координаты. Источник: IGN Géoplateforme (data.geopf.fr). Точность до номера дома. Поле score (0-1) оценивает надёжность совпадения: >= 0.8 — надёжно, < 0.5 — сомнительное совпадение (часто это fallback на улицу или населённый пункт, не связанный с запрошенным адресом). Булево поле confidence_low принимает значение true в таком случае: НЕ ИСПОЛЬЗУЙТЕ point для принятия решения, когда confidence_low: true. Поле type также указывает на детализацию (housenumber > street > locality > municipality).

Параметры
  • adressestringобязательный

    Полный адрес для геокодирования.

  • codeCommunestring

    Необязательно: ограничить кодом INSEE коммуны.

  • codePostalstring

    Необязательно: ограничить результат почтовым индексом, чтобы устранить неоднозначность.

get_commune_by_codeтолько чтениеидемпотентныйвнешний мир

Получает город по его коду INSEE. Возвращает объект LookupResult, различаемый по полю found. found: true → поля города развернуты (nom, codesPostaux, centre…). found: false → { found: false, key, lookupStatus: 'not_found', message }, направляющий к autocomplete_commune для устранения неоднозначности. Принимаемые псевдонимы: code_insee/codeInsee/insee → code.

Параметры
  • codestringобязательный

    Код INSEE из 5 символов. Пример: "75056" Париж, "59009" Вильнёв-д’Аск, "2A004" Аяччо.

historique_etablissementтолько чтениеидемпотентныйвнешний мир

Восстанавливает полную временную линию учреждения здравоохранения (открытия, закрытия, смены кода NAF/вывески) через связку FINESS DREES ↔ resolver SIRET (RPPS + DINUM) ↔ SIRENE INSEE V3.11. Читает полные periodesEtablissement для каждого кандидата SIRET. V0.7.0: кандидаты SIRET расширены через resolver — теперь включает закрытые SIRET родительского SIREN, совпадающие с адресом FINESS (не видны со стороны RPPS). Позволяет отследить точную дату закрытия участка, даже если FINESS всё ещё числит его активным. Типовое применение: - проследить историю участка после слияния-поглощения; - определить точную дату закрытия SIRET, который FINESS всё ещё показывает активным; - разобраться в каскаде ребрендингов через смену enseigne1Etablissement по периодам. Формат: объект LookupResult. Если found: true, возвращает finess (сводка от DREES) + siret_timelines (по одной записи на каждый кандидат SIRET с хронологическими periodes). Стоимость: 1 RPC FINESS + 1 SELECT rpps + N вызовов DINUM + N вызовов INSEE параллельно (обычно N ≤ 5). Кеш не используется.

Параметры
  • num_finessstringобязательный

    Точный номер FINESS (9 цифр).

inspect_siteтолько чтениеидемпотентныйвнешний мир

Обзор 360 медицинского учреждения за 1 вызов (V0.10). Естественное продолжение panorama_sante_territoire на стороне сайта: параллельно агрегирует (a) идентификацию FINESS DREES (наименование, адрес, телефон), (b) административный статус SIRENE через resolver SIRET (вердикты сайта и группы, best_match, исследованные SIREN, dinum_errors, объяснение, удобное для LLM), (c) прикреплённых специалистов через num_finess (ограниченная выборка + флаг truncated, если на сайте больше PS: НЕ общее количество), (d) историю INSEE (временная шкала административных периодов по кандидату SIRET). Заменяет 3 отдельных вызова MCP (verifier_site_actif + rpps_dans_etablissement + historique_etablissement) одним. Полезно для: поиска (квалификация сайта перед outreach), территориального аудита (быстрая перекрёстная проверка подозрительного FINESS), пакетного обогащения CRM. Формат возврата: объект LookupResult. Когда found: true, payload с 4 разделами (finess, statut_site, professionnels, historique). Раздел historique может быть available: false, когда FINESS существует, но не идентифицирован ни один кандидат SIRET (RPPS пуст + DINUM 0 совпадений), в этом случае message повторяет сообщение из historique_etablissement. Когда num_finess отсутствует в FINESS DREES, возвращает {found: false, lookupStatus: 'not_found', message}. Стоимость: 3 параллельных подвызова. Кэш PostgreSQL поглощает дублирование FINESS-RPC; переход RPPS→DINUM выполняется дважды (verifier и historique разделяют каскад), дополнительная задержка p95 ≤ 600 мс: приемлемо для агрегатора. Для целевых потребностей (только вердикт, только история) предпочитайте отдельные инструменты. Тяжёлый payload (~7K токенов): передавайте historique_detail: false для облегчённого возврата (резюме вместо полных временных шкал SIRENE) при пакетном использовании. Принимаемые псевдонимы: numFiness/finess/id → num_finess.

Параметры
  • historique_detailboolean

    Включает подробные таймлайны SIRENE в historique.siret_timelines (по умолчанию true). false = облегчённый payload (примерно на 7K токенов меньше): historique содержит только resume (счётчики) и указатель на historique_etablissement.

  • num_finessstringобязательный

    Номер FINESS: ровно 9 цифр. Например: '590048997'.

  • rpps_limitinteger

    Максимальное количество PS в professionnels.sample. professionnels.count = размер выборки (≤ этой границы), а не общее количество на сайте; truncated: true указывает, что PS больше. Ограничение [1, 50]. По умолчанию 10.

lister_nomenclatureтолько чтениеидемпотентныйвнешний мир

Описание номенклатур кодов сервера (единый инструмент с параметром referentiel) — вызывать перед фильтрацией другого инструмента, а не гадать коды. ⚠️ 3 номенклатуры РАЗЛИЧНЫ: одно и то же число обозначает разные вещи (например, '10' = врач со стороны ANS, нейрохирург со стороны Ameli). НИКОГДА не передавайте код из одного справочника в параметр другого — фильтр вернёт пустой результат без ошибки. referentiel: - ameli_specialites — коды specialite_code Ameli (частнопрактикующие врачи, работающие по договору с Assurance Maladie / CNAM): нативное название, привязанный type_ps_code, количество, libelle_clarifie (устраняет неоднозначность общих названий, например «Врач общей практики» = 01/22/23; «Психиатр» = 33/75), is_libelle_partage. Для фильтрации professionnels_in_radius / professionnels_par_specialite_dept (параметр specialite_code(s)). - ameli_types_ps — коды type_ps Ameli: libelle_source, libelle_clarifie (разрешает неоднозначность кода "2" — всеобъемлющего), количество и specialites_presentes (сгруппированные специальности). Лёгкий payload через include_specialites: false (→ nb_specialites). - rpps_savoir_faire — медицинские специальности savoir_faire_code RPPS / Annuaire Santé ANS (например, 'SM04' Кардиология). Для фильтрации densite_sante (целевые профессионалы) / professionnels_rpps_*. Фильтр по profession_code (по умолчанию '10' Врач; пустая строка или 'null' = все savoir_faire). Пагинация: limit (по умолчанию 50), в ответе отдаются total и truncated. ОБЛАСТЬ ПРИМЕНЕНИЯ: только частнопрактикующие врачи, работающие по договору. ВНЕ ОБЛАСТИ: исключительно больничные/наёмные врачи, наёмные врачи-биологи в LBM, больничные патологоанатомы, врачи по труду, судебная медицина. Для численности по всем статусам — см. Annuaire Santé ANS (RPPS, esante.gouv.fr) — этот сервер их не покрывает. Источник: Annuaire santé Ameli (Assurance Maladie), обновление еженедельное. Повторное использование согласно ст. L.1461-2 CSP — указывать источник и дату синхронизации.

Параметры
  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • include_specialitesboolean

    Реестр ameli_types_ps ТОЛЬКО: включает детализированный подмассив specialites_presentes (по умолчанию true). false → заменяется на nb_specialites (счетчик), экономия ~6K токенов.

  • limitnumber

    Максимальное число результатов (по умолчанию 50, максимум 1000). Отсортированы по убыванию частоты. Ответ возвращает total (фактическое количество) и truncated - повторно вызовите с большим limit, чтобы получить полный список.

  • profession_codestring

    Справочник rpps_savoir_faire ТОЛЬКО: код профессии ANS (TRE_R94). По умолчанию '10' (Врач). Пустая строка или 'null' = все savoir_faire, все профессии.

  • referentielenumобязательный

    Номенклатура для перечисления. ameli_specialites / ameli_types_ps = Ameli (частнопрактикующие врачи, работающие по конвенции) ; rpps_savoir_faire = медицинские специальности ANS/RPPS (ОТДЕЛЬНАЯ номенклатура).

panorama_implantation_completтолько чтениеидемпотентныйвнешний мир

Исследование размещения лаборатории в 1 вызов (V0.23). Геокодирует целевой адрес, затем агрегирует ПАРАЛЛЕЛЬНО 7 секций: territoire (плотности PS муниципальные vs национальные + учреждения), demande (демографический профиль БАССЕЙНА — радиус — через profil_iris: возраст, CSP, взвешенный доход), concurrents (лаборатории FINESS), pourvoyeurs (MCO/EHPAD/SSR/диализ — экосистемные драйверы), prescripteurs (врачи RPPS + IDEL Ameli), cds (центры здоровья), referentiels (качество покрытия FINESS↔SIRENE). Заменяет ~15 индивидуальных вызовов MCP на 1. Возвращает РЕЗЮМЕ (count / top-N / среднее), НИКОГДА не сырые списки. НИКАКОЙ бизнес-интерпретации (никакого 'медицинской пустыни' или вердикта GO/NO-GO) — вызывающий LLM применяет свою сетку. ДЕГРАДАЦИЯ (читай couverture — 1 флаг на секцию): "ok" | "partiel:<причина>" | "indisponible:<причина>". Если источник упал, ЕГО секция помечается флагом, а ОСТАЛЬНОЕ возвращается — затем заполняет пробел через соответствующий унитарный инструмент (etablissements_finess_in_radius, professionnels_rpps_in_radius, densite_sante, centres_sante_in_radius…). Ошибка ПРИВЯЗКИ (геокодирование KO / сомнительный адрес / невыводимый код INSEE) = полное отклонение (RangeError). Внутренние ловушки: Paris/Lyon/Marseille переключены на департамент (meta.plm_mode=true); prescripteurs выставляет precis_count (PS геолоцированы по адресу, а не по центроиду коммуны); cds без индивидуального расстояния (центроид коммуны). WORKFLOW: вызывает ЭТОТ инструмент для ЗАПУСКА исследования, затем углубляется в секции partiel/indisponible через унитарные инструменты, затем enrichir_concurrents на топ-3 из concurrents.top. Источники: IGN (геокодирование), FINESS DREES, RPPS/ANS, Ameli/CNAM, INSEE/FILOSOFI, SIRENE/DINUM.

Параметры
  • adressestring

    Целевой адрес, геокодируется внутри через IGN. Пример: "12 rue Nationale, Lille". XOR с point.

  • code_inseestring

    Код INSEE коммуны (с point, когда геокодирование уже выполнено).

  • pointobject

    Координаты { lat, lon }, если уже известны (геокодирование пропускается). Укажите также code_insee.

  • rayon_kmnumber

    Радиус бассейна исследования (км). По умолчанию 5.

panorama_sante_territoireтолько чтениеидемпотентныйвнешний мир

Панорама здоровья французской коммуны за 1 вызов (V0.9). Агрегирует параллельно: население (INSEE Melodi), плотность врачей + медсестёр + фармацевтов с национальным сравнением (методология DREES), количество учреждений FINESS по категориям (по умолчанию ["labo","pharmacie","ehpad","mco","msp_cpts"]), и блок DEMANDE (V0.22.0 — демографический профиль коммуны, агрегированный по её IRIS: возраст, CSP, семьи, взвешенный доход, для СРАВНЕНИЯ с ПРЕДЛОЖЕНИЕМ выше для помощи в выборе места; demand: null, если коммуна вне покрытия IRIS (DOM не обработаны) — для детализации по району или радиусу используйте profil_iris). Заменяет 7-10 индивидуальных вызовов MCP одним. Не возвращает НИКАКОЙ бизнес-интерпретации (без автоматической квалификации 'désert médical') — вызывающий LLM применяет свою сетку. V0.19.0: принимает nom_commune (строка) как альтернативу code_insee. departement (V0.19) = подсказка для resolver ТОЛЬКО (панорама не считает по департаменту; один departement вызывает явную ошибку). Смешанная гранулярность: плотность специалистов и население рассчитываются на уровне коммуны; счёт FINESS агрегируется на уровне департамента, полученного из кода INSEE (ограничение V0.9 — пока нет RPC count_finess_by_commune). Поле niveauEtablissements результата показывает "departement" (успех), "indisponible" (департамент не выведен, например, усечённый код DOM) — используйте эту информацию, чтобы не путать показатели коммуны и департамента. Париж/Марсель/Лион НЕ поддерживаются: панорама по коммуне зависит от плотности по коммуне, недоступной для этих городов (INSEE публикует население только для целой коммуны, а практикующих врачей RPPS по округам). Код PLM (головная коммуна 75056 или округ) вызывает RangeError. Для этих городов запрашивайте отдельные инструменты на уровне code_dept (75/69/13). Принимаемые псевдонимы: codeInsee/insee/code → code_insee. Источники: RPPS / Annuaire Santé ANS (ежемесячно), FINESS DREES (раз в две недели), INSEE…

Параметры
  • code_inseestring

    Код INSEE коммуны, 5 символов. Например: "59009" Villeneuve-d'Ascq, "33063" Bordeaux, "2A004" Ajaccio. Париж/Лион/Марсель НЕ поддерживаются (см. описание). XOR с nom_commune.

  • departementstring

    Код департамента INSEE (V0.19, только для hint resolver). Используйте В КОМБИНАЦИИ с nom_commune для устранения неоднозначности омонимов. Сам по себе вызывает ошибку (panorama = расчет только для коммуны, используйте code_insee или nom_commune).

  • finess_famillesstring[]

    Семейства FINESS для включения в подсчет учреждений. По умолчанию ["labo","pharmacie","ehpad","mco","msp_cpts"]. Передайте [] для пропуска подсчета FINESS (возвращает только население + плотности PS).

  • nom_communestring

    Официальное название коммуны (альтернатива code_insee, V0.19). Напр.: «Lille», «Saint-Étienne». Комбинируется с departement как подсказка для устранения неоднозначности в случае омонимов (напр. «Saint-Martin» + деп. «65»). Сокращения типа «St-Martin» не распознаются.

populationтолько чтениеидемпотентныйвнешний мир

Население КОММУНЫ (код INSEE 5 символов), ДЕПАРТАМЕНТА (2-3 символа) ИЛИ внутрикоммунального IRIS (9 символов): детализация определяется автоматически по длине code. Возвращает LookupResult, различаемый по полю found. - IRIS (9 симв., например 751103701 = коммуна 75110 + IRIS 3701): общая численность населения квартала по переписи 2022 года (поле population, брутто-данные), + libelle, code_commune, type_iris (H/A/D/Z). Источник: INSEE RP 2022 (встроенная таблица, гео 01/01/2024). Самый мелкий уровень (квартал) для городов; в малонаселённой зоне коммуна = 1 IRIS (type_iris Z, код COM+0000). Для подробного демографического профиля квартала или района (возраст, CSP, семьи, доход) используйте profil_iris. - Коммуна (5 симв., например 75056 Париж, 13055 Марсель, 2A004 Аяччо): PMUN/PCAP/PTOT. Источник INSEE Melodi (DS_POPULATIONS_REFERENCE). PMUN = юридическая база DREES. Коммуна объединена → found: false + указание autocomplete_commune. INSEE НЕ публикует округа PLM (75101-75120, 13201-13216, 69381-69389) → используйте основную коммуну или департамент. - Департамент (2-3 симв., например 75, 59, 2A, 971): Майотта (976) ОТСУТСТВУЕТ в Melodi → lookupNotFound. Принимаемые псевдонимы: code_insee/codeInsee/insee, code_dept/dept/departement/code_departement, code_iris/iris → code.

Параметры
  • codestringобязательный

    Код INSEE — 5 символов = коммуна (например «75056»), 2-3 символа = департамент (например «75», «971», «2A»). Точность определения зависит от длины, она авто-определяется.

professionnel_by_rppsтолько чтениеидемпотентныйвнешний мир

Получает полную карточку PS по национальному идентификатору (rpps_id / IDNPS, 11 или 12 цифр — идентификаторы, выданные с 2020 года, имеют префикс "81" = 12 символов; старые идентификаторы = 11 символов). Возвращает N записей, когда PS работает на нескольких площадках (1 на площадку, каждая со своей geo_precision — один и тот же PS может, таким образом, иметь точную площадку FINESS и площадку по центроиду коммуны). Каждый геолоцированный результат содержит geo_precision ∈ {"adresse", "etablissement_finess", "centroide_commune"} — читайте это поле, чтобы оценить надежность coords (точные BAN/FINESS до метра против центроида коммуны ~3 км, не различающий внутри коммуны). Автоматический fallback на live API FHIR ANS (gateway.api.esante.gouv.fr/fhir/v2), если не найдено в локальной базе (ежемесячный снимок данных с задержкой не более J-30). Поле source различает db (локальная база) и ans_fhir (live). include_freshness влияет только на source: "db". Источник: Annuaire Santé, Agence du Numérique en Santé (ANS) — Licence Ouverte v2.0

Параметры
  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • rpps_idstringобязательный
professionnels_in_radiusтолько чтениеидемпотентныйвнешний мир

Поиск либеральных медицинских специалистов, заключивших договор с госстрахом, в заданном географическом радиусе. Гибридная геоточность на основе геокодирования BAN (проект C): ~77% специалистов геолоцированы по точному адресу (улица/здание, distance_km с точностью до метра), ~23% остаются на центроиде коммуны (~3 км, запасной вариант для негеокодируемых адресов — ДРОМ, Монако, CEDEX, хутора). Читать geo_precision ДЛЯ КАЖДОГО результата — не предполагать единообразную точность. Коды type_ps Ameli, присутствующие в базе (3): '1' — врачи, '2' — средний медперсонал (сборное: медсёстры, кинезитерапевты, акушерки, подологи, логопеды, ортоптисты, IPA), '5' — стоматологи-хирурги. Для точного нацеливания на конкретную профессию (например, только медсёстры, только кинезитерапевты, только подологи) использовать specialite_codes, а не type_ps_codes, который охватывает более широкий круг. Полный список кодов специальностей доступен через инструмент lister_nomenclature(referentiel:'ameli_specialites'). Мульти-сайты: по умолчанию специалист, работающий по N адресам, отображается N раз — используйте dedupe_by_ps=true, чтобы сгруппировать по практикующему и перечислить сайты в под-объекте. Расстояние возвращается в км по прямой (гаверсинус PostGIS) — для дорожного расстояния используйте внешний сервис (OSRM, ORS). Каждый геолоцированный специалист несёт geo_precision ∈ {"adresse", "centroide_commune"}: "adresse" = точные координаты BAN, distance_km точна, индивидуальное ранжирование надёжно; "centroide_commune" = ~3 км, distance_km ИДЕНТИЧНА для всех специалистов одной коммуны (не различима внутри коммуны — только фильтр зоны, не для ранжирования/выбора отдельного специалиста). Параметр `precise_only` (по умолчанию false): при true исключает специалистов на центроиде коммуны и возвращает только ~77% геокодированных по адресу BAN (distance_km точна) — рекомендуется для коротких радиусов (<3 км) и ранжирования внутри коммуны. ГРАНИЦЫ: ТОЛЬКО либералы, заключившие договор. ВНЕ ГРАНИЦ: исключительно больничные/наёмные врачи, наёмные медицинские биологи в LBM, анатомопатологи…

Параметры
  • dedupe_by_psboolean

    Группирует записи по практикующему специалисту (фамилия + имя + код специальности) и перечисляет каждый адрес практики в sites[]. По умолчанию false (историческое поведение V0.4: один PS с несколькими адресами = N записей).

  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • latnumberобязательный

    Широта центра (WGS84).

  • limitnumber

    Максимальное количество результатов (1-500, по умолчанию 100). Применяется ДО дедупликации.

  • lonnumberобязательный

    Долгота центра (WGS84).

  • precise_onlyboolean

    Если true, исключает PS на центроиде коммуны и возвращает только те, что геокодированы по адресу BAN, с точным distance_km (см. описание инструмента для полной семантики). По умолчанию false.

  • radius_kmnumber

    Радиус в км (0.1–10, по умолчанию 3).

  • specialite_codesstring[]

    Список кодов специальности Ameli (например: ['01'] MG, ['03'] cardio). Если параметр опущен, учитываются все специальности.

  • type_ps_codesstring[]

    Список кодов типа PS Ameli (в базе есть 3 значения: '1' - врачи, '2' - прочие медработники (сборная категория: медсёстры, кинезитерапевты, акушерки, подологи, логопеды, ортоптисты, IPA), '5' - хирурги-стоматологи). Чтобы выбрать одну конкретную профессию, используйте specialite_codes. Если поле не задано, применяются все типы.

professionnels_par_specialite_deptтолько чтениеидемпотентныйвнешний мир

Список либеральных (частнопрактикующих) медицинских работников, имеющих договор с французской страховой системой (conventionnés), по департаменту, с опциональными фильтрами по специальности или типу PS. Для административного перечисления — без указания радиуса. Коды type_ps Ameli, присутствующие в базе (3): '1' — врачи, '2' — вспомогательный медицинский персонал (сборное понятие: медсёстры, кинезитерапевты, акушерки, подологи, логопеды, ортоптисты, IPA — медсёстры продвинутой практики), '5' — хирурги-стоматологи. Чтобы нацелиться на конкретную профессию (например, только медсёстры), используйте specialite_code, а не type_ps_code — он охватывает шире. Полный список кодов специальностей доступен через инструмент lister_nomenclature(referentiel:'ameli_specialites'). Пагинация: используйте offset для получения следующих страниц, когда truncated=true. Мульти-сайты: используйте dedupe_by_ps=true для группировки по практикующему врачу. ПЕРИМЕТР: только либеральные специалисты, имеющие договор. ВНЕ ПЕРИМЕТРА: врачи, работающие исключительно в стационаре / по найму, медицинские биологи по найму в LBM, патологоанатомы в стационаре, врачи по труду, судебная медицина. Для численности по всем статусам — смотрите Annuaire Santé ANS (RPPS, esante.gouv.fr); этот сервер их не покрывает. Источник: Annuaire santé Ameli (Assurance Maladie), обновление еженедельно. Повторное использование регулируется ст. L.1461-2 Кодекса общественного здравоохранения — необходимо указывать источник и дату синхронизации.

Параметры
  • dedupe_by_psboolean

    Группирует записи по практикующему врачу (фамилия + имя + код специальности) и перечисляет каждый адрес практики в sites[]. По умолчанию false.

  • departementstringобязательный

    Код департамента INSEE: 2 символа для метрополии/Корсики ('01'-'95', '2A'/'2B'), 3 символа для DOM ('971'-'978').

  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • limitnumber

    Максимальное количество результатов (1-500, по умолчанию 100). Применяется ДО дедупликации.

  • offsetnumber

    Смещение пагинации (≥ 0, по умолчанию 0). Комбинируйте с limit, чтобы перечислить отдел с большой численностью. Повторяйте пагинацию, пока truncated=true.

  • specialite_codestring

    Код специальности Ameli (например: '01' - врач общей практики, '24' - медсестра, '26' - физиотерапевт, '03' - кардиолог). Необязательный. Полный список через lister_nomenclature(referentiel:'ameli_specialites').

  • type_ps_codestring

    Код типа PS Ameli ('1' врачи, '2' вспомогательный медицинский персонал, '5' хирурги-стоматологи). Необязательный: предпочитайте specialite_code для точного нацеливания. Полный список через lister_nomenclature(referentiel:'ameli_types_ps').

professionnels_rpps_in_radiusтолько чтениеидемпотентныйвнешний мир

Находит PS в радиусе через RPPS (Annuaire Santé ANS — все статусы: либералы + наёмные + смешанные + заменяющие; в отличие от professionnels_in_radius Ameli = только либералы по договору). Критический параметр `precise_only` — По умолчанию false (гибридный режим). При true: возвращает только PS с точной геолокацией (distance_km — точность до метра) — рекомендуется для коротких радиусов (<3 км), ранжирования внутри коммуны, поиска "PS в <500 м от адреса". Каждый результат содержит geo_precision ∈: - "adresse" — координаты BAN (улица/место/здание), distance_km точная. - "etablissement_finess" — координаты площадки FINESS (через num_finess), distance_km точная до площадки. - "centroide_commune" — центроид коммуны (~3 км), distance_km ОДИНАКОВАЯ для всех PS коммуны — НЕ ИСПОЛЬЗУЙТЕ для индивидуального ранжирования, только как фильтр зоны. Текущее покрытие: ~68,5 % точных, ~31,5 % остаточных centroide_commune. Гибридный режим = точные (с точностью до адреса) + центроиды (с точностью до коммуны) объединяются и сортируются глобально по distance_km. Фильтры: profession_codes (например ["10"] Врач, ["60"] Медсестра), savoir_faire_codes (узкая специальность DES/DESC), mode_exercice_codes. Коды mode_exercice ANS: L — либерал, S — наёмный, M — смешанный, R — заменяющий, B — волонтёр, A — прочее. Категория по умолчанию: Гражданские (C, ~97 % — либералы, частные наёмные, контрактники больниц). Opt-in: include_agents_publics: true добавляет Госслужащих (M, ~0,3 % — штатные PH, ARS, CNAM, Министерство образования, PMI, военные SSA); include_etudiants: true добавляет Студентов (E, ~2,5 % — интерны, экстерны, студенты медсестёр/акушерок). Справка: https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/. ВНИМАНИЕ: номенклатуры разные — коды ANS (profession_code, savoir_faire_code) — это ОТДЕЛЬНАЯ номенклатура от кодов Ameli (specialite_code, type_ps_code) — одно и то же число обозначает разные вещи (например, '10' = Врач в ANS, Нейрохирург в Ameli). НИКОГДА не передавайте код…

Параметры
  • centerobjectобязательный

    Центр круга поиска (координаты WGS84).

  • include_agents_publicsboolean
  • include_etudiantsboolean
  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • limitnumber

    Максимальное количество возвращаемых результатов (по умолчанию на сервере: 100).

  • mode_exercice_codesstring[]

    Коды режима практики ANS (частная / по найму / смешанная). Если опущено, все режимы.

  • precise_onlyboolean

    Если true, исключает PS с общим центроидом и возвращает только те, у которых distance_km точное (см. описание инструмента для полной семантики и рекомендуемого порога использования). По умолчанию false.

  • profession_codesstring[]

    Профессиональные коды ANS (например: ['10'] Врач, ['60'] Медсестра). Если не указано, все профессии.

  • radius_kmnumberобязательный

    Радиус в км (0.1-50).

  • savoir_faire_codesstring[]

    Коды savoir-faire ANS (узкие специальности DES/DESC). Если не указано, все savoir-faire.

professionnels_rpps_par_deptтолько чтениеидемпотентныйвнешний мир

Выводит список всех медицинских работников (PS) департамента через RPPS (либералы + наёмные сотрудники). Для либералов, работающих по договору, предпочтительнее professionnels_par_specialite_dept (Ameli). Повторная пагинация через offset, пока truncated=true. Каждый геолокализованный результат содержит geo_precision ∈ {"adresse", "etablissement_finess", "centroide_commune"} — читайте это поле, чтобы оценить надёжность координат coords (точные BAN/FINESS с точностью до метра против центроида коммуны ~3 км, неразличимые внутри коммуны). Опциональные фильтры: profession_code, savoir_faire_code, mode_exercice_code. Категория по умолчанию: Civil (C, ~97 % — либералы, частные наёмные сотрудники, контрактники больниц). Opt-in: include_agents_publics: true добавляет государственных служащих (M, ~0,3 % — штатные PH, ARS, CNAM, Министерство образования, PMI, военные медики SSA); include_etudiants: true добавляет студентов (E, ~2,5 % — интерны, экстерны, учащиеся медсестёр/акушерок). Справочник: https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/. ВНИМАНИЕ: номенклатуры ANS (profession_code, savoir_faire_code) — это ОТДЕЛЬНАЯ номенклатура от кодов Ameli (specialite_code, type_ps_code) — одно и то же число обозначает разные вещи (например, '10' = врач по ANS, нейрохирург по Ameli). НИКОГДА не передавайте код Ameli в параметр ANS: фильтр вернёт пустой результат без ошибки. Узнавайте коды ANS через lister_nomenclature(referentiel:'rpps_savoir_faire'). Источник: Annuaire Santé, Agence du Numérique en Santé (ANS) — открытая лицензия v2.0.

Параметры
  • departementstringобязательный

    Код департамента INSEE (например: '75', '2A', '2B', '971'). Метрополия 2 символа (Корсика '2A'/'2B', не '20'), DOM/TOM 3 символа.

  • include_agents_publicsboolean
  • include_etudiantsboolean
  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • limitnumber

    Максимальное количество результатов на страницу (по умолчанию на сервере: 100).

  • mode_exercice_codestring

    Код режима практики ANS (частная / по найму / смешанная). Необязательно.

  • offsetnumber

    Offset для пагинации (по умолчанию 0). Повторно выполняйте пагинацию, пока truncated=true.

  • profession_codestring

    Код профессии ANS (например: '10' Врач, '60' Медсестра). Необязательно.

  • savoir_faire_codestring

    Код ноу-хау ANS (узкая специализация DES/DESC). Необязательно.

profil_irisтолько чтениеидемпотентныйвнешний мир

Профиль демографии на уровне КВАРТАЛА (IRIS) — «спрос» территории (возраст, CSP, семьи, доход), для сопоставления с предложением медицинских услуг при выборе места размещения. Источник: INSEE RP 2022 + FILOSOFI 2021 (импортированные таблицы, гео 01.01.2024). Возвращает LookupResult, различаемый по found. Вход: РОВНО один из point (lat+lon) ИЛИ code_iris (9 символов). rayon_km опционально (0 < r ≤ 10) → ДВА режима: - БЕЗ rayon_km → профиль одного ÎLOT (~2000 жителей) под точкой / по коду. mode: "ilot", revenu_median = реальная медиана островка. - С rayon_km → АГРЕГАТ по БАССЕЙНУ = островки, чей ЦЕНТРОИД попадает в круг (каждый островок учитывается 1 раз). mode: "bassin", population_bassin, nb_iris_agreges, и revenu_median_pondere = ПРОКСИ (средневзвешенное по населению медиан покрытых островков — НЕ настоящая медиана бассейна) + couverture {revenu_pct_population, iris_revenu_manquants}, так как FILOSOFI покрывает только коммуны ≥5000 жителей. Доли age (part_65_plus/75_plus) и csp (руководители, средние специальности, служащие, рабочие, фермеры, ремесленники-торговцы, пенсионеры, прочие) — это отношения по сырым подсчетам (Σ/Σ). Для простого населения коммуны/департамента используйте population. not_found обоснован, если код отсутствует или точка за пределами метрополии / в море.

Параметры
  • code_irisstring

    Код IRIS длиной 9 символов (например, 751103701) - альтернатива точке.

  • latnumber

    Широта точки (режим точки).

  • lonnumber

    Долгота точки (режим точки).

  • rayon_kmnumber

    Радиус бассейна в км (0 < r ≤ 10). Отсутствует = профиль одного лишь островка.

reconcilier_finess_sireneтолько чтениеидемпотентныйвнешний мир

Скрещивает FINESS DREES ↔ SIRENE INSEE V3.11 и вычисляет оценку согласованности (Sørensen-Dice на биграммах) для каждого SIRET-кандидата. Полезно для подтверждения/опровержения сопоставления num_finess ↔ SIRET перед поиском или перекрёстной проверкой качества. Логика: 1. Получает FINESS (название организации + адрес с полями) 2. Получает SIRET-кандидаты через таблицу RPPS 3. Для каждого SIRET выполняет lookup SIRENE, затем вычисляет 3 подоценки: - nom: Dice по названию организации (FINESS vs SIRENE.uniteLegale) - adresse: Dice по полному адресу - telephone: бинарно 0/1 (сейчас всегда 0: SIRENE не раскрывает телефон) 4. Общая оценка = взвешивание (nom 0.5, adresse 0.4, tel 0.1) 5. Грубый вердикт: match (≥0.8) / partial (0.5..0.8) / mismatch (<0.5) Алгоритм ПУБЛИЧНЫЙ (Sørensen-Dice известен в литературе с 1948). Никакой добавленной стоимости Unilabs здесь — это открытый примитив. Собственные знания (маппинг вывесок ↔ SELAS) остаются на стороне Geo Intel. Формат: объект LookupResult. Когда found: true, возвращает { num_finess, candidates, skipped }: - candidates: массив, отсортированный по убыванию score_global (лучшее совпадение первым) - skipped: SIRET-кандидаты, которые НЕ удалось согласовать (lookup SIRENE отвергнут или не найден), с указанием reason. Позволяет вызывающей стороне различать 'ни одного SIRET-кандидата не найдено' (found: false LookupResult.not_found) и 'N SIRET-кандидатов, но все отвергнуты SIRENE' (candidates: [] + skipped: [...]).

Параметры
  • num_finessstringобязательный

    Точный номер FINESS (9 цифр).

reverse_geocodeтолько чтениеидемпотентныйвнешний мир

Обратное геокодирование: по GPS-координатам находит ближайший адрес. Источник: IGN Géoplateforme. Покрытие только метропольная Франция + DOM: координаты вне зоны (например, Нью-Йорк) или в открытом море возвращают null (не ошибка: это отсутствие результата, а не сбой).

Параметры
  • latnumberобязательный

    Широта (WGS84)

  • lonnumberобязательный

    Долгота (WGS84)

rpps_dans_etablissementтолько чтениеидемпотентныйвнешний мир

Перечисляет PS, привязанных к учреждению FINESS (num_finess — 9 цифр). Связка RPPS↔FINESS — отвечает на вопрос «кто работает в этой лаборатории / больнице / клинике?». mode_exercice разделяет частнопрактикующих, работающих на месте (по совмещению), и наёмных сотрудников. Покрытие: RPPS показывает эту связь, только если PS сам её заявил; наёмные сотрудники больниц / университетских больниц / клиник покрыты хорошо. Вывод компактный: coords и distance_km равны null (инструмент работает по учреждению, не пространственный — для геолокации используйте etablissement_by_finess с num_finess). Категория по умолчанию: Civil (C, ~97 % — частнопрактикующие, наёмные работники частного сектора, контрактники в больницах). Opt-in: include_agents_publics: true добавляет государственных служащих (M, ~0,3 % — штатные PH, ARS, CNAM, Éducation nationale, PMI, военнослужащие SSA); include_etudiants: true добавляет студентов (E, ~2,5 % — интерны, экстерны, учащиеся медсестёр и акушерок). Ссылка: https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/. Источник: Annuaire Santé, Agence du Numérique en Santé (ANS) — Licence Ouverte v2.0

Параметры
  • include_agents_publicsboolean
  • include_etudiantsboolean
  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • limitnumber
  • num_finessstringобязательный
rpps_search_by_nameтолько чтениеидемпотентныйвнешний мир

Находит PS по идентификатору (нечеткое сопоставление по триграммам, устойчивое к диакритике/опечаткам). Пример: "Dr Martin à Paris" → nom: "Martin", departement: "75". Поле nom обязательно; prenom и departement уточняют результат. Сортировка по match_score ∈ [0..1] по убыванию (оценка триграммы pg_trgm). Оценка <0.5 означает частичную омонимию — вызывающая сторона должна подтвердить. Без departement точные омонимы ("Пьер Мартен") получают ВСЕ одинаковую оценку ~1.0 и не разделяются — при распространенной фамилии всегда фильтруйте по департаменту или имени. truncated: true = есть ещё результаты (ограничьте запрос, не листайте все). У каждого геолоцированного результата есть geo_precision ∈ {"adresse", "etablissement_finess", "centroide_commune"} — смотрите это поле, чтобы оценить надежность coords (точная координата BAN/FINESS с точностью до метра против центроида муниципалитета ~3 км, в пределах города не различает). Категория по умолчанию: Civil (C, ~97 % — частнопрактикующие, сотрудники частных клиник, контрактники больниц). Опционально: include_agents_publics: true добавляет госслужащих (M, ~0,3 % — штатные больничные врачи, ARS, CNAM, Министерство образования, PMI, военные врачи SSA); include_etudiants: true добавляет студентов (E, ~2,5 % — интерны, экстерны, учащиеся медсестер/акушерок). Ссылка: https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/ Источник: Annuaire Santé, Agence du Numérique en Santé (ANS) — Открытая лицензия v2.0.

Параметры
  • departementstring

    Код департамента INSEE (например: '75', '2A', '2B', '971'). Метрополия: 2 символа (Корсика '2A'/'2B', не '20'), DOM/COM: 3 символа.

  • include_agents_publicsboolean
  • include_etudiantsboolean
  • include_freshnessboolean

    Если true, добавляет поле data_freshness в полезную нагрузку (в query_metadata, если оно присутствует, иначе в корне), перечисляющее последний успешный импорт по источникам (FINESS, Ameli, RPPS, CDS) с staleness_days. Включается явно, чтобы не утяжелять полезные нагрузки по умолчанию. Кэш на 5 минут на стороне сервера, затраты незначительны.

  • limitnumber

    Максимальное количество результатов (1-30, по умолчанию 10).

  • nomstringобязательный

    Фамилия (непустая).

  • prenomstring

    Имя PS.

verifier_site_actifтолько чтениеидемпотентныйвнешний мир

Проверяет, активно ли ещё медицинское учреждение FINESS, сверяя FINESS DREES ↔ RPPS (опора SIRET) ↔ DINUM (полный список SIRET для SIREN, включая закрытые). Обнаруживает закрытые SIRET, которые всё ещё числятся активными со стороны FINESS (у DREES задержка 1-2 месяца). V0.16 — исправление последовательности M&A: когда сайт сменил эксплуатанта (поглощение), старый закрытый SIRET и новый активный сосуществуют по одному адресу. Resolver теперь отдаёт предпочтение АКТИВНОМУ SIRET, находящемуся в той же локации, что и FINESS (геодезическое расстояние ≤ 100 м, перекалибровка V0.16.1 — геокодирование DREES помещает точку FINESS в десятках метров от реального адреса) — раньше вердикт мог ошибочно быть ferme, так как best_match выбирался только по совпадению адресов. Среди соседей по локации приоритет только у активного из ближайшей полосы: активный сосед с другого адреса вердикт не меняет. РЕАЛЬНО закрытый сайт остаётся ferme (нет активного SIRET в той же локации). Логика: 1. Поиск FINESS для получения наименования юрлица + адреса + телефона DREES 2. Кандидаты SIRET через resolver: опора RPPS, затем fallback гео DINUM /near_point (получает ВСЕ SIRET вокруг адреса FINESS, активные И закрытые — захватывает нового эксплуатанта, невидимого со стороны RPPS) 3. best_match = АКТИВНЫЙ SIRET, co-локализованный с FINESS, если такой есть; иначе лучший кандидат (возможно, закрытый). Co-локализация — это георасстояние, а не текстовое совпадение. 4. 2 отдельных вердикта: - verdict_site (actif / ferme / indetermine): на основе best_match.actif. Это вердикт, который важен для территориального аудита. - verdict_groupe (actif / ferme / indetermine): на основе административного статуса родительского юрлица (поле actif DINUM). Активное юрлицо может спокойно иметь закрытый сайт. Формат ответа: объект LookupResult, различаемый по found. Если found: true, полезная нагрузка содержит finess (вид DREES), candidates (обогащённый список — каждый кандидат содержит distance_finess_m), best_match,...

Параметры
  • num_finessstringобязательный

    Точный номер FINESS (9 цифр).

Похожие MCP-сервера

lulzasaur9192/marketplace-search-mcp

lulzasaur9192/marketplace-search-mcp

MCP-сервер с 22 инструментами для поиска на 15+ маркетплейсах, сравнения цен, проверки лицензий и данных. Полезен для поиска товаров, услуг, недвижимости, оценки коллекционных предметов и проверки ...

TypeScript4
Evan-Crx/permisapi-mcp

Evan-Crx/permisapi-mcp

Сервер MCP для доступа к 1,2 млн+ разрешений на строительство во Франции. Ищите по адресу, получайте score MDB, PLU, риски и кадастр. Инструмент для девелоперов, инвесторов и маршанов де биен при п...

Python3
jbechtel-97/dealflowpro-mcp-server

jbechtel-97/dealflowpro-mcp-server

Анализирует сделки с многоквартирной недвижимостью через ИИ-агентов. DealFlowPro рассчитывает ключевые метрики, скоринг сделок и данные о районе. Полезен для быстрого андеррайтинга инвесторам и ана...

JavaScript3
bamwor-dev/bamwor-mcp-server

bamwor-dev/bamwor-mcp-server

MCP сервер с глобальными географическими данными: 261 страна, 13,4 млн городов. Инструменты для поиска, сравнения стран и городов, ранжирования по 20+ показателям. Помогает AI-агентам работать с реальными данными о странах и городах.

TypeScript2
sophymarine/openregistry

sophymarine/openregistry

Прямой доступ к данным 30 государственных реестров компаний без посредников. Возвращает оригинальные выписки и документы в реальном времени. Полезен для проверки контрагентов, KYC и отслеживания це...

JavaScript17
gregario/astronomy-oracle

gregario/astronomy-oracle

MCP сервер с 13 000+ объектами из каталогов NGC, IC и Мессье. Точно вычисляет видимость и координаты без интернета - полезен астрономам-любителям и ИИ-ассистентам, которым нужны достоверные астрономические данные.

TypeScript3
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин