Skip to main content
Version: saratov

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

Правим конфиг /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

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

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

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

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

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

Пример /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

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

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

Пример /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(njc)>: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

Пример /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

Пример /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:
PublicKeyPem: |-
-----BEGIN RSA PUBLIC KEY-----
# тот же ключ, что используется на сервере госпитальной платформы – по умолчанию в /var/lib/mvs.lyra3.hp/pki/...pubkey.pem
-----END RSA PUBLIC KEY-----
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

Установить пакет 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: false # Виртуальный монитор trueconf. Отображается лейбл VIRTUAL
SdiSwitchOutPort: 1
SdiSwitchInPort: 1

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

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 с релиза "Юкки" на "Саратов"

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