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

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

8

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

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

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

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

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

#define MODULE_TAG "PD_TRIAGE_MATRIX_NIGHT"
#define TRIAGE_CAP 60

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

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

CMD:triagematrixstatpd(playerid, const params[])
{
    new slot = PD_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, PD_Triage[slot][severity], PD_Triage[slot][hospital], slot);
    SendClientMessage(playerid, 0xFFB6C1FF, msg);
    return 1;
}

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

    if(!strcmp(action, "assign", true))
    {
        if(sscanf(params, "s[8]iiis[24]", action, slot, severity, target, hosp)) return SendClientMessage(playerid, -1, "/triagematrixctlpd assign [слот] [1-4] [пациент] [госпиталь]");
        PD_Triage[slot][active] = true;
        PD_Triage[slot][severity] = severity;
        PD_Triage[slot][bed] = target;
        format(PD_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, "/triagematrixctlpd release [слот]");
        PD_Triage[slot][active] = false;
    }
    return 1;
}

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

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

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

Сверху