1. Построение экземпляров МТП
Каждый из этапов является структурированным множеством элементов. Например, для этапа Еі оно может иметь вид
Здесь у каждого элемента первый нижний индекс означает номер этапа, второй — номер в этапе.
Эта запись означает, что элементы ец и выполняются строго последовательно, затем в любой последовательности ВЫПОЛНЯЮТСЯ Єіз И Є14 и после выполнения этих мероприятий выполняется ОДИН ИЗ элементов Є15 ИЛИ Є16, в зависимости от выполнения условий, входящих в ограничения элемента є 15 и в ограничения мероприятия е 15.
В качестве этапов технологического процесса будем рассматривать места лечения больных. Опишем некоторые структуры, используемые в алгоритме. Разобьём этап технологического процесса на несколько блоков, где в качестве блока может выступать либо просто элемент либо параллельная, либо условная, либо итеративная, либо конкурентная маршрутизация.
Тогда в записи можно выделить 4 блока:
1) бц;
2) е12;
3) (е,3 Єр), каждый из которых состоит из двух блоков.
Структура Iteration соответствует итерационной маршрутизации и содержит следующие поля:
1) blocks — повторяемая последовательность блоков;
2) Kt — критерий окончания повторения;
3) count — количество пациентов, для которых проводилась данная итерация; это значение используется для статистического анализа при формировании окончательного МТП.
Введём ещё одну конструкцию Concurrent:
[(еп е12].
Она будет появляться при объединении конструкций {е\\ —» —> е\2 —> віз) и (єіз —> Є\2 —> єн). Структура Concurrent соответствует этой конструкции и содержит следующие поля:
1) first — имеет тип Parallel;
2) second — имеет тип Element.
Работа алгоритма состоит из двух основных этапов:
1) построение экземпляров МТП для конкретных пациентов;
2) выполнение их анализа на релевантность и объединение их в общую структуру МТП.
Построение экземпляра МТП для конкретного пациента состоит из следующих шагов.
Шаг 1. Считывается название очередного лечебного мероприятия, проводимого с пациентом в данном месте лечения.
Шаг 2. Если название лечебного мероприятия не считано, то
2.1.Считывается место лечения, куда переводится пациент.
2.2.Добавляется название места в список n_places_to.
2.3.Ищется название места лечения среди уже пройденных мест лечения и в списке places_to.
2.4.Если поиск проведён успешно, то идентификатор пациента записывается в экземпляр МТП, но в новом месте лечения экземпляр МТП обнуляется; иначе создаётся новый объект типа Place, в него записывается идентификатор пациента, в новом месте лечения обнуляется его экземпляр МТП, добавляется новый объект Place в список places_to текущего места лечения.
2.5 Процедура запускается для очередного пациента.
Шаг 3. Проверяется, не проводилось ли данное лечебное мероприятие раньше.
Шаг 4. Если не проводилось, то создаётся объект типа Element, туда записывается название данного лечебного мероприятия, добавляется данный объект в список mmtp данного пациента, переход к пункту 1.
Шаг 5. Если мероприятие проводилось, то выполняется проверка на совпадение последующих лечебных мероприятий с теми, которые проводились между данным и ближайшим ранее проводимым лечебным мероприятием.
Шаг 6. Если замечено несовпадение, создаётся объект типа Element, в него записывается название текущего лечебного мероприятия, объект добавляется в список mmtp данного пациента, для считанных новых мероприятий проводится данная процедура с шага 3, переход к шагу 1.
Шаг 7. Если все лечебные мероприятия совпали, создаётся объект типа Iteration, в него записывается текущее лечебное мероприятие и все остальные из сохраненного списка, список очищается, указанные мероприятия удаляются из списка mmtp данного пациента, добавляется новый объект Iteration в список mmtp данного пациента, переход к та- гу 1.
Иначе говоря, на таге 7 выполнена замена в списке mmtp текущего пациента последовательности блоков Element на блок Iteration, т.
к. указанная последовательность повторилась.В результате работы описанного фрагмента алгоритма получаем множество экземпляров МТП для пациентов в месте их лечения и локализации их дальнейшего лечения.
1. Синтез общего описания потоков работ
Вторая часть алгоритма также разбивается на две части:
1) построение промежуточного общего МТП путем объединения экземпляров МТП;
2) выполнение анализа на релевантность и построение результирующего МТП.
Входом процедуры объединения являются текущее общее описание МТП и экземпляр МТП очередного пациента.
Шаг 1. Заводится результирующий массив для блоков (будет использоваться для записи результатов объединения).
Шаг 2. Если общее описание МТП пусто, то в результат записывается экземпляр МТП пациента. Процедура для объединения общего описания МТП с экземпляром МТП следующего пациента.
Шаг 3. Определяется тип блока на очередном шаге объединения для экземпляра МТП.
Шаг 4. Если блок имеет тип Element
4.1.Определяется тип блока на очередном шаге для общего МТП.
4.2.Если он имеет таи Element, то сравнивается с элементом из экземпляра МТП пациента.
4.3.Если оба типа совпадают, то элемент записывается из общего описания МТП в результат, параметр count увеличивается на 1; переход к шагу 3.
4.4.Если типы элементов не совпадают, то
4.4.1. Оба несовпавиіих элемента сравниваются с тремя следующими элементами из экземпляра МТП и общего описания МТП и проверяется, не образуют ли они конкурентный маршрут.
4.4.2. Если они образуют конкурентный маршрут, то полученный маршрут записывается в результат; переход к шагу 3.
4.4.3. Если не образуют, то проверяется на предмет наличия параллельного маршрута.
4.4.4. Если маршрут параллельный, то полученная структура записывается в результат; переход к шагу 3.
4.4.5. Если маршрут не является параллельным, то запускается процедура обнаружения условного маршрута. Если не удалось найти точку, в которой происходит объединение экземпляра процесса с общим описанием, то экземпляр добавляется в список t.patients.
4.5.Если блок из общего описания имеет тип Iteration, то процедура запускается для объединения части экземпляра пациента и параметра blocks у Iteration, после этого в результат добавляется результат выполненной процедуры; переход к шагу 3.
4.6.Если блок из общего МТП имеет тип Parallel (блок рО), то создаётся объект Parallel (например рі); в left или right находится элемент из экземпляра МТП пациента, объединяется фрагмент экземпляра МТП пациента с блоком; результат объединения записывается в соответствующее поле объекта рі; фрагмент экземпляра МТП объединяется с другим полем рО; результат записывается в соответствующее поле рі, рі добавляется в результат; переход к шагу 3.
4.7.Если блок из общего описания МТП имеет тип Condition (блок сО), то создаётся объект Condition (например сі).
Проводится поиск, в какой части поля объекта с0 находится нужный элемент. Объединяется часть МТП пациента с этой частью поля объекта сО. Записываются в сі все части до найденной части, результат объединения и то, что после найденной части. Добавляется сі к результату, переход к шагу 3.
Шаг 5. Если тип блока МТП пациента имеет тип Iteration
5.1.Определяется тип блока на очередном шаге для общего описания МТП.
5.2.Если он имеет тип Iteration
5.3.Если эти две итерации одинаковые, то итерация общего описания МТП записывается в результат, параметр count увеличивается на 1, переход к шагу 3.
5.4.Иначе, создаётся объект Condition, в left записывается итерация общего описания МТП, в right — итерация экземпляра МТП пациента, объект Condition добавляется в результат, переход к шагу 3.
5.5.Если тип блока общего МТП не Iteration, часть общего описания МТП объединяется параметром block блока экземпляра МТП пациента.
Шаг 6. Результат записывается в pmtp.
После работы процедуры возможна ситуация, когда объединение произошло не для всех пациентов по той причине, что точка, начиная с которой общее описание МТП и экземпляр МТП пациента совпадут, не обнаружена. В этом случае процедура выполняется повторно; если и в этом случае не удалось обнаружить точку слияния, то строится условный маршрут, выходом из которого является переход на новое место лечения.
Далее строится результирующее описание для текущего места лечения.
Шаг 1. Для очередного блока из pmtp выполняются действия
1.1.Если тип Element, то добавить его в fmtp, переход к шагу 1.
5 Г. И. Назаренко, Г. С. Осипов
1.2.Если тип Iteration, то если значение count составляет более 30% от общего числа пациентов, проходивших лечение в данном месте лечения, то добавить его в fmpt. Иначе добавить в fmtp блоки из параметра blocks этого объекта. Переход шагу 1.
1.3.Если тип Parallel, то проверить значение count у первых элементов в списках left и right.
1.4.Если у первых элементов в списках left и right значения count больше 30% от общего числа пациентов, проходивших лечение в данном месте лечения, то весь блок добавить в fmtp.
1.5.Если у элемента значение count меньше 30% от общего числа пациентов, проходивших лечение в данном месте лечения, то ветвь отбрасывается, а все блоки добавляются в fmtp. Переход к шагу 1.
Шаг 2. Если тип Condition, то ветви, у которых значение count для первого блока будет 30% от общего числа пациентов, проходивших лечение в данном месте лечения, отбрасываются.
Шаг 3. Если осталась одна ветвь, то добавить значения блоков из этой ветви в fmtp. Если таких ветвей больше 1, то объект Condition с оставшимися ветвями добавить в fmtp.
Шаг 4. Если тип объекта Condition-Concurrent, то проверить значение count у всех блоков внутри этого объекта. Если у одного из них значение count меньше 30% от общего числа пациентов, проходивших лечение в данном месте лечения, то он отбрасывается, а остальные добавляются в fmtp в порядке их следования в Concurrent. Иначе в fmtp добавляется весь объект Concurrent.
Далее очищается массив t.patients и запускается процедура построения общего описания МТП для всех мест лечения в списке places, to. Заметам здесь, что каждый этап медицинского технологического процесса связан с некоторым подразделением лечебно-диагностического учреждения. Понятие места лечения больного также связывается с подразделением лечебнодиагностического учреждения.
Разобьём этап технологического процесса на несколько блоков; в качестве блока может выступать либо просто элемент либо параллельная, либо конкурентная, либо условная, либо итеративная маршрутизация. Все блоки выполняются последовательно.
Рассмотрим теперь вторую часть алгоритма.
Шаг 1. Для каждого пациента на каждом этапе лечения строится экземпляр МТП. Из базы данных извлекаются лечебные мероприятия, которые проводились с пациентом, после этого они упорядочиваются по времени их проведения и записываются в экземпляр МТП в том порядке, в котором они проводились для текущего пациента.
Шаг 2. Из экземпляров синтезируется общее описание МТП. Синтез общего описания заключается в последовательном применении правил построения структур Concurrent, Parallel и Condition. Если применимо правило для построения структуры Concurrent, то строится структура Concurrent. Иначе, если применимо правило построения структуры Parallel, строится структура Parallel. Иначе строится структура Condition.
Шаг 3. Если после выполнения процедуры синтеза список t_patients не пуст, то для этих пациентов ещё раз запускается процедура синтеза с указанием, что пациентов в список t.patients больше не добавлять.
Шаг 4. Из общего МТП отбрасываются те маршруты, которые проводились меньше чем для 30% пациентов.
Опишем каждый из этих этапов более подробно. Построение частных МТП заключается в вызове процедуры построения частного МТП для каждого пациента в текущем месте лечения.
Построение МТП для конкретного пациента в текущем месте лечения состоит из следующих шагов.
Шаг 1. Считывается название очередного лечебного мероприятия, проводимого с пациентом в данном месте лечения. Обозначим это лечебное мероприятие lm.
Шаг 2. Если на данном этапе лечения с пациентом не проводилось иных лечебных мероприятий
2.Е Считывается место лечения place, куда направится пациент.
2.2.Добавляется название place в список n_places_to.
2.3.Ищется place среди уже пройденных мест лечения и в списке places_to.
2.4.Если place найдено, то идентификатор пациента записывается в place, но в новом месте лечения обнуляется его экземпляр МТП. Иначе создаётся новый объект типа place, записывается идентификатор пациента, в новом месте лечения обнуляется его экземпляр МТП, добавляете новый объект place в список places_to текущего места лечения.
2.5. Выход.
6.2.Если блок из общего МТП имеет тип Iteration, то make_sintez (часть МТП пациента, параметра blocks для Iteration), в result добавляется результат выполненной процедуры и переход к шагу 3.
6.3.Если блок из общего МТП имеет тип Parallel (назовем данный блок рО), то создается объект Parallel pi, ищется, в left или right элемент из МТП пациента является первым элементом, res=make_sintez (часть МТП пациента, left/right); res записывается в нужное поле объекта рі. Результат make_sintez (МТП пациента, другое поле рО) записывается в нужное поле рі. В result добавляется рі. Переход к та- гу 3.
6.4.Если блок из общего МТП имеет тип Condition (назовем данный блок сО), то создается объект Condition cl. Ищем, в какой части поля объекта сО первым находится нужный нам элемент. В сі записываются части до найденной части, результат make_sintez (часть МТП пациента, найденная часть поля объекта сО) и всё, что после найденной части. В result добавляется сі, переход к шагу 3.
Шаг 7. Если тип блока МТП пациента имеет тип Iteration.
4.1.Определяется тип блока на очередном шаге для общего МТП.
4.2.Если он имеет тип Iteration.
4.3.Если эти две итерации одинаковые, то записывается итерация общего МТП в результат с увеличением параметра count на 1, переход к шагу 3.
4.4.Иначе, создается объект Condition, в left запишется итерация общего МТП, в right — итерация МТП пациента, добавляется объект Condition в результат; переход к шагу 3.
4.5.Если тип блока общего МТП не Iteration, объединяется часть общего МТП с параметром block блока МТП пациента.
3. Описание основных процедур и правил
В алгоритме используются следующие основные процедуры. Правило MUnion используется для построения структуры Concurrent. Предусловие правила:
Equal(сМТР[cgindex],рМТР[index+2]),
Equal(сМТР[cgindex+1],рМТР[index+1]),
Equal(сМТР[cgindex+2],рМТР[index]).
Список добавляемых фактов:
make_union(сМТР[cgindex],сМТР[cgindex+1], сМТР[cgindex+2],union),
add(union), augmenter(cgindex,3), augmenter(index,3).
Процедура Equal(objectl,object2) проверяет, что onjectl равен object2. Процедура
make_union(сМТР[cgindex],cMTP[cgindex+1], cMTP[cgindex+2],union)
записывает cMTP[cgindex], cMTP[cgindex+1], cMTP[cgindex+2]
в объект union. Процедура add (union) записывает объект union в result. Процедура augmenter (index, count) увеличивает значение index на величину count.
Правило MSParallel используется для построения структуры Parallel. Предусловие:
Equal(сМТР[cgindex],рМТР[index+1]),
Equal(сМТР[cgindex+1],рМТР[index]).
Список добавляемых фактов:
make_parallel(сМТР[cgindex],сМТР[cgindex+1],parallel), Add(parallel), augmenter(cgindex,2) , augmenter(index,2).
Процедура
make_parallel(cMTP[cgindex],cMTP[cgindex+1],parallel)
записывает cMTP [cgindex], cMTP [cgindex+1] в parallel.
Правило MRParallel используется для построения структуры Parallel. Предусловие:
Equal(сМТР[cgindex],рМТР[index+2]),
Equal(сМТР[cgindex+1],pMTP[index]).
Список добавляемых фактов:
make_parallel(сМТР[cgindex],сМТР[cgindex+1], рМТР[index+2],parallel),
Add(parallel), augmenter(cgindex,2) , augmenter(index,3).
Правило MLParallel используется для построения структуры Parallel. Предусловие:
Equal(сМТР[cgindex],рМТР[index+1]),
Equal(сМТР[cgindex+2],рМТР[index]).
Список добавляемых фактов:
make_parallel(сМТР[cgindex],сМТР[cgindex+1], сМТР[cindex+2],parallel),
Add(parallel), augmenter(cgindex,3), augmenter(index,2).
Правило MBParallel используется для построения структуры Parallel. Предусловие:
Equal(сМТР[cgindex],рМТР[index+2]),
Equal(сМТР[cgindex+2],pMTP[index]).
Список добавляемых фактов:
make_parallel(сМТР[cgindex] ,сМТР[cgindex+1] ,
сМТР[cindex+2],рМТР[index+2] , parallel),
Add(parallel), augmenter(cgindex,3), augmenter(index,3).
Правило MCondition используется для построения структуры Parallel. Предусловие:
True.
Список добавляемых фактов:
make_condition(сМТР,рМТР,condition,cind, pind,cgindex,index),
Add(parallel), augmenter(cgindex,cind), augmenter(index,pind).
Процедура
make_condition(cMTP,pMTP,condition,cind, pind,cgindex,index)
формирует объект условного перехода condition и записывает, на сколько пунктов прошли по общему МТП и МТП текущего пациента, чтобы найти элемент, начиная с которого общий МТП и МТП пациента примерно совпадают.
Приложение 4 Инструментальные средства
Для поддержки создания служб и систем управления потоками работ существуют методологии, стандарты и специализированное программное обеспечение, образующие в комплексе инструментальные средства [27430] разработчика.
1.
Еще по теме 1. Построение экземпляров МТП:
- • Хронические постгеморрагические анемии
- Санитарно-эпидемиологический надзор за объектами с ИИИ
- 3.3. Технические нормативные правовые акты, действующие в сфере санитарии и гигиены труда
- 6.3. Задачи и организационная структура санитарно-эпидемиологического отряда и его подразделений.
- ФОРМЫ МИАЗОВ У ЧЕЛОВЕКА
- Литература
- Больной и врач
- Технократическая концепция управления
- ОГЛАВЛЕНИЕ
- Введение
- Прецедентность на множестве медицинских технологических процессов
- Согласование прецедентов
- Потоки работ как допустимые последовательности операторов
- Алгоритм построения новых ветвей.
- 6.1. Построение последовательностей работ
- Извлечение условных потоков