Работа с данными по заявкам в сфере здавоохранения в PythonКлюч успешного анализа заявок в сфере здравоохранения это детальное понимание структуры и значения данных. Тем не менее, данные по заявкам часто трудно понять, они плохо документированы и даже считаются отраслевым секретом. Я работаю с данными по заявкам в здравоохранении в течение восьми лет, и этот пост будет введением в анализ данных по этим заявкам. Я проиллюстрирую примеры с помощью кода на Python, но эти принципы применимы ко всем языкам программирования. Я расскажу некоторую базовую информацию о форматировании данных по заявкам, об их структуре, а также о распространенных ошибках при чтении данных и их обработке.
Введение в данные по заявкам в сфере здравоохраненияВы быстро заметите, что большая часть этой статьи является текстом, и в ней только несколько примеров кода.
Отраслевые знания - это то, что отличает простой набор данных от глубокой и практичной аналитики.Я не могу не подчеркнуть важность глубокого понимания предмета для его анализа, здравоохранения в частности. Итак, я собираюсь сосредоточиться в этой статье на некоторых ключевых и необычных аспектах данных, которые я заметил при обучении многих программистов, новичков в сфере здравоохранения и приведу несколько примеров.
Если вы новенький в сфере здравоохранения, важно необходимо изучить то, как работает медицинская страховка, прежде чем изучать сами данные. Система здравоохранения в США сложна, как известно любому кто был пациентом и имел дело со страховой компанией.
Чтобы понять заявки в здравоохранении, лучше всего начать с данных Medicare. Правительство США создает много ресурсов позволяющих узнать разнообразные данные, и данные по медицинским заявкам, как правило, аналогичным образом структурированы по плательщикам.
ResDAC является центральным хранилищем информации о данных по заявкам Medicare и содержит все: от предварительных презентаций до словарей данных и руководств по запросу данных.
Структура данных по заявкамРесурсы ResDAC также могут помочь вам понять, как структурированы данные заявок. Для многих плательщиков разные виды услуг выставляются в разных форматах и хранятся в разных файлах. Если пациент проходит лечение в больнице, счета, которые больница отправляет страховщику за пребывание в больнице, могут быть в отдельном файле от счетов, которые врач отправляет страховщику за лечение пациента,
хотя всё происходит в той же больнице. Несмотря на то, что пациент воспринимает госпитализацию как одно «событие», каждый участвующий субъект отдельно выставляет свой собственный счет страховой компании. Вначале это сбивает с толку большинство людей, но это имеет смысл, если вы понимаете, что такое медицинская страховка. Если разные услуги для одного и того же пациента разделены по файлам, вам, конечно же, необходимо найти уникальный идентификатор пациента, который позволит вам связать их вместе.
Чтение в данных заявокЧитая данные по заявкам в здравоохранении в выбранной вами системе, вы, возможно, просматриваете неизвестное количество файлов и/или неизвестное количество столбцов. Данные часто разбиваются на отдельные файлы из-за ограничений размера на сервере хранения, но вы можете объединить все данные для работы в ваших собственных системах. Чтобы решить эту проблему, вы должны проверить файлы в каталоге и сложить их вместе, если это необходимо.
В некоторых случаях формат данных может меняться со временем. Некоторые плательщики будут заполнять только поля, необходимые в данном конкретном случае - например, если в запросе имеется 25 возможных кодов диагноза, но только 15 используются в срезе данных, полученные вами данные будут иметь только эти 15 столбцов. Настройка вашего канала поступающей информации для динамической обработки этих изменений сделает его намного более эффективным и сэкономит время отладки в дальнейшем. Вот пример того, как проверить длину столбцов и отформатировать файл при чтении.
Очистка данныхКак и при любом анализе данных, очистка данных имеет решающее значение для получения хороших результатов и занимает около 80% работы. При написании статьи предполагалось, что вы уже знаете основы очистки данных в Python.
Первой простой проблемой, которую нужно решить, является удаление любых необычных символов, которые влияют на типы данных. Иногда это можно решить, установив типы данных при чтении файла, но этого не всегда достаточно. Например, некоторые заявки могут быть отформатированы с помощью специальных символов, таких как знак доллара и запятые, и могут привести к сбою в коде. Регулярные выражения - ваши лучшие друзья в таком случае, хотя с ними может быть сложно работать. Вот простой пример.
Несколько различных систем кодирования используются в США для документирования процедур и диагностики, связанными с медицинскими услугами. Введение в различные наборы кодов можно найти на этом
правительственном веб-сайте. При рассмотрении сырой (необработанной) заявки по медицинскому обслуживанию, поля процедур и диагностики будут представлять собой буквенно-цифровые коды - например, вы можете увидеть диагноз: J03.01. Чтобы понять диагноз, может быть полезно добавить справочные файлы, которые сопоставляют простые коды с описаниями того, что означают коды, - либо путем объединения описаний, либо путем создания справочной таблицы для соответствующей базы данных. Некоторые ресурсы имеют API, поскольку определения кода могут изменяться и изменяются со временем. В качестве предупреждения: всегда тратьте время на форматирование типов данных и проверяйте их на наличие проблем стартовой нумерации. Например, одна система кодирования процедур здравоохранения всегда состоит из 5 буквенно-цифровых значений, но может начинаться со стартового 0 - это может легко вызвать проблемы в вашем анализе.
Из-за большого количества кодов в рассматриваемой системе кодирования справочные файлы не всегда являются простым набором всех кодов и их описаний. Может быть очень полезно сгруппировать коды вместе, чтобы получить краткое описание. Например, для вашего анализа вам может не потребоваться знать, что J03.01 является острым рецидивирующим стрептококковым тонзиллитом, а J05.10 - острым эпиглоттитом без обструкции - может быть достаточно знать, что оба являются типами острых инфекций верхних дыхательных путей. Некоторые наборы кодов удобно создавать таким образом, чтобы каждая цифра и ее порядок имели четкое значение, и их агрегирование было очень простым. Однако некоторые наборы кодов не имеют этой удобной функции, и такие справочные файлы могут быть добавлены при использовании слияния диапазонов. Это легко сделать в SQL, поэтому в этом примере используется библиотека sqlite.
Более подробную информацию смотрите https://docs.python.org/3/library/sqlite3.htmlВ файле данных заявок рассматриваемого типа есть много видов услуг/организаций. В файле, содержащем счета за стационар, могут быть счета за экстренную госпитализацию (для неотложного лечения острых заболеваний, таких как серьезная операция или травма), за больницы длительного ухода (для лечения заболеваний, которые требуют гораздо более длительного времени для лечения/восстановления ), за психиатрические больницы, за онкологические больницы, за больницы критического доступа…. Понимание того, как идентифицировать эти различные средства обслуживания или услуг, значительно улучшит любой анализ. Например, если ваша цель состоит в том, чтобы рассчитать частоту повторных госпитализаций (это, как правило, означает только больницы скорой помощи) то использование всего файла счетов за стационар даст вам завышенную оценку.
Этот пример показывает лишь несколько типов госпитализации. Более подробную информацию смотрите https://www.resdac.org/sites/resdac.umn.edu/files/Provider%20Number%20Table.txtОбобщение данныхЕсли данные заявок распределены по нескольким файлам, может быть полезно объединить их в хронологическом порядке, чтобы понять всю историю болезни и лечения каждого пациента. Этот тип формата обычно называют «виньеткой», и он может быть неоценимым для клинического анализа данных. Создание виньетки требует глубокого понимания данных в каждом файле. Как правило, я сначала обрабатываю файлы в похожую структуру, затем складываю их и упорядочиваю.
ИтогВ этой статье освещены некоторые ключевые аспекты работы с данными по медицинским заявкам в Python. Я надеюсь, что вы нашли это полезным! В будущем я остановлюсь на этом с большим количеством примеров кодирования и специфической информации, ориентированных на данные Medicare.
Если вы опытный специалист в области данных и ищете новую работу, то мы ищем соискателей! Посмотрите наши объявления по позиции специалист по данным
здесь и другие объявления о найме разработчиков
здесь.
Оригинал:
https://medium.com/simplyvital/working-with-healthcare-claims-data-in-python-36ef70a9a762Автор:
Camille ChicklisПеревод: KTChampions
Буду благодарен за помощь в исправлении ошибок и неточностей.