Конвейер с открытым исходным кодом R для очистки и обработки статистики эпизода больниц на уровне пациентов (HES) и связанных данных о смертности ONS с целью создания готовых наборов данных для анализа для определенной программы анализа.
Статистика эпизода больницы (HES) - это база данных, содержащая подробности всех хоспциальных поступлений, посещаемости A & E и амбулаторных встреч в больницах NHS в Англии.
Прежде чем его можно использовать для анализа, данные HES требуют очистки, контроля качества и обработки для получения дополнительных переменных. Сложная структура записи HES, большое количество переменных и размер наборов данных делают эту задачу сложной задачей как с аналитической, так и с вычислительной точки зрения.
Полуавтоматированный рабочий процесс, который мы разрабатываем в этих процессах репозитория.
Мы используем данные HES, связанные с данными о смертности ONS с 2008/09 года до самого последнего ежеквартального выпуска. Наше приложение для данных было одобрено службой запроса запроса доступа к данным (DARS) NHS Digital [DARS).
Данные будут доступны в безопасной среде данных здоровья; Безопасный объект анализа данных (аккредитованный стандартом безопасности информационной безопасности ISO27001 и распознается для инструментария безопасности и защиты цифровых данных NHS). Никакой информации, которая может непосредственно идентифицировать пациента или другого человека, не будет использоваться.
Папка DOC содержит информацию о:
Кроме того, разделы ниже описывают
Поскольку данные HES, полученные в этом конвейере, не доступны общедоступно, код не может быть использован для воспроизведения тех же чистых данных и базы данных. Тем не менее, код может использоваться на аналогичных выдержках на уровне пациента для подготовки наборов данных для анализа. Для получения более подробной информации о том, как работает трубопровод, см. Ниже или обратитесь к документу процесса.
В документе процесса описывается общая конструкция трубопровода, перечисляет необходимые входы и высокоуровневое описание шагов в рабочем процессе.
Блок -схема показывает, как пользовательский ввод и данные перемещаются через различные функции трубопровода.
Трубопровод может запустить два режима:
update = TRUE
). Обновления данных HES в том же году перекрываются, поэтому некоторые из старых данных будут сброшены и заменены новым обновлением. Данные о смертности ONS полностью обновляются с каждым обновлением данных.В режиме сборки трубопровод
В режиме обновления , трубопровод
Архитектурная запись решения (ADR) отражает архитектурные решения и выбор дизайна, а также их контекст, обоснование и последствия. Кроме того, мы записали некоторые аналитические решения.
Пока что мы записали решения относительно
Трубов HES был построен под R версией 3.6.2 (2019-12-12)-«Темная и бурная ночь».
Следующие пакеты R, которые доступны на Cran, должны запускать трубопровод HES:
Место, где создается база данных, должно иметь достаточное количество места для хранения, что примерно эквивалентно комбинированному размеру файла извлечения из обратного извлечения данных HES плюс 2 x размер файла файла APC (как таблицы для стационарных заклинаний и непрерывных стационарных заклинаний быть добавленным).
Некоторые из этапов обработки выполняются не в памяти, а в качестве запросов SQLite. Это включает в себя дубликат алгоритма помещения, создание заклинаний и создание таблиц сводной статистики на чистых данных. В зависимости от размера набора данных, эти шаги создают большие временные базы данных SQLite (. По умолчанию они создаются в R -Home Directory, который часто расположен на диске с ограниченной емкостью для хранения.
Мы обнаружили, что выполнение Pieline не удается, когда недостаточно временного хранилища (база данных или диск или диск. Это может быть исправлено путем изменения местоположения, где создаются временные базы данных SQLite. В Windows временное расположение хранения контролируется переменной среды «TMP». Мы рекомендовали создать файл на уровне проекта.
Путь data_path
к извлечению данных HES.
Трубопровод может обрабатывать любой из следующих наборов данных на уровне пациентов: он признал уход за пациентом, несчастные случаи и чрезвычайные ситуации в нем, HEPTATIENT CARE, HES CHISTROAL CARE и записи о смертности ONS (включая файл моста, связывающий его с HES). Это требует хотя бы одного из них. Необработанные файлы данных должны быть расположены в той же папке.
Путь database_path
в папку, где будет построена база данных SQLite.
data_set_codes
Ожидается, что наборы данных HES в папке data_path
.
Это должен быть один или несколько «APC», «AE», «CC» и «op». Эти идентификаторы сопоставлены с именами необработанных файлов, что должно иметь место для необработанных файлов HES, полученных от NHS Digital. Записи о смертности ONS и файлы моста ONS-HES обрабатываются по умолчанию, если они присутствуют. Имена файлов для записей смертности и мостовых файлов должны содержать «ONS» и «BF», соответственно.
expected_headers_file
Path в файл CSV с ожидаемыми именами столбцов для каждого набора данных.
Этот файл CSV имеет по крайней мере два столбца, названные colnames
и dataset
, аналогично этому шаблону. Заголовки столбцов в данных автоматически капитализируются, когда данные считываются, поэтому имена столбцов в файле CSV должны быть всеми ограничениями. Эта информация будет использоваться для проверки, содержит ли каждый необработанный файл данных все ожидаемые столбцы.
Следующие аргументы имеют настройку по умолчанию:
chunk_sizes
Количество строк на чан для каждого набора данных.
Каждый файл данных читается и обрабатывается в кусках, которые бросают вызов ряду строк. Размер по умолчанию составляет 1 миллион строк на кусок, но это может быть изменено пользователем. Большие размеры кусок, что приводит к меньшему количеству кусков на файл, уменьшает общее время обработки. Вероятно, это связано с тем, что для каждого чанка в данном файле fread()
нужно постепенно дольше, чтобы перейти к указанному номеру строки, чтобы начать чтение данных. Тем не менее, большие размеры кусок также увеличивают время, чтобы обработать каждый кусок в памяти. Оптимальный размер кусочка уравновешивает время обработки со временем чтения и зависит от системы и набора данных, поскольку каждый набор данных может иметь различное количество переменных, и, следовательно, требуется различные объемы памяти на строку. Сначала рекомендуется запустить тесты на меньшей подмножество данных, так как очень большие размеры кусок могут привести к сбою RSTUDIO.
coerce
к принуждению типов данных.
По умолчанию функция fread()
используемая для чтения в данных, будет автоматически обнаружить типы столбцов.
В качестве альтернативы, типы данных могут быть принуждены к пользовательским типам, установив этот аргумент на TRUE
. Типы столбцов поставляются int Третий столбец, называемый type
, в файле CSV с ожидаемыми именами столбцов см. В этом шаблоне. Обратите внимание, что SQLite не имеет даты даты. Переменные даты должны храниться в качестве символов и поэтому должны быть указаны в качестве символов в файле CSV.
IMD_2014_csv
, IMD_2019_csv
и CCG_xlsx
в файлах, содержащих справочные данные, которые должны быть объединены.
Дополнительные справочные данные, которые могут быть объединены с каждой записью в настоящее время, включают индекс множественной депривации (IMD), 2015 и/или 2019 версий и идентификаторов CCG. Пути файлов к эталонным файлам должны быть предоставлены в качестве аргументов и будут соединяться на пациенте LSOA11. Файлы CSV, содержащие сопоставления LSOA11-TO-IMD, должны иметь имя столбца, которое начинается с «кода LSOA», имя столбца, которое содержит «индекс многочисленного ранга (IMD)» и имя столбца, которое содержит «индекс множественного лишения (IMD) дециль ». Файлы поиска для IMD 2015 и IMD 2019 могут быть загружены с gov.uk (файл 7: Все ряды, децили и оценки для индексов депривации и знаменателей населения). Файл поиска для идентификаторов CCG может быть загружен с NHS Digital (файл: x-изменения в сопоставлениях CCG-DCO-STP с течением времени).
update
режим трубопровода переключения.
Режим трубопровода переключается с режима Build в режим обновления, установив этот аргумент на TRUE
.
duplicate
помещение дублирующих записей.
Дополнительные столбцы будут созданы в наборе данных APC, A & E и OP, который указывает на то, может ли запись, вероятно, будет дублировать, если этот Argumet установлен на TRUE
. Правила определения и вывода можно найти в (defived_variables.md). Предупреждение: это значительно увеличит время выполнения трубопровода.
comorbiditees
помечающие сопутствующие заболевания.
Дополнительные столбцы будут созданы в наборе данных APC, включая флаги для индивидуальных условий и взвешенных и невзвешенных результатов Чарльсона и Эликсхаузера, если этот аргумент установлен на TRUE
(также см. Документ о коморбидности пакета R). Кроме того, условия трубопроводов, связанные с слабостью, и рассчитывают пользовательский индекс слабости (см.?). Предупреждение: это значительно увеличит время выполнения трубопровода.
В настоящее время трубопровод предназначен для запуска в сеансе RSTUDIO. Из консоли скомпилируется код:
> source("pipeline.R")
Затем Call pipeline()
, предоставляя в качестве аргументов путь к каталогу данных, путь к каталогу для базы данных SQLite, вектор кодов наборов данных, путь к CSV с ожидаемыми столбцами, инльворированными кодами наборов данных и типами данных, необязательным Вектор от количества строк, которые будут считываться за один раз на наборы данных, и, если это необходимо, и логического обеспечения для обеспечения принуждения. Данные будут обработаны и записаны в базу данных. Nb Это медленный процесс, и он занимает достаточное количество памяти.
Пример запустить:
> pipeline(data_path = "/home/user/raw-data/", database_path = "/home/user/database-dir/", data_set_codes = c("APC", "AE", "CC", "OP"), chunk_sizes = c(2000000, 5000000, 2000000, 3000000), expected_headers_file = "/home/user/expected_columns.csv", IMD_15_csv = "IMD_2015_LSOA.csv", IMD_19_csv = "IMD_2019_LSOA.csv", CCG_xlsx = "xchanges-to-ccg-dco-stp-mappings-over-time.xlsx", coerce = TRUE, update = FALSE, duplicates = FALSE, comorbidities = FALSE)
Например, для запроса о том, как запросить базы данных SQLite из R, см. Образаменные базы данных RSTUDIO с использованием R.
База данных можно запросить:
library( tidyverse )
library( dbplyr )
library ( DBI )
con <- dbConnect( RSQLite :: SQLite(), paste0( database_path , " HES_db.sqlite " ))
# List available tables
dbListTables( con )
# List available variables in the A&E table
dbListFields( con , " AE " )
# Option 1: Query using dbplyr
# Select table
AE <- tbl( con , ' AE ' )
# Look at the first 5 rows
AE % > %
head() % > %
collect()
# Option 2: Query using SQL
dbGetQuery( con , ' SELECT * FROM AE LIMIT 5 ' )
dbDisconnect( con )
Если вы используете DBI, используйте функцию dbGetQuery()
. Избегайте использования функций, которые могут изменить базовую базу данных, такие как dbExecute()
, dbSendQuery()
или dbSendStatement()
.
Этот проект лицензирован по лицензии MIT.