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
Правим конфиг /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
Пример /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>: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
Пример /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:
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: 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 с релиза "Юкки" на "Саратов"
Проделать аналогичные шаги как при обновлении Юкки
Шаги по обновлению Lyra3.OR.Server всех последующих релизов аналогичны как при обновлении Юкки
Настройка сборки логов с GERSов
Процесс настройки сборки логов описан в разделе Cookbooks
Для настройки сборщика логов в автоматическом режиме на хост с Lyra3.OR.Server необходимо:
- указать в configMap ключ
remote_journal_collector_enabled: true - выполнить
sudo mvslyra3orctl configure_journal_collector