Модуль взаимодействия с ядром ЛИС: различия между версиями
Sidminik (обсуждение | вклад) |
Sidminik (обсуждение | вклад) |
||
| Строка 105: | Строка 105: | ||
<code>Session.labId</code> идентификатор лаборатории | <code>Session.labId</code> идентификатор лаборатории | ||
==Пространство имен User== | ==Пространство имен <code>User</code>== | ||
<code>User.hasRole()</code> Проверка на то, имеет ли пользователь указанную роль | |||
<code>param: idOrName</code> Идентификатор или имя роли | |||
<code>param: ignoreBanned</code> Игнорирует при рассмотрении заблокированные роли | |||
<code>return: boolean</code> Возвращает <code>true</code>, если пользователь имеет указанную роль, <code>false</code> - если нет | |||
<syntaxhighlight lang="javascript"> | |||
User.hasRole(idOrName: number | string, ignoreBanned?: boolean): boolean; | |||
</syntaxhighlight> | |||
==Пространство имен SecurityStorage== | ==Пространство имен SecurityStorage== | ||
Версия от 04:09, 13 января 2026
Модуль @chemsof/chemic дает доступ к ядру ЛИС из node, по сути являясь оберткой над chemic.dll, обращаясь к его методам через Chemic API. Модуль поделен на пространства имен и классы.
Принятые обозначения в заголовках и оглавлении:
Something(): метод, функция, что-то, что можно вызвать, сигнатура может не совпадать
EXP: Фича с экспериментальной поддержкой
READONLY: свойство только для чтения
Быстрый старт
Установка
Настроить подключение npm-registry из GitLab (для инструкций см. сам репозиторий npm-registry)
После этого для Установка модуля пишем
npm i @chemsoft/chemic
Подключение
Модуль подключается из кода следующим образом:
const chemic = require('@chemsoft/chemic')
Теперь обращаясь к chemic можно взаимодействовать с ядром ЛИС.
Инициализация ядра
Подключение к БД
По умолчанию строка подключения БД считывается из реестра ветки ЛИС (\HKCU\SOFTWARE\НИИ ВН\АРМ «Химик-аналитик»\Connect или аналогичный ключ в HKLM).
Для изменения строки подключение можно передать кастомную через переменную среды CONNECTION_STRING.
Например:
set CONNECTION_STRING=Provider=SQLNCLI11.1;Password=1;User ID=ch_ttg2_barabinsk;Data Source=MSSQL08;Application Name=LISChemic;MARS Connection=True
# Теперь можно запускать скрипт
Пользовательская часть
- По идентификатору
Передача переменных среды
set LIS_USER_ID=777
# Теперь можно запускать скрипт
Установка значений в глобальном объекте
global.LIS_USER_ID = 777;
const chemic = require("@chemsoft/chemic");
- По логину и паролю
При инициализации по логину и паролю существует два варианта аутентификации:
- Прямой (
raw) - в данном случае при аутентификации сверяется только пароль и никакие доп. проверки не осуществляются; - Стандартный (
default) - стандартный способ аутентификации, аналогичный входу в ЛИС через обычный лаунчер.
Передача переменных среды
# Вариант аутентификации
set LIS_CREDENTIAL_INITIALIZE_MODE=raw
# set LIS_CREDENTIAL_INITIALIZE_MODE=raw
# Учетные данные
set LIS_USER_LOGIN=test_user
set LIS_USER_PASSWORD=1
# Пароль также может быть пустым или не указан (эквивалент пустому)
# set LIS_USER_PASSWORD=
# Теперь можно запускать скрипт
Установка значений в глобальном объекте
global.LIS_CREDENTIAL_INITIALIZE_MODE = "default";
global.LIS_USER_LOGIN = "test_user_simple";
global.LIS_USER_PASSWORD = ""; // Пустой пароль
const chemic = require("@chemsoft/chemic");
Пространство имен Session
Пространство имен Session дает доступ к текущей сессии пользователя.
Вложенное пространство имен Session.user
Внутри Session.user хранится информация о пользователе текущей сессии
Session.user.name хранит в себе строку с ФИО пользователя
Session.user.id идентификатор пользователя
Session.user.roles.id идентификатор роли пользователя
Session.user.roles.name название роли
Session.user.roles.banned флаг бана роли
Свойство Session.labId
Session.labId идентификатор лаборатории
Пространство имен User
User.hasRole() Проверка на то, имеет ли пользователь указанную роль
param: idOrName Идентификатор или имя роли
param: ignoreBanned Игнорирует при рассмотрении заблокированные роли
return: boolean Возвращает true, если пользователь имеет указанную роль, false - если нет
User.hasRole(idOrName: number | string, ignoreBanned?: boolean): boolean;