Моделирование процесса приема больных в больницу
При поступлении в приемное отделение больной становится в очередь, если оба дежурных врача заняты. Освободившийся врач выбирает в первую очередь тех больных, кто уже прошел предварительное обследование. После заполнения различных форм в приемном отделении больные 1 типа следуют прямо в палаты, а больные типов 2 и 3 направляются в лабораторию для исследования мочи и крови. Трое сопровождающих… Читать ещё >
Моделирование процесса приема больных в больницу (реферат, курсовая, диплом, контрольная)
- Задание
- Концептуальная модель
- Разработка библиотеки функциональных блоков
- Системные переменные модели
- Дополнительные функциональные блоки
- Блок генерации входного потока больных
- Блок имитации работы приемного отделения
- Блок имитации работы сопровождающих в палаты
- Блок задержки по пути из приемного отделения в лабораторию
- Блок имитации работы регистратуры лаборатории
- Блок имитации работы лаборантов12
- Блок задержки по пути из лаборатории в приемное отделение
- Блок-фильтр
- Структурная модель системы
- Схема модели
- Описание модели
- Разработка плана эксперимента
- Результаты имитационного эксперимента
- Графики
- Расчетные характеристики
- Выводы
Задание
Смоделировать и проанализировать процесс помещения больных в больницу. В больницу поступают больные трех типов:
· больные, прошедшие предварительное обследование и направляемые на лечение;
· больные, желающие попасть в больницу, но не прошедшие полностью предварительное обследование;
· больные, только что поступившие на предварительное обследование.
Времена обслуживания больных разных типов в приемном отделении распределены следующим согласно приведенной таблице:
Тип больного | Относительная частота | Среднее время регистрации, мин | |
0,9 до 10.00, 0.5 после 10.00 | |||
0,1 в любое время | |||
0,4 после 10.00 | |||
Все приведенные значения нормально распределены с у = 0,1µ (минимум равен 0) | |||
При поступлении в приемное отделение больной становится в очередь, если оба дежурных врача заняты. Освободившийся врач выбирает в первую очередь тех больных, кто уже прошел предварительное обследование. После заполнения различных форм в приемном отделении больные 1 типа следуют прямо в палаты, а больные типов 2 и 3 направляются в лабораторию для исследования мочи и крови. Трое сопровождающих разводят больных по палатам. Больным не разрешается направляться в палату без сопровождающего. Если все сопровождающие заняты, больные ожидают их освобождения в приемном отделении. Как только больной доставлен в палату, он считается вышедшим из процесса приема в больницу. Сопровождающему требуется 3 единицы времени, чтобы вернуться в приемное отделение после доставки больного в палату. По прибытии в лабораторию больные становятся в очередь в регистратуру. После регистрации они следуют в комнату ожидания, где ждут вызова к одному из двух лаборантов. После сдачи анализов больные либо возвращаются в приемное отделение (если их принимают в больницу), либо покидают больницу (если им было назначено только предварительное обследование). После возвращения в приемное отделение сдавший анализы больной рассматривается как больной 1 типа. Приемное отделение открыто с 7.00 до 17.00. Однако предварительные обследования (тип 3) не назначаются до 10.00 из-за утренней перегрузки лаборатории. Больные, поступающие после 16.00, направляются в профилакторий. Однако больные типа 2, возвращающиеся из лаборатории, принимаются до 17.00, пока приемное отделение не закроется.
Проанализировать работу описанной выше системы в течение 10 дней. При этом определить время, проведенное больным в системе, т. е. интервал времени, начиная с поступления и кончая доставкой в палату (для больных 1 и 2 типа) или выходом из лаборатории (для больных типа 3). Определить также интервал между прибытиями больных в лабораторию. Предположить, что все очереди имеют неограниченную длину и устроены по правилу FIFO (за исключением случаев оговоренных особо). В таблице приводятся данные по продолжительности действий (в минутах):
Величина | Распределение: параметры | |
Время между прибытиями в приемное отделение t1 | Экспоненциальное с мат. ожиданием = 15 | |
Время следования в палату t2 | Равномерное: минимум=3, максимум=8 | |
Время следования из п.о. в лабораторию и обратно t3 | Равномерное: минимум=2, максимум=5 | |
Время обслуживания в регистратуре t4 | Эрланга с мат.ож.=4,5 и k=3 | |
Время анализа в лаборатории t5 | Эрланга с мат.ож.=5 и k=2 | |
Время возвращения сопровождающего в п.о. t6 | Константа: 3 | |
Концептуальная модель
Разработка библиотеки функциональных блоков
Разработана библиотека блоков h.mdl.
Ниже приведено описание разработанных блоков.
Системные переменные модели
— текущее время системы в шагах моделирования с начала моделирования;
— текущее время системы в часах рабочего дня (циклически изменяется с 0.00 до 23.99)
— значение шага моделирования в минутах моделирования
Дополнительные функциональные блоки
— Счетчик входной величины (в отличие от дискретных интеграторов не зависит от величины шага интегрирования).
Входной сигнал In — накапливаемая величина;
Выходной сигнал Out — накопленное значение.
Структура блока:
Блок не имеет параметров
— Возвращает среднее время в минутах по известным значениям суммарного времени и количества пациентов.
Входной сигнал Numb — число пациентов;
Входной сигнал Time — суммарное время;
Выходной сигнал Avg — среднее значение времени в минутах.
Структура блока:
Блок не имеет параметров.
— Основной блок перевода времени интегрирования в системное время, заполняет значения переменных timenow, realtime, deltat.
Структура блока:
Пользователь задает следующие параметры:
things_in_a_hour — число шагов интегрирования в одном часе системного времени (по умолчанию 60, что соответствует режиму «шаг-минута»);
startt — начальное значение переменной timenow
Блок генерации входного потока больных
— Генерирует входной поток больных приемного отделения.
Выход inc — 0 если на данном шаге моделирования не поступило больных, 1−3 — больной, соответственно, типа 1−3.
now — 1, если на входе есть больной любого типа.
Структура блока:
Блок MATLAB Function вызывает функцию:
income (u (1), u (2), waitconst, times, params)
Алгоритм ее работы представлен в Приложении 1.
Для блока определены следующие параметры:
waitconst — мат. ожидание для времени между прибытиями больных;
times — график работы приемного отделения (границы однородных интервалов, н-р, от 0.00 до 7.00, от 7.00 до 10.00, от 10.00 до 16.00);
params — вероятности появления больных 1−3 типа для каждого из указанных интервалов (н-р, в промежуток времени 7.00 до 10.00 вероятности 0.9 для 1 типа, 0.1 — для 2-го, 0 — для 3 типа)
Блок имитации работы приемного отделения
— Имитация работы приемного отделения.
inc — 0, если на данном шаге ни один новый пациент не вошел в приемное отделение, 1−3 соответственно тип больного.
inc4 — число больных 1 типа вернувшихся из лаборатории.
Выходы:
k1, k2, k3 — число больных 1−3 типа обслуженных дежурными врачами на данном шаге;
bd — число занятых дежурных врачей;
qs — число пациентов в очереди;
t1, t2, t3 — суммарное время проведенное пациентами 1−3 типа в очереди и у врачей на данном шаге.
Структура блока:
Блок MATLAB Function вызывает функцию:
newills (u (1), u (2), u (3), ni_regtime, ni_ndoctors)
Алгоритм ее работы представлен в Приложении 2.
Для блока определены следующие параметры:
ni_ndoctors — число дежурных врачей в приемном отделении;
ni_regtime — среднее время регистрации для пациентов 1−3 типа в минутах
Блок имитации работы сопровождающих в палаты
— Блок моделирует работу сопровождающих из приемного отделения в больничные палаты.
Вход:
inc1 — число больных 1 типа, поступающих в очередь на данном шаге;
Выход:
ills — число больных 1 типа, поступивших в палаты на данном шаге;
bd — число занятых сопровождающих на данном шаге;
qs — длина очереди;
t1 — суммарное время ожидания в очереди и следования в палаты для больных 1 типа.
Структура блока:
Блок MATLAB Function вызывает функцию
illrooms (u (1), u (2), ir_ndoctors, ir_mn_time, ir_mx_time, ir_ctime),
алгоритм функции приводится в приложении 3.
Для блока определены следующие параметры:
модель функциональный блок больница
ir_ndoctors — число сопровождающих;
ir_mn_time — минимальное время сопровождения, мин;
ir_mx_time — максимальное время сопровождения, мин;
ir_ctime — время возвращения сопровождающего, постоянная, мин.
Блок задержки по пути из приемного отделения в лабораторию
— Блок имитации движения пациента 2 или 3 типа из приемного отделения в регистратуру лаборатории.
Вход:
inc2, inc3 — число больных 2,3 типа, вышедших из приемного отделения на данном шаге;
Выход:
k2, k3 — число больных 2,3 типа, вошедших на данном шаге в регистратуру лаборатории;
qs — число больных 2,3 типа, пока идущих в лабораторию на данном шаге;
t2, t3 — суммарное время потраченное больными 2,3 типа.
Структура блока:
Блок MATLAB Function вызывает функцию:
n2l_delay (u (1), u (2), u (3), n2l_mn_time, n2l_mx_time),
алгоритм функции приведен в приложении 4.
Для блока определены следующие параметры:
n2l_mn_time — минимальное время следования из приемного отделения в лабораторию;
n2l_mx_time — максимальное время следования из приемного отделения в лабораторию;
Блок имитации работы регистратуры лаборатории
— Блок имитирует работу регистратуры лаборатории.
Вход: Inc2, Inc3 — число больных 2,3 типа вошедших в лабораторию на данном шаге;
Выход:
k2, k3 — число больных 2,3 типа, прошедших регистрацию на данном шаге;
bd — число занятых работников регистратуры;
qs — длина очереди в регистратуру;
t2, t3 — суммарное время ожидания в очереди и регистрации для больных 2,3 типа;
avg — среднее время между поступлениями больных в лабораторию.
Структура блока:
Блок MATLAB Function вызывает функцию:
register (u (1), u (2), u (3), reg_ndoctors, reg_eravg, reg_erk, u (4)),
алгоритм функции представлен в приложении 5.
Для блока определены следующие параметры:
reg_ndoctors — число работников регистратуры;
reg_eravg — значение мат. ожидание для функции Эрланга, распределения времени регистрации;
reg_erk — значение K для функции Эрланга, распределения времени регистрации.
Блок имитации работы лаборантов
— Блок имитирует работу лаборантов.
Вход:
Inc2, Inc3 — число больных 2,3 типа прошедших регистрацию и поступивших в очередь на данном шаге;
Выход:
k2, k3 — число больных 2, 3 типа сдавших анализы на данном шаге. Пациенты 2 типа возвращаются в приемное отделение (как пациенты 1 типа), а пациенты 3 типа — покидают территорию больницы.
bd — число занятых на данном шаге лаборантов;
qs — длина очереди на сдачу анализов;
t2, t3 — суммарное время ожидания в очереди и сдачи анализов для больных 2, 3 типа.
Структура блока:
Блок MATLAB Function вызывает функцию:
laboratory (u (1), u (2), u (3), lab_ndoctors, lab_eravg, lab_erk),
алгоритм которой приведен в приложении 6.
Для блока определены следующие параметры:
lab_ndoctors — число лаборантов;
lab_eravg — значение мат. ожидания для функции Эрланга распределения времени проведения анализа;
lab_erk — значение K для функции Эрланга распределения времени проведения анализа;
Блок задержки по пути из лаборатории в приемное отделение
— Блок имитирует движение пациента 2 типа из лаборатории в приемное отделение.
Вход:
inc1 — число больных 1 типа, вышедших из лаборатории;
initf — сигнал инициализации;
Выход:
k1 — число больных 2,3 типа, вошедших на данном шаге в регистратуру приемного отделения;
qs — число больных, пока идущих в приемное отделение на данном шаге;
t1 — суммарное время потраченное больными 1 типа.
Структура блока:
Блок MATLAB Function вызывает функцию:
l2n_delay (u (1), u (2), l2n_mn_time, l2n_mx_time),
алгоритм которой представлен в приложении 7.
Для блока определены следующие параметры:
l2n_mn_time — минимальное время следования из лаборатории в приемное отделение;
l2n_mx_time — максимальное время следования из лаборатории в приемное отделение;
Блок-фильтр
— Если на данном шаге оказывается, что приемное отделение завершило работу, то пришедшие на данном шаге больные 1 типа, вернувшиеся из лаборатории, уходят с территории больницы.
Вход:
Inc1 — число больных 1 типа, вошедших на данном шаге в приемное отделение;
Выход:
k1 — число больных, пропущенных в приемное отделение для дальнейшего обслуживания;
gone — число больных, не пропущенных по причине закрытия приемного отделения.
Структура блока:
Блок MATLAB Function вызывает функцию:
hfilter (u (1), hf_mn_limit, hf_mx_limit, u (2)),
алгоритм которой представлен в приложении 8.
Для блока определены следующие параметры:
hf_mn_limit — время, начиная с которого больные принимаются в приемном отделении;
nf_mx_limit — время, начиная с которого больные перестают приниматься в приемном отделении.
В приложении 9 также приведен алгоритм функции erlangrnd, для получения случайных величин, распределенных по Эрлангу.
Структурная модель системы
Схема модели
Описание модели
На рисунке представлена схема, имитирующая работу системы госпиталь. Блок income через случайные интервалы генерирует поступление в приемное отделение нового пациента (тип 1−3), если приемное отделение уже открыто. Приемное отделение обозначено блоком newills. Кроме новых больных (вход Inc) в приемное отделение поступают также вернувшиеся из лаборатории пациенты 2 типа (вход inc4). После регистрации, больные типа 1 (выход k1) поступают в очередь к сопровождающим для помещения в палаты больницы. Больные 2 и 3 типа (выходы k2 и k3) посылаются в лабораторию для сдачи анализов. Сопровождающие врачи — блок illrooms — разводят поступающих пациентов 1 типа (вход inc1) по палатам (выход ills), т. е. на выход системы (приема). Больные 2 и 3 типа, выйдя из приемного отделения, через некоторый промежуток времени (блок n2l_delay) попадают в лабораторию, где сначала проходят регистрацию (блок register), а затем сдают анализы (блок laboratory). Сдавшие анализы больные 3 типа (выход k3 блока laboratory) покидают больницу, а 2 типа (выход k2) возвращаются назад в приемное отделение (блок l2n_delay). Если они успевают вернуться до закрытия приемного отделения (блок hfilter), то поступают на вход Inc4 в очередь как больные первого типа), в противном случае — они покидают территорию больницы.
Блок timeblock вначале задает значение deltat, а в процессе работы всей системы изменяет значения системных переменных timenow, realtime.
Разработка плана эксперимента
Схема эксперимента выглядит следующим образом:
Планируется провести один эксперимент. Параметры указанных блоков установлены по умолчанию (см. описание блоков, глава «Разработка библиотеки функциональных блоков»).
Параметры имитационного прогона:
Время имитационного прогона 14 400 шагов (режим шаг-минута) соответствует 10-дневному эксперименту (1440 минут/день). Шаг дискретный.
Наблюдаемые величины: входной поток пациентов (Scope: patients income), выходной поток пациентов 1 типа (Scope: patients in rooms), выходной поток пациентов 3 типа (Scope: III-patients' gone), поток пациентов 2 типа, не успевших вернуться в приемное отделение (Scope: patients late).
Снимаемые величины: среднее время между прибытиями в лабораторию (display: avg.lab.inc.time), сред. время обслуживания пациентов 1, 3 типа (display: p’s * avg. time), число пациентов различных типов (display: p’s *).
Результаты имитационного эксперимента. Графики
Системное время эксперимента:
Входной поток пациентов:
Обслуживание пациентов 3 типа лабораторией (выход из системы):
Обслуживание пациентов 2 типа лабораторией (обратная связь):
Пациенты 2 типа, не успевшие вернуться в приемное отделение:
Выходной поток пациентов 1 типа и 2 типа, вернувшихся из лаборатории:
Расчетные характеристики
За 10 дней эксперимента больница обслужила 377 человек (от 32 до 45 человек в день).
Из них 114 человек — больные 3 типа, 27 — больные 2 типа. Соответственно, больных 1 типа — 263−27 = 236 человек. 2 больных 2 типа не были обслужены до конца, поскольку не успели вернуться до 17.00 в приемное отделение.
В среднем больной 1−2 типа проводит в больнице 39,76 минут. Эта цифра включает в себя усредненное значение времени, проводимого больными 1 типа (блоки newills-illrooms) и больными 2 типа (блоки newills-n2l_delay-register-laboratory-l2n_delay-newills-illrooms), и очень сильно зависит от поступающих в больницу пациентов 2 типа (например, в те дни, когда в поликлинику не поступало ни одного больного 2 типа, эта величина колебалась около отметки 29 минут).
В среднем больной 3 типа проводит в больнице 94,53 минуты (т.е. чуть больше 1,5 часа). На это значение влияет поступление больных 2 типа в промежуток времени до 10.00 (когда начинают поступать больные 3 типа). Зависимость обратная.
Выводы
Одним из преимуществ разработанной системы является то, что существует возможность проанализировать загрузку сотрудников соответствующих подсистем (выходы bd блоков), величину очередей (выходы qs блоков) и распределение времени ожидания для пациентов каждого типа на любом из участков (выходы t* блоков).
Был проведен частичный анализ этих показателей и ряд дополнительных экспериментов (с изменением числа врачей блоков).
Из полутора часов, проводимых в больнице пациентом 3 типа, около 30 минут занимает процесс регистрации в приемном отделении, примерно столько же занимают прогулка в лабораторию, регистрация и сдача анализов, — остальное время больной просто сидит в приемном отделении и ждет собственной очереди. Это происходит потому, что приоритет больных 1 типа выше, а вероятность их появления в любой момент работы системы не менее 50%.
«Узким местом» модели является приемное отделение (блок newills). Поскольку добавление в приемное отделение одного дополнительного дежурного врача дает следующие результаты: около 34 минут среднее время обслуживания больных 1−2 типа и около 65 минут — для 3 типа (почти в 1,5 раза меньше), при среднем времени поступления больных в лабораторию — 33 минуты. Добавление 4 дежурного врача эффекта уже не дает (32,62,33 минуты соответственно), — в этом случае не справляется уже регистратура лаборатории, где работает всего один сотрудник.