Типовые логические конструкции.Элементы языка алгоритмов – вопросы, ответы и рекомендации – позволяют составлять цепи рассуждений любой длины и сложности. В этих цепях обнаруживаются повторяющиеся конструкции, которые полезно знать, чтобы использовать преднамеренно и методично.
а) Элементарная клиническая ситуация. Это базовая конструкция алгоритма. Она позволяет описать наименьший логически завершённый этап принятия врачебного решения (вся работа лечащего врача не что иное, как последовательность этих этапов). Суть конструкции – решение конкретной этапной задачи. Она начинается рекомендацией о способах получения информации для решения этой задачи (врачебные мероприятия), а завершается исчерпывающим перечнем всех возможных решений. Середину конструкции занимает последовательность вопросов и ответов, которая, оперируя полученной информацией, ведёт к выбору нужного решения. Выбранное решение означает либо переход к следующему этапу работы, в следующую элементарную ситуацию, либо завершение работы с пациентом.
Представление об элементарной клинической ситуации необходимо для понимания алгоритма, как представление об атоме – для понимания материального мира. Его надо отличать от термина «ситуация» без эпитета «элементарная»,.которым обозначают фрагмент алгоритма, ограниченный размерами перфокарты или пределами файла и обозначенный цифрой или буквой. Фрагмент этот тоже логичен, но может содержать не одну, а несколько переходящих друг в друга элементарных ситуаций. С другой стороны, длинная и ветвящаяся цепь рассуждения одной и той же элементарной ситуации может переходить из одного фрагмента в другой.
б) «Лечебная ситуация» и «Специальная диагностическая ситуация». Из всего разнообразия ситуаций выделяются две типичных конструкции: «лечебные ситуации» (для описания этапа лечения) и «диагностические ситуации» (для случаев использования высокоинформативных исследований – рентгеновских, эндоскопических, УЗИ, зондирований, ЭКГ и т.п.).
Лечебная ситуация излагает ограниченный временем этап лечения. Здесь в рекомендации перечисляются в определённом порядке необходимые врачебные назначения: диета, режим, виды медикаментозного лечения (препараты, дозы, ритм и способы введения), физиопроцедуры. Заключает рекомендацию абзац «Контроль», где перечисляются симптомы, за которыми надо следить, указываются способы лабораторного контроля и других специальных исследований, их периодичность, консультации.
Далее следует оценка результатов лечения по следующей схеме: фраза-вопрос «В пределах [установленного срока] симптомы…» и четыре ответа: «полностью исчезли» (1), «уменьшились» (2), «сохраняются без перемен или «изменились противоречиво: одни исчезли, другие появились» (3), «усилились или появились новые» (4). Редакция вопроса и ответов варьирует в зависимости от медицинского содержания, отдельные симптомы могут обсуждаться детально (например, результаты лабораторных анализов, контрольной ЭКГ и проч.), но итогом всегда является один из четырёх выводов о результатах этапа: полный успех, улучшение, отсутствие значимых перемен или ухудшение. Возможен и 5-й вывод – особый вариант ухудшения (терминальное состояние, непереносимость препарата), но этим варианты исчерпываются.
Сам выбор одного из 4 или 5 выводов обеспечивается либо комментариями к ответам, либо деревом решений, которое может быть весьма сложным. Представление об этом можно получить из
рисунка 1.
Это фрагмент файла-ситуации, который использует компьютерная программа. На рисунке видно, что при лечении пневмонии сначала оценивается рентгенологическая динамика. При этом третий и шестой ответ (в графе Dks) сразу ведут к результату 2 и 4 соответственно (в поле Kz). Остальные варианты рентгенологической динамики требуют, чтобы к ним добавилась оценка клинико-лабораторных симптомов.
При этом в случае первого, второго и четвёртого ответов о рентген-картине клинико-лабораторные симптомы оцениваются одним образом, в случае пятого ответа – другим образом, а при шестом ответе – третьим образом. Только после этого получается одна из четырёх конечных оценок. На том же рисунке видно (внизу), что алгоритм анализирует и возможное расхождение между динамикой рентгенологических симптомов и клинико-лабораторной картины. Объяснить такое расхождение можно трояким образом, для каждого из которых имеется свой выход. Эти выходы обозначены цифрами 7, 8 и 9. Понятно, что после выходов 8 и 9, кроме основной линии поведения, появится параллель для сопутствующего заболевания
Специальная диагностическая ситуация описывает всё, что связано с инструментальными исследованиями. В рекомендации, если она нужна, излагается подготовка к процедуре. Рассуждение отвечает на вопрос о тех результатах исследования, которые существенны для дальнейших решений. Для этого предлагается полный перечень таких результатов, вообще свойственных данному методу. Этому перечню предшествуют два стандартных ответа: «существенных изменений не найдено» и «исследование не удалось». Редакция в обоих случаях может варьировать, а сами эти ответы - детализироваться; в первом случае, например, возможны «норма», «несущественные изменения», во втором – «не удалось», «противопоказано», «пациент отказался от исследования».
Общее свойство лечебной и специальной диагностической ситуаций состоит в том, что они требуются в своём неизменном виде в разных местах алгоритма, осуществляются по своей внутренней логике, а полученный результат используется в каждом месте по-разному, в зависимости от логики этого места. Естественное желание – каждую из них делать в единственном экземпляре и вызывать потом туда, где она понадобится. Это соответствует тому, что программисты называют функцией, такой подпрограмме, которая получает задание (информацию) из любого места программы, выполняет это задание и возвращает результат туда, откуда пришёл запрос.
Ситуации-функции, позволяющие одни и те же действия осуществлять в разных местах алгоритма, надо обозначать не числовыми номерами, как все прочие ситуации, а буквами. В своих алгоритмах я использовал буквы кириллицы и термин «буквенная ситуация» в противовес «цифровой». Таким образом, однажды созданная "буквенная" ситуация может включаться сколько угодно раз в "цифровые".
Выходы же из такой «буквенной» (в отличие от остальных «цифровых») надо пронумеровать, начиная с единицы. Тогда «цифровая» ситуация 28 вызывает на себя «буквенную» ситуацию К (запись будет выглядеть, как "28-К"), второй результат «буквенной» приписывается к этой записи («28-К2-), а дальнейшие действия (очередной вопрос или переход в другую «цифровую» ситуацию) определяются условиями и задачей ситуации 28.
в) Другие «буквенные» ситуации. Итак, буквенные ситуации – это выделенные процедуры, которые, будучи однажды созданы, могут включаться в разные места алгоритма, в разные цифровые ситуации. Кроме лечебных курсов и специальных диагностических процедур, ими можно описывать и некоторые другие задачи врача, возникающие в разных цифровых ситуациях. В качестве примера можно привести действия при возникновении показаний к хирургическому лечению, когда надо установить противопоказания, предложить операцию и получить согласие, преодолеть отказ, а после операции перейти к послеоперационному ведению. Другой пример – периодическая проверка сердцебиения плода в процессе родов. От результатов здесь зависят как лечебные меры в отношении плода, так и тактика акушера в ведении самих родов, причём и меры эти и тактика на разных этапах родов различаются. Третий пример – периодическая оценка состояния пациента на основе нескольких строго определённых признаков, каждый из которых может иметь 2, 3 или 4 существенных значения. Такая оценка необходима, например, при лечении кардиального шока, когда надо оценивать артериальное давление (повышено, нормальное, снижено), отёк лёгких (имеется, отсутствует, появился, усилился, уменьшился) и аритмию (имеется, отсутствует). Та же задача стоит при балльной оценке состояния новорожденного по Апгар. Число сочетаний в таких случаях составляет под сотню. Буквенная ситуация позволяет все их представить, зафиксировать, объединить в группы, ведущие к одинаковым мерам и передать это в цифровую ситуацию.
Обозначения лечебного курса или диагностической процедуры одной буквой ведёт к тому, что буква ассоциируется с содержанием ситуации. Стандартная нумерация всех или некоторых выходов из буквенной ситуации тоже легко запоминается: во всех специальных диагностических ситуациях «1» означает неудачу, во всех лечебных «1» - это полный успех, «2» - улучшение, «3» - безрезультатность, «4» - ухудшение.
Такая компактность и выразительность позволяют в пределах одной цифровой ситуации отразить сложные варианты, когда одни и те же действия приходится повторять в разных сочетаниях. В работе врача с пациентом они не редки. Курс лечения приходится повторять или переходить к усиленному курсу, а потом возвращаться к предыдущему. Диагностические процедуры, процедуру получения согласия на операцию и преодоления отказа от операции приходится повторять и чередовать их с лечебными курсами. Переходы в таких комбинациях определяются результатом, который получается в каждой из них. Все это можно легко и наглядно изложить в виде кобинаций буквенных ситуаций с использованием трёх приёмов; циклов, повторов и вставок.
г) Циклы и повторы. Цикл – это такая конструкция, в которой один из конечных ответов возвращает на ту строку, которая уже была однажды пройдена. Пример простого цикла – когда выход «улучшение» в лечебной ситуации возвращает к тому же лечебному курсу, к той строке цифровой ситуации, на которой этот курс назначается. Такое возвращение может быть и не сразу, а после одного или нескольких других этапов – тогда это будет сложный цикл. В отличие от цикла, повтор – это последовательность из двух одинаковых буквенных ситуаций, вызванных с разных строк. Этот приём позволяет в первый раз оценить выходы из буквенной ситуации одним образом, а во второй раз – другим. В лечебной ситуации он без дополнительных вопросов учитывает длительность лечения (число курсов), чем нередко определяются следующие решения.
д) Вставка-рекомендация и вставка-вопрос. Между буквенными ситуациями, образующими описанные выше комбинации, можно делать вставки для указания на некоторые дополнительные действия. Так, после улучшения в лечебной ситуации, прежде чем повторить тот же курс, можно вставить рекомендацию об отмене части лечебных мер (например, об отмене антибиотиков), а при безрезультатном итоге – вставку с рекомендацией о дополнениях в лечение. Вставка может заключать и вопрос, например, об общей длительности лечения, и уже от ответа на него, указывать на тот или иной дальнейший шаг. Возможна и комбинация вставки-рекомендации с вставкой-вопросом: так, можно рекомендовать консультацию того или иного специалиста или даже консилиум (так, например, приходится поступать при трудностях с распознаванием причины коматозного состояния), а потом спрашивать, какое из возможных решений было ими предложено.
e) Примеры комбинированных конструкций. Предположим, что есть ситуация 17, вызывающая специальную диагностическую ситуацию Е: «17-Е-». Исследование не удалось: «17-Е1-». Теперь надо провести трёхдневную подготовку и повторить исследование:
«17-Е1- Готовьте к повторному исследованию 3 дня [даются рекомендации] –Е-».
Последнее «Е» - это не то же самое место, что было в первый раз, потому что тогда при неудаче получался бы порочный круг. Но это опять ситуация Е, только выход «1» из неё будет оцениваться уже иначе, например, при повторной неудаче надо применить исследование Ж: «17-Е1-Готовьте к повторению- Е1-Ж-».
Очень полезны подобные комбинации для изложения сложной лечебной тактики. Допустим, есть три вида недельного курса лечения: основной (К), с которого начинают, облегчённый (Л) и усиленный (М). Действия излагаются в ситуации 28: «28-К-». При ухудшении надо усилить лечение: «28-K4-М-». Если через неделю станет лучше, полагается вернуться к основному курсу, а при дальнейшем улучшении – к облегчённому: «28-К4-М2=К2-Л-». Облегчённое лечение надо проводить до полного исчезновения симптомов: «28-К4-М2=К2-Л2-Л1-закончить». При этом облегчённый курс (Л) должен проводиться не менее 2 недель даже при самом благоприятном обороте: «28-К4-М2=К2-Л1-Л1-закончить». Но если ухудшения за время лечения не было, то курс Л при его полном успехе повторять не надо: «28-М2=К2-Л1-закончить».
Оставляю желающим удовольствие самостоятельно конструировать разные варианты на этом примере, а в заключение подчеркну очень существенное свойство подобных конструкций: они позволяет включить в решение проблем фактор времени. В ряде случаев, когда достигнут полный результат, лечение полагается ещё продолжить, закрепить. Для других случаев, когда такого результата нет, но достигнута стабилизация, надёжность последней нельзя устанавливать при первом курсе с результатом «без перемен», полагается продлить то же самое лечение в виде повторения таких же курсов до истечения определённого срока. Всё это предусматривает подобная комбинированная конструкция, а сврех того - и неожиданности при этих продлениях: ухудшение, подтвердившее ненадёжность стабилизации, и нежданное улучшение, обнаруживающее возможность ещё сдвинуть течение болезни к лучшему.
Средства разработки автоматизированного варианта. Алгоритмы разрабатывались и распространялись до эпохи компьютеров и даже с появлением последних – без них. В 90-х годах один программист попытался автоматизировать то, что я сделал на перфокартах, но потерпел неудачу. Самого меня подвигла на это опять-таки случайность, причём только в 2001 году. В вычислительном центре Кировской областной больницы, где эксплуатировались мои АРМы врача, появился практикант - толковый студент-дипломник. Меня попросили дать ему оригинальную тему. Я и предложил автоматизацию частных алгоритмов. Студент регулярно ходил ко мне, выслушивал мои объяснения и представления о том, как подступиться к задаче, много и не всегда понятно для меня теоретизировал, выдвигал идеи, но за довольно большой срок так ничего и не сделал, хотя диплом на эту тему написал и успешно защитил. Но я к тому времени столько наобъяснял, что сам всё понял, и так разозлился, что сам сделал автоматизированный вариант: базу знаний, базу данных, программу для врача, а заодно и программу-редактор для разработчика. С этого момента стало ясно, что возврата к перфокартам не будет,
Автоматизация открыла новые возможности, но представленные выше средства и приёмы разработки остались актуальными. Они не поменялись, а пополнились.
а) Файл-ситуация. Фрагмент алгоритма, который был выше определён и назван «ситуацией», теперь помещён в отдельный файл и назван «файлом-ситуацией». Каждая строка этого файла-ситуации помечается в поле tip как вопрос, ответ или рекомендация. Содержание записывается в поле text, комментарии к ответам и рекомендациям – в мемо-поле comm..В строках для рекомендаций доступны поля для указания сроков.
Строки нумеруются, в специальных полях перехода указывается на какую следующую строку (или строки) либо в какой другой файл-ситуацию надо отсюда перейти.
Имя файла-ситуации состоит из номера алгоритма, номера класса и номера самого файла в этом классе. Для буквенных ситуаций имя завершается не номером, а CHR-кодом буквы. В специальном файле перечислены все алгоритмы и классы с их номерами. Опираясь на эту информацию, программа выбирает запрошенные алгоритмы, задаёт вопросы, воспринимает ответы, выдаёт рекомендации, намечает время следующего сеанса работы, печатает протокол и всё запоминает в базе данных.
Заполнение и редактирование файла-ситуации возможно только с помощью программы-редактора.
б) Цикл «Ещё. Эта конструкция используется в автоматизированном варианте алгоритма и служит для тех случаев, когда из предлагаемого перечня ответов можно выбрать не один единственный, а любое их число. Пример – специальные диагностические процедуры, которые могут дать сразу несколько результатов, каждый из которых требует к себе особого внимания врача. Другой пример – ответы на вопрос о ведущем синдроме (их может быть два и более) или о поражённой системе органов в классе «Сопутствующие» (их может быть несколько).
Конструкция представлена на
рисунке 2.
На вопрос о результатах посева мокроты можно выбрать один из 10 утверждающих ответов (они пронумерованы в поле Dks). Ответ запомнится для дальнейших действий в «цифровой» ситуации (его код стоит в поле Kz), но сначала надо выполнить требование в поле Kss – уйти на строку с Ks=004 и задать вопрос «Ещё результат», а затем снова сделать выбор, на этот раз с возможностью сказать «отсутствует». Процедура повторяется, пока не будет использована эта возможность или не будут выбраны все утвердительные ответы. В цифровой ситуации будут заготовлены параллели для всех утвердительных ответов. Их может быть только 6 (номера в полях Kz), а не 10, потому что некоторые из результатов на деле обязывают к одинаковым действиям.
в) Программа-редактор алгоритмов действий врача. Основное назначение этой программы – исключить формальные ошибки при заполнении файла-ситуации. Она позволяет создать новый файл с правильным наименованием и редактировать имеющиеся с использованием всех изложенных выше конструкций. Соблюдение правильной последовательности вопросов, ответов и рекомендаций обеспечивается тем, что строки каждого вида вводятся программно, нажатием функциональных клавиш, причём нумерация строк и связи между строками устанавливаются автоматически (а потом могут корректироваться вручную). Одним нажатием вводится несколько дополнительных строк для ответов на вопрос, удаляются строки, оставшиеся не заполненными, создаётся параллель, делается заготовка для цикла «Ещё». Всё это, конечно, облегчает работу. Знание структуры файла позволяет легко его читать: проследить логику рассуждения при разных ответах и увидеть все переходы в другие файлы.
Буквенная ситуация, к которой обращается ситуация цифровая, используется точно так, как вообще в программировании используется процедура: она выполняет свою задачу и передаёт результат (в нашем случае порядковый номер ответа) туда, откуда вызвана. Здесь для каждого ответа указываются соответствующие ему переходы к новым строкам с вопросами либо рекомендациями или выходы в другие файлы-ситуации.
Работа врача в автоматизированном варианте регистрируется в виде протокола «Ход рассуждения». Это предъявляет строгие требования к формулировкам вопросов, ответов, рекомендаций и комментариев. Эти требования были описаны ранее, но практическое значение они приобретают именно в автоматизированном варианте. Разработчик должен всегда представлять, как введенные им тексты будут выглядеть на экране и в напечатанном протоколе.
Наконец, в редакторе есть специальная функция проверки правильности заполненных файлов-ситуаций. Она позволяет в одном файле или сразу в целой группе выявить упущения и неправильности. Такие файлы выводятся на экран с указанием на ошибку и с предложением тут же её исправить.
г) Пользовательская программа как инструмент разработчика. Программа для врача полезна разработчику тем, что позволяет сразу посмотреть, как им сделанное будет выглядеть в процессе эксплуатации. Функция «Демонстрационный вариант» позволяет начать проверку с любого файла-ситуации (хотя можно придумать пациента с именем и фамилией, выбрать алгоритм и его класс и начать «работу» с первой ситуации класса).
На любом этапе можно получить протокол пройденного пути на экране, сохранить его в текстовом файле или напечатать. Такой протокол – отличный материал для того, чтобы проверить логику на её правильность, а тексты – на их полноту, отсутствие излишеств и культуру.
Терминология. Являясь специфической областью знания, алгоритмы действия врача и их разработка неизбежно оснащаются собственной терминологией. Термины – тоже инструмент, они необходимы для полного понимания своего дела, для точного обмена информацией между разработчиками и между разработчиком и экспертом, который тоже вынужден оперировать новыми терминами. Здесь совершенно необходимо единое словоупотребление. Поэтому имеет смысл, пренебрегая некоторыми повторами, привести здесь небольшой терминологический словарь.
Алгоритм – сфера практических действий врача, ограниченная его специальностью и местом работы.
Класс ситуаций – раздел алгоритма, выделенный на основании таких признаков, с помощью которых врачи с самого начала способны предположить группу состояний или заболеваний, к которой относится пациент.
Элементарная клиническая ситуация – наименьший логически завершённый этап принятия врачебного решения, который включает в себя определённую цель, способы получения информации, перечень всех возможных решений задачи и рассуждение, позволяющее сделать выбор на основе полученных данных.
Файл-ситуация (вариант: ситуация) – фрагмент алгоритма, изложенный в файле и снабженный уникальным именем, в которое входят номер алгоритма, номер класса и код самой ситуации).
Вопрос – структурный элемент ситуации, за которым должно следовать не менее 2 ответов, и составляющий первую часть констатирующей фразы в протоколе «Ход рассуждения».
Ответ – структурный элемент ситуации, следующий за вопросом и составляющий окончание констатирующей фразы в протоколе «Ход рассуждения».