- Calculate Patient Age -> Check ICD/HCPCS for Age Conflicts
- Calculate Provider Lag -> Days between DOS and DOR
- Calculate Balance -> Charges - (Payments + Adjustments)
- Calculate Coinsurance -> Charges - Allowed
Load Example
(x <- get_example() |>
dplyr::filter(!hcpcs %in% c("WCPAIN",
"MATERIALCTR",
"MATERIALOFF",
"SPBARIATRIC",
"LETTER")) |>
dplyr::mutate(
# coinsurance = charges - allowed,
balance = charges - (payments + adjustments),
.after = adjustments))
#> # A tibble: 39,025 × 17
#> claim_id dos dor dob icd order hcpcs units mod pos
#> <glue> <date> <date> <date> <chr> <int> <chr> <int> <chr> <chr>
#> 1 30564-03 2022-08-09 NA 2007-11-05 F32.9 1 96101 1 NA 23
#> 2 00068-01 2022-08-16 2022-08-17 1990-02-24 F43.… 1 90837 1 NA 02
#> 3 00318-01 2022-08-16 2022-08-22 2012-10-24 F43.… 1 90832 1 NA 11
#> 4 01908-01 2022-08-16 2022-09-12 1985-01-09 F43.… 1 90834 1 95 02
#> 5 02295-01 2022-08-16 2022-08-16 1977-09-30 F43.… 1 90837 1 95 10
#> 6 04305-01 2022-08-16 2022-08-16 2006-01-07 A69.… 1 90791 1 NA 11
#> 7 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 1 90791 1 AH 02
#> 8 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 2 96130 1 AH 02
#> 9 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 3 96131 1 AH 02
#> 10 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 4 96136 1 AH 02
#> 11 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 5 96137 3 AH 02
#> 12 04386-01 2022-08-16 2022-08-22 2011-08-22 F90.2 1 90834 1 NA 11
#> 13 05014-01 2022-08-16 2022-08-17 2003-09-09 F40.… 1 90837 1 NA 11
#> 14 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 1 90791 1 NA 11
#> 15 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 2 96130 1 NA 11
#> 16 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 3 96131 1 NA 11
#> 17 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 4 96136 1 NA 11
#> 18 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 5 96137 3 NA 11
#> 19 07395-01 2022-08-16 2022-08-16 1994-11-18 F43.… 1 90837 1 NA 11
#> 20 09495-01 2022-08-16 2022-08-17 1960-07-02 F44.4 1 90837 1 NA 10
#> # ℹ 39,005 more rows
#> # ℹ 7 more variables: charges <dbl>, allowed <dbl>, payments <dbl>,
#> # adjustments <dbl>, balance <dbl>, class <fct>, adj <chr>
Place of Service
#> # A tibble: 39,025 × 18
#> claim_id dos dor dob icd order hcpcs units mod pos
#> <glue> <date> <date> <date> <chr> <int> <chr> <int> <chr> <chr>
#> 1 30564-03 2022-08-09 NA 2007-11-05 F32.9 1 96101 1 NA 23
#> 2 00068-01 2022-08-16 2022-08-17 1990-02-24 F43.… 1 90837 1 NA 02
#> 3 00318-01 2022-08-16 2022-08-22 2012-10-24 F43.… 1 90832 1 NA 11
#> 4 01908-01 2022-08-16 2022-09-12 1985-01-09 F43.… 1 90834 1 95 02
#> 5 02295-01 2022-08-16 2022-08-16 1977-09-30 F43.… 1 90837 1 95 10
#> 6 04305-01 2022-08-16 2022-08-16 2006-01-07 A69.… 1 90791 1 NA 11
#> 7 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 1 90791 1 AH 02
#> 8 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 2 96130 1 AH 02
#> 9 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 3 96131 1 AH 02
#> 10 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 4 96136 1 AH 02
#> 11 04367-01 2022-08-16 2022-08-16 1980-07-24 F43.… 5 96137 3 AH 02
#> 12 04386-01 2022-08-16 2022-08-22 2011-08-22 F90.2 1 90834 1 NA 11
#> 13 05014-01 2022-08-16 2022-08-17 2003-09-09 F40.… 1 90837 1 NA 11
#> 14 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 1 90791 1 NA 11
#> 15 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 2 96130 1 NA 11
#> 16 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 3 96131 1 NA 11
#> 17 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 4 96136 1 NA 11
#> 18 06641-01 2022-08-16 2022-08-16 1987-07-21 F43.… 5 96137 3 NA 11
#> 19 07395-01 2022-08-16 2022-08-16 1994-11-18 F43.… 1 90837 1 NA 11
#> 20 09495-01 2022-08-16 2022-08-17 1960-07-02 F44.4 1 90837 1 NA 10
#> # ℹ 39,005 more rows
#> # ℹ 8 more variables: pos_type <chr>, charges <dbl>, allowed <dbl>,
#> # payments <dbl>, adjustments <dbl>, balance <dbl>, class <fct>, adj <chr>
Categorize HCPCS
hcpcs_unq <- collapse::funique(x$hcpcs[!x$hcpcs %in% not_hcpcs])
#> Error in eval(expr, envir, enclos): object 'not_hcpcs' not found
#> Error in eval(expr, envir, enclos): object 'hcpcs_unq' not found
Define Modifiers
#> # A tibble: 9 × 9
#> mod_code mod_type mod_category mod_description mod_information
#> <chr> <fct> <fct> <chr> <chr>
#> 1 25 CPT General Significant, Separately Identi… It may be nece…
#> 2 59 CPT General Distinct Procedural Service Under certain …
#> 3 95 CPT Telehealth Synchronous Telemedicine Servi… Synchronous te…
#> 4 AH HCPCS NA Clinical psychologist NA
#> 5 AJ HCPCS NA Clinical social worker NA
#> 6 GT HCPCS NA Via interactive audio and vide… NA
#> 7 HJ HCPCS NA Employee assistance program NA
#> 8 U8 HCPCS NA Medicaid level of care 8, as d… NA
#> 9 UD HCPCS NA Medicaid level of care 13, as … NA
#> # ℹ 4 more variables: mod_instructions <chr>, mod_correct_use <chr>,
#> # mod_incorrect_use <chr>, mod_resources <chr>
x |>
select(
claim_id,
dos,
order,
hcpcs
) |>
group_by(claim_id) |>
filter(n() > 1) |>
ungroup()
#> # A tibble: 12,138 × 4
#> claim_id dos order hcpcs
#> <glue> <date> <int> <chr>
#> 1 04367-01 2022-08-16 1 90791
#> 2 04367-01 2022-08-16 2 96130
#> 3 04367-01 2022-08-16 3 96131
#> 4 04367-01 2022-08-16 4 96136
#> 5 04367-01 2022-08-16 5 96137
#> 6 06641-01 2022-08-16 1 90791
#> 7 06641-01 2022-08-16 2 96130
#> 8 06641-01 2022-08-16 3 96131
#> 9 06641-01 2022-08-16 4 96136
#> 10 06641-01 2022-08-16 5 96137
#> # ℹ 12,128 more rows
#> Error in eval(expr, envir, enclos): object 'hcpcs_unq' not found
aocs |>
filter(aoc_type == "Primary")
#> Error in eval(expr, envir, enclos): object 'aocs' not found