Построение, статистика и предварительная обработка электронных медицинских карт (EHR) из набора данных MIMIC-III.

Один из наиболее важных шагов при выполнении любого вида машинного обучения - это понять набор данных и убедиться, что то, чего мы хотим достичь, на самом деле возможно. Итак, прежде чем продолжить нашу основную цель - анализ связи между возрастом и заболеваниями, мы сначала покажем некоторую базовую статистическую информацию о наборе данных MIMIC-III и подготовим EHR для следующих шагов.

Обратите внимание: (1) Для воспроизведения результатов (изображений) в этом руководстве вам потребуется доступ к MIMIC-III, но, поскольку я знаю, что это может быть неприятным, я создал два фиктивных файла CSV, доступных в репозитории. Эти два файла CSV имитируют два файла, которые мы получаем от MIMIC-III с помощью приведенных ниже сценариев SQL. Это не настоящие данные, и их можно использовать только для тестирования MedCAT или для изучения того, как его использовать. (2) Я буду показывать графики и статистику из набора данных MIMIC-III.

Доступ к MIMIC-III

Получить доступ к MIMIC-III не так уж сложно, вы можете отправить запрос здесь, и обычно через пару дней они одобряют ваш запрос.

Как только вы получите доступ к MIMIC-III, вы сможете загрузить полный набор данных с их веб-сайта. Первоначально файлы были в формате CSV, я решил импортировать их в базу данных PostgreSQL, чтобы немного упростить этап исследования (вы можете делать все напрямую из файлов CSV). Physionet предоставляет руководство по импорту MIMIC-III в базу данных PostgreSQL, ссылка. В моем случае мне пришлось немного изменить сценарии, чтобы эта работа работала, и запускать их без использования файлов Makefile, что по-прежнему является довольно плавным процессом.

Подготовка данных к анализу

Причина, по которой мы импортировали все в PostgreSQL, заключается в том, чтобы нам было проще просматривать, фильтровать и выбирать то, что необходимо из набора данных. MIMIC-III имеет большое количество таблиц и информации, но нас интересуют только две: noteevents и patients.

noteevents - содержит письменную часть ЭУЗ пациента . Подробнее о noteevents таблице можно найти на веб-сайте MIMIC-III. В этой таблице нас интересуют только 4 столбца: subject_id (идентификатор пациента), chartdate (дата создания заметки), категория. (какой тип заметки, например, Уход) и текст (текстовая часть заметки). Сценарий SQL, используемый для извлечения необходимой информации, приведен ниже (используйте параметр сохранения в CSV или Python для создания CSV):

SELECT subject_id, chartdate, category, text FROM mimiciii.noteevents

patients - содержит основную структурированную информацию о пациентах. Опять же, подробнее на сайте MIMIC-III. Отсюда мы возьмем три столбца: subject_id (идентификатор пациента), пол (мужской или женский), dob (дата рождения). . Скрипт SQL:

SELECT subject_id, gender, dob FROM mimiciii.patients

Обратите внимание: (1) даты в MIMIC-III случайным образом сдвигаются в будущее (хорошо, что для одного пациента все даты сдвигаются с использованием одного и того же случайного числа). (2) В MIMIC-III огромное количество noteevents, CSV составляет ~ 3,9 ГБ.

Базовая статистика по набору данных

Google Colab

Статистика по таблице пациентов

Позже мы сгруппируем пациентов по полу, чтобы показать некоторые различия между мужчинами и женщинами. Из-за этого мы хотим проверить, сбалансирован ли наш набор данных. На рисунке 1 мы видим, что пациентов мужского пола больше, чем женщин, но ничего значимого (по крайней мере, для нашего варианта использования). Всего 46520 пациентов, из них 20399 женщин и 26121 мужчин. Количество пациентов в noteeventstable немного отличается; не у всех пациентов есть клинические заметки.

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

Статистика в таблице noteevents

Из таблицы noteevents мы хотим проверить длину (количество символов) клинических заметок, что не является абсолютной необходимостью, но приятно знать, с чем мы работаем. Левая часть рисунка 2 показывает, что есть некоторые очень длинные документы, а также некоторые, содержащие около 0 символов. Чтобы немного очистить, мы удалим верхние и нижние выбросы в зависимости от длины (другими словами, самые короткие и самые длинные заметки). В чистке нет необходимости, но выбросы могут привести к странным результатам, поэтому лучше их удалить. В правой части рисунка 2 показано окончательное распределение документов по размеру.

Затем мы хотим проанализировать количество документов на одного пациента (рисунок 3). Поскольку это медицинские записи, большее количество документов означает, что ситуация для пациента, вероятно, хуже. А один документ обычно означает ложную тревогу, больного сразу выписали. Как и в предыдущем случае, мы проведем небольшую очистку и удалим выбросы, мы не хотим, чтобы пациенты имели тысячи документов или пациенты, у которых всего несколько.

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

Объединение двух таблиц - статистика на основе возраста

Помните, что все даты для одного пациента сдвинуты на одно и то же случайное число, это означает, что мы можем использовать разницу между датой рождения пациента и датой создания документа, чтобы вычислить, сколько лет было пациенту на момент написания этого документа. Здесь мы сделаем еще один шаг очистки, удалив пациентов старше 89 или младше 16 лет (этот шаг удаляет наибольшее количество пациентов, около 20%). MIMIC-III не содержит информации о детях, только новорожденных и взрослых, поэтому удаление любого лица младше 16 лет означает удаление только новорожденных. Статистика по возрасту новорожденных не имеет смысла. Что касается людей старше 89 лет, это немного крайность, и данные в MIMIC-III беспорядочные для этой возрастной группы. Подробности можно увидеть в записной книжке Jupyter, на рисунке 5 показан полученный график.

Рисунок 5 согласуется с распределением пациентов, представленным в недавнем исследовании набора данных MIMIC-III.

Наконец, в таблице 1 показана статистика нашего набора данных до и после предварительной обработки.

Конец

Если вас интересуют другие сообщения о MedCAT и электронных медицинских картах, загляните сюда.