Управление персоналом - Анализ численности медицинского персонала по подразделениям
Численность медицинского персонала по подразделениям - ключевой фактор эффективности операционной деятельности медицинской организации. Правильная аналитика в этой области обеспечивает баланс между доступностью медицинских услуг, качеством ухода за пациентами и эффективным использованием ресурсов. В главе рассматриваются архитектура данных, подходы к интеграции источников, расчеты метрик и сценарии внедрения практических решений BI для управления персоналом в многопрофильной медицинской компании.
Гибкость подхода здесь критична: клиники, отделения и филиалы имеют разные режимы работы, требования к сертификации и нормативы по персоналу. В рамках главы приводятся концепции моделирования данных, принципы качества данных, механизмы контроля доступа и примеры реализации в BI-средах. Особое внимание уделено единым определениям метрик, сопоставимости данных по подразделениям и управлению изменениями в организации.
- Архитектура данных и модель для анализа численности по подразделениям.
- Интеграция источников данных, качество данных и вопросы конфиденциальности.
- Метрики и алгоритмы расчета, сценарии управленческой аналитики и планирования.
- Реализация BI-слоя: семантическая модель, дашборды и внедрение процессов в бизнес-процессы.
Архитектура данных и концепции
Управление персоналом требует построения устойчивой архитектуры данных, которая обеспечивает непротиворечивость и полноту сведений о сотрудниках, их подразделениях, должностях и временных периодах. В медицинских организациях данные по персоналу ограничены регуляторными требованиями, требования к приватности и необходимостью обеспечения доступности в течение смен. В таком контексте предпочтение часто отдается гибридной модели хранения: ядро - в устойчивом хранилище данных (Data Warehouse/Data Mart), источники - в системах HRIS/ERP и системах расписания смен.
Модель данных
Для анализа численности персонала целесообразно использовать ориентированную на аналитику схему типа звезды (star schema) или гибридные подходы с элементами Data Vault. В базовой конфигурации выделяются две группы таблиц:
-
Измерения (dims):
- DimDate - календарь и временные признаки (дата, месяц, квартал, год).
- DimDepartment - подразделение (код, наименование, филиал/лечебное направление).
- DimStaff - справочник сотрудников (staff_id, ФИО, пол, дата рождения, должность, статус).
- DimJob - должность и квалификация (job_id, название,_grade, стандартные часы).
- DimFacility - локализация (филиал, отделение, платформа оказания услуг).
-
Факты (facts):
- FactHeadcount - численность и связанные метрики (headcount, полнота занятости, часыWorked, статус активности, период).
Обобщенная схема данных представлена ниже для наглядности:
| Таблица | Роль | Основные атрибуты |
|---|---|---|
| DimDate | Календарь | date_id, date, month, quarter, year |
| DimDepartment | Подразделение | department_id, name, facility_id |
| DimStaff | Справочник сотрудников | staff_id, full_name, hire_date, status, gender, date_of_birth |
| DimJob | Должность | job_id, name, grade, typical_hours |
| DimFacility | Локация/Филиал | facility_id, name, type |
| FactHeadcount | Факты численности | headcount_id, date_id, department_id, staff_id, is_active, hours_worked |
Такая структура обеспечивает гибкость для агрегаций по периодам, подразделениям и должностям, а также позволяет легко внедрять дополнительные измерения (например, по типу смены, уровню квалификации или по локациям).
Источники данных
Для формирования достоверной картины по численности персонала следует синхронизировать данные из нескольких систем:
- HRIS/ERP: данные о найме, увольнениях, статусах сотрудников, должностях и окладах. В российском рынке широко применяются 1С: ЗУП и SAP HCM, в западном сегменте - Workday, Oracle HCM.
- Системы расписания и учета времени: расписания смен, факт присутствия, часы работы, переработки. Эти данные часто расходятся с кадровыми данными и требуют сопоставления по сотруднику и дате.
- Платежный и кадровый учет: данные о начислениях и рабочем времени для расчета FTE и точного соотношения «рабочие часы/нормативные часы».
- Другие источники: регистры сертификации и аттестации, кадровые контракты, сменные графики на разных площадках (стационарное отделение, поликлиника, лаборатория).
Общие принципы подбора источников:
- единая идентификация сотрудника (staff_id) и единый ключ времени (date_id);
- согласование кодов подразделений и должностей между системами;
- автоматизация загрузок и контроль соответствий между системами (мастер-данные и линейные данные).
Важно отметить: в медицинской организации конфиденциальность и защита персональных данных - обязательная часть архитектуры. Верификация источников, журнал изменений и доступ по ролям должны быть встроены в процессы ETL/ELT, а данные, связанные с персональными данными сотрудников, должны быть защищены с использованием маскирования и минимизации доступа.
Безопасность и приватность
Соблюдение требований законодательства о персональных данных (в России - Закон о персональных данных ФЗ-152) претендует на высокий уровень конфиденциальности. Роли доступа должны строго соответствовать функциональным обязанностям: администраторы могут видеть общие показатели по подразделениям, руководители подразделений - только по своим структурам, линейный персонал - доступ по минимально необходимым данным.
Рекомендации:
- реализовать RBAC (Role-Based Access Control) и ABAC (Attribute-Based Access Control) для более гибкой настройки прав;
- минимизировать использование PII в слоях, доступных широким группам пользователей;
- поддерживать аудит и журнал изменений по данным сотрудников;
- внедрить маскирование важных полей (например, персональных идентификаторов) в представлениях для пользователей с ограниченным доступом.
Интеграция данных и процесс ETL
Эффективная интеграция данных требует проектирования ETL/ELT-процессов, учитывающих специфику медицинских организаций, где данные обновляются по разным циклам и часто комбинируются с планированием смен и расписанием.
Архитектура интеграции
- Источники данных поступают в слой staging, где выполняются валидирующие и нормализующие преобразования.
- Данные затем загружаются в хранилище данных (DW/DM) через ETL/ELT-пайплайны: устранение дубликатов, приведение кодов подразделений к единым стандартам, консолидация статусов сотрудников.
- В semantic layer и/или витрине BI создаются меры и показатели для аналитики по подразделениям.
- Обеспечивается обратная связь: регламентированные наборы данных обновляются ежемесячно или еженедельно, с возможностью оперативной проверки в случае изменений.
Процессы качества данных и управление данными
Управление качеством данных включает:
- контроль полноты: охват всех подразделений и смен;
- консистентность: единые коды подразделений, должностей и локаций;
- точность: сверка между HRIS и системами учёта времени;
- своевременность: определение холодного/горячего цикла загрузок и SLA на обновление.
Назначение ответственных за данные (data stewards) по каждому критерию: «кто владеет данными», «кто отвечает за качество» и «кто утверждает изменения в справочниках».
Пример архитектуры интеграции
- Источники: HRIS (1С: ЗУП), Payroll-системы, Системы расписания, Системы аттестации.
- Пайплайн: Ingest → Validate → Transform → Load в Dim/Fact → BI semantic layer → Dashboards.
- Инструменты: ETL/ELT-оркестраторы (Airflow, Prefect), СУБД DW (PostgreSQL, Snowflake), BI-платформа (Power BI, Tableau, Looker).
- Безопасность: ACL, маскирование, аудит изменений, разделение сред (dev/test/prod).
Подход к инкрементной загрузке и данным по времени
Для оперативной аналитики и планирования необходимы CDC-подходы (Change Data Capture) и регулярные обновления, чтобы отражать новые наймы, увольнения и смены. В рамках модели по подразделениям применяются две временные оси: реальная (период) и «истинный» момент статуса сотрудника. Это позволяет проводить сравнение по месяцам и по периодам времени без потери учета изменений.
Метрики и расчеты
Эта часть главы раскрывает ключевые метрики и формулы, которые позволяют управлять staffing-процессами в подразделениях медицинской организации. Приведены определения и принципы расчета, а также ориентиры к внедрению в BI-среды.
Основные метрики
- Численность персонала по подразделению (Headcount) - количество активных сотрудников, привязанных к подразделению за выбранный период.
- FTE (Full-Time Equivalent) - эквивалент полной занятости. Обычно рассчитывается как сумма фактически отработанных часов за период, деленная на нормативные часы в периоде (например, 160 часов в месяц на сотрудника полного рабочего дня).
- Уровень вакансий - доля незакрытых вакансий относительно общего спроса на сотрудников в подразделении.
- В turnover-рейт (втечка кадров) - доля увольнений от средней численности за период.
- Coverage ratio - соотношение фактического числа сотрудников к плановым/нормативным требованиям по подразделению.
- Вовлеченность и переработки - доля сверхнорматива и превышение планируемых рабочих часов.
Формулы расчета (пояснения)
- Headcount по подразделению в периоде = число сотрудников, имеющих активный статус на соответствующую дату и закрепленных за подразделением.
- FTE = суммарное количество отработанных часов сотрудников за период, деленное на нормативные часы в периоде (например, 160 часов в месяц), с учетом неполной занятости и стажа.
- Turnover_rate = (число увольнений за период) / (средняя численность за период) × 100%.
- Vacancy_rate = (количество открытых вакансий) / (количество открытых вакансий + количество заполненных позиций) × 100%.
Пример реализации расчета
Ниже приведены упрощенные примеры SQL-запросов, иллюстрирующие расчеты по двум базовым случаям: headcount по подразделениям и turnover rate. Приведенные фрагменты ориентированы на колонку-дополнение и могут потребовать адаптации под конкретную модель данных и СУБД.
-- Пример расчета ежемесячной численности по подразделению
SELECT d.department_id, d.name AS department_name, DATE_TRUNC('month', dt.date) AS month_start,
COUNT(*) AS headcount
## FROM FactHeadcount f
JOIN DimDepartment d ON f.department_id = d.department_id
JOIN DimDate dt ON f.date_id = dt.date_id
## WHERE f.is_active = 1
GROUP BY d.department_id, d.name, month_start
ORDER BY month_start, d.name;
-- Пример расчета turnover rate по подразделениям за год
## SELECT d.name AS department,
SUM(CASE WHEN e.event_type = 'separation' THEN 1 ELSE 0 END) AS separations,
## AVG(h.headcount) AS avg_headcount,
(SUM(CASE WHEN e.event_type = 'separation' THEN 1 ELSE 0 END) / NULLIF(AVG(h.headcount), 0)) * 100 AS turnover_rate
## FROM Events e
JOIN DimDepartment d ON e.department_id = d.department_id
JOIN (SELECT department_id, date_id, COUNT(*) AS headcount
## FROM FactHeadcount
WHERE date_id BETWEEN (SELECT date_id FROM DimDate WHERE date = '2024-01-01')
AND (SELECT date_id FROM DimDate WHERE date = '2024-12-31')
GROUP BY department_id, date_id) h ON e.department_id = h.department_id
GROUP BY d.name;
Аналитика по подразделениям
Результаты расчетов должны быть представлены в понятных дашбордах:
- по подразделениям и по временным периодам (месяц, квартал, год);
- с фокусом на дистанцию и динамику - динамические фильтры по локациям, типу подразделения (стационарное отделение, поликлиника, лаборатория).
- сравнение между фактическими и планируемыми значениями, анализ причин отклонений (привязка к дисциплине и уровню сертификации).
В рамках BI-слоя рекомендуется использовать унифицированную семантику для метрик, чтобы обеспечить сопоставимость между периодами и подразделениями. Важным является наличие «единого источника истины» по подразделениям и должностям, чтобы аналитика не расходилась между сегментами клиники и корпоративной службой.
Реализация в BI-слое
- Семантическая модель должна включать:
- измерения: Date, Department, Staff, Job, Facility;
- меры: headcount, headcount_FTE, separations, hires, hours_worked, vacancies, turnover_rate;
- их атрибутивные свойства: статус сотрудника, тип занятости, смена, локация.
- Визуализация: дашборды для руководителей подразделений и для HR-дминов, с возможностью drill-down по локациям и сменам.
- Безопасность: настройка доступа, чтобы руководитель подразделения видел данные только по своему подразделению; HR-администраторы - агрегированные данные по всей организации.
Примеры реализации
В разделе приведены ориентировочные практические примеры, которые можно адаптировать под конкретную ERP/HRIS-систему и BI-платформу.
-- Пример простого определения базы для headcount по подразделениям -- (PostgreSQL-подход; адаптируйте функции под вашу СУБД) SELECT d.department_id, d.name AS department_name, dt.month AS month_start, COUNT(*) AS headcount ## FROM FactHeadcount f JOIN DimDepartment d ON f.department_id = d.department_id JOIN DimDate dt ON f.date_id = dt.date_id ## WHERE f.is_active = TRUE GROUP BY d.department_id, d.name, dt.month ORDER BY dt.month, d.name;
-- Пример расчета вакансий в разрезе подразделений
## SELECT d.department_id, d.name AS department_name,
SUM(CASE WHEN v.status = 'open' THEN 1 ELSE 0 END) AS open_vacancies,
SUM(CASE WHEN v.status = 'filled' THEN 1 ELSE 0 END) AS filled_positions
## FROM Vacancies v
JOIN DimDepartment d ON v.department_id = d.department_id
GROUP BY d.department_id, d.name;
Key takeaways
- Правильная архитектура данных и единая модель позволяют надёжно агрегировать численность персонала по подразделениям и времени.
- Интеграция источников с учетом безопасности и приватности данных обеспечивает корректную дрейф-связку между HRIS, системами расписания и учёта времени.
- Метрики должны быть понятны управленцам и соответствовать контексту подразделения, фиксируя сокращения, назначение на смены и особенности занятости.
- Внедрение SAP/1С: ЗУП и других систем в рамках унифицированной модели требует согласования кодов подразделений и должностей, а также наличия мастера по данным (data stewardship).
- Эффективность аналитики определяется не только технической архитектурой, но и процессами управления данными: SLA обновления, процедуры качества и аудит.
- Визуализация должна поддерживать drill-down до уровня подразделения и смены, а также обеспечивать сравнение фактического и планируемого статуса.
- Безопасность и приватность должны быть встроены в архитектуру, включая RBAC/ABAC и маскирование PII там, где это требуется.
FAQ
- Какие источники данных критично подключать для анализа численности персонала по подразделениям?
- Важно подключить данные из HRIS/ERP (найм, увольнения, должности), систему расписания и учета времени (смены, часы, переработки), систему Payroll для валидности затрат и занятости, а также регистры сертификации и аттестации для полноты профиля сотрудника. При этом следует минимизировать дублирование и обеспечить единый ключ сотрудника (staff_id) и единый ключ по времени (date_id).
- Как учесть временные особенности персонала и смены, когда сроки найма и увольнения не совпадают с отчетным периодом?
- Важно хранить временные атрибуты статуса сотрудника с временными штампами: hire_date, end_date, status_change_date. Это позволяет пересчитывать headcount за любое произвольное окно времени и корректно отображать смены графиков или статусов между периодами.
- Как обеспечить защиту персональных данных сотрудников в BI-слое?
- Реализуйте RBAC/ABAC, разделение сред (dev/test/prod), маскирование чувствительных полей в представлениях, аудит доступа и журнал изменений. Хранение PII целесообразно ограничить в DW и использовать агрегированные уровни данных для широкой аудитории.
- Как определить точную численность «чистого» персонала по подразделениям?
- Важно использовать активный статус сотрудников на конкретную дату и согласовать правила: например, учитываются люди с действующим контрактом и не учтены временно отсутствующие без расписания. Разделяйте понятия headcount и FTE для точного отражения занятости.
- Как учитывать частичную занятость и сменную работу?
- Включайте в модель DimStaff данные о типе занятости (полная/частичная) и в расчеты FTE - учитывайте фактические часы, отработанные в периоде, по отношению к нормативу. Это позволяет сравнить фактическую занятость с ожидаемой нагрузкой.
- Какие метрики наиболее полезны для руководителя подразделения?
- Headcount и FTE по подразделению и по сменам, вакансия/заполненность, turnover rate, средняя продолжительность занятости, часы переработок. Визуализируйте динамику за период и сравнение с плановым уровнем.
- Как внедрить автоматическое обновление данных в DW и BI-панели?
- Организуйте регулярные ETL/ELT-процессы с SLA на обновление (например, еженедельный refresh), внедрите CDC для HRIS и расписания, настроьте мониторинг качества данных и уведомления об отклонениях. В BI-слое создайте «плоские» представления для быстрого обновления дашбордов.
- Как учитывать распределение персонала по локациям (филиалам) в рамках одной медицинской сети?
- Распределение по DimFacility должно быть частью ключевых ролей в факт-таблицах. Обеспечьте связь между подразделением и локацией, чтобы можно было проводить анализ по филиалам, больницам и поликлиникам, а также по комбинациям «локация-подразделение-должность».
- Что делать, если источники данных несовместимы по кодам подразделений?
- Реализуйте карту конвертации кодов (code mapping) и мастер-данные по подразделениям в DimDepartment. Периодически проводите ревизию соответствий и внедряйте процесс синхронизации между системами, чтобы данные сохраняли сопоставимость.
- Какие риски сопровождают внедрение аналитики численности персонала и как их снижать?
- Риск неверной интерпретации данных, дублирующиеся сотрудники, задержки обновления, недостаточно точные планы по занятости. Снижайте риски через: единый источник истины, контроля качества, строгие процессы обновления, обучение пользователей, понятные определения метрик и автоматическую реконсиляцию между системами.



