R을 사용하여 Medicare and Medicaid Services (CMS)의 미국 국립 공급자 식별자 (NPI) 레지스트리 API (v2.1)에 액세스하십시오 : https://npiregistry.cms.hhs.gov/. 특정 개인 또는 조직 의료 제공자와 연결된 풍부한 관리 데이터를 얻거나 제공자 이름, 위치, 서비스 유형, 자격 증명 및 기타 여러 속성을 기반으로 고급 검색을 수행하십시오. npi
데이터 추출을위한 편의 기능을 제공하므로 데이터가 덜 걸리는 시간을 줄이고 데이터를 작동시키는 데 더 많은 시간을 할애 할 수 있습니다.
의료 및 공중 보건 데이터와 함께 일하는 분석가들은 종종 비즈니스 또는 연구 질문에 답변하기 위해 여러 출처의 데이터에 가입해야합니다. 불행히도, 조직 경계에 걸쳐 고유하고 일관된 식별자를 보유한 엔터티는 거의 없기 때문에 의료 서비스에 데이터를 가입하는 것은 어렵습니다. 그러나 NPI 번호는 특정 공통 기준을 충족하는 모든 미국 제공 업체가 제공하는 서비스에 대해 상환 되려면 NPI 번호가 있어야하므로 이러한 제한을 겪지 않습니다. 이로 인해 NPI 번호는 제공자가 여러 데이터 세트에 가입하는 데 매우 유용합니다.이 패키지를 개발하기위한 주요 동기입니다.
npi
패키지를 설치하는 세 가지 방법이 있습니다.
install.packages( " npi " )
library( npi )
install.packages( " npi " , repos = " https://ropensci.r-universe.dev " )
library( npi )
devtools
패키지를 사용하여 Github에서 설치하십시오. devtools :: install_github( " ropensci/npi " )
library( npi )
npi
네 가지 함수를 내보내며,이 모든 기능은 "NPI_*"패턴과 일치합니다.
npi_search()
: NPI 레지스트리를 검색하고 목록 열로 구성된 고전성 데이터가있는 Tibbl로 응답을 반환합니다.npi_summarize()
: npi_search()
의 결과에 대한 좋은 개요를 표시하는 메소드.npi_flatten()
: 검색 결과에서 하나 이상의 목록 열을 평평하게하는 메소드, NPI 번호로 결합합니다.npi_is_valid()
: 공식 NPI 열거 표준을 사용하여 하나 이상의 NPI 번호의 유효성을 확인하십시오. npi_search()
거의 모든 NPPES API의 검색 매개 변수를 노출시킵니다. 뉴욕시에 1 차 지역을 가진 최대 10 명의 제공 업체를 찾고 싶다고 가정 해 봅시다.
nyc <- npi_search( city = " New York City " )
# Your results may differ since the data in the NPPES database changes over time
nyc
# > # A tibble: 10 × 11
# > npi enume…¹ basic other_…² identi…³ taxono…⁴ addres…⁵ practi…⁶ endpoi…⁷
# > * <int> <chr> <list> <list> <list> <list> <list> <list> <list>
# > 1 1.19e9 Indivi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > 2 1.31e9 Indivi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > 3 1.64e9 Indivi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > 4 1.35e9 Indivi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > 5 1.56e9 Indivi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > 6 1.79e9 Indivi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > 7 1.56e9 Indivi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > 8 1.96e9 Organi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > 9 1.43e9 Indivi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > 10 1.33e9 Indivi… <tibble> <tibble> <tibble> <tibble> <tibble> <tibble> <tibble>
# > # … with 2 more variables: created_date <dttm>, last_updated_date <dttm>, and
# > # abbreviated variable names ¹enumeration_type, ²other_names, ³identifiers,
# > # ⁴taxonomies, ⁵addresses, ⁶practice_locations, ⁷endpoints
전체 검색 결과에는 4 개의 일반 벡터 열인 npi
, enumeration_type
, created_date
및 last_updated_date
및 7 개의 목록 열이 있습니다. 각 목록 열은 관련 데이터 모음입니다.
basic
: 제공자에 대한 기본 프로필 정보other_names
: 공급자가 사용하는 기타 이름identifiers
: 기타 제공자 식별자 및 자격 증명 정보taxonomies
: 서비스 분류 및 라이센스 정보addresses
: 위치 및 우편 주소 정보practice_locations
: 제공자의 연습 위치endpoints
: 건강 정보 교환에 대한 제공자의 엔드 포인트에 대한 세부 정보이 목록 열 내에 가능한 필드의 전체 목록은 NPPES API 도움말 페이지에서 찾을 수 있습니다.
목록 열로 작업하는 것이 편한 경우 패키지에서 필요한 전부 일 수 있습니다. 그러나 npi
검색 결과를 요약하고 변환하는 데 도움이되는 기능도 제공합니다.
npi
에는 검색 결과 작업을위한 두 가지 주요 도우미 기능이 있습니다 : npi_summarize()
및 npi_flatten()
.
결과에서 npi_summarize()
실행하여 검색 결과에 대한보다 인간이 읽을 수있는 개요를 볼 수 있습니다. 구체적으로,이 기능은 NPI 번호, 제공자 이름, 열거 유형 (개인 또는 조직 제공 업체), 기본 주소, 전화 번호 및 1 차 분류법 (실습 영역)을 반환합니다.
npi_summarize( nyc )
# > # A tibble: 10 × 6
# > npi name enume…¹ prima…² phone prima…³
# > <int> <chr> <chr> <chr> <chr> <chr>
# > 1 1194276360 ALYSSA COWNAN Indivi… 5 E 98… 212-… Physic…
# > 2 1306849641 MARK MOHRMANN Indivi… 16 PAR… 212-… Orthop…
# > 3 1639173065 SAKSHI DUA Indivi… 10 E 1… 212-… Nurse …
# > 4 1346604592 SARAH LOWRY Indivi… 1335 D… 614-… Occupa…
# > 5 1558362566 AMY TIERSTEN Indivi… 1176 5… 212-… Psychi…
# > 6 1790786416 NOAH GOLDMAN Indivi… 140 BE… 973-… Intern…
# > 7 1558713628 ROBYN NOHLING Indivi… 9 HOPE… 781-… Nurse …
# > 8 1962983775 LENOX HILL MEDICAL ANESTHESIOLOGY, … Organi… 100 E … 212-… Intern…
# > 9 1427454529 YONGHONG TAN Indivi… 34 MAP… 203-… Obstet…
# > 10 1326403213 RAJEE KRAUSE Indivi… 12401 … 347-… Nurse …
# > # … with abbreviated variable names ¹enumeration_type,
# > # ²primary_practice_address, ³primary_taxonomy
위에서 볼 수 있듯이 npi_search()
에 의해 반환 된 데이터 프레임에는 중첩 된 구조가 있습니다. 단일 행의 모든 데이터는 하나의 NPI와 관련이 있지만 각 목록 열에는 해당 행의 NPI에 해당하는 하나 이상의 값 목록이 포함됩니다. 예를 들어, 제공자의 NPI 레코드에는 여러 관련 주소, 전화 번호, 분류 및 기타 속성이있을 수 있으며,이 속성은 모두 동일한 데이터 프레임의 행에 있습니다.
중첩 구조는 작업하기가 약간 까다로울 수 있으므로 npi
에는 npi_flatten()
포함되어 있으며, 데이터 프레임을 사용하기 쉬운 평평한 (예 : NINSTED 및 병합) 구조로 변환하는 기능입니다. npi_flatten()
다음 변환을 수행합니다.
npi_flatten()
npi_search()
의 결과를 평평하게하는 다양한 접근 방식을 지원합니다. 극단은 모든 것을 한 번에 평평하게하는 것입니다.
npi_flatten( nyc )
# > # A tibble: 48 × 42
# > npi basic_fi…¹ basic…² basic…³ basic…⁴ basic…⁵ basic…⁶ basic…⁷ basic…⁸
# > <int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
# > 1 1194276360 ALYSSA COWNAN PA NO F 2016-1… 2018-0… A
# > 2 1194276360 ALYSSA COWNAN PA NO F 2016-1… 2018-0… A
# > 3 1306849641 MARK MOHRMA… MD NO M 2005-0… 2019-0… A
# > 4 1306849641 MARK MOHRMA… MD NO M 2005-0… 2019-0… A
# > 5 1306849641 MARK MOHRMA… MD NO M 2005-0… 2019-0… A
# > 6 1306849641 MARK MOHRMA… MD NO M 2005-0… 2019-0… A
# > 7 1326403213 RAJEE KRAUSE AGPCNP… NO F 2015-1… 2019-0… A
# > 8 1326403213 RAJEE KRAUSE AGPCNP… NO F 2015-1… 2019-0… A
# > 9 1326403213 RAJEE KRAUSE AGPCNP… NO F 2015-1… 2019-0… A
# > 10 1326403213 RAJEE KRAUSE AGPCNP… NO F 2015-1… 2019-0… A
# > # … with 38 more rows, 33 more variables: basic_name <chr>,
# > # basic_name_prefix <chr>, basic_middle_name <chr>,
# > # basic_organization_name <chr>, basic_organizational_subpart <chr>,
# > # basic_authorized_official_credential <chr>,
# > # basic_authorized_official_first_name <chr>,
# > # basic_authorized_official_last_name <chr>,
# > # basic_authorized_official_middle_name <chr>, …
그러나 필드의 수와 값의 잠재적 조합이 많기 때문에이 접근법은 작은 데이터 세트에 가장 적합합니다. 아마도 원본 데이터 프레임의 원래 데이터 프레임에서 소수의 목록 열을 평평하게하여 원하는 후에는 다른 목록 열로 프로세스를 반복하고 병합 할 것입니다. 예를 들어, 기본 제공 업체 및 제공 업체 분류 정보를 평평하게하려면 해당 목록 열을 cols
인수에 이름의 벡터로 제공합니다.
# Flatten basic provider info and provider taxonomy, preserving the relationship
# of each to NPI number and discarding other list columns.
npi_flatten( nyc , cols = c( " basic " , " taxonomies " ))
# > # A tibble: 20 × 26
# > npi basic_fi…¹ basic…² basic…³ basic…⁴ basic…⁵ basic…⁶ basic…⁷ basic…⁸
# > <int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
# > 1 1194276360 ALYSSA COWNAN PA NO F 2016-1… 2018-0… A
# > 2 1306849641 MARK MOHRMA… MD NO M 2005-0… 2019-0… A
# > 3 1306849641 MARK MOHRMA… MD NO M 2005-0… 2019-0… A
# > 4 1326403213 RAJEE KRAUSE AGPCNP… NO F 2015-1… 2019-0… A
# > 5 1326403213 RAJEE KRAUSE AGPCNP… NO F 2015-1… 2019-0… A
# > 6 1326403213 RAJEE KRAUSE AGPCNP… NO F 2015-1… 2019-0… A
# > 7 1346604592 SARAH LOWRY OTR/L YES F 2016-0… 2018-0… A
# > 8 1346604592 SARAH LOWRY OTR/L YES F 2016-0… 2018-0… A
# > 9 1427454529 YONGHONG TAN <NA> NO F 2014-1… 2018-1… A
# > 10 1558362566 AMY TIERST… M.D. YES F 2005-0… 2019-0… A
# > 11 1558713628 ROBYN NOHLING FNP-BC… YES F 2016-0… 2018-0… A
# > 12 1558713628 ROBYN NOHLING FNP-BC… YES F 2016-0… 2018-0… A
# > 13 1558713628 ROBYN NOHLING FNP-BC… YES F 2016-0… 2018-0… A
# > 14 1558713628 ROBYN NOHLING FNP-BC… YES F 2016-0… 2018-0… A
# > 15 1558713628 ROBYN NOHLING FNP-BC… YES F 2016-0… 2018-0… A
# > 16 1558713628 ROBYN NOHLING FNP-BC… YES F 2016-0… 2018-0… A
# > 17 1639173065 SAKSHI DUA M.D. YES F 2005-0… 2019-0… A
# > 18 1639173065 SAKSHI DUA M.D. YES F 2005-0… 2019-0… A
# > 19 1790786416 NOAH GOLDMAN M.D. NO M 2005-0… 2018-0… A
# > 20 1962983775 <NA> <NA> <NA> <NA> <NA> 2018-0… 2018-0… A
# > # … with 17 more variables: basic_name <chr>, basic_name_prefix <chr>,
# > # basic_middle_name <chr>, basic_organization_name <chr>,
# > # basic_organizational_subpart <chr>,
# > # basic_authorized_official_credential <chr>,
# > # basic_authorized_official_first_name <chr>,
# > # basic_authorized_official_last_name <chr>,
# > # basic_authorized_official_middle_name <chr>, …
신용 카드 번호와 마찬가지로 NPI 번호는 운송에서 안개가 나거나 손상 될 수 있습니다. 마찬가지로 공식적으로 발행 한 NPI 번호에는 오류 확인 목적으로 체크 숫자가 있습니다. npi_is_valid()
사용하여 발생한 NPI 번호가 유효하게 구성되어 있는지 확인하십시오.
# Validate NPIs
npi_is_valid( 1234567893 )
# > [1] TRUE
npi_is_valid( 1234567898 )
# > [1] FALSE
이 기능은 NPI 번호가 활성화되었는지 또는 비활성화되었는지 확인하지 않습니다 ( #22 참조). NPI 사양과의 숫자의 일관성을 확인합니다. 따라서 데이터 품질 문제를 조기에 감지하고 처리하는 데 도움이 될 수 있습니다.
사용자 에이전트는 소프트웨어가 API와 상호 작용하여 누가 또는 무엇을 요청하는지 알려주는 방법입니다. 이를 통해 API 관리자는 API를 사용하는 시스템을 이해하는 데 도움이됩니다. 기본적으로 npi
NPPES API에 요청을 할 때 요청 헤더는 패키지의 이름과 저장소의 URL을 참조합니다 (예 : 'NPI/0.2.0 (https://github.com/ropensci/npi). '). 사용자 정의 사용자 에이전트를 설정하려면 npi_user_agent
옵션의 값을 업데이트하십시오. 예를 들어, "my_app"라는 앱의 버전 1.0.0의 경우 다음 코드를 실행할 수 있습니다.
options( npi_user_agent = " my_app/1.0.0 " )
npi
에는 릴리스 노트가있는 웹 사이트, 모든 사용자 기능에 대한 문서 및 패키지 사용 방법을 보여주는 예제가 있습니다.
버그를 발견 했습니까? 문제 페이지에서 그것에 대해 듣고 싶습니다.
이 패키지는 기고자 행동 강령과 함께 출시됩니다. 이 프로젝트에 기여함으로써 귀하는 그 용어를 준수하기로 동의합니다.
NPI에 어떻게 기여할 수 있는지 배우고 싶으십니까? 기고자 가이드로 가십시오. 고려해 주셔서 감사합니다!
최신 인용은 패키지 웹 사이트의 저자 및 인용 페이지를 참조하십시오.
MIT (C) Frank Farach
이 패키지의 로고는 CC By-SA 4.0에 따라 라이센스가 부여되며 Frank Farach와 Sam Parmar가 공동 제작했습니다. 로고는 Asclepius의로드 이미지의 수정 된 버전과 Evanherk, GFDL에 기인 한 돋보기를 사용합니다.