跳到目录

访问美国国家提供商标识符注册API

使用R访问医疗保险和医疗补助服务中心(CMS)的美国国家医疗机构识别码(NPI)注册API(v2.1):https://npiregistry.cms.hhs.gov网址/。获取链接到特定个人或组织医疗保健提供商的丰富管理数据,或基于提供商名称、位置、服务类型、凭据和许多其他属性执行高级搜索。非营利组织投资提供了方便的数据提取功能,因此您可以花更少的时间争论数据,而更多的时间将数据投入工作。

处理医疗和公共卫生数据的分析师经常需要将来自多个来源的数据连接起来,以回答他们的业务或研究问题。不幸的是,在医疗保健中加入数据很难,因为很少有实体具有跨组织边界的唯一、一致的标识符。然而,NPI编号不受这些限制,因为所有符合某些通用标准的美国供应商都必须具有NPI编号,才能获得其提供的服务的报销。这使得NPI数字对于通过提供者连接多个数据集非常有用,这是开发此包的主要动机。

安装

有三种方法可以安装非营利组织投资包裹:

  1. 从CRAN安装:
  1. 从安装R-宇宙:
安装.包(“npi”,回购= "https://ropensci.r-universe.dev网址")
图书馆(非营利组织投资)
  1. 使用从GitHub安装开发工具包裹:
开发工具::安装_工具(“ropensci/npi”)
图书馆(非营利组织投资)

用法

非营利组织投资导出四个函数,所有这些函数都与模式“npi_*”匹配:

搜索注册表

npi_search()公开了几乎所有的NPPES API搜索参数例如,我们希望找到最多10家在纽约市设有主要办公地点的供应商:

纽约州 <- npi_搜索(城市= “纽约市”)
#由于NPPES数据库中的数据随时间变化,您的结果可能会有所不同
纽约州
#>#A台:10×11
#>npi枚举…¹基本其他_…²标识…³分类号…⑷地址…­实践…­端点…­
#>*<int><chr><list><list>
#>1.19e9独立
#>2 1.31e9独立
#>3 1.64e9独立
#>4 1.35e9独立
#>5 1.56e9独立
#>6 1.79e9独立
#>7 1.56e9独立
#>8 1.96e9器官
#>9 1.43e9独立
#>10 1.33e9独立
#>#…还有两个变量:created_date<dttm>、last_updated_date<dttm>和
#>#缩写变量名¹enumeration_type,²other_names,³标识符,
#>#4分类、地址、实践位置、端点

完整搜索结果具有四个规则向量列,非营利组织投资,枚举类型,创建_日期、和上次更新日期和七个列表列。每个列表列都是相关数据的集合:

  • 基本的:有关提供商的基本配置文件信息
  • 其他名称(_N):提供商使用的其他名称
  • 标识符:其他提供商标识符和凭据信息
  • 分类学:服务分类和许可证信息
  • 地址:位置和邮寄地址信息
  • 实际位置:提供商的机构位置
  • 端点:有关用于健康信息交换的提供程序终结点的详细信息

这些列表列中可能的字段的完整列表可以在NPPES API帮助页面.

如果你觉得舒服使用列表列,这可能是包中您所需要的全部内容。然而,非营利组织投资还提供了一些功能,可以帮助您总结和转换搜索结果。

使用搜索结果

非营利组织投资有两个用于处理搜索结果的主要帮助函数:npi_summarize()npi_flatten().

总结结果

运行npi_summarize()在搜索结果上查看更人性化的搜索结果概览。具体来说,该函数返回NPI编号、提供者名称、枚举类型(个人或组织提供者)、主地址、电话号码和主分类法(实践领域):

npi_汇总(纽约州)
#>#A台:10×6
#>npi名称enume…cco prima…²电话prima…³
#><int><chr><chr><chr
#>1 1194276360 ALYSSA COWNAN Indivi…5 E 98…212-…物理…
#>2 1306849641 MARK MOHRMANN Indivi…16 PAR…212-…骨科…
#>3 1639173065 SAKSHI DUA Indivi…10 E 1…212-…护士…
#>4 1346604592萨拉·洛里·英迪维…1335 D.…614-…职业…
#>5 1558362566艾米·蒂尔斯滕·英迪维…1176 5…212-…心理…
#>6 1790786416诺亚·戈德曼·英迪维…140 BE…973-…实习生…
#>7 1558713628罗宾·诺林·英迪维…9希望…781-…护士…
#>8 1962983775 LENOX HILL医用麻醉学,…Organi…100 E…212-…实习…
#>9 1427454529 YONGHONG TAN Indivi…34地图…203-…障碍…
#>10 1326403213 RAJEE KRAUSE Indivi…12401…347-…护士…
#>#…带缩写变量名¹enumeration_type,
#>#²primary_practice_address,³primary _taxonomy

平坦化结果

如上所示npi_search()具有嵌套结构。虽然一行中的所有数据都与一个NPI相关,但每个列表列都包含一个列表,其中包含一个或多个值,这些值对应于该行的NPI。例如,提供者的NPI记录可能有多个关联的地址、电话号码、分类法和其他属性,所有这些都位于数据帧的同一行中。

由于使用嵌套结构可能有点棘手非营利组织投资包括npi_flatten()这是一个将数据帧转换为更易于使用的更扁平(即,未列出和合并)结构的函数。npi_flatten()执行以下转换:

  • 取消列表列
  • 在每个未列出的列的名称前面加上其原始列表列的名称
  • left—通过NPI将数据连接在一起

npi_flatten()支持多种方法来展平来自npi_search()一个极端是一下子把所有东西都压平:

npi锁定(纽约州)
#>#A台:48×42
#>npi basic_fi…¹基本…²基本…³基本
#><int><chr><chr><chr
#>1 1194276360 ALYSSA COWNAN PA编号F 2016-1…2018-0…A
#>2 1194276360 ALYSSA COWNAN PA NO F 2016-1…2018-0…A
#>3 1306849641 MARK MOHRMA…MD编号M 2005-0…2019-0…A
#>4 1306849641 MARK MOHRMA…MD编号M 2005-0…2019-0…A
#>5 1306849641马克莫尔马…MD编号M 2005-0…2019-0…A
#>6 1306849641 MARK MOHRMA…MD编号M 2005-0…2019-0…A
#>7 1326403213 RAJEE KRAUSE AGPCNP…编号:F 2015-1…2019-0…A
#>8 1326403213 RAJEE KRAUSE AGPCNP…编号:F 2015-1…2019-0…A
#>9 1326403213 RAJEE KRAUSE AGPCNP…编号:F 2015-1…2019-0…A
#>10 1326403213 RAJEE KRAUSE AGPCNP…编号:F 2015-1…2019-0…A
#>#…还有38行,33个变量:basic_name<chr>,
#>#basic_name_prefix<chr>,basic_middle_name<chr],
#>#basic_organization_name<chr>,basic_corganization子部件,
#>#basic_authorized_official_credential(基本_授权_官方_信用),
#>#basic_authorized_official_first_name<chr>,
#>#basic_authorized_official_last_name<chr>,
#>#basic_authorized_official_middle_name<chr>…

然而,由于字段的数量和大量潜在的值组合,这种方法最适合于小数据集。更有可能的是,您希望在一次遍历中从原始数据帧中展平少量列表列,对所需的其他列表列重复该过程,并在实际操作后进行合并。例如,要展平基本提供者和提供者分类信息,请将相应的列表列作为名称向量提供给科尔斯参数:

#扁平化基本提供者信息和提供者分类,保留关系
#将每个列的值转换为NPI编号,并丢弃其他列表列。
npi锁定(纽约州,列= c(c)(“基本”,“分类法”))
#>#A台:20×26
#>npi basic_fi…¹基本…²基本…³基本
#><int><chr><chr><chr
#>1 1194276360 ALYSSA COWNAN PA编号F 2016-1…2018-0…A
#>2 1306849641 MARK MOHRMA…MD编号M 2005-0…2019-0…A
#>3 1306849641 MARK MOHRMA…MD编号M 2005-0…2019-0…A
#>4 1326403213 RAJEE KRAUSE AGPCNP…编号:F 2015-1…2019-0…A
#>5 1326403213 RAJEE KRAUSE AGPCNP…编号:F 2015-1…2019-0…A
#>6 1326403213 RAJEE KRAUSE AGPCNP…编号:F 2015-1…2019-0…A
#>7 1346604592莎拉·劳里OTR/L是F 2016-0…2018-0…A
#>8 1346604592莎拉·劳里OTR/L是F 2016-0…2018-0…A
#>9 1427454529永红滩<NA>编号2014-1…2018-1…A
#>10 1558362566 AMY TIERST…M.D.是F 2005-0…2019-0…A
#>11 1558713628罗宾·诺林FNP-BC…是F 2016-0…2018-0…A
#>12 1558713628 ROBYN NOHLING FNP-BC…是的,2016-0…2018-0…A
#>13 1558713628罗宾·诺林FNP-BC…是F 2016-0…2018-0…A
#>14 1558713628罗宾·诺林FNP-BC…是F 2016-0…2018-0…A
#>15 1558713628罗宾·诺林FNP-BC…是F 2016-0…2018-0…A
#>16 1558713628罗宾·诺林FNP-BC…是F 2016-0…2018-0…A
#>17 1639173065 SAKSHI DUA M.D.是F 2005-0…2019-0…A
#>18 1639173065 SAKSHI DUA M.D.是F 2005-0…2019-0…A
#>19 1790786416诺亚·戈德曼医学博士编号:2005-0…2018-0…A
#>20 1962983775<NA><NA><NA><NA><NA><NA>2018-0…2018-0
#>#…还有17个变量:basic_name<chr>、basic_name_prefix<chr>,
#>#basic_middle_name<chr>,basic_corganization_name<chir>,
#>#basic_organizational_subpart<chr>,
#>#basic_authorized_official_credential(基本_授权_官方_信用),
#>#basic_authorized_official_first_name<chr>,
#>#basic_authorized_official_list_name<chr>,
#>#basic_authorized_official_middle_name<chr>…

验证NPI

就像信用卡号码一样,NPI号码在传输过程中可能会被输入错误或损坏。同样,官方发布的NPI编号具有校验位用于错误检查目的。使用npi_is_valid()检查您遇到的NPI编号是否有效构造:

#验证NPI
npi_is_valid(无效)(1234567893)
#>[1]正确
npi_is_valid(无效)(1234567898)
#>[1]错误

注意,此功能不检查NPI编号是否激活或停用(请参阅#22). 它只是检查数字与NPI规范的一致性。因此,它可以帮助您尽早检测和处理数据质量问题。

设置您自己的用户代理

A类用户代理是软件与API交互的一种方式,用于告诉它是谁或是什么在发出请求。这有助于API的维护人员了解哪些系统正在使用API。默认情况下,当非营利组织投资向NPPES API发出请求,请求头引用包的名称和存储库的URL(例如,'npi/0.2.0(https://github.com/ropensci/npi)’). 如果要设置自定义用户代理,请更新npi用户代理选项。例如,对于名为“my_app”的应用程序1.0.0版,可以运行以下代码:

选项(npi用户代理= “我的应用程序/1.0.0”)

程序包网站

非营利组织投资有一个网站带有发行说明、所有用户功能的文档以及显示如何使用该包的示例。

报告Bug

你发现虫子了吗?我很想在问题页面.

行为准则

请注意,此软件包随贡献者行为准则。通过参与此项目,您同意遵守其条款。

贡献

有兴趣学习如何为npi做出贡献吗?前往贡献者指南-谢谢您的考虑!

如何引用此包

有关最新引文,请参阅作者和引文软件包网站上的页面。

许可证

麻省理工学院(c)弗兰克·法拉赫

此软件包的徽标授权于抄送BY-SA 4.0和联合创建弗兰克·法拉赫萨姆·帕马尔。徽标使用的是形象阿斯克勒庇俄斯之杖还有一个放大镜,这是GFDL的Evanherk设计的。