Skip to main content
Version: yakutsk11

Lyra3.OR.Server

Установка Lyra3.OR.Server

Выполнить подключение репозиториев MVS

Автоматическая установка Lyra3.OR.Server

yum install mvs-lyra3-or-server –y

Заполнить параметры файла автоконфигурации (configMap): /etc/mvs.lyra3.or/options.yml

Запустить скрипт конфигурирования OR:

mvslyra3orctl setup

Проверить статус сервисов OR:

systemctl status Lyra3.OR.*

Ручная установка Lyra3.OR.Server

Перед установкой Lyra3.OR.Server необходимо сначала выполнить:

Установка:

yum install -y mvs-lyra3-or-server-api mvs-lyra3-or-database

Создаём директорию для скриншотов:

mkdir /var/lib/mvs.lyra3.or/server/snapshots
chown -R mvsservice: /var/lib/mvs.lyra3.or/server/snapshots

Импорт схемы БД postgres: [ todo ] путь к скрипту загрузки базы

Начиная с релиза Саратов добавлять параметры старта и зависимости в unit OR не явялется обязательным. Подробнее в блоке Releases

Редактируем systemd unit:

systemctl edit Lyra3.OR.Server.API.service

[Service]
Restart=always
RestartSec=30s

Тогда настройки не потеряются при обновлении. Кроме того, если сервер rabbitmq находится на одной машине с сервером операционной, можно сделать такой override:

[Unit]
Wants=network.target network-online.target rabbitmq-server.service
After=network.target network-online.target rabbitmq-server.service

Конфигурации Lyra3.OR.Server.API

Lyra3.OR.Server.API.yml

Пример /etc/mvs.lyra3.or/Lyra3.OR.Server.API.yml:

LoggerOptions:
# Trace | Debug | Information | Warning | Error | Critical | None
LogLevel: Information
# Verbose | Full | Short | Tiny | Systemd
LogFormat: systemd
#UseColors: false

ListenOptions:
PublicEndpoints:
- 192.168.66.2:3319 # Адрес во внутренней сети.

RequestLoggerOptions:
#LogRequests: false
#RequestLogRecordLayout: ":timestamp :method :url :status :responseTime";

SceneOptions:
MonitorsConfigFilePath: "/etc/mvs.lyra3.or/monitors.yml"
GersesConfigFilePath: "/etc/mvs.lyra3.or/gerses.yml"
SdiSwitchOutputMapFilePath: "/etc/mvs.lyra3.or/sdiswitchoutputmap.yml"
InfopanelsConfigFilePath: "/etc/mvs.lyra3.or/infopanels.yml"
PtzCamsConfigFilePath: "/etc/mvs.lyra3.or/ptzcams.yml"

EventsPropagationOptions:
## Patch to yaml file with events propagation service options
EventsPropagationConfigFilePath: '/etc/mvs.lyra3.or/eventspropagation.yml'

EventsHandlingOptions:
## Patch to yaml file with events handling service options
EventsHandlingConfigFilePath: '/etc/mvs.lyra3.or/events_handling.yml'

RabbitMQOptions:
ConnectionURI: "amqp://<login>:<password>@127.0.0.1:5672/"

PostgresOptions:
ConnectionString: "Username=<postgres_user>;Password=<postgres_password>;Host=<postgres_address>;Port=5432;Database=<database_name>;Pooling=true;"

# Surgery snapshot options
SnapshotOptions:
## Defines the path to the directory in which snapshots will be saved.
StoragePath: "/var/lib/mvs.lyra3.or/server/snapshots" # Путь к хранилищу снапшотов. Используется в конфигурации nginx для предоставления доступа к снапшотам
## Defines interval in seconds between automatic snapshots.
# AutoSnapshotInterval: 10

PacsOptions:
## Pacs service connection information as a string of Uri (http://127.0.0.1:1234)
# ConnectionString: "http://127.0.0.1:3020"
## Pacs configuration flag
# IsPacsConfigured: false # or true

HospitalPlatformOptions:
HpKey: <hospital_platform_key>
## Здесь и далее - http://<address>:<port> как это указано в поле URL соотвествующих компонентов в lyra3.hp.master
CoreApiUri: <uri_to_connect_to_core_app>
AuthApiUri: <uri_to_connect_to_auth_app>
StreamerApiUri: <uri_to_connect_to_streamer_app>
JumboApiUri: <uri_to_connect_to_jumbo_app>
PackhausApiUri: <uri_to_connect_to_packhaus_app>

SurgeryOptions:
## Actual surgery keep alive period in milliseconds Range(500,5000).
## Normally must be 1/2 of keep alive period in Core.API to avoid random disconnecting.
ActualSurgeryKeepAlivePeriod: 2500
## Maximum surgery time after that sugrery will be stopped in minutes. Default 360 (6 hours).
MaximumSurgeryTime: 360
## Path where usb drive will be mounted
UsbCopyPath: /dev/null
## If this operating room has no sources the flag should be set to false. Default: true ### Since: orenburg
HasSources: true

TrueConfServiceOptions:
## Websocket uri for connection to true conf include protocol::{ip/hostname}:port/anyRoute
WebsocketUri: ws://<trueconfroom_websocket(host:port)> ## Need websocket proxy if free version of trueconfroom is used.
## Password or token or pin code
Credentials: <trueconf_password> ## admin password configured at trueconf room page

LocalizationOptions:
SupportedLanguage: en:ru:fr:be
CurrentLanguage: ru

CleaningOptions:
##Options not required. Default: 15 and 10 min
#IntensiveDefaultDuration: 15
#RegularDefaultDuration: 10

Автозапуск сервиса:

systemctl enable --now Lyra.OR.Server.API.service

monitors.yml

***New Parameter in configuration monitors.yml ***

Начиная с релиза 1.7 (Воронеж) добавлен функционал включения/отключения режима direct-mode на ГМУ(мониторе управления). Для этого введен параметр IsDirectModeDisabled.

Реализация:

При IsDirectModeDisabled: true отключается режим direct-mode на устройстве miniPC. При этом нет небходимости подключения miniPC на Kumo и параметры SdiSwitchOutPort, SdiSwitchInPort можно удалить из конфигурации.

При IsDirectModeDisabled: false сохраняется режим direct-mode на устройстве miniPC. Параметры SdiSwitchOutPort, SdiSwitchInPort по-прежнему необходимы

New Parameter in configuration monitors.yml

Начиная с релиза 1.8.0 (Якутск) добавлены допольнительные раскладки для layouts монитора управления. Введен параметр AvailableLayouts.

Реализация:

При IsVirtual: false(по умолчанию) - указывать Layout1x1 LayoutPiP LayoutPaP Layout2x2 Layout1x2 Layout1x3v1 Layout1x3v2 Layout3x3

При IsVirtual: true(с признаком виртуального монитора) - указывать Layout1x1 LayoutPiP Layout2x2

Add in release 1.8.0

Конфигурируется автоматически при использовании mvslyra3orctl reconfigure

:::

Пример /etc/mvs.lyra3.or/monitors.yml:

Monitors:
- MonitorId: tap1
Title: "Монитор управления 1"
Width: 1350
Height: 900
Is3D: False
Is4K: False
IsTouch: true # для мониторов управления
IsVirtual: false
IsDirectModeDisabled: true
AvailableLayouts:
- Layout1x1
- LayoutPiP
- LayoutPaP
- Layout1x2
- Layout2x2
- Layout1x3v1
- Layout1x3v2
- Layout3x3
- MonitorId: tap2
Title: "Обзорный монитор 4K"
Width: 3840
Height: 2160
Is3D: False
Is4K: True
IsTouch: false
IsVirtual: true
SdiSwitchOutPort: 15
SdiSwitchInPort: 15
IsDirectModeDisabled: false
AvailableLayouts:
- Layout1x1
- LayoutPiP
- Layout2x2

gerses.yml

Пример /etc/mvs.lyra3.or/gerses.yml:

GERSes:
- GersId: gers0 # Должен соответствовать GERS_ID в настрйках соответствующего герса
Address: 192.168.66.20 # адрес GERS
Port: 3320 # порт герса (значение по умолчанию)
PortsCount: 16
- GersId: gers1
Address: 192.168.66.21
Port: 3320
PortsCount: 16
- GersId: gers2

sdiswitchoutputmap.yml

Пример /etc/mvs.lyra3.or/sdiswitchoutputmap.yml:

Карта сопоставления каналов на ГЕРС с входами-выходами КУМО (Статическая конфигурация источников)

GersesToSdiSwitchMap:
- GersId: gers0
LinesMap:
- GersInputLine: 0
IsConferenceLine: False # если true, то сервер операционной выключает этот порт, пока не стартовала конференция openvidu.
SdiSwitchOutPort: 1
SdiSwitchInPort: 1
IsTrueConfLine: False # если true, то сервер операционной выключает этот порт, пока не стартовала конференция или вызов по trueconf.

Карта сопоставления каналов на ГЕРС с входами-выходами КУМО (Динамическая конфигурация источников)

Особенности коммутации и настройки
  • GersInputLine должны быть по порядку от 0 до 3 сверху вниз
  • SdiSwitchOutPort должны подключаться на KUMO на первые четыре выхода (это важно для правильной работы)
Новая секция при реализации динамического переключения источников

Начиная с релиза 1.7 (Воронеж) добавлен функционал динамического переключения желаемых источников для записи на ГМУ(мониторе управления). Для этого введен параметр IsConfiguredDynamically и секция SdiSwitchDynamicConfigurationOptions которая отвечает за настройку, если значение IsConfiguredDynamically == false - секция игнорируется. Количество возможных источников по количеству входов на коммутаторе KUMO.

GersesToSdiSwitchMap:
- GersId: gers1
LinesMap:
- GersInputLine: 0
SdiSwitchOutPort: 2
SdiSwitchInPort: 2
IsConferenceLine: False
IsTrueConfLine: false
- GersInputLine: 1
SdiSwitchOutPort: 4
SdiSwitchInPort: 4
IsConferenceLine: False
IsTrueConfLine: False
- GersInputLine: 2
SdiSwitchOutPort: 3
SdiSwitchInPort: 3
IsConferenceLine: False
IsTrueConfLine: true # если true, то сервер операционной выключает этот порт, пока не стартовала конференция или вызов по trueconf.
- GersInputLine: 3
SdiSwitchOutPort: 1
SdiSwitchInPort: 1
IsConferenceLine: true # если true, то сервер операционной выключает этот порт, пока не стартовала конференция openvidu.
IsTrueConfLine: False

SdiSwitchDynamicConfigurationOptions:
IsConfiguredDynamically: true
Devices:
- Id: 13
Name: orange_3_kumo3
IsPinned: false
- Id: 2
Name: gers1_device_kumo2
IsPinned: false
- Id: 4
Name: gers1_device_kumo4
IsPinned: false
- Id: 6
Name: orange_1_kumo6
IsPinned: false
- Id: 8
Name: orange_2_kumo8
IsPinned: false
- Id: 1
Name: gers1_Conference_kumo1
IsPinned: true ## use value 'true' for channels Conference or TrueConf
- Id: 3
Name: gers1_Trueconf_kumo3
IsPinned: true ## use value 'true' for channels Conference or TrueConf

infopanels.yml

Пример /etc/mvs.lyra3.or/infopanels.yml:

InfopanelsDataSource:
## Engineering state API. Must be valid URI, like as "http://192.168.2.112:3000/api/environment/state", or empty string if not used
EsStateApi: "http://<ESC1.Server.Address>:3012/api/environment/state"
## Engineering state exchange name. Valid exchange name or empty string, if not used
EsStateExchange: "EngineeringSystemEnvironmentStateExchange"
Infopanels:
- InfopanelId: oproomInf1
IsIntercomResponder: true
RowsNumber: 2
ColumnsNUmber: 2
Widgets:
- Type: Clock
Position:
Top: 1
Left: 1
Width: 1
Height: 1
- Type: Surgery
Position:
Top: 2
Left: 1
Width: 1
Height: 1
- Type: Temperature
Position:
Top: 1
Left: 2
Width: 1
Height: 1
- Type: Timers
Position:
Top: 2
Left: 2
Width: 1
Height: 1
- Type: CleaningRequired
Position:
Top: 2
Left: 1
Width: 1
Height: 1
- Type: CurrentCleaning
Position:
Top: 2
Left: 1
Width: 1
Height: 1
- Type: CurrentCleaningProgress
Position:
Top: 2
Left: 2
Width: 1
Height: 1

ptzcams.yml

Пример /etc/mvs.lyra3.or/ptzcams.yml:

## Uri: e.g. http://192.168.0.1
## Type: Axis | CleverMic
## UserName, Password: credential for Axis. For CleverMic - any string, e.g. login/password
## MoveSpeed, ZoomSpeed: 1 - 100 move/zoom speed value

PtzCams:
- SdiSwitchInPort: 1
Uri: "http://<адрес камеры>"
UserName: "admin"
Password: "admin"
MoveSpeed: 50
ZoomSpeed: 50
Type: CleverMic

eventspropagation.yml

Пример /etc/mvs.lyra3.or/eventspropagation.yml:

с релиза 1.8.0-yakutsk11 дополнения к событиям SurgeryStart

Реализация: Если при заполнении в конфигурации события для SurgeryStart указать все индикаторы (1 = Не входить, 2 = Лазер, 3 = Рентген), то при старте операции на инженерном мониторе и соответствующих табло активизируются все индикации.

"Не входить"
EventType: SurgeryStart => api/indicators/1/on
EventType: SurgeryStart => api/indicators/1/off

"Лазер"
EventType: SurgeryStart => api/indicators/2/on
EventType: SurgeryStart => api/indicators/2/off

"Рентген"
EventType: SurgeryStart => api/indicators/3/on
EventType: SurgeryStart => api/indicators/3/off
From release 1.8.0-yakutsk11

Конфигурируется вручную добавлением секций(раскомментирование) или mvslyra3orctl reconfigure.

:::

## Valid EventType's: SurgeryStart | SurgeryStop | BroadcastStart | BroadcastStop | ConferenceStart | ConferenceStop
Webhooks:
# _____________________________________________________________________________________________________________________
# There are two way to on/off some board:
#
# first: configure URI: <esc1-server-uri>/api/indicators/<indicator_id>/{on|off} to on/off 'indicator' in ESC1.Server.API;
# second: configure URI: <esc1-server-uri>/api/signalBoard/{on|off} to on/off 'signal board' in ESC1.Server.API.
#
# Note: 'signal board' is color-controlled indicator
# ______________________________________________________________________________________________________________________
############## from release yakutsk11 for SurgeryStart you can switch on/off from one to three indicators

- EventType: SurgeryStart
Method: PATCH
URI: 'http://127.0.0.1:3012/api/indicators/1/on'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: SurgeryStop
Method: PATCH
URI: 'http://127.0.0.1:3012/api/indicators/1/off'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: SurgeryStart
Method: PATCH
URI: 'http://127.0.0.1:3012/api/indicators/2/on'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: SurgeryStop
Method: PATCH
URI: 'http://127.0.0.1:3012/api/indicators/2/off'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: SurgeryStart
Method: PATCH
URI: 'http://127.0.0.1:3012/api/indicators/3/on'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: SurgeryStop
Method: PATCH
URI: 'http://127.0.0.1:3012/api/indicators/3/off'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'

################
- EventType: BroadcastStart
Method: PATCH
URI: 'http://127.0.0.1:3012/api/signalBoard/on'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: BroadcastStop
Method: PATCH
URI: 'http://127.0.0.1:3012/api/indicators/2/off'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: ConferenceStart
Method: PATCH
URI: 'http://127.0.0.1:3012/api/signalBoard/on'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: ConferenceStop
Method: PATCH
URI: 'http://127.0.0.1:3012/api/indicators/3/off'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: BroadcastAndConferenceStop
Method: PATCH
URI: 'http://127.0.0.1:3012/api/signalBoard/off'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'

JWT токен получаем в мастере ESC1 /etc/mvs.lyra3.or/events_handling.yml:

## Valid EventType's: PedalEvent
EventsMapping:
- EventName: PedalPressed
EventHandler: StartStopClip

Настройка Lyra3.OR.Control.API

Control.API - функционал управления камерами PTZ через Streamer.

yum install -y mvs-lyra3-or-control-api

Редактируем:

vim /etc/mvs.lyra3.or/Lyra3.OR.Control.API.yml

Пример файла конфигурации /etc/mvs.lyra3.or/Lyra3.OR.Control.API.yml:

LoggerOptions:
# Trace | Debug | Information | Warning | Error | Critical | None
LogLevel: Trace
# Verbose | Full | Short | Tiny | Systemd
LogFormat: Systemd
#UseColors: false

ListenOptions:
DmzEndpoints:
- 0.0.0.0:3336
PublicEndpoints:
- 0.0.0.0:3337

PublicKeyRepositoryOptions:
PublicKeyPemFilePath: <full_path_to_public_key> # тот же ключ, что используется на сервере госпитальной платформы – по умолчанию в /var/lib/mvs.lyra3.hp/pki/hp.publickey.pem

LyraORServerOptions:
# '<value, like as 'http://server.url:port/', must be specified>'
Uri: 'http://127.0.0.1:3319'

Запуск службы:

systemctl enable --now Lyra3.OR.Control.API.service

Настроить Firewall:

firewall-cmd --zone=external --add-port=3336/tcp --permanent
firewall-cmd --reload

Обновление Lyra3.OR.Server

Обновление Lyra3.OR.Server с релиза "Нижневартовск" на "Юкки"

Подключить репозитории релиза Юкки.

Автоматическое обновление Lyra3.OR.Server

Установить пакет mvs-lyra3-or-server:

apt install mvs-lyra3-or-server

Обновить базу данных с помощью команды:

sudo mvslyra3orctl updatedb

Запустить утилиту проверки конфигурации:

sudo mvslyra3orctl checkconfig

Emulating config changes:
Performing configuration checks...
Lyra3.OR.Server.TrueConfWebsocketUri has default value. You need to specify it in /etc/mvs.lyra3.or/options.yml to change value.
Lyra3.OR.Server.TrueConfWebsocketCredentials has default value. You need to specify it in /etc/mvs.lyra3.or/options.yml to change value.
Lyra3.OR.Locale has default value. You need to specify it in /etc/mvs.lyra3.or/options.yml to change value.
One or more Lyra3.OR.Monitors .isVirtual parameters is not defined. You need to specify it in /etc/mvs.lyra3.or/options.yml to change value.
One or more Lyra3.OR.GERSes[].LinesMap[] .IsTrueConfLine parameters is not defined. You need to specify it in /etc/mvs.lyra3.or/options.yml to change value.

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

Добавить необходимые параметры и выполнить команду:

sudo mvslyra3orctl reconfigure

Ручное обновление Lyra3.OR.Server

Установить пакет mvs-lyra3-or-server-api:

apt install mvs-lyra3-or-server-api

Обновить конфигурации: /etc/mvs.lyra3.or/Lyra3.OR.Server.API.yml


TrueConfServiceOptions:
WebsocketUri: <ws_uri> ## Websocket uri for connection to true conf include protocol::{ip/hostname}:port/anyRoute like ws://1.2.3.4:8765
## Password or token or pin code
Credentials: <password|token|pin> ## Password or token or pin code

LocalizationOptions:
SupportedLanguage: en:ru:fr:be
CurrentLanguage: ru

/etc/mvs.lyra3.or/sdiswitchoutputmap.yml:

GersesToSdiSwitchMap:
- GersId: GersOne
LinesMap:
- GersInputLine: 0
IsConferenceLine: false
IsTrueConfLine: false ## новый параметр, действует по аналогии с IsConferenceLine
SdiSwitchOutPort: 1
SdiSwitchInPort: 1
...

/etc/mvs.lyra3.or/monitors.yml:


Monitors:
- MonitorId: MonitorOne
Title: "Human readable info"
Width: 1024
Height: 786
Is3D: false
Is4K: false
IsTouch: true
IsVirtual: true # Виртуальный монитор trueconf. Отображается лейбл VIRTUAL
SdiSwitchOutPort: 1
SdiSwitchInPort: 1
IsDirectModeDisabled: true
AvailableLayouts:
- Layout1x1
- LayoutPiP
- Layout2x2

Обновить базу данных:

sudo -u postgres psql
\c <or.database>

ALTER TABLE doctors_history ALTER COLUMN name TYPE varchar(386);
ALTER TABLE patients_history ALTER COLUMN name TYPE varchar(386);
ALTER TABLE operating_rooms_history ALTER COLUMN name TYPE varchar(386);

Обновление Lyra3.OR.Server с релиза "Нижневартовск" на "Саратов"

Проделать аналогичные шаги как при обновлении Юкки

Обновление Lyra3.OR.Server с релиза "Юкки" на "Саратов"

Проделать аналогичные шаги как при обновлении Юкки

Шаги по обновлению Lyra3.OR.Server всех последующих релизов аналогичны как при обновлении Юкки

Настройка сборки логов с GERSов

Процесс настройки сборки логов описан в разделе Cookbooks

Для настройки сборщика логов в автоматическом режиме на хост с Lyra3.OR.Server необходимо:

  • указать в configMap ключ remote_journal_collector_enabled: true
  • выполнить sudo mvslyra3orctl configure_journal_collector