Analysis Patterns 1.0 Help

3. Наблюдения и измерения

Многие компьютерные системы хранят информацию об объектах реального мира. Эта информация попадает в них в виде записей, атрибутов, объектов и различных других представлений. Типичный путь — записать часть информации в качестве атрибута объекта. Например, тот факт, что я вешу 84 кг, будет записан как атрибут для типа «человек». В этой главе рассматривается в каких случаях этот подход не работает, и предлагаются решения для более сложных случаев.

Мы начнем с обсуждения количества (3.1) — типа, который объединяет число и связанную с ним единицу измерения. Объединяя числа и единицы измерений, мы можем более точно моделировать мир. Моделируя их как объекты, мы также можем описать конвертацию единиц измерения с помощью коэффициента преобразования (3.2). Модель количества можно расширить, используя составные единицы измерений (3.3), которые позволяют явно описать их с помощью более простых компонентов. «Количества» необходимы почти для всех компьютерных систем, например, денежные значения всегда должны быть представлены с помощью этого шаблона.

Количества можно использовать в качестве атрибутов объектов для записи информации о них. Однако этот подход начинает давать сбои при очень большом количестве атрибутов, что приводит к очень раздутым типам. В таких ситуациях измерение (3.4) можно использовать как самостоятельные объекты. Этот паттерн также полезен, когда вам нужно хранить информацию об отдельных замерах. В этой главе мы начнем использовать операционный уровень и уровень знаний (см. раздел 2.5).

Измерения позволяют нам регистрировать количественную информацию. Наблюдение (3.5) расширяет эту схему для работы с качественной информацией и, таким образом, позволяет подтипизировать концепции наблюдения (3.6) на уровне знаний. Также часто важно записывать протокол (3.7) наблюдения, чтобы клинические специалисты могли лучше интерпретировать наблюдение, а также определить точность и аккуратность наблюдения.

Ряд мелких шаблонов расширяет концепцию наблюдения. Например, разница между временем, когда произошло наблюдение и когда оно было записано, может быть зафиксирована с помощью двойной временной записи (3.8). Часто бывает важно вести учет наблюдений, которые были признаны неверными; для этого требуется отклоненное наблюдение (3.9). Самая большая головная боль при наблюдении — это работа с неопределенностью, поэтому важно записывать гипотезы об объектах. Создание дочерних типов для активного наблюдения, гипотезы и проекции (3.10) — один из способов решения этой проблемы.

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

Предыдущие шаблоны являются структурными и используются для записи наших наблюдений. Для понимания их работы, полезно рассмотреть процесс наблюдения (3.12), который можно создать с помощью событийной модели.

Немногие профессии предъявляют такие сложные требования к измерениям и наблюдениям как медицина. Модели, представленные в этой главе, являются результатом интенсивной работы по моделированию здравоохранения с клинической точки зрения — проекта Cosmos [3] Национальной службы здравоохранения Великобритании. В этом проекте объединенная команда врачей, медсестер и аналитиков совместно работала над чрезвычайно сложным доменом. Мы не приводим здесь чистое описание модели Cosmos, однако желающие могут обратиться к полной версии модели [1]. Идеи, изложенные здесь, можно перенести в другие области: В главе 4 рассматривается, как это было сделано для корпоративных финансов.

Ключевые понятия

Количество, единица, измерение, наблюдение, понятие наблюдения, тип явления, ассоциативная функция, отклоненное наблюдение, гипотеза.

3.1 Количество (Quantity)

Самый простой и распространенный способ записи измерений в современных компьютерных системах — это запись числа в поле, предназначенное для конкретного измерения, например, как показано на рис. 3.1.

3.1.png

При таком подходе единицы измерения не указываются.

Рисунок 3.1 Атрибут «Число».

Одна из проблем такого подхода заключается в том, что использование просто числа для обозначения роста человека не очень удачная идея. Что значит сказать: мой рост — 6, или что мой вес — 185? Чтобы понять смысл числа, нам нужны единицы измерения. Один из способов сделать это — ввести единицу измерения в название атрибута (например, вес в фунтах — weightInPounds). Единица измерения проясняет смысл числа, но представление остается неудобным. Другая проблема с этим подходом заключается в записи данных, на другой стороне должны использовать правильные единицы измерения для получения информации. Если кто-то сообщает мне свой вес в 80 килограммов, то что я должен записать в поле weightInPounds? В идеале хорошая запись, особенно в медицине, фиксирует именно то, что было измерено — не больше и не меньше. Преобразование, каким бы детерминированным оно ни было, не может быть точным.

В этом контексте очень полезным является понятие количества. На рисунке 3.2 показан тип объекта, объединяющий число и единицы измерения, например, 6 футов или 180 фунтов. Количество включает в себя соответствующие арифметические и сравнительные операции. Например, операция сложения позволяет складывать количества так же легко, как числа, но при этом проверяет единицы измерения, чтобы 34 дюйма не прибавлялись к 68 килограммам. Количество — это «целое значение» [2], которое пользовательский интерфейс может интерпретировать и отображать (простая операция печати может показать число и единицу измерения). Таким образом, количество вскоре становится таким же полезным и широко используемым атрибутом, как целое число или дата.

3.2.png

"Количество" всегда должно использоваться там, где требуются единицы измерения.

Рисунок 3.2 Измерения как атрибуты, использующие количество.

Пример: Мы можем представить вес в 185 фунтов в виде количества с числом 185 и единицей измерения фунт.

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

Пример: $80 будет представлено как количество с суммой 80 и единицами измерения USD.

Использование количества — важная особенность объектно-ориентированного анализа. Многие подходы к моделированию проводят различие между атрибутами и ассоциациями. Ассоциации связывают типы в модели, а атрибуты содержат некоторое значение в соответствии с типом атрибута. Возникает вопрос, что именно делает атрибут атрибутом, а не ассоциацией? Обычно атрибуты — это типичные встроенные типы большинства программных сред (integer, real, string, date и так далее). Такие типы, как количество, не вписываются в этот способ выбора между атрибутом и ассоциацией. Некоторые специалисты по моделированию говорят, что количество должно моделироваться с помощью ассоциации (потому что не типичный встроенный тип), в другие — рекомендуют атрибут (потому что это самостоятельный, широко используемый тип). В концептуальном моделировании не имеет значения, каким способом вы это сделаете, главное, чтобы вы искали и использовали такие типы. Поскольку я не делаю различий между атрибутами и ассоциациями, я не вступаю в этот спор. (Я говорю об этом потому, что нахожу такие типы, как количество, явно отсутствующими в большинстве реальных моделей).

3.2 Коэффициент конверсии (Conversion Ratio)

Мы можем эффективно использовать явно представленные в модели единицы измерения. Первое, в чем они могут пригодиться — это преобразование размерностей из одних в другие. Как показано на рисунке 3.3, мы можем использовать объекты коэффициентов преобразования, а затем в количестве создать операцию convertTo(Unit), которая может вернуть новый экземпляр количества в заданной единице измерения. Эта операция использует коэффициенты преобразования, чтобы определить, можно ли сделать приведение единиц измерений.

3.3.png

Рисунок 3.3 Добавление коэффициентов преобразования к единицам измерения.

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

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

Коэффициенты преобразования могут выполнять большинство, но не все виды преобразований. Конвертация значения температуры из Цельсия в Фаренгейты требует немного больше, чем простое перемножение. В этом случае требуется метод индивидуального экземпляра (см. раздел 6.6).

Если у нас много разных размерностей и надо обеспечить конвертацию, то можно рассмотреть возможность хранения размерности. Например, сила имеет размерность [MLT 2], и нам также нужен скаляр для единиц измерения, которые не представлены в системe Си. Имея размерность и скаляр, мы можем автоматически вычислять коэффициенты преобразования, хотя это и требует некоторой работы чтобы все настроить.

Имейте в виду, что время неправильно переводится между днями и месяцами, потому что количество дней в месяце не постоянно.

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

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

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

3.3 Составные единицы измерений (Compound Units)

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

3.4.png

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

Рисунок 3.4 Составные единицы измерений.

Пример: Мы можем представить площадь в 150 квадратных ярдов количеством, значение которого равно 150, а единица измерения — составная, которая в свою очередь состоит из размерности «фут» со степенью 2.

Вариация этой модели использует преимущество представления соотношений с помощью позиций. В отличие от обычных наборов (set), позиции позволяют нам использовать объект более одного раза в соотношении, как показано на рисунке 3.5. Позиции особенно полезны, когда у нас есть отношения с одним числовым атрибутом.

3.5.png

Эта модель более компактна, чем на рисунке 3.4.

Рисунок 3.5 Составные единицы измерений с использованием позиции.

Пример: Ускорение под действием силы тяжести может быть выражено числом 9,81 и составной единицей с «прямой позицией» выраженной метром и «обратной позицией» содержащей секунду и секунду.

Разница между рисунками 3.4 и 3.5 невелика. Я отдаю небольшое предпочтение рисунку 3.5, потому что он позволяет избежать ссылки на единицу измерения — типа, который мало что делает. Выбор между этими моделями не имеет значения для большинства клиентов составной единицы измерения. Только клиенты, которым нужно разбить составную единицу на атомарные единицы, вовлечены в процесс, а большинству клиентов типа нужно только некоторое печатное представление. Очевидно, что мы должны использовать рисунок 3.4, если наш метод не допускает разных позиций в отображениях.

3.4 Измерения (Measurement)

Моделирование количества как атрибутов может быть полезным для некоторого больничного отделения, которое собирает пару десятков измерений при каждом посещении стационара. Однако если мы посмотрим на все области медицины, то обнаружим тысячи потенциально возможных измерений для человека. Определение атрибута для каждого измерения означало бы, что у одного человека могут быть тысячи операций, что является неприемлемо сложным интерфейсом. Одно из решений — рассматривать все различные вещи, которые можно измерить (рост, вес, уровень глюкозы в крови и так далее), как объекты и ввести тип объекта явление, как показано на рисунке 3.6. Можно будет провести множество замеров, каждое из которых приписывает количество определенному типу явления. Теперь у человека будет только один атрибут для всех измерений, и сложность работы с замерами переместится на запрос тысяч экземпляров измерений и типов явлений. К тому же мы можем добавить к измерению дополнительные атрибуты, чтобы записать, кто его сделал, когда оно было сделано, где оно было сделано и так далее.

3.6.png

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

Рисунок 3.6 Представление типа измерения и явления.

Пример: Рост Джона Смита составляет 182 см, что может быть представлено измерением, которое связано с типом Человек, а объектом является Джон Смит, типом явления — рост, и количеством — 182 см.

Пример: У Джона Смита пиковая скорость экспираторного потока (сколько воздуха может быть выдуто из легких и как быстро) составляет 180 литров в минуту. Это может быть представлено измерением, которое связано с типом Человек, а объектом является Джон Смит, типом явления — пиковая скорость экспираторного потока, и количеством — 180 литров в минуту.

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

Эта модель имеет простое деление, которое оказалось очень полезным при последующем анализе. Измерения создаются как часть повседневной работы системы, основанной на этой модели. Типы явлений, однако, создаются гораздо реже, потому что они представляют собой знания о том, что нужно измерять. Таким образом, была разработана двухуровневая модель: операционный уровень состоит из измерений, а уровень знаний — из типов явлений (см. также раздел 2.5). Хотя в этом простом примере это не кажется важным, мы увидим, что размышления об этих двух уровнях полезны при более глубоком изучении моделирования. (Hа рисунке 3.6 показана разделительная линия, но в большинстве последующих рисунков мы ее не используем; однако у нас принято рисовать концепции знаний в верхней части диаграммы).

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

3.5 Наблюдение (Observation)

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

Рассмотрим проблему записи пола человека, который имеет два возможных значения: мужской и женский. Мы можем считать, что пол — это измеряемая величина, а мужчина и женщина — это два значения для него, так же как любое положительное число является значимым значением для роста человека. Затем мы можем разработать новый тип, категория наблюдений, который похож на измерение, но вместо количества имеет категорию, как показано на рисунке 3.7. Мы также можем разработать еще один новый тип наблюдения, который выступает в качестве супертипа для измерения и наблюдения качественных характеристик.

3.7.png

Эта модель поддерживает качественные измерения, такие как группа крови A.

Рисунок 3.7 Наблюдения и категории наблюдений.

Используя рисунок 3.7, мы можем сказать, что пол — это экземпляр типа явления, а мужчина и женщина — экземпляры категории. Чтобы записать, что человек — мужчина, мы создаем наблюдение с категорией «мужчина» и типом явления «пол».

Теперь нам нужно подумать, как зафиксировать, что определенные категории могут использоваться только для определенных типов явлений. Высокий, средний и низкий могут быть категориями для явления типа рост, а A, B, A/B и O — категориями для явления типа группа крови. Установление связи между категорией и типом явления может это сделать. Тогда интересным вопросом является кардинальность связей от категории к типу явления. Мы можем спросить, может ли объект A, используемый в группе крови, потенциально связываться с более чем одним типом явления? Один из ответов — конечно, да: Мы оцениваем функцию печени по шкале Чайлдса-Пью, которая имеет значения A (удовлетворительная), B (умеренная) и C (плохая). В связи с этим возникает вопрос, что мы подразумеваем под A. Если мы имеем в виду просто строку, состоящую из символа «A», то отображение многозначно и категория не зависит от типа явления. Смысл категории становится ясен только тогда, когда тип феномена вводится в качественное наблюдение. Альтернативный вариант — сделать отображение однозначным, когда категория определяется только в контексте типа явления; то есть это не просто A, а группа крови A.

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

Мои первые исследования клинического процесса выявили общую последовательность: Пациент приходит в учреждение, собираются данные о его состоянии, и врач проводит оценку. Например, пациент может прийти с жалобами на повышенную жажду, потерю веса и частое мочеиспускание (полиурию). Это может привести врача к диагнозу диабета. При регистрации этого диагноза важно учесть несколько моментов. Во-первых, недостаточно просто отметить, что у пациента диабет; врач должен также четко зафиксировать данные, на основании которых был поставлен этот диагноз. Во-вторых, врач не делает подобных выводов из ниоткуда. Случайные доказательства не собираются в случайные умозаключения. Врач должен опираться на клинические знания.

Рассмотрим этот процесс на примере нашей модели. Пациент страдает от потери веса. Мы можем отразить это, сказав, что существует явление типа изменения веса, со связанными категориями набора, потери и стабильности. Аналогичным образом существует явление типа диабет с категориями «присутствует» и «отсутствует». Очевидно, что мы можем записать связь между наблюдениями, поместив подходящее рекурсивное отношение на наблюдение, как показано на рисунке 3.8. Таким образом, мы можем записать связь между наблюдением диабета и его доказательством. Нам также необходимо записать клинические знания о связи между потерей веса и диабетом. Используя модель, показанную на рисунке 3.7, нам будет трудно записать эту связь. Тип изменения веса и категория потери веса связаны только в момент наблюдения. Нам нужен способ сказать, что потеря веса, которая может существовать без каких-либо наблюдений, находится на уровне знаний. Сделать переход от категории к типу явления однозначным — вот способ. (Раздел 3.11 обсуждает это подробнее).

3.8.png

Рисунок 3.8. Рекурсивные отношения для записи доказательств и оценки.

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

3.9.png

Помещение качественных параметров (таких, как группа крови А) на уровень знаний позволяет использовать их в правилах.

Рисунок 3.9 Явление (ранее категория) на уровне знаний.

Пример: На факт того, что человек имеет группу крови А, указывает категория наблюдения, явлением которой является группа крови А. Явление «группа крови А» связана с типом явления «группа крови».

Пример: Мы можем смоделировать низкий уровень масла в автомобиле как категорию наблюдения за автомобилем. Тип явления — «уровень масла» с возможными явлениями «переполнен», «в порядке» и «низкий». Наблюдение связывает автомобиль с явлением «низкий».

Модель на рисунке 3.9 хорошо работает для наблюдений категорий с несколькими значениями для типа явления. Но многие наблюдения предполагают просто констатацию отсутствия или наличия, а не диапазон значений. Хорошим примером таких наблюдений являются болезни: Диабет либо присутствует, либо отсутствует. Мы могли бы использовать рисунок 3.9 с явлениями «диабет отсутствует» и «диабет присутствует». Возможность явной регистрации отсутствия диабета очень важна, но также может быть разумным регистрировать отсутствие потери веса. (Если пациент пришел с симптомами диабета, но не теряет вес, это будет свидетельствовать о наличии диабета. Это не означает, что вес увеличивается или стабилен, просто он не снижается). Действительно, мы можем фиксировать отсутствие какого-либо явления, в частности, чтобы исключить гипотетические диагнозы. Таким образом, модель, показанная на рисунке 3.10, позволяет любой категории наблюдения иметь присутствие и отсутствие. Понятие наблюдения добавляется как супертип явления. Это сделано для того, чтобы позволить диабету быть концептом наблюдения, не прикрепляя его к какому-либо типу явления.

3.10.png

Отсутствие явления может быть столь же ценным, как и его присутствие.

Рисунок 3.10. Отсутствие и наличие концепций наблюдения.

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

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

3.6 Подтипизация понятий наблюдения (Subtyping Observation Concepts)

На рисунке 3.10 представлено отношение супертипа, которое позволяет обобщать понятия наблюдения. Это довольно часто встречается в медицине и ценно тем, что наблюдения могут проводиться на любом уровне обобщения. Если в наблюдении присутствует подтип, то все супертипы также считаются присутствующими. Однако если наблюдение ведется за отсутствием подтипа, то это не подразумевает ни наличия, ни отсутствия супертипов. Наблюдение отсутствия подразумевает, что все подтипы также отсутствуют. Таким образом, присутствие распространяется вверх по иерархии супертипов, а отсутствие — вниз.

Пример: Диабет — это концепция наблюдения с двумя подтипами: диабет I типа и диабет II типа. Наблюдение, что «диабет I» типа присутствует у Джона Смита, подразумевает, что «диабет» (как концепция) также присутствует у Джона Смита.

Пример: Группа крови A называется полиморфной, потому что ее можно разделить на A1 и A2. Другие группы крови не являются полиморфными.

3.7 Протокол (Protocol)

Важным понятием для записи наблюдений является протокол — метод, с помощью которого проводились наблюдения. Мы можем измерить температуру тела человека, поместив термометр в рот, подмышку или прямую кишку. Обычно показания температуры, полученные этими методами, можно считать одинаковыми; тем не менее, очень важно записать, какой метод мы использовали. Странное наблюдение часто можно объяснить, если понять, какая техника была использована для его достижения. Поэтому в здравоохранении принято всегда записывать, какие тесты использовались для регистрации наблюдений.

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

3.8 Двойной учет времени (Dual Time Record)

Наблюдения часто имеют ограниченный период времени, в течение которого они могут быть применены. Конец периода времени указывает на то, что наблюдение больше не применимо. Этот период времени отличается от времени, в которое было сделано наблюдение. Таким образом, для каждого наблюдения существует две временные записи (которые могут быть периодами или отдельными временными точками): одна записывает, когда наблюдение применимо, а вторая — когда оно записано, как показано на рисунке 3.11.

3.11.png

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

Рисунок 3.11. Двойная запись времени для наблюдения.

Пример: На консультации 1 мая 1997 года Джон Смит рассказал врачу, что шесть месяцев назад у него была боль в груди, которая продолжалась неделю. Врач регистрирует это как наблюдение наличия концепции «наблюдения боли в груди». Временная запись применимости — это период времени, начинающийся 1 ноября 1996 года и заканчивающийся 8 ноября 1996 года. Время записи — это момент времени 1 мая 1997 года. (Заметим, что здесь был бы полезен какой-то способ записи приблизительных временных точек).

3.9 Отклоненные наблюдения (Rejected Observation)

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

3.12.png

Наблюдения нельзя удалять, если требуется полный аудиторский след.

Рисунок 3.12. Отклоненные наблюдения.

Пример: У Джона Смита в анализе крови обнаружен повышенный средний корпускулярный объем. Это может быть вызвано либо В12-дефицитной анемией, либо злоупотреблением алкоголем. Джон Смит сообщает врачу, что употребляет очень мало алкоголя. Это указывает на наличие В12-дефицитной анемии, что приводит к дальнейшим обследованиям и лечению. Через полгода выясняется, что Джон Смит сильно пьет. Эта информация указывает на то, что наблюдение В12-дефицитной анемии должно быть отвергнуто наблюдением злоупотребления алкоголем. Отвергнутое наблюдение В12-дефицитной анемии должно быть сохранено, чтобы объяснить последующее лечение.

3.10 Активное наблюдение, гипотезы и прогнозы (Active Observation, Hypothesis, and Projection)

По мере записи наблюдений образуется много уровней неопределенности. Доктор может столкнуться с пациентом, у которого наблюдаются все классические симптомы диабета. Врач записывает, что,скорее всего по ее мнению, у пациента диабет, но она не может быть уверена, пока не проведет тест, а при многих заболеваниях даже тест не дает стопроцентной уверенности. Один из подходов к записи такого рода информации — присвоение вероятностей наблюдениям, но этот метод неясен и не кажется естественным. Альтернативой является использование двух классификаций: активное наблюдение и гипотеза, как показано на рисунке 3.13. Различие тонкое: активное наблюдение — это наблюдение, с которым доктор «работает», возможно, используя его как основу для лечения. Гипотеза, скорее всего, приведет к дальнейшим исследованиям.

3.13.png

Рисунок 3.13. Активное наблюдение, гипотеза и проекция.

Пример: Пациент, у которого наблюдаются жажда, потеря веса и полиурия, указывает на диабет. Однако, имея только эти симптомы, врач выдвигает гипотезу о диабете и назначает измерение уровня глюкозы в крови натощак. Результат этого теста позволяет подтвердить гипотезу или отвергнуть ее.

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

Пример: Если у пациента ревматическая лихорадка или последующее ревматическое заболевание клапанов, существует риск развития эндокардита. Этот риск регистрируется как прогноз эндокардита. Затем лечение будет основано на этом прогнозе.

Достоверность наблюдений была одной из областей, вызывавших много дискуссий в проекте «Cosmos». В эту область было внесено больше изменений и потрачено больше времени как командой, так и комиссией по контролю качества, чем в любую другую часть модели. Итоговая модель отражает мнение врачей о том, что было наиболее естественным. Классический подход к распределению вероятностей может иметь смысл для любителей научной фантастики, но явно не для докторов (которые сразу предвидят вопросы в духе: «Что я должен сделать исходя из разницы между 0.8 и 0.7?»). При активном наблюдении и выдвижении гипотез окончательная концепция становится более ясной, хотя выбор, какую классификацию использовать, более проблематичен. В итоге только группа опытных докторов, участвовавших в проекте, смогла принять полезное решение в этой области почти инстинктивно. Профессиональный аналитик в команде мог лишь указать на некоторые формальные последствия.

3.11 Связанные наблюдения (Associated Observation)

На этом этапе мы можем рассмотреть способы записи цепочки доказательств, стоящих за диагнозом. Основная идея заключается в том, чтобы связать наблюдения друг с другом (жажда пациента указывает на диабет), как и концепции наблюдения (жажда указывает на диабет). Таким образом, мы видим, что уровень знаний и операционный уровень являются отражениями друг друга, как показано на рисунке 3.14. Эти отражения связаны между собой ассоциациями, показывающими как концепции знаний применяются на операционном уровне. В данном случае связи возникают не только между наблюдением и концепцией наблюдения, но и между связями «доказательство — вывод». Таким образом, когда мы говорим, что жажда пациента указывает на то, что у него диабет, мы используем и должны явно записать, что используем общую связь между жаждой и диабетом. На рисунке 3.14 показано, как мы создаем типы для хранения не только наблюдений и концепций наблюдений, но и типов для связей на операционном уровне (ассоциированное наблюдение) и уровне знаний (ассоциативная функция).

3.14.png

Фактические цепочки доказательств для пациента записываются на операционном уровне. Уровень знаний описывает, какие цепочки возможны.

Рисунок 3.14. Связи между наблюдениями.

Пример: Врач наблюдает потерю веса, жажду и полиурию у пациента и делает ассоциированное наблюдение (и гипотезу) о диабете на основе данных наблюдений. Ассоциированное наблюдение связано с ассоциативной функцией, аргументами которой являются концепты наблюдения — потеря веса, жажда и полиурия, а продуктом — диабет.

Пример: Если моя машина не заводится и фары не работают, то оба эти наблюдения являются доказательством связанного с ними наблюдения о севшем аккумуляторе. «Не заводится машина», «не работают фары» и «сел аккумулятор» — все это понятия наблюдения, связанные ассоциативной функцией.

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

3.12 Процесс наблюдения (Process of Observation)

В этой главе мы сосредоточились на статических элементах наблюдения: что такое наблюдение или измерение и как мы можем записать их в общем виде, чтобы поддержать анализ, который необходимо провести докторам. Важно, что при моделировании мы обнаружили, что можем представить себе общую статическую модель, но поведенческая часть гораздо больше зависит от отдельных подразделений. Конечно, статическая модель подразумевает большое количество поведений. Поведение существует для того, чтобы создавать наблюдения и предоставлять различные способы навигации по ассоциациям, чтобы понять, как эти наблюдения согласуются с другими наблюдениями. Однако поведение, которое мы не можем подразумевать — это последовательность наблюдений, которые делает типичное отделение. Часто у врача есть определенный путь наблюдений, который он может пройти. Политика отделения может предусматривать запись этого пути в протоколах более высокого уровня (см. главу 8). Сложно и почти наверняка невозможно разработать общий процесс, который могли бы использовать все доктора.

Тем не менее, можно набросать общий план процесса, связанного с проведением наблюдений. Начну с того, как проведение нового наблюдения может вызвать дальнейшие наблюдения, как показано на рисунке 3.15. Всякий раз, когда врачи делают наблюдения, они учитывают возможность других связанных с ними наблюдений. Они используют известные им ассоциативные функции, чтобы составить список возможных концепций наблюдений, которые могут быть связаны с инициирующими наблюдениями. Затем они могут предложить дополнительные наблюдения, если это необходимо.

3.15.png

Дальнейшие наблюдения обусловлены уровнем знаний.

Рисунок 3.15. Выполнение наблюдения вызывает дальнейшие наблюдения.

Если вы теряетесь в нотации некоторых диаграмм, то обратитесь к полному описанию в приложении А или к его сокращенной версии в приложении C

    На рисунке 3.15 правило одновременного запуска помечено как «связанные концепции наблюдения». В диаграммах событий триггерные правила имеют две цели. Во-первых, они показывают причину и следствие. Когда мы рассматриваем бизнес-процессы, этого обычно достаточно, но, углубившись, мы видим вторую цель. Любая операция имеет вход и выход. Триггер, соединяющий две операции, должен описывать, как добраться от выхода триггерной операции до входа триггерной операции. Во многих случаях это тривиально, поскольку они являются одним и тем же объектом (как в триггере от «предложить наблюдение» к «совершить наблюдение», показанном на рисунке 3.15). Однако они могут быть довольно сложными, как, например, при поиске ассоциированных концепций наблюдения.

    Если у нас есть более сложное правило запуска, мы можем представить правило запуска с помощью другой диаграммы событий. На рисунках 3.16 и 3.17 это сделано для триггера ассоциированных концепций наблюдения. Мы начинаем с поиска всех ассоциативных функций, вход которых включает концепцию наблюдения исходного наблюдения. Затем мы оцениваем каждую из этих ассоциативных функций. Для каждой из них, получившей значение true, мы находим произведение и добавляем его к ответу. Поскольку эти диаграммы событий описывают запрос триггерного правила, все операции должны быть аксессорами и, следовательно, не должны изменять наблюдаемое состояние какого-либо объекта.

    3.16.png

    Рисунок 3.16. Диаграмма событий для описания запроса на поиск связанных наблюдений.

    Это лежит на одновременном срабатывании рис. 3.15 или в работе рис. 3. 18. Если запрос правила триггера сложный, можно представить запрос как самостоятельную операцию, как показано на рисунке 3.18. Любой из этих способов является правильным.

    3.17.png

    Эта диаграмма взаимодействия для рис. 3.16

    Рисунок 3.17. Диаграмма взаимодействия для поиска возможных концепций наблюдения, подразумеваемых наблюдением.

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

    3.18.png

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

    Рисунок 3.18. Явное обозначение запроса как операции.

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

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

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

    3.19.png

    Диаграмма расширяет рисунок 3.15 с аналогичными триггерами для вмешательств и отказов.

    Рисунок 3.19. Диаграмма событий для процесса работы с наблюдениями.

    Если вы теряетесь в нотации некоторых диаграмм, то обратитесь к полному описанию в приложении А или к его сокращенной версии в приложении C

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

      Одним из интересных моментов в работе, в результате которой были получены эти паттерны, является способ нахождения абстракций. Хотя конечные результаты, обсуждаемые здесь, обычно являются структурными, поведенческое моделирование сыграло центральную роль в понимании того, как работают эти концепции. Немаловажным фактором было и то, что доктора сами занимались моделированием. Абстракция наблюдения занимает центральное место в этих паттернах; она связывает воедино признаки, симптомы и диагнозы, которые врачи долгое время считали совершенно разными. Только пройдя через процесс моделирования, врачи смогли извлечь эту абстракцию. Если бы инженеры-программисты придумали такую абстракцию, я сомневаюсь, что они смогли бы убедить врачей в ее обоснованности. И для сомнений есть все основания, поскольку инженеры-программисты никогда не смогут обладать столь глубокими знаниями в области медицины. Лучшие концептуальные модели создаются экспертами в данной области, и они же зачастую являются лучшими разработчиками концептуальных моделей.

      Ссылки

      1. Cairns, T., A. Casey, M. Fowler, M. Thursz, and H. Timimi. The Cosmos Clinical Process Model. National Health Service, Information Management Centre, 15 Frederick Rd, Birmingham, B15 1JD, England. Report ECBS20A & ECBS20B http://www.sm.ic.ac.uk/medicine/cpm, 1992.

      2. Cunningham, W. “The CHECKS Pattern Language of Information Integrity,” In Pattern Languages of Program Design. J.O. Coplien, and D.C. Schmidt, ed. Reading, MA: Addison-Wesley, 1995, pp. 145–155.

      3. Thursz, M., M. Fowler, T. Cairns, M. Thick, and G. Gold. “Clinical Systems Design,” In Proceedings of IEEE 6th International Symposium on Computer Based Medical Systems, 1993.

      Last modified: 16 January 2025