Маршрутизатор триажа Matrix ночного режима для мэрии

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Контекст
распределяет пациентов по тяжести и госпиталям держит ночные смены в курсе каждой секунды решение держит городской ситуационный центр.

Функциональность
  • отслеживает степень тяжести для узла медицинского триажа ночного контура и наносит данные на ночную сетку Watcher
  • управляет браслеты Matrix через панель Lifeline без задержек
  • прогнозирует ошибки маршрутизации и заранее предупреждает медицинских координаторов

Внедрение
  • прописать справочник госпиталей и ночные ключи доступа перед вводом
  • сверить очередь скорой с марки Chronos
  • назначить ответственных за коечный фонд и ночной резерв каналов
  • загрузить сценарии памятку эвакуации и ночные регламенты

Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>

#define MODULE_TAG "MUN_TRIAGE_MATRIX_NIGHT"
#define TRIAGE_CAP 60

enum e_triage
{
    bool:active,
    severity,
    hospital[24],
    bed
};
new MUN_Triage[TRIAGE_CAP][e_triage];

stock MUN_FindPatient(playerid)
{
    for(new i = 0; i < TRIAGE_CAP; i++)
    {
        if(MUN_Triage[i][active] && MUN_Triage[i][bed] == playerid) return i;
    }
    return -1;
}

CMD:triagematrixstatcity(playerid, const params[])
{
    new slot = MUN_FindPatient(playerid);
    if(slot == -1) return SendClientMessage(playerid, 0x8B0000FF, "[%s] Тебя еще не распределили.", MODULE_TAG);
    new msg[144];
    format(msg, sizeof msg, "[%s] Тяжесть %d | Госпиталь: %s | Рег номер: %d", MODULE_TAG, MUN_Triage[slot][severity], MUN_Triage[slot][hospital], slot);
    SendClientMessage(playerid, 0xFFB6C1FF, msg);
    return 1;
}

CMD:triagematrixctlcity(playerid, const params[])
{
    new action[8], slot, severity, target;
    new hosp[24];
    if(sscanf(params, "s[8]", action)) return SendClientMessage(playerid, -1, "Используй: /triagematrixctlcity assign/release");

    if(!strcmp(action, "assign", true))
    {
        if(sscanf(params, "s[8]iiis[24]", action, slot, severity, target, hosp)) return SendClientMessage(playerid, -1, "/triagematrixctlcity assign [слот] [1-4] [пациент] [госпиталь]");
        MUN_Triage[slot][active] = true;
        MUN_Triage[slot][severity] = severity;
        MUN_Triage[slot][bed] = target;
        format(MUN_Triage[slot][hospital], 24, "%s", hosp);
        SendClientMessage(target, 0xFF69B4FF, "[%s] Вам назначен %s. Приоритет %d.", MODULE_TAG, hosp, severity);
    }
    else if(!strcmp(action, "release", true))
    {
        if(sscanf(params, "s[8]i", action, slot)) return SendClientMessage(playerid, -1, "/triagematrixctlcity release [слот]");
        MUN_Triage[slot][active] = false;
    }
    return 1;
}

Тест-кейсы
  • провести испытание: назначить пациента с максимальной тяжестью — ожидать корректного сигнала
  • смоделировать отказ: снять пациента и проверить очистку — убедиться что резерв подхватил
  • сравнить отчёт с медицинский реестр и подтвердить отсутствие расхождений

Эксплуатация
  • каждый час пересматривать тяжелые случаи
  • синхронизировать список госпиталей
  • проводить ночные аудиты вместе с медицинских координаторов
  • держать план реагирования на ошибки маршрутизации актуальным
  • отчёты автоматически попадают в мэрия
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху