SISZL-Connector ← К оглавлению

Интеграция

Публичный вход в модуль — фасад SMK::SISZL::Module. Ниже — сценарий использования без описания внутренней реализации. Пример приведён для C++; для Web и WinUI API концептуально тот же, синтаксис и обёртки отличаются.

Подключение

  1. Подключите библиотеку и каталог публичных заголовков к проекту ИС СМО
  2. Заполните конфигурацию: endpoints (при необходимости), clientId, clientSecret, логин/пароль ТУЗ, параметры SSL
  3. Создайте экземпляр модуля и вызовите проверку соединения
  4. Работайте через сервисы информирования и плановых задач

Публичный фасад

namespace SMK::SISZL {

class Module {
public:
    explicit Module(SiszlConfig config);

    bool connect();          // проверка учётных данных (получение токена)

    InformService& inform(); // задачи и результаты информирования
    PlanService& plans();    // плановые мероприятия
    SiszlClient& client();   // низкоуровневый доступ к 5 методам API

    QString lastError() const;
};

}

Типовой сценарий (C++)

SMK::SISZL::Module siszl(config);
if (!siszl.connect())
    return /* обработать siszl.lastError() */;

// 1. Загрузить задачи на информирование
InformTaskFilter filter;
filter.startPeriodDate = QDate(2026, 1, 1);
filter.endPeriodDate   = QDate(2026, 12, 31);
filter.getInformResult = InformResultMode::NONE;

const auto tasks = siszl.inform().downloadTasks(filter);
if (!tasks)
    return /* tasks.error().localizedMessage */;

// 2. Отправить единичный результат
InformResultRequest req;
req.isSmoId = /* UUID 36 символов с дефисами */;
req.resultCode = "1";
req.communicationMethodCode = "1";
req.reactionCode = "APPROVE";
const auto saved = siszl.inform().submitResult(taskId, req);

// 3. Пакет ≤ 25 результатов (в каждой записи — taskId)
const auto report = siszl.inform().submitResults(batch);
if (report && !report->succeeded()) {
    // разобрать report->items[].errors
}

// 4. Плановые мероприятия ДН
const auto planTasks =
    siszl.plans().downloadPlanTasks(EventType::DN, start, end);

Сервисы

InformService

  • Загрузка списка задач (с автообходом страниц)
  • Получение одной задачи по идентификатору
  • Отправка единичного и пакетного результата с ФЛК до HTTP

PlanService

  • Загрузка плановых задач по типу события и периоду

Конфигурация (публичные поля)

Минимально необходимые параметры со стороны заказчика:

  • Учётные данные IAM: client / secret / login / password
  • При необходимости — базовые URL IAM и API (значения по умолчанию соответствуют контуру ФОМС)
  • Флаг использования SSL
  • Путь единичного результата (result по умолчанию)

Потоки и блокирующий API

Методы клиента синхронные. Экземпляр модуля не потокобезопасен: создавайте и используйте его в одном рабочем потоке. Из GUI-потока тяжёлые операции не вызывайте — выносите в фоновый поток (как принято в вашей ИС).

Локальное хранилище

Библиотека не навязывает схему БД. При необходимости кэша задач и outbox результатов вы реализуете внешние порты хранения и подключаете их к своему слою данных. На этапе «только библиотека + хедеры» достаточно работы через API без собственного кэша.

Поведение транспорта (для интегратора)

  • Заголовки: Bearer-токен, Accept: application/hal+json, JSON body
  • При HTTP 401 — обновление токена и один повтор запроса
  • При HTTP 429 — ограниченный повтор
  • Ошибки API возвращаются структурой с HTTP-статусом и текстовым message