Публикация Школы траблшутеров

Как построить BI-архитектуру

Время чтения: 6 мин 15 сек
19 апреля 2025 г. Просмотров: 98

Дэшборды, Автоматизация | Олег Брагинский, Максим Мухтаров

Основатель «Школы траблшутеров» Олег Брагинский и ученик Максим Мухтаров рассказывают о том, как спроектировать систему, автоматизирующую обновление корпоративной отчётности для многофилиальных отечественных медицинских учреждений.

В крупной сети частных поликлиник возникла ситуация, когда множество информационных систем, снабжённых собственными модулями отчётности, настолько усложнили общую архитектуру, что в какой-то момент главный ИТ-шник твёрдо решил: «Проще разработать собственный репортинг».

Начали с построения принципиальной схемы, объединившей:

  • Медиалог – ведение медицинских карт пациентов большинства городов
  • Инфоклиника – аналогичная система для ряда населённых пунктов
  • SAP – автоматизация расчёта основных финансовых показателей
  • Мобильное приложение – запись на приём, телемедицина
  • 1С MDM – хранение нормативно-справочной информации
  • ТАСУ – обмен историями болезни с фондами ОМС
  • Intersystems Laport – лабораторные тесты.

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

Собрали требования с бизнес-заказчиков. Договорились, что проект не будет работать в режиме онлайн. Составили план очерёдности подключения подразделений к пилотному тестированию.

Предусмотрели:

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

Отдельным вызовом стало отсутствие единой шины данных. Похожий механизм окружал только SAP, остальные приложения подключались друг к другу по схеме «звезда». Рассматривали вариант сделать мастер-системой Медиалог. Идея провалилась из-за совокупной технической сложности.

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

Определили слои:

  • внешние системы исходных данных и справочная информация
  • внутреннее множество таблиц для массового копирования
  • базы данных с представлениями для отчётов
  • OLAP-кубы бизнес-процессов
  • визуализация.

Для хранилища данных выбрали MS SQL Server: служил основой для большинства внутренних корпоративных приложений, технические администраторы были обучены и сертифицированы, организация обладала достаточным количеством приобретённых лицензий на Enterprise Edition.

Сбор, трансформацию и загрузку данных организовали двумя способами: а) для исходных систем с MS SQL Server, – через связанные сервера, хранимые процедуры, менеджер заданий; б) для прочих взяли решение с открытым исходным кодом Apache Airflow, запускающее python-скрипты.

Для OLAP-кубов единственным вариантом видели установку SQL Server Analysis Services. В качестве приложения слоя визуализации выбрали Power BI Report Server с дэшбордами и постраничными отчётами SQL Server Reporting Services, шедший в комплекте с софтом хранилища.

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

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

Удалось установить соответствие для одинаковых объектов, хранящихся в разных приложениях: лечебные учреждения из Медиалога, Инфоклиники, SAP. Предусмотрели сущности: плановые показатели, паспорта кабинетов и медицинского оборудования, унифицированные контрагенты.

Информацию из исходных систем черпали тремя способами: а) копируя структуру части оригинальных таблиц, необходимых для построения отчётов, б) загружая файлы в неизменном формате; в) разворачивая в реляционный вид получаемые по API структуры данных.

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

Для целей репортинга создали отдельные детализированные и/или агрегированные таблицы. Подразделениям, которые обросли собственными аналитиками, предоставили «лягушатники», где можно было безнаказанно резвиться, решая локальные задачи без помех глобальному замыслу.

Центральным элементом решения стали OLAP-кубы бизнес-процессов: оказания услуг (позиции в счёте), реализации направлений (приёмы, анализы, исследования по плану лечения), фиксации визитов (записи в расписании и приходы по ним), госпитализации (движения по койкам и выписки).

Визуализацию обеспечили двумя способами: а) большинству – через веб-приложение, доступное из корпоративной сети, в виде воронок, гистограмм, графиков, распределений, карточек KPI; б) любителям подробностей – посредством получения данных в умные/сводные таблицы Excel.

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

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

Сосредоточение на локальных задачах позволило быстро преодолеть этап тестирования и перейти к промышленной эксплуатации. Обрадованные подразделения начали заказывать больше информационных продуктов, что укрепило привычку централизованного просмотра отчётности.

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

Планируем расширить архитектуру для обновления в реальном времени, внедрить колоночные базы данных для источников больших объёмов, предоставлять отчёты на мобильные устройства, импортозаместить критические компоненты, оставшиеся без поддержки зарубежных вендоров.