Геокодирование

Чтобы вы могли эффективнее управлять наружной рекламой и оценивать результативность промо-мероприятий, IDENT позволяет узнать, где живут ваши пациенты. Но чтобы отобразить пациентов на карте, нужны координаты домов, в которых они живут.

Мы не требуем от администраторов клиники вносить в карточки пациентов координаты их местоположения. Это очень усложнило бы их работу. В IDENT адрес вводится текстом: по компонентам (в отдельное поле город, в отдельное поле улица и так далее) — чтобы было меньше ошибок, но в свободном формате — чтобы постоянно не обновлять справочники адресов.

Получение координат дома из текстовой информации в карточке пациента называется геокодирование. Существуют специальные сервисы геокодирования.

С кем мы интегрируемся?

Раньше Google предоставляли координаты бесплатно, но с большим распространением сервисов заказа еды и приложений для вызова такси,  цены на платное использование возможностей геокодирования были увеличены, а бесплатное совсем выключено. Затем то же самое сделал Яндекс. Новые цены этих компаний настолько высоки, что превышают ежемесячную абонентскую плату за использование программы IDENT. Поэтому мы нашли другие варианты.

На сегодняшний день мы работаем с двумя сервисами:

  • «Спутник» (проект «Ростелеком») — пока бесплатный и работает не только на Россию, но и на другие страны (хотя бы до уровня городов). Просто подключаем, регистрироваться нигде не нужно. Есть ограничения на дневное количество распознаваний.
  • DaData — адекватная цена за один запрос на распознавание адреса (10 копеек и меньше). Точность полученных данных может быть существенно выше, чем у «Спутника». Нужно регистрироваться. Из минусов: работает только по России.

Как это работает в IDENT

Мы отправляем из IDENT на сервис геокодирования адреса (новые и те, которые нужно перепроверить) → сервис распознает эти адреса → получает по ним координаты из открытой системы картографии → отдает обратно → мы эти координаты сохраняем в IDENT (в карточки пациентов). Если несколько пациентов имеют в карточках один и тот же адрес, этот адрес оправляется на сервис геокодирования один раз, а полученные координаты заносятся в карточки всех пациентов с этим адресом.

Для ускорения процесса и исключения лишних запросов к внешним сервисам каждый новый адрес мы пытаемся найти сначала в нашей Базе данных, и если находим полностью совпадающий распознанный адрес (у которого не пришел период перепроверки), то берем координаты у него, а не обращаемся лишний раз к сервисам геокодирования.

Интеграция с сервисами геокодирования осуществляется фоновой задачей с интервалом 1 час.

При распознавании адресов сервис может «обо что-то споткнуться»:

  • адрес может быть написан с ошибкой;
  • строка с адресом может быть неполная;
  • проработка карты населенного пункта может быть не очень детальной (конкретного дома и порой даже конкретной улицы на ней может не быть).

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

  • если все хорошо — с точностью до дома;
  • если возможно распознать адрес только до улицы — то до улицы;
  • если сервис картографии не прорабатывал этот город — до города;
  • часть адресов сервис не может распознать, они вернутся без координат.

Мы сохраняем все данные, которые получаем, на каком бы этапе сервис ни остановился.

Через год или через несколько несколько лет карты могут быть лучше проработаны. Поэтому для разных групп распознанных адресов (по точности определения координат) можно настроить период перепроверки. Рекомендуемые интервалы перепроверки по умолчанию: для распознанных до улицы и города — 1 год, до распознанных до дома — 5 лет.

Понятие «Координаты клиники»

Для тех случаев, когда строка с адресом неполная (например, не указана область или край, а в разных регионах встречаются города с одинаковым названием и с непременным присутствием улицы Ленина и проспекта Мира), мы вводим понятие «Координаты клиники». Тогда, если для этого адреса система выдаст несколько координат, будет выбран ближайший к клинике. Например (см. картинку выше), город Фокино с улицей Ленина есть и Нижегородской, и в Брянской области, и в Приморском крае, но клиника располагается именно в городе Фокино Нижегородской области, поэтому программа определяет, что и пациент находится там же.

Отображение пациентов на карте

Когда в отчете «Пациенты» сотрудник клиники нажимает на кнопку «Показать на карте», открывается страничка для браузера и все пациенты с распознанными адресами показываются уже в браузере. На специальном значке, показывающем расположение пациентов на карте, отображается количество пациентов, проживающих по каждому адресу.