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 необходимо сначала выполнить:
- Установить rabbitmq
- Установить postgresql
- Установить nginx [ todo ] указать адрес файла с сэмплами.
Установка:
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
Начиная с релиза 1.7 (Воронеж) добавлен функционал включения/отключения режима direct-mode на ГМУ(мониторе управления). Для этого введен параметр IsDirectModeDisabled.
Реализация:
При IsDirectModeDisabled: true отключается режим direct-mode на устройстве miniPC. При этом нет небходимости подключения miniPC на Kumo и параметры SdiSwitchOutPort, SdiSwitchInPort можно удалить из конфигурации.
При IsDirectModeDisabled: false сохраняется режим direct-mode на устройстве miniPC. Параметры SdiSwitchOutPort, SdiSwitchInPort по-прежнему необходимы
Начиная с релиза 1.8.0 (Якутск) добавлены допольнительные раскладки для layouts монитора управления. Введен параметр AvailableLayouts.
Реализация:
При IsVirtual: false(по умолчанию) - указывать Layout1x1 LayoutPiP LayoutPaP Layout2x2 Layout1x2 Layout1x3v1 Layout1x3v2 Layout3x3
При IsVirtual: true(с признаком виртуального монитора) - указывать Layout1x1 LayoutPiP Layout2x2
Конфигурируется автоматически при использовании 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:
## 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
- EventType: BroadcastStart
Method: PATCH
#URI: 'https://esc1.demo.mvs/api/indicators/2/off'
URI: '<URL ESC1.Server.API>/api/signalBoard/on'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: BroadcastStop
Method: PATCH
URI: '<URL ESC1.Server.API>/api/indicators/2/off'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: ConferenceStart
Method: PATCH
# URI: 'https://esc1.demo.mvs/api/indicators/3/off'
URI: '<URL ESC1.Server.API>/api/signalBoard/on'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: ConferenceStop
Method: PATCH
URI: '<URL ESC1.Server.API>/api/indicators/3/off'
Headers:
- Type: Authorization
Content: 'Bearer <jwt-token>'
- EventType: BroadcastAndConferenceStop
Method: PATCH
URI: '<URL ESC1.Server.API>/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