Предпосылки: подробный обзор Doctor AI: прогнозирование клинических событий с помощью повторяющихся нейронных сетей (Choi et.al, 2016)

Автор: Спаркл Рассел-Пулери и Дориан Пулери

Электронные медицинские карты (ЭМК), которые иногда взаимозаменяемо называются Электронными медицинскими картами (ЭМК), в основном используются для электронного хранения данных о здоровье пациентов в цифровом виде. Хотя использование этих систем сегодня кажется обычным явлением, в первую очередь из-за принятия Закона о медицинских информационных технологиях для экономического и клинического здравоохранения в 2014 году. Внедрение этих систем в медицинские учреждения США шло очень медленно. Тем не менее, системы EHR / EMR теперь обладают огромным количеством продольных данных о пациентах, которые могут приблизить нас к разработке персонализированных медицинских решений, ориентированных на пациента. При этом данные EHR могут быть очень беспорядочными и разреженными. Несмотря на эти проблемы, при правильном использовании данные EHR могут предоставить реальные данные о поездках пациентов, схемах лечения, предсказать код следующего диагноза пациента или риск повторной госпитализации и смертности и т. Д.

По данным на 2018 год, одни только данные здравоохранения составляют около 30% мирового производства данных. В результате не секрет, что многие компании и инвесторы рассматривают здравоохранение как следующую крупную инвестицию. Однако для того, чтобы предлагать реальные решения на уровне пациентов, нам необходимо понимать, как использовать и обрабатывать огромное количество данных, которые у нас есть. С этой целью в этом руководстве основное внимание уделяется тому, как обрабатывать данные EHR для использования в алгоритмах AI. Есть надежда, что благодаря этому пониманию с использованием смоделированных данных мы сможем привлечь больше специалистов по данным и энтузиастов к демократизации данных здравоохранения и приблизиться к тому, чтобы сделать данные EHR применимыми на уровне пациентов.

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

Это руководство разбито на следующие разделы:

Часть 1. Создание искусственных данных EHR

Часть 2: Предварительная обработка искусственно созданных данных ЭУЗ

Часть 3. Минимальная реализация Doctor AI Pytorch

Полная реализация: Использование Fast AI API

Если вам нужен быстрый обзор внутренней работы ГРУ, см. Обзор закрытых рекуррентных единиц.

Код на Github: https://github.com/sparalic/Electronic-Health-Records-GRUs

Часть 1: Создание данных искусственных электронных медицинских карт (EHR)

Таблица приема пациентов

В этой таблице содержится информация об истории и времени приема пациентов. Были созданы следующие функции:

  1. PatientID- Уникальный идентификатор, который остается с пациентом постоянно
  2. Admission ID - Для каждого посещения
  3. AdmissionStartDate - Дата и время поступления
  4. AdmissionEndDate - Дата и время выписки после лечения для определенного идентификатора госпитализации.

Таблица диагностики пациентов

Таблица диагнозов довольно уникальна, так как она может содержать несколько диагностических кодов для одного и того же визита. Например, пациенту 1 был поставлен диагноз диабет (PrimaryDiagnosisCode: E11.64) во время его / ее первого посещения (Admission ID: 12). Однако этот код также появляется при последующих посещениях (Admission ID: 34, 15), почему это так? Что ж, если у пациента диагностировано неизлечимое состояние, он / она этот код всегда будет ассоциироваться со всеми последующими визитами. С другой стороны, коды, связанные с неотложной помощью, будут приходить и уходить, как показано на PrimaryDiagnosisCode: 780.96 (головная боль).

Вспомогательные функции для синтаксического анализа данных из словаря в DataFrame

Создайте хэш-ключ для идентификатора допуска

Зачем делать этот шаг? Если ваша система EHR не имеет однозначно идентифицируемых идентификаторов допуска для каждого посещения пациента, будет трудно связать каждый идентификатор пациента с уникальным Admission ID. Чтобы продемонстрировать это, мы намеренно создали двузначные числа Admission ID, одна из которых повторялась (Admission ID: 34) для обоих пациентов. Чтобы избежать этого, мы предприняли предупредительный шаг, чтобы создать хэш-ключ, который представляет собой уникальную комбинацию первой половины уникального PatientID с дефисом и специфическим Admission ID пациентом.

Окончательные таблицы госпитализации и диагностики, созданные на основе поддельных данных EHR

Записывать таблицы в файлы csv

Часть 2: Предварительная обработка искусственно созданных данных EHR

В этом разделе мы продемонстрируем, как обрабатывать данные при подготовке к моделированию. Цель этого руководства - предоставить подробное описание того, как данные EHR должны быть предварительно обработаны для использования в RNN с помощью Pytorch. Эта статья - одна из немногих, которые предоставляют базу кода, чтобы начать подробное рассмотрение того, как мы можем создавать общие модели, которые используют временные модели для прогнозирования будущих клинических событий. Однако, хотя этот широко цитируемый документ имеет открытый исходный код (написан с использованием Theano: https://github.com/mp2893/doctorai), он многое предполагает о своих читателях. Таким образом, мы модернизировали код для простоты использования в Python 3+ и предоставили подробное объяснение каждого шага, чтобы позволить любому, у кого есть компьютер и доступ к данным здравоохранения, начать попытки разрабатывать инновационные решения для решения проблем здравоохранения.

Важный отказ от ответственности:

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

Загрузить данные: краткий обзор искусственных данных EHR, которые мы создали в части 1:

Шаг 1. Создайте сопоставление идентификаторов пациентов

На этом этапе мы собираемся создать словарь, который отображает каждого пациента с его или ее конкретным визитом или Admission ID.

Шаг 2. Создайте код диагностики, сопоставленный с каждым уникальным пациентом и посещением.

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

Шаг 3. Вставьте коды диагноза в карту посещений Карта приема пациентов

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

Шаг 4а: Извлеките идентификаторы пациентов, даты посещения и диагноз.

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

Шаг 4b: Создайте словарь уникальных диагностических кодов, назначаемых при каждом посещении для каждого уникального пациента.

Здесь нам нужно убедиться, что коды не только конвертируются в целые числа, но и сохраняются в уникальных порядках, в которых они вводились каждому уникальному пациенту.

Шаг 6: Выгрузите данные в рассмотренный список списка

Полный сценарий

Часть 3: минимальная реализация Doctor AI Pytorch

Теперь мы применим знания, полученные из Учебника ГРУ и части 1 этой серии, к более широкому общедоступному набору данных ЭУЗ. В этом исследовании будет использоваться набор данных Электронная медицинская карта (ЭУЗ) MIMIC III, который состоит из более 58 000 госпитализаций для 38 645 взрослых и 7 875 новорожденных. Этот набор данных представляет собой набор неидентифицированных отделений интенсивной терапии, находящихся в Медицинском центре Бет Исраэль Дьяконесса с июня 2001 г. по октябрь 2012 г. Несмотря на то, что они не идентифицированы, этот набор данных EHR содержит информацию о демографических характеристиках пациентов. , измерения показателей жизнедеятельности, сделанные у постели больного (~ 1 / час), результаты лабораторных анализов, коды счетов, лекарства, заметки для лиц, осуществляющих уход, отчеты о визуализации и смертность (во время и после госпитализации). Используя методы предварительной обработки, продемонстрированные на искусственно созданном наборе данных в (Часть 1 и Часть 2), мы создадим сопутствующую когорту для использования в этом исследовании.

Модель Архитектура

Проверка доступности GPU

Эта модель была обучена на системе с графическим процессором… настоятельно рекомендуется.

Загрузить данные

Предварительно обработанные наборы данных будут загружены и разделены на набор для обучения, тестирования и проверки с соотношением 75%:15%:10%.

Заполнение входов

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

ГРУ Класс

Этот класс содержит случайно инициированные веса, необходимые для начала вычисления скрытых состояний алгоритмов. Обратите внимание, что в этой статье автор использовал матрицу внедрения (W_emb), сгенерированную с помощью алгоритма skip-gram, который превзошел случайно инициализированный подход, показанный на этом шаге.

Пользовательский слой для работы с двухслойным ГРУ

Цель этого класса - выполнить первоначальное встраивание с последующим вычислением скрытых состояний и выполнением исключения между слоями.

Модель поезда

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

Заключительные примечания / следующие шаги:

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

Использованная литература:

  1. Доктор AI: Прогнозирование клинических событий с помощью рекуррентных нейронных сетей (https://arxiv.org/abs/1511.05942)