[ROWS] 90
[FIELDS] 10
[MODIFIED] 2025-01-30
[DOWNLOAD] https://download.cms.gov/openpayments/SMRY_RPTS_P01302025_01212025/PBLCTN_DSHBRD_P01302025_01212025.csv
21 Summary Dashboard
Metadata
Data
# A tibble: 90 × 10
dashboard_row_number data_metrics py_2017 py_2018 py_2019 py_2020 py_2021
1 2 Total Dollar Am… 998344… 109882… 118794… 100519… 124674…
2 3 Total Dollar Am… 296470… 311980… 371116… 218672… 325478…
3 4 Total Dollar Am… 160510… 231246… 748979… 184671… 237104…
4 5 Total Dollar Am… 296309… 311749… 371041… 218487… 325240…
5 6 Total Dollar Am… 594550… 621907… 654725… 648136… 766416…
6 7 Total Dollar Am… 139533… 155362… 176525… 169179… 174644…
7 8 Total Dollar Am… 455016… 466545… 478199… 478957… 591771…
8 9 Total Dollar Am… 466174… 477411… 488186… 487109… 599788…
9 10 Total Dollar Am… 455016… 466545… 478199… 478957… 591814…
10 11 Total Dollar Am… 362794… 275792… 799696… 496954… 140845…
# ℹ 80 more rows
# ℹ 3 more variables: py_2022 , py_2023 , total
Tidyup
x <- resp |>
mtt(
metric = data_metrics,
type = case(
grepl("^Total Number of", metric, perl = TRUE) ~ "count",
grepl("^Total Dollar Amount of", metric, perl = TRUE) ~ "dollar",
grepl("^Total Dollar Amount Invested", metric, perl = TRUE) ~ "invest",
grepl("^Total value of interest", metric, perl = TRUE) ~ "value"),
data_metrics = NULL,
dashboard_row_number = NULL) |>
rsplit(~ type)
x$count <- mtt(
x$count,
metric = gsub("^Total Number of ", "", metric, perl = TRUE),
metric = gsub("^all ", "", metric, perl = TRUE),
type = cheapr_if_else(grepl("^Payment Records", metric, perl = TRUE), "record", "entity")) |>
rsplit( ~ type)
x$count$entity <- rnm(
x$count$entity,
`2017` = py_2017,
`2018` = py_2018,
`2019` = py_2019,
`2020` = py_2020,
`2021` = py_2021,
`2022` = py_2022,
`2023` = py_2023,
ALL = total) |>
mtt(
metric = gsub("Companies Making Payments \\(AM/GPO Making Payment\\)",
"Companies [AM/GPO] Making Payments", metric, perl = TRUE),
metric = gsub("Physician Covered Recipients with associated payment records",
"Physicians with Payment Records", metric, perl = TRUE),
metric = gsub("Non-Physician Practitioner Covered Recipients with associated payment records",
"NPPs with Payment Records", metric, perl = TRUE),
metric = gsub("Teaching Hospitals with associated payment records",
"Teaching Hospitals with Payment Records", metric, perl = TRUE)) |>
pivot(ids = "metric", names = list("year", "count")) |>
roworder(metric, -year) |>
colorder(year) |>
mtt(count = as.integer(count)) |>
as_tbl()
x$count$record <- rnm(
x$count$record,
`2017` = py_2017,
`2018` = py_2018,
`2019` = py_2019,
`2020` = py_2020,
`2021` = py_2021,
`2022` = py_2022,
`2023` = py_2023,
ALL = total
) |>
mtt(
type = case(
grepl("General Payments", metric, perl = TRUE) ~ "General",
grepl("Research Payments", metric, perl = TRUE) ~ "Research",
grepl("Ownership Payments", metric, perl = TRUE) ~ "Ownership",
.default = "All"
),
status = case(
grepl("Disputed", metric, perl = TRUE) ~ "Disputed",
grepl("Undisputed", metric, perl = TRUE) ~ "Undisputed"
),
entity = case(
grepl("- Covered Recipient", metric, perl = TRUE) ~ "Covered Recipient",
grepl("- Non-Covered Recipient", metric, perl = TRUE) ~ "Non-Covered Recipient",
grepl("- Physician or Non-Covered Recipient", metric, perl = TRUE) ~ "Physician or Non-Covered Recipient",
grepl(
"- Non-Physician Practitioner or Non-Covered Recipient",
metric,
perl = TRUE
) ~ "Non-Physician Practitioner or Non-Covered Recipient",
grepl(" to Physicians", metric, perl = TRUE) ~ "Physician",
grepl(" to Non-Physician Practitioners", metric, perl = TRUE) ~ "Non-Physician Practitioner",
grepl(" to Teaching Hospitals", metric, perl = TRUE) ~ "Teaching Hospital",
grepl(" - Non-Covered Recipient Entity", metric, perl = TRUE) ~ "Non-Covered Recipient Entity",
grepl(" - Non-Covered Recipient Individual", metric, perl = TRUE) ~ "Non-Covered Recipient Individual"
),
metric = NULL
) |>
pivot(ids = c("type", "status", "entity"),
names = list("year", "count")) |>
roworder(type, -year) |>
colorder(year, type, entity) |>
mtt(count = as.integer(count)) |>
as_tbl()
x$invest <- mtt(
x$invest,
metric = gsub("^Total Dollar Amount Invested of all Payment Records ", "", metric, perl = TRUE),
metric = gsub("^-\\s", "", metric, perl = TRUE))
x$value <- mtt(
x$value,
metric = gsub("^Total value of interest of all Payment Records ", "", metric, perl = TRUE),
metric = gsub("^-\\s", "", metric, perl = TRUE))
x$dollar <- mtt(
x$dollar,
metric = gsub("^Total Dollar Amount of ", "", metric, perl = TRUE),
metric = gsub("^all ", "", metric, perl = TRUE))
x
$count
$count$entity
# A tibble: 32 × 3
year metric count
*
1 ALL Companies [AM/GPO] Making Payments 2843
2 2023 Companies [AM/GPO] Making Payments 1776
3 2022 Companies [AM/GPO] Making Payments 1858
4 2021 Companies [AM/GPO] Making Payments 1855
5 2020 Companies [AM/GPO] Making Payments 1779
6 2019 Companies [AM/GPO] Making Payments 1797
7 2018 Companies [AM/GPO] Making Payments 1755
8 2017 Companies [AM/GPO] Making Payments 1678
9 ALL NPPs with Payment Records 414900
10 2023 NPPs with Payment Records 309427
# ℹ 22 more rows
$count$record
# A tibble: 320 × 5
year type entity status count
*
1 ALL All NA NA 84035057
2 ALL All Physician NA 65341949
3 ALL All Non-Physician Practitioner NA 12787445
4 ALL All Teaching Hospital NA 1131236
5 2023 All NA NA 15639275
6 2023 All Physician NA 9630514
7 2023 All Non-Physician Practitioner NA 4976520
8 2023 All Teaching Hospital NA 143632
9 2022 All NA NA 14277900
10 2022 All Physician NA 9036995
# ℹ 310 more rows
$dollar
# A tibble: 35 × 9
py_2017 py_2018 py_2019 py_2020 py_2021 py_2022 py_2023 total metric
1 9983443884.20 109882560… 118794… 100519… 124674… 127965… 126890… 7243… Payme…
2 2964700222.32 311980393… 371116… 218672… 325478… 380973… 327760… 2232… Payme…
3 1605102.03 2312465.96 748979… 184671… 237104… 206960… 122548… 1217… Payme…
4 2963095120.29 311749147… 371041… 218487… 325240… 380766… 327637… 2231… Payme…
5 5945500870.57 621907659… 654725… 648136… 766416… 783691… 807165… 4876… Payme…
6 1395333630.70 155362520… 176525… 169179… 174644… 171621… 157933… 1144… Payme…
7 4550167239.87 466545139… 478199… 478957… 591771… 612070… 649231… 3731… Payme…
8 4661745514.93 477411500… 488186… 487109… 599788… 619872… 656340… 3794… Payme…
9 4550167239.87 466545139… 478199… 478957… 591814… 612112… 649284… 3731… Payme…
10 3627948.41 2757924.06 799696… 496954… 140845… 571428… 208709… 3404… Payme…
# ℹ 25 more rows
$invest
# A tibble: 5 × 9
py_2017 py_2018 py_2019 py_2020 py_2021 py_2022 py_2023 total metric
1 268224163.55 542424630.64 526403… 420228… 416271… 287661… 218848… 2680… Owner…
2 23232.00 64837.50 0.00 0.00 0.00 0.00 11600.… 9966… Owner…
3 268200931.55 542359793.14 526403… 420228… 416271… 287661… 218836… 2679… Owner…
4 268224163.55 542424630.64 526403… 420228… 416271… 287661… 218848… 2680… to Ph…
5 23232.00 64837.50 0.00 0.00 0.00 0.00 11600.… 9966… to Ph…
$value
# A tibble: 6 × 9
py_2017 py_2018 py_2019 py_2020 py_2021 py_2022 py_2023 total metric
1 1073242791.31 1649375557… 162102… 138381… 154850… 114988… 133978… 1339… Owner…
2 27902592.00 265936.00 0.00 0.00 0.00 99992.… 160592… 1605… Owner…
3 1045340199.31 1649109621… 162102… 138381… 154850… 114978… 133961… 1339… Owner…
4 1073242791.31 1649375557… 162102… 138381… 154850… 114988… 133978… 1339… to Ph…
5 27902592.00 265936.00 0.00 0.00 0.00 99992.… 160592… 1605… to Ph…
6 1045340199.31 1649109621… 162102… 138381… 154850… 114978… 133961… 1339… to Ph…