Verwenden Sie R, um den US -amerikanischen National Provider Identifier (NPI) Registry API (V2.1) durch das Zentrum für Medicare- und Medicaid -Dienste (CMS) zuzugreifen: https://npiregistry.cms.hhs.gov/. Erhalten Sie reichhaltige Verwaltungsdaten, die mit einem bestimmten individuellen oder organisatorischen Gesundheitsdienstleister verknüpft sind, oder führen Sie erweiterte Suchanfragen auf der Grundlage von Anbieternamen, Standort, Servicetyp, Anmeldeinformationen und vielen anderen Attributen durch. npi
bietet Convenience -Funktionen für die Datenextraktion, sodass Sie weniger Zeit damit verbringen können, Daten zu streiten und mehr Zeit für die Arbeit zu setzen.
Analysten, die mit Daten des Gesundheitswesens und der öffentlichen Gesundheit arbeiten, müssen häufig Daten aus mehreren Quellen anschließen, um ihre Geschäfts- oder Forschungsfragen zu beantworten. Leider ist der Beitrittsdaten im Gesundheitswesen schwierig, da so wenige Unternehmen über organisatorische Grenzen hinweg einzigartige, konsistente Kennungen haben. NPI -Zahlen leiden jedoch nicht unter diesen Einschränkungen, da alle US -Anbieter bestimmte gemeinsame Kriterien über eine NPI -Nummer verfügen, um die von ihnen erbrachten Dienste erstattet zu werden. Dies macht NPI -Zahlen unglaublich nützlich, um mehrere Datensätze durch Anbieter zu verbinden. Dies ist die Hauptmotivation für die Entwicklung dieses Pakets.
Es gibt drei Möglichkeiten, das npi
-Paket zu installieren:
install.packages( " npi " )
library( npi )
install.packages( " npi " , repos = " https://ropensci.r-universe.dev " )
library( npi )
devtools
-Paket aus GitHub: devtools :: install_github( " ropensci/npi " )
library( npi )
npi
exportiert vier Funktionen, die alle dem Muster „NPI_*“ übereinstimmen:
npi_search()
: Durchsuchen Sie die NPI-Registrierung und geben Sie die Antwort als Tibble mit hochkardinalischen Daten zurück, die in Listenspalten organisiert sind.npi_summarize()
: Eine Methode zum Anzeigen einer netten Übersicht über Ergebnisse von npi_search()
.npi_flatten()
: Eine Methode zum Abflachen einer oder mehreren Listenspalten aus einem Suchergebnis, verbunden mit der NPI -Nummer.npi_is_valid()
: Überprüfen Sie die Gültigkeit einer oder mehrerer NPI -Nummern mit dem offiziellen NPI -Enumerationsstandard. npi_search()
enthält fast alle Suchparameter der NPPES -API. Angenommen, wir wollten bis zu 10 Anbieter mit Hauptstandorten in New York City finden:
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
Die vollständigen Suchergebnisse haben vier reguläre Vektorspalten, npi
, enumeration_type
, created_date
und last_updated_date
und sieben Listenspalten. Jede List -Spalte ist eine Sammlung verwandter Daten:
basic
: Grundprofilinformationen zum Anbieterother_names
: Andere Namen, die vom Anbieter verwendet werdenidentifiers
: andere Anbieter -Kennungen und Anmeldeinformationentaxonomies
: Dienstklassifizierung und Lizenzinformationenaddresses
: Standort- und Postanschriftinformationenpractice_locations
: Praxisorte des Anbietersendpoints
: Details zu den Endpunkten des Anbieters für den Austausch von GesundheitsinformationenEine vollständige Liste der möglichen Felder in diesen Listenspalten finden Sie auf der Seite der NPPES -API -Hilfe.
Wenn Sie sich wohl mit Listenspalten arbeiten, ist dies möglicherweise alles, was Sie über das Paket benötigen. npi
bietet jedoch auch Funktionen, mit denen Sie Ihre Suchergebnisse zusammenfassen und verändern können.
npi
verfügt über zwei Haupthelferfunktionen für die Arbeit mit Suchergebnissen: npi_summarize()
und npi_flatten()
.
Führen Sie npi_summarize()
in Ihren Ergebnissen aus, um einen mehr menschlich lesbaren Überblick über Ihre Suchergebnisse zu sehen. Insbesondere gibt die Funktion die NPI -Nummer, den Namen des Anbieters, den Aufzählungstyp (Einzel- oder Organisationsanbieter), die Primäradresse, die Telefonnummer und die Primärtaxonomie (Praxisbereich) zurück:
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
Wie oben gesehen, hat der von npi_search()
zurückgegebene Datenrahmen eine verschachtelte Struktur. Obwohl sich alle Daten in einer einzelnen Zeile auf einen NPI beziehen, enthält jede List -Spalte eine Liste von einem oder mehreren Werten, die dem NPI für diese Zeile entsprechen. Beispielsweise kann der NPI -Datensatz eines Anbieters mehrere zugehörige Adressen, Telefonnummern, Taxonomien und andere Attribute enthalten, die alle in derselben Zeile des Datenrahmens leben.
Da verschachtelte Strukturen etwas schwierig sein können, mit dem die NPI zu arbeiten ist, enthält der npi
npi_flatten()
, eine Funktion, die den Datenrahmen in eine flachere (dh uned und zusammengeführte) Struktur umwandelt, die einfacher zu bedienen ist. npi_flatten()
führt die folgenden Transformationen aus:
npi_flatten()
unterstützt eine Vielzahl von Ansätzen, um die Ergebnisse von npi_search()
zu verflachen. Ein Extrem besteht darin, alles auf einmal zu verflachten:
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>, …
Aufgrund der Anzahl der Felder und der großen Anzahl potenzieller Wertekombinationen eignet sich dieser Ansatz jedoch am besten für kleine Datensätze. Wahrscheinlicher ist, dass Sie eine kleine Anzahl von Listenspalten aus dem Originaldatenrahmen in einem Pass überflachen, den Vorgang mit anderen gewünschten Listenspalten wiederholen und nach der Tatsache verschmelzen. Um beispielsweise den grundlegenden Anbieter und Anbieter -Taxonomieinformationen zu verflachen, liefern Sie die entsprechenden Listenspalten als Namensvektor von Namen dem cols
-Argument:
# 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>, …
Genau wie Kreditkartennummern können NPI -Nummern während des Transports verwickelt oder beschädigt werden. Ebenso haben offiziell ausgestellte NPI-Nummern eine Überprüfungsnigit für Fehlerprüfzwecke. Verwenden Sie npi_is_valid()
um zu prüfen, ob eine von Ihnen begegnete NPI -Nummer gültig konstruiert ist:
# Validate NPIs
npi_is_valid( 1234567893 )
# > [1] TRUE
npi_is_valid( 1234567898 )
# > [1] FALSE
Beachten Sie, dass diese Funktion nicht überprüft, ob die NPI -Nummern aktiviert oder deaktiviert sind (siehe #22). Es prüft lediglich die Konsistenz der Anzahl mit der NPI -Spezifikation. Daher kann es Ihnen helfen, Datenqualitätsprobleme frühzeitig zu erkennen und zu behandeln.
Ein Benutzeragenten ist eine Möglichkeit für die Software, mit einer API zu interagieren, um ihm mitzuteilen, wer oder was die Anfrage stellt. Dies hilft den API -Betreuern zu verstehen, welche Systeme die API verwenden. Wenn npi
eine Anfrage an die NPPES -API stellt, verweist der Anforderungsheader den Namen des Pakets und die URL für das Repository (z. B. 'NPI/0.2.0 (https://github.com/ropensci/npi)) '). Wenn Sie einen benutzerdefinierten Benutzeragenten festlegen möchten, aktualisieren Sie den Wert der Option npi_user_agent
. Zum Beispiel können Sie für Version 1.0.0 einer App namens "my_app" den folgenden Code ausführen:
options( npi_user_agent = " my_app/1.0.0 " )
npi
verfügt über eine Website mit Versionshinweise, Dokumentation zu allen Benutzerfunktionen und Beispiele, die zeigen, wie das Paket verwendet werden kann.
Hast du einen Fehler entdeckt? Ich würde gerne auf der Seite der Probleme davon hören.
Bitte beachten Sie, dass dieses Paket mit einem Mitwirkendenkodex des Verhaltens veröffentlicht wird. Durch den Beitrag zu diesem Projekt erklären Sie sich damit einverstanden, sich an seine Bedingungen zu halten.
Möchten Sie lernen, wie Sie zu NPI beitragen können? Gehen Sie zum Leitfaden für Mitwirkenden - und danke, dass Sie in Betracht gezogen werden!
Das neueste Zitat finden Sie auf der Seite Autoren und Zitier auf der Paket -Website.
MIT (c) Frank Farach
Das Logo dieses Pakets ist unter CC BY-SA 4.0 lizenziert und von Frank Farach und Sam Parmar zusammengestellt. Das Logo verwendet eine modifizierte Version eines Bildes des Asclepius -Stabes und eines Lupe, das Evanherk, GFDL, zugeschrieben wird.