Как стать автором
Обновить

Геопространственные технологии для управления паспортом медицинского участка

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 2.2K

Всё началось с голосовых роботов. Во время борьбы с Ковидом наш коллцентр, носящий теперь гордое имя Центр телефонного обслуживания граждан 122, все чаще и чаще выстраивал очереди со временем ожидания ответа оператора свыше 30 минут. Нанять больше людей и начать стабильно укладываться в норматив ответа оператора менее 3-х минут не позволяли размеры помещения и фонда оплаты труда.

Стали пробовать решения для автоматизации контакт центров, которые можно было бы интегрировать с медицинской информационной системой (МИС). За 3 месяца пилотирования NLP продукта и его интеграции действующие в бизнес-процессы удалось добиться вменяемых результатов по распознаванию номеров медицинских полисов, адресов проживания и имени пациентов. Даже удалось удержать среднее время обслуживания одного звонка на уровне 100 секунд… Однако процент автоматических обслуженных обращений болтался в диапазоне от 11 до 30 процентов, и пациенты продолжали томится в ожидании ответа оператора.                      

Виной низкой эффективности проекта роботизации коллцентра послужило состояние адресной базы МИС и серьезные различия в бизнес правилах бюджетных медицинских учреждений. Мы с вами часто меняем место жительства и ни перед кем за это не отчитываемся. Строительные компании увлечены реновацией и на месте ветхих бараков, гаражных кооперативов или промышленных пустошей появляются многоэтажки, о заселении которых медицинские организации узнают по телефону, когда нам требуется врач. Про оперативное информационное взаимодействие органов внутренних дел, управлений архитектуры и органов охраны здоровья остается только мечтать.

Пришлось срочно вспомнить, что вверенный мне Медицинский информационного аналитический центр (МИАЦ) – это не только коллцентр, управление статистикой и электронный архив, но и гнездо специалистов по Data Science, пусть и очень юных – начинающих.

Первоначальный план был прост: нанести на электронную карту границы зон обслуживания населения, получить координаты всех домов из базы пациентов и по вхождению точки в полученных полигон определить уполномоченную поддерживать здоровье жителя медицинскую организацию. Скоро стало ясно, что делать придется создавать полноценную мастер-базу для управления территорией обслуживания медицинских организаций с визуализацией геопривязки и инструментами управления данными.

Стек технологий на старте выглядел так: Python, QGIS, PostgreSQL с расширением postgis, геооснова OpenStreetMap.

Итак, информацией, связывающей дома и первичную медицинскую помощь по участковому принципу, владеют поликлиники и хранят в МИС и некой программе Фонда обязательного медицинского страхования (ФОМС), который поделился во мной этой выгрузкой.

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

Данные ФОМС об участках поначалу обнадеживали: есть код КЛАДР до улицы, номера домов (если стоял 0 вместо номера, то к участку относились все дома), есть номер участка и его больничное название. При беглой проверке выяснялось, справочник КЛАДР использован очень старый, названия населенных пунктов содержат ошибки, сокращения или «местные» топонимы, часть населенных пунктов поглощена другими. С улицами еще интереснее, в городе Челябинске 3 улицы 8 марта, 3 улицы Чапаева, 3 улицы Железнодорожная, 7 улиц Первомайская. Кстати, улица 8 марта в Челябинске пишется Восьмого марта, а в остальных населенных пунктах Челябинской области – 8 марта. И вишенкой на торте анализа данных стало наличие на участках снесенных домов (рекорд - более 20 лет назад). Оказалось, паспорт участка в поликлинике основан на данных поквартирного обхода, проведенного более 10 лет назад. Нормативные данные по численности и полово-возрастному составу населения в паспорте участка вообще не учитывают миграцию и смертность.

В МИС ситуация с участками оказалась еще более запутаннее: номера и наименования участков вообще не совпадают с аналогичными данными ФОМС, присутствует большое количество тестовых участков, есть недействующие участки с прикрепленными к ним пациентами. Кроме того, в МИС так же использован неактуальный на сегодня справочник с кодами ФИАС для улиц и домов, часть адресов введено не корректно (отсутствует улица в населенном пункте, нет единого подхода к вводу корпуса дома, в поле адреса есть посторонние пометки или дополнительно внесен адрес фактического места жительства пациента). По результатам анализа было решено создавать мастер справочник на основе данных фонда ОМС и сделать кросс-таблицу для МИС.

Сначала я нормализовал адрес по схеме: муниципальный район, город, населенный пункт, улица, и присвоил каждому участку UUID код. Для машинной обработки адресной строки присвоил так же КЛАДР для каждой улицы, его проще визуально использовать для ручной проверки адреса. После обработки табличка стала чуть краше:

Актуальный код КДАДР или ФИАС улицы и номер дома позволит нам однозначно идентифицировать дом по последней версии справочника ГАР.  Я развернул в своей БД по 2 таблицы (addrobj, house) последних версий справочников ФИАС и ГАР для поиска действующего кода дома. Конверторы для справочников взяты с GitHub. Можно конечно сразу воспользоваться API платного сервиса для поиска по адресной строке, но я предпочёл помучится использовать все доступные способы для снижения стоимости данных.

Полученные в результате данные собраны в 2-х таблицах: medcare - правила отнесения дома к участку медицинской организации и datahouse - дома в которых зарегистрированы пациенты.

Описание таблиц

Имя таблицы

Содержание

1

medcare

Данные по принадлежности населенного пункта, улицы и дома (группы домов) к медицинской организации, ТВСП, участку.

2

datahouse

Семантические данные накапливаемые по дому из разных источников (ФОМС, ДаДата, МИС Барс)

Структура данных medcare

Поле

Описание

Примечание

1

moname

Сокращенное наименование медицинской организации

Взято по данным ФОМС. Рекомендуется привести в соотвествие с ФРМО https://nsi.rosminzdrav.ru/#!/refbook/1.2.643.5.1.13.13.11.1461/version/6.925

2

area

Наименование города муниципального района

Соответствует ГАР

3

city

Наименование города

Соответствует ГАР

4

settlement

Наименование поселения

Может быть в составе города, соответствует ГАР

5

street

Наименование улицы

Соответствует ГАР

6

house

Диапазон домов

Данные представлены в формате jsonb для поиска по списку в запросе SQL

7

typezone

Тип участков

Всего 5 типов: терапевтический, педиатрический, врач общей практики, семейный врач, врач общей практики

8

numberzone

Номер участка

По данным ФОМС

9

adult

Возрастная категория пациентов

По данным ФОМС, 3 типа: Взр, Дет, Взр и дет

10

namezone

Название участка

По данным ФОМС, не совпадает с названием участка в МИС БАРС

11

snils

СНИЛС участкового врача

По данным ФОМС

12

divizion

Код ТВСП обслуживающего участок

OID ТВСП ФРМО https://nsi.rosminzdrav.ru/#!/refbook/1.2.643.5.1.13.13.11.1461/version/6.925

13

active

Поле статуса

По данным ФОМС, в скриптах не используется

14

kladr

Код КЛАДР

Код улицы или территории для записи в зависимости о правила отнесения домов к участку: все дома населенного пункта или все дома/диапазон домов на улице

15

careuuid

Код участка в формате UUID

Индивидуальный код участка, использовался для отнесения домов к участку

Структура данных datahouse

Поле

Описание

Примечание

1

fulladdress

Полная адресная строка

Сформирована по ключам ответа адресного сервиса: область, муниципальный район, город, населенный пункт, улица, дом, корпус.

2

dadata

Ответ адресного сервиса

Сохранен ответ сервиса в формате jsonb, структура ответа приведена к стандарту ответа для кода ФИАС.

3

data_addons

Дополнительные данные по адресу

Столбец для накапливания семантической информации об адресе на учетную дату. Формат jsonb

В таблицу datahouse, поле data_addons возможно сохранить данные о численности зарегистрированного в каждом доме населения по возрастным группам по данным МИС (например, на квартальной основе). Удобно хранить данные в одном месте и формировать статистический отчет по требованию в нужной разбивке.

Дальше разберемся с границами территорий обслуживания населения медицинскими организациями и границами участков.

Всего по базе МИС для Челябинской области определилось 410 тысяч адресов пациентов, из них для 384 тысяч найден код ФИАС дома. Для 140 тысяч определены координаты с точностью до дома и для 130 тысяч определены координаты c точностью до улицы. Попробуем автоматически построить цифровую карту с полигонами участка на основе домов с точными координатами. Полигоны формируются по крайним домам входящим в участок.

Полученный результат сохраняем в сводную таблицу medcare_postgis. От базовой таблицы medcare сюда вошли поля careuuid, moname, typezone, numberzone, adult, typezone. Методами geopandas рассчитываются поля polygone, center_point - координаты участка и его центральной точки. Можно эти данные дополнительно перевести в бинарный формат тип данных geometry в системе координат WGS84 для просмотра средствами pgAdmin4. Для QGIS нам достаточно текстовых данных координат, сохраненных как Polygone или Point.

Просмотр полигонов участков  в pgAdmin4
Просмотр полигонов участков в pgAdmin4

Теперь можно визуально наблюдать границы участка, пересечения с соседними и ошибки определения прикрепления дома к участку. Файл проекта для QGIS с деревом медицинских организаций, подразделений и участков можно формировать средствами Python.

Разберемся с ошибками автоматического формирования границ участка. Для удобства редактирования ошибок прикрепления домов к участку я создал еще одну сводную таблицу datahouse_postgis. От базовой таблицы datahouse сюда вошли поля careuuid, fulladdress, housekladrid, house, block, qc_geo. Координаты дома сохранены в столбце geo_point при помощи функции postgis - ST_Point(geo_lon, geo_lat). Управления таблицами medcare_postgis, datahouse_postgis можно осуществлять через простейшие формы с прямым доступом в базу данных. Например, средствами Libra Office.

Первая группа ошибок: границы участка 59 в ГКБ №1 Челябинска пересекают несколько участков, лежат вне зоны обслуживания медицинской организации.

Одноименные топонимы улиц на участке
Одноименные топонимы улиц на участке

Проверим содержимое таблицы medcare. Для удобства я выгрузил ее в CSV формат.

На этом участке не были удалены пересекающие названия улиц при присваивании корректных кодов КЛАДР.

Вторая группа ошибок связана с точностью определения координат домов. В данных полученных от геосервиса для улиц с одноименными названиями координаты перепутаны:

  • Челябинск Загородная 12 и Загородная (Шагол) 12 для участка 41;

  • Челябинск Центральная 32 и Центральная (Шершни) 32 для участка 46.

Ошибки координат дома полученных от геосервиса
Ошибки координат дома полученных от геосервиса

Третья группа ошибок связана уже с первоначальным подходом к формированию участка. Скорее всего участки подбирались под нормативное значение численности, без учета географической расположенности. Как закономерный итог подхода – участковый врач ежедневно делает пешие переходы от пациента к пациенту до 40 минут.

Недостатки в планировании участка
Недостатки в планировании участка

        Инструментами QGIS поверх автоматически созданных слоев можно нанести  новую границу участка по улицам и переулкам, включая туда скверы и коммерческую недвижимость предвосхищая изменения застройки.

Сформированные границы участков медицинской организации
Сформированные границы участков медицинской организации

Весь проект сохраняем в базу данных PostgreSQL средствами QGIS. Принадлежность дома к участку легко установить по координатам дома средствами SQL запроса.

Координаты центра участка можно использовать в BI системе, для привязки семантической информации на местности.

Вывод данных об участке на карте
Вывод данных об участке на карте

        

Дополнительные открывшиеся возможности:

  • возможно разместить все действующие объекты здравоохранения с привязкой на местности, сохранить в БД и использовать их в любой системе BI напрямую;

  • автоматически генерировать карты для презентаций с помощью SQL запроса;

  • строить карты маршрутов используя API Open Street Map или Яндекса;

  • создать виджет для динамического поиска видов медицинской помощи, справочной информации по координатам дома

  • создать универсальный интерактивный инструмент групповой работы для управления медицинской маршрутизацией на схеме медицинская организация  - территориальный орган по охране здоровья – национальные медицинские исследовательские центры с использованием справочников (ГАР, ФРМО, НСИ и т.д.).

Теги:
Хабы:
+11
Комментарии 6
Комментарии Комментарии 6

Публикации

Истории

Работа

Data Scientist
62 вакансии
Python разработчик
131 вакансия

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн