Vidicap Cloud

← Guides for technicians

Server links: linking up and down

Связь серверов: подключение сверху и снизу

Серверы Vidicap складываются в дерево. Наверху облако vidicap.cloud. Под ним главный сервер учреждения: только он связан с облаком. Под главным сколько угодно подчинённых серверов: сервер филиала, Vidicap Connect корпуса, сервер другого здания. У подчинённого могут быть свои подчинённые, уровней сколько угодно.

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

Устройства Vidicap Touch 1.0 и 2.0 подключаются к серверу как раньше, здесь для них ничего не меняется.

Что идёт по дереву

Куда Что Где хранится
Вверх, до главного Состояние серверов, сколько у них Vidicap и мониторов, отделения и все точки, в эфире ли точка Копии у сервера выше, оригинал там, где точка создана
Вверх по цепочке, до облака Видео эфира, только пока его смотрят выше Нигде, кроме сервера, к которому подключён Vidicap
Вверх, от главного в облако То же, но только точки, которые главный отметил для облака В облаке только копии, без данных пациентов
Вверх, от подчинённого Connect к серверам больницы Палаты, отмеченные администратором: показатели, тревоги, кривые, ФИО пациента — только пока на сервере выше открыта страница палаты или койки Нигде, кроме Connect, где приняты: выше только в памяти, не дольше 2 минут
Вниз, от облака по цепочке Выпуски для устройств, лицензия учреждения, общее число занятого по лицензии На каждом сервере, как свои выпуски
Не уходит никуда Записи, хранимые показатели HL7, учётные записи и пароли; в облако — никакие данные пациентов Там, где приняты

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

Эфир по цепочке

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

  • Только пока смотрят. Видео идёт вверх, только пока его кто-то смотрит выше: на странице точки, в кооперативной трансляции или на сервере ещё выше. Когда последний зритель закрыл страницу, передача останавливается через полминуты. Канал между корпусами и интернет больницы не заняты, пока никто не смотрит.
  • Первые секунды. Зритель видит «Подключаю эфир с сервера «…»…», пока видео идёт по цепочке: обычно 5–15 секунд, по 5 секунд на уровень.
  • Записи делает только сервер, к которому подключён Vidicap. Выше они не копируются.
  • Нет связи. Если связь между уровнями пропала, эфир у зрителей выше останавливается и возобновляется сам. Внизу эфир и запись не прерываются.
  • Кто смотрит, решает каждый уровень своими правами доступа: точка, пришедшая снизу, закрыта, пока администратор не откроет её.

Зритель на главном сервере ждёт эфир с подчинённого

На странице «Подключение сверху» у точек, видео которых сейчас идёт выше, пометка «эфир передаётся выше».

Для администратора. Видео идёт по SRT с шифрованием, соединение открывает нижний сервер (порт 8890/udp на сервере выше, как для Vidicap). Голос зрителя сверху в операционную по цепочке пока не идёт: голосовая связь работает на том уровне, где подключён Vidicap.

Где это в меню

Сервисное меню сервера больницы (только суперпользователь): «Подключение сверху», «Подключены снизу», «Дерево серверов».

Плитки в «Сервисном меню»

Главный сервер: подключить к облаку

  1. В облаке администратор организации открывает «Организации» → организация → «Локальные серверы» и нажимает «Получить код подключения». Код действует 30 минут и один раз.
  2. На сервере больницы: «Подключение сверху» → «Облако vidicap.cloud», адрес оставить https://vidicap.cloud, ввести код, «Подключить».
  3. В блоке «Сейчас» видно «на связи» и «этот сервер: главный».
  4. Внизу страницы, в «Точки в облаке», отметьте точки, которые должны быть видны в облаке, и нажмите «Сохранить». В списке и свои операционные, и операционные всех подчинённых серверов с пометкой «с сервера …».

«Подключение сверху» на главном сервере

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

Подчинённый сервер: подключить к главному

  1. На главном сервере: «Подключены снизу» → «Выдать новый код». Там же написан адрес этого сервера, например https://vidicap-main.gkb1.local.
  2. На подчинённом сервере: «Подключение сверху» → «Сервер Vidicap в сети больницы», ввести адрес и код, «Подключить».
  3. В блоке «Сейчас» видно «этот сервер: подчинённый» и цепочку «Выше» до облака.
  4. Отмечать точки не нужно: внизу страницы, в «Точки на главном сервере», виден список всего, что получает главный. Какие из них видны в облаке, решает администратор главного.

«Подключены снизу» на главном сервере

«Подключение сверху» на подчинённом сервере

Адрес нужно вводить тот, что показан на странице главного сервера: по нему проверяется его сертификат. Если сервер больницы работает с собственным сертификатом (установка без доменного имени), подчинённый берёт корневой сертификат главного при подключении сам и дальше проверяет главный по нему. Его отпечаток виден в «Сейчас» → «Сертификат сервера выше». Сравнить с главным можно командой на главном сервере:

docker compose exec caddy cat /data/caddy/pki/authorities/local/root.crt | openssl x509 -noout -fingerprint -sha256

Первые 16 знаков после двоеточий должны совпасть.

Отделения и точки подчинённого появляются у главного с пометкой «с сервера …» через несколько секунд. На главном они закрыты, пока администратор не откроет к ним доступ. Для облака главный отмечает их так же, как свои.

Палаты подчинённого Connect на главном сервере

Врачи главного сервера могут смотреть палаты Vidicap Connect другого корпуса или филиала так же, как свои: экран палаты, карточку койки, кривые, тренды, отмечать события. Подробно о самих экранах — в инструкции «Vidicap Connect», раздел «Палаты подчинённых серверов».

  1. На подчинённом сервере с Connect: «Подключение сверху» → блок «Палаты для сервера выше». Отметьте палаты и нажмите «Сохранить». По умолчанию не отмечено ничего.

«Палаты для сервера выше» на подчинённом сервере

  1. На главном сервере отделения этих палат появляются как отделения организации (с тем же названием). Администратор добавляет врачам членство с этим отделением: «Организации» → организация → «Добавить сотрудника», поле «Отделение». Администратор организации видит все палаты.
  2. Врач открывает плитку «Палаты» на главном сервере. Плитка есть и на главном сервере без Connect.

Через несколько уровней. Если между Connect и главным есть ещё сервер, палаты идут через него: на среднем сервере администратор так же отмечает в «Палаты для сервера выше» палаты, полученные снизу (с пометкой «с сервера …»).

Что хранится. На сервере выше хранятся только названия отделений, палат и коек. Показатели, ФИО и кривые идут, только пока страницу кто-то смотрит, держатся в памяти не дольше 2 минут и на диск не пишутся. Отметки событий, сделанные сверху, сохраняются на Connect, где койка, с подписью «ФИО врача, название сервера выше». В облако vidicap.cloud палаты не передаются никогда: подключённый к облаку главный сервер их выше не отдаёт.

Для администратора. Обмен идёт по той же исходящей связи снизу вверх (/api/link/wards), раз в 2 секунды, пока никто не смотрит, и чаще, пока страница открыта. На сервере выше данные держит служба cloudlink (порт 8097 внутри сервера), кривые браузер получает через Caddy по адресу /wave-up/stream. Открывать порты не нужно.

Дерево серверов

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

Дерево серверов на главном

Состояние нижних серверов приходит через серверы между ними. Если сервер не на связи, у всего, что под ним, будет «состояние неизвестно».

В облаке дерево видно в «Локальные серверы» организации, под главным сервером.

Дерево учреждения в облаке

На телефоне и планшете страницы те же:

Дерево серверов на телефоне

У каждого сервера в дереве видна версия его программы, например «версия 2026.10.04 a1b2c3d». Если сервер работает на программе старее, чем тот, где открыто дерево, рядом красная пометка «отстаёт»: обновите его (на сервере с автообновлением это происходит само в течение 5 минут после выхода).

Версии серверов: филиал отстаёт

Выпуски для устройств сверху

Новые выпуски программ Vidicap Touch 1.0 и 2.0, доп. модулей и моделей ИИ загружают один раз в облако. Дальше они идут сами по дереву: главный сервер скачивает их из облака, подчинённый с главного, и так до самого нижнего. Серверу больницы не нужны ни интернет, ни GitHub, только связь с уровнем выше.

  1. Сервер скачивает выпуск, сверяет контрольную сумму и добавляет его в «Выпуски для устройств» с пометкой «сверху».
  2. По умолчанию выпуск сразу доступен своим Vidicap и серверам ниже. Чтобы сначала проверить его самим, снимите галочку «Публиковать новые выпуски сверху сразу» в карточке «Выпуски сверху»: тогда выпуск ждёт кнопки «Сделать доступным».
  3. Перед установкой устройство всё равно спрашивает человека, как и раньше.
  4. Если выпуск скрыли в облаке, он скрывается и ниже. «Критическое» и «Что нового» тоже следуют за облаком.

Пока выпуск скачивается, в карточке видно «Скачивается … %». Если скачать не удалось, там же причина; новая попытка через 10 минут.

Карточка «Выпуски сверху» на сервере больницы

Сами программы серверов по дереву пока не передаются: их обновляет автообновление каждого сервера, а дерево показывает, кто отстаёт.

Лицензия учреждения

Лицензию выдаёт поставщик Vidicap (администратор платформы) в облаке: «Организации» → организация → «Лицензия». В ней по строкам:

Строка Что считается
Vidicap (устройства) подключённые Vidicap Touch 1.0 и 2.0 во всём учреждении
Каждый доп. модуль и ИИ устройства, на которых этот модуль стоит
Vidicap Connect: мониторы мониторы, привязанные к койкам

У каждой строки своё число (пусто — без ограничения) и свой срок.

Выдача лицензии в облаке

Лицензия подписывается ключом облака и идёт вниз по дереву без изменений: сервер в середине может передать её дальше, но не может изменить. Количество считается по всему учреждению: каждый сервер сообщает выше, сколько занято у него и ниже, главный складывает и сообщает итог вниз.

На каждом сервере учреждения: «Сервисное меню» → «Лицензия».

Лицензия на сервере больницы

На телефоне срок каждой строки показан под ней:

Лицензия на телефоне

Правило: лицензия никогда не выключает то, что уже работает. Когда строка закончилась или всё занято, нельзя только добавить ещё:

  • подключить новый Vidicap (на устройстве появится «По лицензии «Vidicap (устройства)» не больше N, все заняты»);
  • поставить модуль на устройство, где его нет (модуль не предлагается; где он уже стоит, обновления приходят);
  • привязать монитор к койке сверх числа.

За 30 дней до конца строки на странице «Лицензия» появляется предупреждение, а на плитке число таких строк. Показатели HL7, эфиры, записи и уже подключённые устройства не останавливаются никогда.

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

Общая модель ИИ (Connect)

Доп. модуль «ИИ: оценка состояния» Vidicap Connect раз в месяц присылает в облако по той же связи либо веса своей модели (федеративно), либо обезличенные эпизоды — что именно, выбирает администратор больницы (см. «Vidicap Connect» → «Общее обучение через vidicap.cloud»). Ничего о пациентах в присланном нет: веса с цифрами за месяц, или входы модели по точкам под случайными номерами без койки, отделения и дат точнее месяца; файлы эпизодов лежат в aidata/connect-episodes/ без имени сервера.

В облаке: «Сервисное меню» → «Общая модель ИИ (Connect)» (администратор платформы). Таблица версий: «common-ГГГГ.ММ» собирается 2-го числа каждого месяца из весов за прошлый месяц (среднее по больницам, вес каждой — число её положительных примеров; делает служба cloud_link, вручную — «Собрать сейчас» или manage.py ai_common_build --month ГГГГ-ММ), с числом серверов и оценок. Кнопка «Опубликовать»: с этого момента версия уходит на все серверы больниц при следующей связи и у каждой сначала идёт в тень на неделю, включается она там по тем же правилам, что дообучение на больнице (или вручную). Опубликованную версию пересобрать нельзя; следующий месяц даёт следующую. Ниже — «Присланное серверами»: когда, какой сервер, веса или эпизоды, месяц, версия модели больницы, оценок, AUROC, размер.

Уведомления врачам Connect через облако

Сервер Connect без выхода в интернет отправляет уведомления дежурным врачам (Telegram и push в приложении Vidicap ICU) через облако: администратор Connect выбирает канал «Общий бот Vidicap через vidicap.cloud» на странице «Уведомления в Telegram» (см. «Vidicap Connect» → «Уведомления через vidicap.cloud»). В каждом обмене связи сервер передаёт готовые сообщения (отделение, палата, койка, событие, кнопки, чат или подписка push — без данных пациента), облако тут же отправляет их общим ботом (VIDICAP_TELEGRAM_BOT_TOKEN облака, тот же, что для сообщений об ошибках) или по Web Push со своими ключами и возвращает серверу нажатия врачей («Принял», отметки, коды привязки). Общий бот опрашивает Telegram в службе cloud_link облака; код врача a1b2c3-123456 находит сервер больницы по первым буквам его номера, нажатие в чате — по тому, какой сервер в этот чат писал.

В облаке не хранится ни одного текста: только счётчики по серверу за день и привязка «чат → сервер». Их видно в «Локальные серверы» организации под каждым сервером: «Уведомления через облако: сегодня отправлено N, не доставлено M; чатов Telegram K».

Перенести сервер на другое место в дереве

Когда учреждение растёт, бывший главный сервер может стать подчинённым нового главного (или подчинённый перейти к другому серверу).

  1. На новом месте выдайте код: «Подключены снизу» → «Выдать новый код».
  2. На переносимом сервере: «Подключение сверху» → «Сервер Vidicap в сети больницы», адрес и код, «Подключить». Предупреждение напоминает, что прежнее подключение будет закрыто.
  3. Новое подключение создаётся первым. Если код или адрес неверны, всё остаётся как было.
  4. Всё, что подключено к переносимому серверу снизу, остаётся с ним и переезжает вместе с ним. Устройства и данные остаются на месте, перенастраивать их не нужно.

Перенос: главный сервер подключается к новому главному

Что сохраняется при переносе

Каждая операционная и каждое отделение помнят, на каком сервере они созданы. По этому номеру серверы выше узнают их после переноса и продолжают ту же карточку, а не заводят новую.

Что Перенос внутри учреждения Перенос в другое учреждение
Журнал просмотров и чата продолжается остаётся в архиве у прежнего
Кто видит, владельцы, гостевые ссылки сохраняются новые, закрыто по умолчанию
Архив эфиров в облаке сохраняется остаётся у прежнего
Кооперативные трансляции (комнаты) точка остаётся в комнате не попадает
Членства врачей в отделениях сохраняются новые
Отметки «в облаке» переходят к новому главному —

В журнале операционной на уровнях выше появляется строка «операционная перенесена на другое место в дереве серверов» с прежним и новым сервером.

Строка о переносе в журнале операционной

Главный становится подчинённым. Его отметки «в облаке» переходят к новому главному: в облаке ничего не пропадает. Новый главный видит эти точки отмеченными в «Точки в облаке» и может снять любую.

Несколько секунд. Пока старый путь ещё передаёт точку (прежний сервер выше не узнал об отключении), новый путь её не забирает. Обычно это не дольше 5–10 секунд. Если прежний сервер выше не на связи, карточка переходит сразу.

Данные пациентов при переносе никуда не двигаются: они остаются там, где приняты.

«Ни к чему» отключает сервер от уровня выше. Здесь всё продолжает работать, точки выше уходят в архив вместе с журналом.

Защита от петли

У каждого сервера постоянный номер, он не меняется при переносе. Сервер не даст подключить себя к самому себе или к серверу из своей ветки: появится «Нельзя подключить: этот сервер уже выше в дереве, получилась бы петля». Если петля всё же возникнет (например, два администратора перенесли серверы одновременно), обмен останавливается с ошибкой «петля», пока один из серверов не подключат к другому месту.

Неполадки

Что видно Что сделать
«Неверный или просроченный код» Код действует 30 минут и один раз: выдайте новый.
«нет связи: …» при подключении к серверу Проверьте адрес (как на странице «Подключены снизу» главного), что главный открывается в браузере с подчинённого, порт 443 в сети больницы.
Ошибка сертификата Адрес должен совпадать с именем главного сервера (VIDICAP_PUBLIC_HOST), не IP-адрес.
«нет связи» у сервера в «Подключены снизу» Подчинённый сервер выключен или его сеть недоступна. Его работа внутри здания не зависит от связи с главным.
«Уровень выше больше не принимает этот сервер» Сервер отключили сверху. Подключите его заново по новому коду.
Зритель выше долго видит «Подключаю эфир с сервера …» Если смотрят в облаке: точка отмечена на главном в «Точки в облаке»? Порт 8890/udp открыт на каждом сервере выше? В «Подключение сверху» нижнего сервера у точки должна появиться пометка «эфир передаётся выше».
Врач главного сервера не видит палату Connect На Connect палата отмечена в «Палаты для сервера выше»? Врачу добавлено членство с этим отделением на главном? Палаты появляются через несколько секунд после сохранения.
«Не удалось скачать …» в «Выпуски сверху» Проверьте связь с уровнем выше («Подключение сверху») и место на диске. Попытка повторяется сама через 10 минут.
«подпись не совпала: лицензия не действует» Лицензия пришла не из облака этого учреждения. Ограничений нет; обратитесь к поставщику Vidicap.
«Нет связи с сервером …» на экране палаты Подчинённый сервер не на связи: проверьте его в «Подключены снизу». Показатели не показываются, пока связь не вернётся; на самом Connect всё работает.

← SIP video calls from the operating room (add-on module) Video routing (add-on module, FSN IPS4000) →