Журнал аудита — это реестр событий учреждения: кто, что, над какой записью и когда сделал. Он является основанием подотчётности по ст. 5(2) GDPR и первым документом, к которому обращаются при проверке или подозрении на злоупотребление.
Записи создаются автоматически, в слое между запросом и базой — они не зависят от того, помнил ли о них автор кода. В приложении нет пути, который изменяет или удаляет отдельную запись; единственный механизм удаления — плановое задание, описанное ниже.
Что записывается
Каждая запись несёт:
- кто — идентификатор пользователя,
- в каком учреждении — поле, разделяющее арендаторов, присутствует всегда,
- какое действие — из закрытого словаря на несколько сотен позиций; в интерфейсе видны их локализованные названия, например Создано, Просмотрено, Экспортировано, Отправлено в KSeF, Начата сессия AI Scribe,
- над чем — тип объекта и его идентификатор,
- чьи данные просмотрены — отдельный столбец, указывающий на пациента, в том числе когда действие касалось заметки или визита,
- подробности — вложение в формате JSON, пропущенное через редактирование, чтобы PESEL или адрес электронной почты не утекли в реестр,
- сетевой отпечаток и отпечаток клиента — криптографические свёртки места, откуда пришёл запрос, и браузера, который его отправил,
- отметку времени.
События чтения записываются пакетно и без сетевого отпечатка и отпечатка клиента — эти данные мы собираем только при изменениях, чтобы не нагружать чтение. Изменения записываются немедленно, чтобы сбой процесса не оборвал след.
Как это сделать
Журнал открывается по адресу /audit, в навигации как Журнал аудита. Фильтры: Диапазон дат (с готовыми диапазонами от Сегодня до Последние 90 дней), Пользователь, Тип действия, Тип объекта и ID записи. Щелчок по строке разворачивает подробности.
Кнопка Экспортировать отдаёт результат как CSV или JSON — с учётом установленных фильтров. Экспорт сам является событием и оставляет запись в журнале.
Когда что-то не работает
Просматривать журнал аудита могут только владельцы и администраторы клиники.
Что это значит: У вошедшего лица нет в этом учреждении роли владельца или администратора.
Нет событий аудита, соответствующих выбранным фильтрам
Что это значит: Диапазон дат, пользователь или тип действия сужают результат до нуля.
Нет записей для экспорта
Что это значит: Экспорт наследует фильтры из представления, а они не возвращают ни одной строки.
У кого есть доступ
Журнал читают исключительно владелец и администратор учреждения. Сегодня нет роли «только чтение журнала» для внешнего аудитора — аудитору передают экспорт.
Реестр является общей таблицей для всех учреждений, но каждый запрос из слоя приложения сужается до активного учреждения, а членство в нём проверяется перед процедурой. Человек, работающий в двух учреждениях, видит в каждом только его события. Границу держат отдельное правило линтера и несколько храповиков, запускаемых при каждом изменении кода.
Как долго живут записи
Ежедневное задание удаляет записи старше срока, установленного в Настройки → GDPR и приватность → Хранение журнала аудита (по умолчанию 20 лет). Эта настройка относится только к журналу — не к медицинской документации и не к данным пациентов; автоматическое удаление данных пациентов в Heltio не включено. До 2026-08-24 подпись в интерфейсе говорила иное. Расчётные, финансовые записи и записи о правах пациента из этого исключены и остаются независимо от настройки. Полный перечень исключений: Политика хранения.