Математическая морфология.

Электронный математический и медико-биологический журнал. - Т. 14. -

Вып. 2. - 2015. - URL:

http://www.smolensk.ru/user/sgma/MMORPH/TITL.HTM

http://www.smolensk.ru/user/sgma/MMORPH/N-46-html/TITL-46.htm

http://www.smolensk.ru/user/sgma/MMORPH/N-46-html/cont.htm

                                                                                                                                                    

УДК 510.63

 

ЛОГИЧЕСКАЯ МОДЕЛЬ ПРЕДСТАВЛЕНИЯ И ОБРАБОТКИ ЗНАНИЙ НА ОСНОВЕ МНОГОСОРТНОЙ ЛОГИКИ ПЕРВОГО ПОРЯДКА В ЗАДАЧЕ ПОДДЕРЖКИ ПРИНЯТИЯ РЕШЕНИЙ ПО ПЕРВИЧНОМУ ВЫБОРУ АНТИМИКРОБНОЙ ТЕРАПИИ

 

Ó 2015 г. Младов В. В., Зернов М. М., Кузьменков А. Ю.

 

(mladov-2.doc)

 

Предложена логическая модель выбора варианта расчёта и обоснования частных показателей качества, являющаяся основным компонентом гибридной модели многокритериального выбора альтернатив[1] при решении задачи поддержки принятия решений по первичному назначению антимикробной терапии. Рассмотрены особенности практической реализации компонентов логической модели.

Ключевые слова: логическая модель, многокритериальный выбор, частные показатели качества, задача поддержки принятия решений, антимикробная терапия, первичное назначение.

 

1. Преимущества логической модели представления и обработки знаний

Рассматриваемая предметная область описывается рядом сущностей с большим количеством связей между ними. Связи между сущностями могут изменяться с течением времени, что может обусловить необходимость внесения изменений в алгоритмы работы СППКР с целью учёта дополнительных факторов при подборе оптимального назначения АМТ. Кроме того, многогранность особенностей патогенеза и клинических проявлений заболеваний, с которыми сталкиваются врачи разных специальностей, не позволяет определить заранее полный перечень тех вопросов, для решения которых может быть использована СППКР. Всё это накладывает определённые требования к гибкости модели и трудоёмкости внесения изменений для дополнительного учёта новой информации.

Для представления знаний при решении поставленной задачи поддержки принятия решений используется логических подход, что обеспечивает высокую гибкость и избавляет от необходимости чётко прописывать перечень возможных форматов задаваемых пользователем вопросов. В основе модели лежит формализованная человеческая логика. Усилия программиста здесь направлены на описание логической модели фрагмента предметной области решаемой задачи в терминах объектов этой предметной области, их свойств и отношений между ними, а не деталей программной реализации. Разработчик лишь описывает решаемую задачу в виде множества аксиом, характеризующих зависимости объектов, а получение всех остальных знаний для поиска решения происходит по правилам вывода. Таким образом, обеспечивается значительно более высокая скорость разработки, значительно меньший размер исходного кода, легкость записи знаний и учёта дополнительных факторов, оказывающих влияние на исход, а также более понятные по сравнению с императивными реализациями программы [2, 3].

Предметная область является структурированной, а между сущностями могут возникать различные взаимосвязи, которые могут быть представлены в виде n-местных предикатов.

На основании вышеизложенных соображений, при построении логической модели представления знаний рассматриваемой предметной области предложено использовать многосортную логику первого порядка.

2. Функции и общая структура логической модели

На логическую модель как на основной компонент гибридной модели многокритериального выбора альтернатив возложены следующие функции:

1)  выбор вида терапии;

2)  формирование множества допустимых альтернатив;

3)  расчёт частных показателей качества для каждой альтернативы;

4)  вывод сообщений о необходимости формирования дополнительного списка АМП, активных в отношении указанного в сообщении микроорганизма;

5)  вывод информационных сообщений.

Общая структура логической модели представлена на рисунке 1. Входные данные логической модели полностью совпадают со входными данными гибридной модели, особенности и формат которых были рассмотрены ранее.

 

 

Рисунок 1 – Общая структура логической модели представления и обработки знаний по первичному назначению АМТ

 

3. Сорта и константы, используемые в логической модели

Поскольку все вычисления в рамках логической модели проводятся относительно конкретного пациента, данные о котором подаются на вход модели в виде одноместных и многоместных предикатов с префиксом «Patient_», то определение сорта Пациент нецелесообразно.

Сорт Диагноз содержит элементы, которыми являются наименования заболеваний, инфекций и других особенностей состояния пациента (беременность, период лактации, возрастные ограничения и т.п.), а также наименования групп произвольного уровня вложенности, в которые они объединяются.

Diag = {Пневмония, Пневмония внебольничная ранняя (дети 7дн-6мес), Инфекции ЖКТ, ХПН, Пневмония внебольничная ранняя, Лактация, …}

К элементам сорта Антибиотик относятся международные непатентованные наименования[2] АМП, а также наименования их групп произвольного уровня вложенности.

Drug = {Ампициллин, Цефтриаксон, Пиперациллин/Тазобактам, Амоксициллин, Ванкомицин, …}

Элементы сорта Возбудитель – названия микроорганизмов, которые могут быть возбудителями различных инфекционных процессов, а также их семейств, родов и видов.

Organism = {Enterobacteriaceae, Escherichia spp, Escherichia coli, Acinetobacter spp, Acinetobacter baumannii, Escherichia albertii, …}

Элементы каждого из описанных выше сортов определённым образом классифицированы. С целью реализации полиморфных предикатов и функций, предназначенных для определения в базе знаний классификаций элементов каждого из трёх сортов и последующей работы с ними, введён сорт Элемент, который представляет собой объединение сортов Диагноз, Антибиотик и Возбудитель.

Element = {Diag, Drug, Organism}

Наименования систем органов или их отдельных составляющих, в пределах которых развивается патологический процесс и/или откуда производится забор клинического материала пациента для проведения бактериологического исследования – элементы сорта Локализация.

Local = {Дыхательные пути, Брюшная полость, Кожа и мягкие ткани, …}

Сорт Регион используется при получении сводных статистических данных по результатам определения чувствительности штаммов микроорганизмов к различным АМП. Элементы данного сорта - названия городов-региональных центров РФ, в которых расположены ЛПУ. Для обеспечения возможности задания в базе знаний общих данных по России введён элемент «РФ».

Region = {РФ, Москва, Санкт-Петербург, Смоленск, Екатеринбург, Казань, …}

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

Sensitivity = {Чувствителен, Нечувствителен}

Сорт Показание/Противопоказание обусловлен необходимостью определения в базе знаний информации о показаниях и противопоказаниях АМП в соответствии с инструкцией по их применению.

IndOrContr = {Показание, Противопоказание}

Элементы сорта Эмпирическая терапия используются для указания вида эмпирической терапии.

EmTherapy = {Стандартная, Анаэробная}

Сорт Эффективность используется для указания оценки эффективности предшествующей терапии пациента.

Efficiency = {Эффективна, Неэффективна}

Логика модели использует аппарат исчисления списков. Под списком понимается полиморфный тип, задаваемый оператором list(). Работа со списками осуществляется через механизм рекурсивного обращения, для реализации которого используется стандартный приём: разделение списка на голову (Head) и хвост (Tale). Для этого используется специальная форма записи [H | T].

Поскольку назначение может содержать более, чем один АМП, определён сорт Опция терапии (назначение), который представляет собой список элементов сорта Антибиотик.

Medication = list(Drug)

Ввиду необходимости проведения анализа нескольких элементов сортов Опция терапии (назначение), Диагноз и Антибиотик определены сорта Список назначений, Список диагнозов и Список антибиотиков.

MedicationList = list(Medication)

DiagList = list(Diag)

DrugList = list(Drug)

Для обеспечения возможности получения полных перечней всех доступных в базе знаний элементов сортов Опция терапии (назначение), Диагноз и Антибиотик определены следующие константы:

AllDiags: à DiagList

AllDrugs: à DrugList

AllMedications: à MedicationList

4. Задание классификаций и работа с ними

Элементы сортов Диагноз, Антибиотик и Возбудитель определённым образом классифицируются между собой. Классификации в базе знаний определены в виде древовидных структур (иерархий). Схемы каждой из трёх адаптированных на основе [1, 4-7] под нужды логической модели классификаций приведены на рисунках 2-4.

 

 

Рисунок 2 – Схема адаптированной классификации антибиотиков

 

 

Рисунок 3 – Схема адаптированной классификации диагнозов

 

 

Рисунок 4 – Схема адаптированной классификации микроорганизмов

 

Иерархия элементов задаётся с помощью двуместных предикатов Element_Element (Element, Element) и Anc (Element, Element). Предикат Element_Element задаёт отношение между двумя соседними элементами в иерархии, где терм, который стоит на первом месте, находится на более высоком уровне иерархии, чем терм, стоящий на втором месте. Предикат Anc (Element, Element) задаёт отношение между элементами разных уровней, а его выполнимость определяется по следующим формулам:

Anc(ElementX, ElementX)

Element_Element(ElementY, ElementX) Anc(ElementY, ElementX)

Anc(ElementZ, ElementY) Anc(ElementY, ElementX) Anc(ElementZ, ElementX)

Предикат isRoot (Element) устанавливает корень дерева иерархии:

¬ElementY(Anc(ElementY, ElementX)) isRoot(ElementX)

Для определения элемента-корня дерева, в котором находится указанный элемент, используется функция getRoot: Element à Element:

Anc(ElementY, ElementX) isRoot(ElementY) getRoot(ElementX) = ElementY

Для нахождения минимального общего предка между двумя элементами используется функция MinAnc: Element × Element à Element:

Anc(ElementZ, ElementX) Anc(ElementZ, ElementY)

¬ElementT(Anc (ElementT, ElementX) Anc(ElementT, ElementY)

Anc(ElementT, ElementZ)) MinAnc (ElementX, ElementY) = ElementZ

Номер уровня элемента относительно корня дерева иерархии определяется с помощью функции getLevel: Element × Element à int:

isRoot (ElementX) getLevel (ElementX, 0)

Element_Element (ElementY, ElementX) (getLevel (ElementY) == n)

getLevel (ElementX) = n+1

5. Показания и противопоказания

В рамках логической модели под особенностями состояния пациента понимается любая информация о нём, которая указана в анамнезе и с точки зрения врача важна при подборе терапии: сопутствующие диагнозы, осложнения, данные о гиперчувствительности, период лактации и т.п.

Информация обо всех особенностях состояния пациента, за исключением гиперчувствительности, хранится в базе знаний машины логического вывода в виде предикатов Patient_Addition (Diag). Для хранения данных о конкретном антибиотике или группе антибиотиков, к которым у пациента установлено наличие аллергии, используется предикат Patient_HyperSens (Drug).

Поскольку формирование множества альтернатив, на котором в дальнейшем осуществляется многокритериальный выбор, основано на информации об основном диагнозе пациента, то он, будучи по своей сути наиболее важным и приоритетным показанием, не учитывается при расчёте соответствующего показателя.

Стоит отметить, что в рамках модели под основным диагнозом понимается тот диагноз, для которого проводится выбор и ранжирование возможных вариантов назначений (альтернатив). Этот диагноз указывается врачом при запуске системы и может не соответствовать основному диагнозу, указанному в анамнезе.

В контексте логической модели показания – это особенности состояния пациента (как правило, сопутствующие диагнозы и осложнения), при которых показано применение того или иного АМП. Под противопоказаниями понимаются те особенности состояния пациента, которые повышают риск развития НЛР по результатам терапии. В зависимости от величины этого риска противопоказания разделены на два класса: значимые и незначимые. Для хранения коэффициентов значимости каждого из противопоказаний в базе знаний используется предикат Contr_Priority (Diag, float). Для получения значения этого коэффициента для указанного диагноза используется функция getContrPriority: Diag à float:

Contr_Priority(Diag, X) → getContrPriority(Diag) = X

¬Contr_Priority(Diag, X) → getContrPriority(Diag) = 0

Данные о показаниях и противопоказаниях к применению АМП, полученные на основе информации из инструкций по применению этих АМП, хранятся в базе знаний в виде предикатов Drug_IndOrContr (Drug, Diag, IndOrContr). Однако стоит отметить, что в инструкциях по применению вместо перечня конкретных диагнозов, по которым запрещено применение данного АМП, чаще всего указывается только наименование их группы (например, Инфекции ЖКТ), в то время как в анамнезе пациента всегда указан конкретный диагноз. В связи с этим в логической модели предусмотрено доопределение предикатов Drug_IndOrContr по следующему правилу: если антибиотик (противо)показан для нозологической единицы, то он (противо)показан для всех её элементов:

Drug_IndOrContr(Drug, DiagB, IndOrContr) Anc(DiagB, DiagA) →

Drung_Ind (Drug, DiagA)

Результат проверки элемента сорта Диагноз на предмет его наличия среди показаний или противопоказаний к применению определённого АМП определяется выполнимостью предиката CheckMedication (Medication, Diag, IndOrContr), которая проверяется по следующим формулам:

Drug_IndOrContr (H, Diag, Противопоказание)

checkMedication (T, Diag, Противопоказание) →

checkMedication ([H | T], Diag, Противопоказание)

¬checkMedication ([], Diag, Противопоказание)

6. Выбор вида терапии и формирование множества альтернатив

Выбор терапии – эмпирической (в отсутствие достоверной информации о возбудителей у данного пациента) или этиотропной (при известном возбудителе) – основан на наличии или отсутствии результатов бактериологического исследования, которые являются входными данными логической модели и задаются предикатом Patient_Organism (Organism, Local). Поскольку наличие информации о возбудителе позволяет подобрать более эффективное лечение, этиотропная терапия обладает более высоким приоритетом. В связи с этим при запуске модели сначала проводится проверка условий, обеспечивающих возможность назначения лечения по этиотропному сценарию, а при отсутствии такой возможности формирование списка допустимых альтернатив происходит путём отбора опций эмпирической терапии инфекционного заболевания пациента, заложенных в базу знаний на основе клинических рекомендаций.

Формирование множества альтернатив, из которого впоследствии происходит выбор оптимальной альтернативы, осуществляется на основе рекомендаций, заложенных в базе знаний машины логического вывода. Опции эмпирической и этиотропной терапии задаются предикатами EmR (Diag, Medication, EmTherapy, float) и EtR (Diag, Organism, Medication) соответственно. Предикат EmR, помимо сопоставления потенциального назначения указанному в предикате диагнозу, также содержит информацию о виде эмпирической терапии (анаэробная или неанаэробная), к которому относится указанное назначение, и его весовом коэффициенте.

К показателям качества альтернатив относятся:

1)    показатель чувствительности;

2)    показатель наличия противопоказаний к применению АМП;

3)    показатель наличия показаний к применению АМП

4)    показатель предшествующей терапии.

Для получения числовых значений показателей качества каждой из альтернатив используются функции EtC: Medication × Organism à <float, float, float, float> и EmC: Medication à <float, float, float, float> для этиотропной и эмпирической терапии соответственно:

EtC(Medication, Organism) = <getCoeffSens(Medication, Organism),

getCoeffContr(Medication), getCoeffInd(Medication, AllDiags),

getCoeffPT(Medication)>

EmC(Medication) = <getCoeffSensEmp(Medication, EmTherapy),

getCoeffContr(Medication), getCoeffInd(Medication, AllDiags),

getCoeffPT(Medication)>

Функции расчёта коэффициентов будут рассмотрены далее.

Проверка наличия в базе знаний какой-либо информации о результатах проведения бактериологического исследования проводится с помощью нульместного предиката LabAnalisys:

Patient_Organism(Organism, Local) LabAnalisys

¬Organism(Patient_Organism(Organism, Local)) ¬LabAnalisys

Для возможности формирования множества альтернатив по этиотропному сценарию также необходимо проверить совпадение зоны, в которой был осуществлен забор клинического материала у пациента, с локализацией диагноза, который обозначен как основной. Локализация клинического материала пациента задаётся как один из термов предиката Patient_Organism. Локализация уточнённого диагноза, который указывается как основной диагноз пациента при помощи одноместного предиката Patient_MainDiag(Diag), напрямую в базе знаний не хранится с целью предупреждения избыточности данных, т.к. локализация развития инфекционного процесса является общей для всех диагнозов, относящихся к какой-либо нозологической единице. В связи с этим для получения информации о локализации, сопоставленной диагнозу пациента, необходимо подняться в дереве иерархии (см. рисунок 3) до того уровня, где указано наименование нозологической единицы, которой и сопоставлена локализация с помощью предиката Diag_Local (Diag, Local). Например, при наличии у пациента диагноза «Пневмония внебольничная (Взрослые амбулаторные пациенты без факторов риска)» предикат Patient_MainDiag задан только для элемента Без факторов риска сорта Диагноз. Таким образом, для получения информации о локализации данного диагноза необходимо подняться по дереву иерархии до элемента Инфекции дыхательных путей, который и будет сопоставлен с элементом Дыхательная система сорта Локализация при помощи предиката Diag_Local. Описанный механизм получения элемента-предка для заданного диагноза-потомка, сопоставленного с пациентом как его основной диагноз, реализуется с помощью функции getDiagGroup: Diag à Diag:

Patient_MainDiag(DiagA) Element_Element(DiagB, DiagA)

Local(Diag_Local(DiagB, Local)) → getDiagGroup(DiagA) = DiagB

Patient_MainDiag(DiagA) Element_Element(DiagB, DiagA)

¬Local(Diag_Local(DiagB, Local)) →

getDiagGroup (DiagA) = getDiagGroup (DiagB)

Проверка наличия в результатах бактериологического исследования микроорганизмов, выделенных в клиническом материале, локализация которого совпадает с локализацией основного диагноза пациента, осуществляется с помощью предиката Local_Equality (Diag, Organism), истинность которого определяется по следующим формулам:

Patient_Organism(Organism, Local) Diag_Local(getDiagGroup(Diag), Local)

Local_Equality(Diag, Organism)

¬Local(Patient_Organism(Organism, Local) Diag_Local(getDiagGroup(Diag), Local))

¬Local_Equality(Diag, Organism)

В итоге, возможность проведения пациенту этиотропной терапии определяется через проверку истинности предиката EtUse, реализуемую с помощью следующих формул:

Patient_MainDiag(Diag) Local_Equality(Diag, Organism)

Diag_MainOrganism(Diag, Organism) EtR(Diag, Organism, Medication) → EtUse

¬Organism(Patient_MainDiag(Diag) Local_Equality(Diag, Organism)

Diag_MainOrganism(Diag, Organism) EtR(Diag, Organism, Medication)) ¬EtUse

Кроме того, в соответствии с рассмотренными ранее особенностями предметной области, при проведении этиотропной терапии необходимо осуществлять дополнительную проверку на наличие в списке потенциальных возбудителей диагноза, указанного как основной для данного пациента, анаэробных микроорганизмов. Их наличие обуславливает выполнимость предиката Anaerobes:

Patient_MainDiag(Diag) Diag_MainOrganism(Diag, Organism)

(getRoot (Organism) == Анаэробы) → Anaerobes

¬Organism(Patient_MainDiag(Diag) Diag_MainOrganism(Diag, Organism)

(getRoot(Organism) == Анаэробы)) ¬Anaerobes

 На основании всего вышеизложенного, а также особенностей предметной области, рассмотренных ранее, выбор вида терапии осуществляется на основе приведённых ниже формул:

Patient_MainDiag(Diag) Local_Equality(Diag, Organism)

Diag_MainOrganism(Diag, Organism) EtR(Diag, Organism, Medication) →

MessageOrganism(Organism) EtC(Medication, Organism)

Patient_MainDiag(Diag) LabAnalisys ¬Local_Equality(Diag, Organism))

EmR(Diag, Medication, Стандартная, int) →

EmC(Medication, Стандартная)

Patient_MainDiag(Diag) Local_Equality(Diag, Organism)

¬Diag_MainOrganism(Diag, Organism) EtUse

MessageOrganism(Organism) MessageEtCNotAvailable(Organism)

selectSens(Organism)

Patient_MainDiag(Diag) Local_Equality(Diag, Organism)

EmR(Diag, Medication, Стандартная, int)

¬Diag_MainOrganism(Diag, Organism) ¬EtUse

MessageOrganism(Organism) MessageEtCNotAvailable(Organism)

selectSens(Organism) EmC(Medication, Стандартная)

Patient_MainDiag(Diag) EtUse Anaerobes

EmR(Diag, Medication, Анаэробная, int) →

MessageAnaerobes EmC(Medication, Анаэробная)

Предикаты MessageOrganism, MessageAnaerobes,

MessageEtCNotAvailable(Organism) и selectSens(Organism) являются выходными данными логической модели наряду со сформированными списками альтернатив и соответствующими им значениями частных показателей качества и выполняют роль справочных сообщений, которые обрабатываются на последующих этапах работы гибридной модели многокритериального выбора альтернатив. Рассмотрим назначение этих сообщений:

-     MessageOrganism(Organism) – сообщить организм, относительно которого проведён подбор потенциальных опций этиотропной терапии;

-     MessageAnaerobes – сообщить о наличии среди основных возбудителей диагноза анаэробных микроорганизмов;

-     MessageEtCNotAvailable(Organism) – сообщить об отсутствии возможности подбора опций этиотропной терапии для данного возбудителя, указанного в результатах бактериологического исследования;

-     selectSens(Organism) - необходимость сформировать на основе сводных статистических данных по результатам определения чувствительности (локальных или полученных в ходе многоцентровых исследований, проводимых НИИАХ) список АМП, активных к указанному возбудителю.

Расчёт показателей качества альтернатив

Математический аппарат, используемый при расчёте частных показателей качества альтернатив, и обоснование его применения были подробно рассмотрены ранее. В рамках данной статьи рассмотрены лишь функции, непосредственно реализующие их расчёт.

При вычислении числовых значений частных показателей качества альтернатив используются стандартные функции нахождения минимального и максимального значений из двух вещественных чисел: min: float × float à float и max: float × float à float.

Рассмотрим особенности реализации расчёта каждого из показателей.

1)  показатель чувствительности

Реализация функции расчёта значения показателя чувствительности основана на изложенной ранее модели оценивания взаимного влияния показателей, учитывающей стохастическую и нестохастическую неопределённость.

Показатель чувствительности альтернативы представляет собой максимальное значение чувствительности каждого из АМП, входящих в её состав.

Вычисление показателя чувствительности в логической модели осуществляется двумя функциями: getCoeffSens: Medication × Organism à float и getCoeffSensEmp: Medication × EmTherapy à float, использующихся для этиотропной и эмпирической терапии соответственно:

getCoeffSens([H | T], Organism) =

= max(getValueSens(H, Organism), getCoeffSens(T, Organism))

getCoeffSens([], Organism) = 0

getCoeffSensEmp([H | T], EmTherapy) =

= max(getValueSensEmp(H, EmTherapy), getCoeffSensEmp(T, EmTherapy))

getCoeffSensEmp([], EmTherapy) = 0

Функции getValueSens: Drug × Organism à float и getValueSensEmp: Drug × EmTherapy à float реализуют вычисление значения чувствительности для каждого АМП в составе назначения.

Как было описано ранее, при проведении эмпирической терапии в качестве показателя чувствительности выступает приоритет опции терапии, определённый в клинических рекомендациях: 1 для терапии выбора и 0.85 для опций альтернативной терапии:

Patient_MainDiag(Diag) EmR(Diag, Medication, EmTherapy, X) →

getValueSensEmp(Medication, EmTherapy) = X

В случае этиотропной терапии значение чувствительности АМП зависит от наличия результатов определения чувствительности. При наличии результатов чувствительности непосредственно штамма микроорганизма, выделенного у пациента, в базе знаний машины логического вывода присутствует предикат Patient_TestResults (Organism, Drug, Sensitivity), а значение чувствительности в этом случае выражается бинарной величиной: 0 или 1.

При отсутствии этих результатов расчёт производится на основе сводных статистических данных о результатах определения чувствительности микроорганизмов, которые могут быть локальными (данные по региону, где расположено лечебно-профилактическое учреждение) или всероссийскими (данные, полученные в ходе проведения многоцентровых проектов НИИ антимикробной химиотерапии ГБОУ ВПО СГМУ Минздрава России).

Результаты определения чувствительности микроорганизмов содержатся в базе знаний в виде предикатов Test_Results (Region, Organism, Drug, float, int), где элемент РФ сорта Регион относится к общероссийским данным, а элементы-названия городов-региональных центров – к локальным. Вещественное число в данном предикате соответствует относительной частоте чувствительных к антибиотику Drug штаммов возбудителя Organism. Целое число – общее количество штаммов в выборке.

Наличие в базе знаний необходимых результатов тестирования осуществляется выясняется через проверку выполнимости предикатов checkTestResults (Organism, Drug) и checkLocalTestResults (Organism, Drug). Предполагается, что общероссийские данные более многочисленны, чем локальные, и содержат информацию о всех тех группах микроорганизмов, которые могут встретиться в региональных данных. Однако использование локальных данных является более приоритетным.

Поскольку свойства АМП, входящих в один класс, схожи, в рутинной клинической практике проводится тестирование штамма выделенного микроорганизма только к одному из них (см. рисунок 4), и на основании полученных таким образом данных делается заключение относительно чувствительности тестируемого штамма ко всему классу этого АМП. Кроме того, результаты тестирования чувствительности определённого микроорганизма могут отсутствовать в силу разных причин. Вместо них заключение о его чувствительности к АМП может быть сделано на основе результатов по группе, к которой он относится (см. рисунок 2).

Например, в составе назначения есть АМП Ампициллин, который относится к классу Пенициллины. У пациента выделен микроорганизм Klebsiella pneumoniae, которая относится группе Klebsiella spp. семейства Enterobacteriaceae. В лаборатории проводилось тестирование штаммов Escherichia coli, являющейся представителем группы Escherichia spp. семейства Enterobacteriaceae к АМП Бензилпенициллин, относящегося к классу Пенициллины. Таким образом, в базе содержатся результаты тестирования семейства Enterobacteriaceae к АМП класса Пенициллины, поэтому значение чувствительности АМП Ампициллин к одному из представителей класса Enterobacteriaceae может быть рассчитано.

Стоит также отметить, что в связи с более высоким приоритетом локальных результатов тестирования относительно общероссийских при наличии среди локальных данных результатов тестирования семейства Enterobacteriaceae, даже в том случае, когда общероссийские данные содержат результаты чувствительности именно для Klebsiella pneumonia, предпочтение будет отдано локальным данным.

Описанный механизм проверки наличия результатов чувствительности в логической модели реализован на основе следующих формул, определяющих выполнимость предикатов checkTestResults и checkLocalTestResults:

(Patient_Region(Region) ∧ (Test_Results(Region, OrganismX, DrugY, X, Y) ∧

Anc(DrugY, DrugX))) ∨ (Element_Element(OrganismY, OrganismX)

checkLocalTestResults(OrganismY))

checkLocalTestResults(OrganismX, Drug)

Patient_Region(Region) ∧

¬(OrganismX, DrugX(Test_Results(Region, OrganismX, DrugX, X, Y)

∨ (Test_Results(Region, OrganismX, DrugY, X, Y) ∧

Anc(DrugY, DrugX))))

→ ¬checkLocalTestResults (OrganismX, Drug)

(Test_Results(РФ, OrganismX, DrugY, X, Y) ∧ Anc(DrugY, DrugX))

∨ (Element_Element(OrganismY, OrganismX) checkTestResults(OrganismY))

checkTestResults(OrganismX, DrugX)

¬(OrganismX, DrugX(Test_Results(РФ, OrganismX, DrugX, X, Y)

∨ (Test_Results(РФ, OrganismX, DrugY, X, Y) ∧ Anc(DrugY, DrugX)))

→ ¬checkTestResults(OrganismX, DrugX)

Поскольку максимально возможный уровень обобщения результатов тестирования в базе знаний – наименование семейства, то ограничение на значение уровня, где обнаружена выполнимость предиката, не устанавливается.

Для получения наименования элемента сорта Организм, для которого возможно получение локальных или общероссийских результатов чувствительности, используется функция getOrganismGroup: Organism × Drug à Organism:

checkLocalTestResults (OrganismX, Drug) Patient_Region (Region) ∧

Test_Results (Region, OrganismX, Drug, X, Y)

getOrganismGroup (OrganismX, Drug) = OrganismX

checkLocalTestResults (OrganismX, Drug) Patient_Region (Region) ∧

¬Test_Results (Region, OrganismX, Drug, X, Y) ∧

Element_Element (OrganismY, OrganismX) →

getOrganismGroup (OrganismX, Drug) = getOrganismGroup (OrganismY, Drug)

¬checkLocalTestResults (OrganismX, Drug)

Test_Results (РФ, OrganismX, Drug, X, Y)

getOrganismGroup (OrganismX, Drug) = OrganismX

¬checkLocalTestResults (OrganismX, Drug)

¬Test_Results (РФ, OrganismX, Drug, X, Y) ∧

Element_Element (OrganismY, OrganismX) →

getOrganismGroup (OrganismX, Drug) =

= getOrganismGroup (OrganismY, Drug)

Кроме того, стоит отметить, что при отсутствии в базе знаний информации о степени тяжести состояния пациента, которая оказывает влияние на требуемый уровень активности АМП в отношении возбудителя инфекционного процесса и задаётся с помощью предиката Patient_Risk (float), вычисление значения чувствительности невозможно и поэтому принимается равным нулю.

На основании изложенных соображений, функция получения значения чувствительности для АМП в составе назначения getValueSens реализована следующим образом:

Patient_TestResults(Drug, Organism, Чувствителен) →

getValueSens(Drug, Organism) = 1

Patient_TestResults(Drug, Organism, Нечувствителен) ∨ ¬Patient_Risk(X)

∨ ¬checkTestResults(Drug, Organism) →

getValueSens(Drug, Organism) = 0

Когда ни один из перечисленных наборов условий не срабатывает, значение чувствительности вычисляется через отношение площади фигуры, расположенной под графиком кусочной функции принадлежности (ФП) нечёткого множества и для вычисления которой используется функция getSofMF: float × float à float, к площади прямоугольника с высотой, равной единице, получаемой с помощью функции getSof1: float × float à float, на общем для них отрезке, который определяется границами 95%-ного доверительного интервала (ДИ):

¬∃EmTherapy(Patient_TestResults(Drug, Organism, EmTherapy)) ∧

Patient_Risk(X) checkTestResults(Drug, Organism) →

getValueSens(Drug, Organism) =

= getSofMF(getMinCI(Drug, getOrganismGroup(Organism, Drug)),

getMaxCI(Drug, getOrganismGroup(Organism, Drug))) /

/ getSof1(getMinCI(Drug, getOrganismGroup(Organism, Drug)),

getMaxCI(Drug, getOrganismGroup(Organism, Drug))))

Параметры ФП нечёткого множества, под графиком которой необходимо вычислить площадь фигуры, определяются при помощи функций get_a: à float и get_b: à float:

Patient_Risk (X) ∧ (X <= 0.35) get_a = 0.65

Patient_Risk (X) ∧ (X > 0.35) ∧ (X <= 0.7) get_a = 0.72

Patient_Risk (X) ∧ (X > 0.7) get_a = 0.82

Patient_Risk (X) ∧ (X <= 0.35) get_b = 0.8

Patient_Risk (X) ∧ (X > 0.35) ∧ (X <= 0.7) get_b = 0.87

Patient_Risk (X) ∧ (X > 0.7) get_b = 0.95

Фигура, расположенная под графиком ФП нечёткого множества, представляет собой объединение криволинейных трапеций, образованных границами ДИ и границами отрезков, из которых она состоит, поэтому функция вычисления её площади реализована следующим образом:

getSofMF(X1, X2) = getS(max(get_a, X1), min(((get_a + get_b)/2), X2)) ∧

∧ ((X2 – get_a) > 0) ∧ ((((get_a + get_b)/2) – X1) > 0) +

         + getS (max (((get_a + get_b) / 2), X1), min (get_b, X2)) ∧

∧ ((X2 – ((get_a + get_b) / 2)) > 0) ∧ ((get_b – X1) > 0) +

         + getS (max (get_b, X1), X2) ∧ ((X2 – get_b) > 0)

Функция getS: float × float à float предназначена для вычисления площади одной из криволинейных трапеций, которые образуют рассматриваемую фигуру, на определённом отрезке, границы которого задаются входными параметрами этой функции. Для вычисления площади криволинейной трапеции используется формула Ньютона-Лейбница:

getS (X1, X2) = getF (X2) – getF (X1)

getF: float à float – функция, результатом которой является значение первообразной кусочной ФП нечёткого множества в определённой точке. Вычисление этого значения осуществляется следующим образом:

(X <= get_a) getF (X) = 0

(X > get_a) ∧ (X <= ((get_a + get_b) / 2))

getF (X) = (2 * (X – get_a)^3) / (3 * (get_bget_a)^2)

(X > ((get_a + get_b) / 2)) ∧ (X < get_b)

getF (X) = X - (2 * (X – get_b)^3) / (3 * (get_bget_a)^2)

(X >= get_b) getF (X) = 1

Для вычисления площади прямоугольника с высотой, равной единице, так же используется формула Ньютона-Лейбница:

getSof1 (X1, X2) = X2 – X1

Для расчёта границ 95%-ного доверительного интервала в модели используется метод Уилсона (Wilson), который реализован в функциях getMinCI: Organism × Drug à float и getMaxCI: Organism × Drug à float. Для расчёта ДИ необходимы два значения: относительная частота чувствительных к АМП штаммов в выборке и объём выборки. Для их получения из базы знаний используются функции getP: Organism × Drug à float и getN: Organism × Drug à float:

checkLocalTestResults (Organism, Drug)

Test_Results (Region, getOrganismGroup (Organism, Drug), Drug, X, Y)

getP (Organism, Drug) = X

¬checkLocalTestResults (Organism, Drug)

Test_Results (РФ, getOrganismGroup (Organism, Drug), Drug, X, Y)

getP (Organism, Drug) = X

checkLocalTestResults (Organism, Drug)

Test_Results (Region, getOrganismGroup (Organism, Drug), Drug, X, Y)

getN (Organism, Drug) = Y

¬checkLocalTestResults (Organism, Drug)

Test_Results (РФ, getOrganismGroup (Organism, Drug), Drug, X, Y)

getN (Organism, Drug) = Y

Реализация непосредственно функций getMinCI и getMaxCI представлена ниже:

getMinCI (Organism, Drug) = (getP(Organism, Drug) +

+ (3.8416 / (2 * getN(Organism, Drug))) –

- (1.96 * sqrt(((getP(Organism, Drug) *

* (1 - getP(Organism, Drug))) / getN(Organism, Drug)) +

+ (3.8416 / (4 * (getN(Organism, Drug))^2))))) /

/ (1 + (3.8416 / getN(Organism, Drug)))

getMaxCI (Organism, Drug) = (getP(Organism, Drug) +

+ (3.8416 / (2 * getN(Organism, Drug))) +

+ (1.96 * sqrt(((getP(Organism, Drug) *

* (1 - getP(Organism, Drug))) / getN(Organism, Drug)) +

+ (3.8416 / (4 * (getN(Organism, Drug))^2))))) /

/ (1 + (3.8416 / getN (Organism, Drug)))

Таким образом, рассмотрено логическое представление модели оценивания взаимного влияния показателей, учитывающей стохастическую и нестохастическую неопределённость.

2)  показатель наличия противопоказаний к применению АМП

Основная идея данного частного показателя заключается в поиске особенностей состояния пациента среди противопоказаний к применению АМП, входящих в состав назначения. При наличии какого-либо из этих состояний как противопоказания к применению одновременно для нескольких АМП в составе назначения оно учитывается только один раз.

Функция расчёта значения показателя наличия противопоказаний к применению АМП реализована на базе модели свёртки разноуровневых факторов с применением каскада функций суммирования и насыщения и осуществляется в три этапа:

1)  суммирование коэффициентов критичности незначимых противопоказаний с передачей полученной суммы в сигмоидальную функцию;

2)  суммирование коэффициентов критичности значимых противопоказаний с передачей полученной суммы в сигмоидальную функцию;

3)  суммирование взвешенных сумм значимых и незначимых противопоказаний с передачей полученной суммы в сигмоидальную функцию.

Для реализации этих этапов используются соответственно функции getConvolutionSeriousContr: Medication à float, getConvolutionNotSeriousContr: Medication à float и getCoeffContr: Medication à float:

getCoeffContr (Medication) =

= 1 / (1 + e^(-2 × (getConvolutionSeriousContr (Medication) +

+ getConvolutionNotSeriousContr (Medication))))

getConvolutionNotSeriousContr (Medication) =

= 0.4 / (1 + exp(-4 × getSumNotSeriousContr (Medication, AllDiags)))

getConvolutionSeriousContr (Medication) =

= 0.8 / (1 + exp(-2 × (getSumSeriousContr (Medication, AllDiags) +

+ getSumHyperSens (Medication))))

Входными данными для функций получения числовых значений свёрток значимых и незначимых противопоказаний являются результаты работы функций getSumNotSeriousContr: Medication × AllDiags à float и getSumSeriousContr: Medication × AllDiags à float, осуществляющих суммирование коэффициентов критичности противопоказаний соответствующего им класса, а также функции getSumHyperSens: Medication à float, суммирующей коэффициенты, рассчитанные на основе информации о степени сходства АМП в составе назначения с АМП, к которым у пациента диагностирована гиперчувствительность. Реализация каждой из этих функций основана на применении рекурсивного вызова:

getSumSeriousContr (Medication, [H | T]) =

= getValueSingleSeriousContr (Medication, H) +

+ getSumSeriousContr (Medication, T)

getSumSeriousContr (Medication, []) = 0

getSumNotSeriousContr (Medication, [H | T]) =

= getValueSingleNotSeriousContr (Medication, H) +

+ getSumNotSeriousContr (Medication, T)

sumNotSeriousContr (Medication, []) = 0

getSumHyperSens ([H | T]) = getValueHyperSens (H) + getSumHyperSens (T)

getSumHyperSens ([]) = 0

Функции getValueSingleNotSeriousContr: Medication × Diag à float и getValueSingleSeriousContr: Medication × Diag à float проводят проверку наличия указанного элемента сорта Диагноз среди противопоказаний АМП в составе назначения и возвращают коэффициент критичности, если элемент является провопоказанием, и нуль при противоположном исходе:

Patient_Addition (Diag) checkMedicationContr (Medication, Diag)

Contr_Priority (Diag, priority) getContrPriority (Diag) <= 0.3) →

getValueSingleNotSeriousContr (Medication, Diag) =

= getContrPriority (Diag)

¬Patient_Addition (Diag) ¬checkMedicationContr (Medication, Diag)

¬(Contr_Priority (Diag, priority) getContrPriority (Diag) <= 0.3) →

getValueSingleNotSeriousContr (Medication, H) = 0

Patient_Addition (Diag) checkMedication (Medication, Diag, Противопоказание)

Contr_Priority (Diag, priority) getContrPriority (Diag) >= 0.6) →

getValueSingleSeriousContr (Medication, Diag) =

= getContrPriority (Diag)

¬Patient_Addition (Diag) ¬checkMedication (Medication, Diag, Противопоказание)

¬(Contr_Priority (Diag, priority) getContrPriority (Diag) >= 0.6) →

getValueSingleSeriousContr (Medication, Diag) = 0

Коэффициент значимости рассчитывается с помощью функции getValueHyperSens (Drug) следующим образом:

Patient_HyperSens (DrugB) ∧ (getLevel (MinAnc (DrugA, DrugB)) == 0) →

getValueHyperSens (DrugA) = 0

Patient_HyperSens (DrugB) ∧ (getLevel (MinAnc (DrugA, DrugB)) == 1)

∧ (MinAnc (DrugA, DrugB) != Бета-лактамы) →

getValueHyperSens (DrugA) = 1

Patient_HyperSens (DrugB) ∧ (getLevel (MinAnc (DrugA, DrugB)) == 1)

∧ (MinAnc (DrugA, DrugB) == Бета-лактамы) →

getValueHyperSens (DrugA) = 0.85

Patient_HyperSens (DrugB) ∧ (getLevel (MinAnc (DrugA, DrugB)) >= 2) →

getValueHyperSens (DrugA) = 1

Таким образом, рассмотрено логическое представление модели свёртки разноуровневых факторов влияния на значение показателя на основе каскада функций суммирования и насыщения.

3)  показатель наличия показаний к применению АМП

Показатель наличия показаний к применению АМП для каждой альтернативы рассчитывается как сумма весовых коэффициентов тех показаний к применению АМП, которые одновременно встречаются как в инструкции по применению любого из АМП в составе назначения, так и среди характеристик пациента.

getCoeffInd (Medication, AllDiags) =

= getValueDiagInd (Medication, H) + getCoeffInd (Medication, T)

getCoeffInd (Medication, []) = 0

Поскольку весовой коэффициент любого показания принимается равным единице, то функция getValueDiagInd: Medication × Diag à float реализована следующим образом:

Patient_Addition (Diag) checkMedication (Medication, Diag, Показание) →

getValueDiagInd (Medication, Diag) = 1

¬Patient_Addition (Diag) ¬checkMedication (Medication, Diag, Показание) →

getValueDiagInd (Medication, Diag) = 0

4)  показатель предшествующей терапии

Список АМП (или их классов), входящих в состав предшествующей терапии пациента, с указанием оценки эффективности данной терапии хранится в базе знаний в виде предикатов Patient_PrevTh (Drug, Efficiency).

Значение показателя предшествующей терапии равно максимуму из весовых коэффициентов отдельных АМП в составе назначения, каждый из которых, в свою очередь, определяется как максимум из степеней его схожести с каждым АМП из списка предшествующей терапии пациента:

getCoeffPT ([H | T]) =

= max (getCoeffOneDrugPT (H, AllDrugs), getCoeffPT (T))

getCoeffPT ([]) = 0

getCoeffOneDrugPT (Drug, [H | T]) =

= max (getValuePT (Drug, H), getCoeffOneDrugPT (Drug, T))

getCoeffOneDrugPT (Drug, []) = 0

Коэффициент, отражающий степень сходства двух АМП, рассчитывается функцией getValuePT: Drug × Drug à float по следующим формулам:

¬Patient_PrevTh (DrugB, Efficiency)) ∨ (Patient_PrevTh (DrugB, Efficiency)

∧ (getLevel (MinAnc (DrugA, DrugB)) == 0))

getValuePT (DrugA, DrugB) = 0

Patient_PrevTh (DrugB, Эффективна) ∧ (getLevel (MinAnc (DrugA, DrugB)) == 1)

∧ (MinAnc (DrugA, DrugB) == Бета-лактамы) →

getValuePT (DrugA, DrugB) = 0.2

Patient_PrevTh (DrugB, Неэффективна) ∧ (getLevel (MinAnc (DrugA, DrugB)) == 1)

∧ (MinAnc (DrugA, DrugB) == Бета-лактамы) →

getValuePT (DrugA, DrugB) = 0.3

Patient_PrevTh (DrugB, Эффективна) ∧ (getLevel (MinAnc (DrugA, DrugB)) == 1)

∧ (MinAnc (DrugA, DrugB) != Бета-лактамы) →

getValuePT (DrugA, DrugB) = 0.6

Patient_PrevTh (DrugB, Неэффективна) ∧ (getLevel (MinAnc (DrugA, DrugB)) == 1)

∧ (MinAnc (DrugA, DrugB) != Бета-лактамы) →

getValuePT (DrugA, DrugB) = 0.7

Patient_PrevTh (DrugB, Эффективна) ∧ (getLevel (MinAnc (DrugA, DrugB)) >= 2) →

getValuePT (DrugA, DrugB) = 0.6

Patient_PrevTh (DrugB, Неэффективна) ∧ (getLevel (MinAnc (DrugA, DrugB)) >= 2) →

getValuePT (DrugA, DrugB) = 0.7

Заключение

Таким образом, предложена логическая модель выбора варианта расчёта и обоснования частных показателей качества. Результатом работы модели является одно или несколько множеств допустимых альтернатив (в зависимости от результатов бактериологического исследования клинического материала пациента) с перечнем рассчитанных для них частных показателей их качества, что в дальнейшем делает возможным в рамках гибридной модели многокритериального выбора альтернатив выбор оптимальной альтернативы на основе нечёткого отношения предпочтения. Также к результатам работы модели относится ряд информационных сообщений, на основе которых проводится дальнейшая обработка данных с выдачей суммарных результатов работы пользователю-врачу в виде рекомендаций по первичному назначению АМТ с приведением подробного обоснования их получения.

 

ЛИТЕРАТУРА

 

1)  Классификация антибиотиков по молекулярной структуре [Электронный ресурс] // Энциклопедия лекарств и товаров аптечного ассортимента «РЛС». – Режим доступа: http://www.rlsnet.ru/books_book_id_3_page_203.htm, свободный (дата обращения: 06.05.2015 г.)

2)  Логическая модель знаний [Электронный ресурс] // Портал искусственного интеллекта. – Режим доступа: http://www.aiportal.ru/articles/knowledge-models/logical-model.html, свободный (дата обращения: 06.05.2015 г.)

3)  Основы программирования на языке Пролог. Лекция 1: Введение в язык логического программирования Пролог [Электронный ресурс] // Национальный открытый университет «ИНТУИТ». – Режим доступа: http://www.intuit.ru/studies/courses/44/44/lecture/1309?page=2, свободный (дата обращения: 06.05.2015 г.)

4)  Современная классификация микроорганизмов [Электронный ресурс] // ИнфекцийЕТ. – Режим доступа: http://www.infekcii.net/sovremennaya-klassifikaciya-mikroorganizmov/, свободный (дата обращения: 06.05.2015 г.)

5)  Справочник по антимикробной терапии. Выпуск 3. Под редакцией Р.С. Козлова, А.В. Дехнича. – Смоленск: МАКМАХ, 2013. – 480 с.

6)  Breakpoint tables for interpretation of MICs and zone diameters Version 5.0, valid from 2015-01-01 [Электронный ресурс] // European Committee on Antimicrobial Susceptibility Testing (EUCAST). – Режим доступа: http://www.eucast.org/clinical_breakpoints/, свободный (дата обращения: 06.05.2015 г.)

7)  List of antibiotics [Электронный ресурс] // eMedExpert. – Режим доступа: http://www.emedexpert.com/lists/antibiotics.shtml, свободный (дата обращения: 06.05.2015 г.)

 

[1] Структура и особенности гибридной модели рассмотрены в работе тех же авторов «Гибридная модель многокритериального выбора альтернатив в задаче поддержки принятия решений по первичному выбору антимикробной терапии», опубликованной в этом же номере.

2Международное непатентованное наименование – уникальное наименование действующего вещества лекарственного средства, рекомендованное Всемирной организацией здравоохранения. 

 

 

THE LOGIC MODEL OF THE KNOWLEDGE PRESENTATION AND PROCESSING BASED ON THE MANY-SORTED FIRST-ORDER LOGIC

IN DECISION SUPPORT PROBLEM OF THE PRIMARY PRESCRIBING OF THE ANTIMICROBIAL THERAPY

 

Mladov V. V., Zernov M. M., Kuzmenkov A. U.

 

The proposed logic model of the choice of a justification the partial quality coefficients method which included as main component in the hybrid model of multicriteria choice and ranking the finite set of alternatives in decision support problem of the primary prescribing of the antimicrobial therapy. The article describes peculiarities of the practical realization of logical model components.

Key words: logical model, multicriteria choice and ranking, partial quality coefficients, decision support problem, antimicrobial therapy, primary prescribing.

 

 

Младов Владимир Валентинович

Зернов Михаил Михайлович, к.т.н.

Кузьменков Алексей Юрьевич

 

vovoch@gmail.com

 

Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

«Национальный исследовательский университет «МЭИ»

в г. Смоленске

Поступила в редакцию 15.06.2015.

 

 



[1] Структура и особенности гибридной модели рассмотрены в работе тех же авторов «Гибридная модель многокритериального выбора альтернатив в задаче поддержки принятия решений по первичному выбору антимикробной терапии», опубликованной в этом же номере

[2] Международное непатентованное наименование – уникальное наименование действующего вещества лекарственного средства, рекомендованное Всемирной организацией здравоохранения.