From c64e4b93dd893d33b82f190cc1a5418addfceac3 Mon Sep 17 00:00:00 2001 From: Andrew Bruce Date: Mon, 2 Dec 2024 07:51:36 -0800 Subject: [PATCH] added crosswalk_footnotes function --- NAMESPACE | 1 + R/crosswalk.R | 34 +++++++++++++++ R/taxonomy.R | 14 ++++++ data-raw/12_crosswalk_footnotes.R | 40 +++++++++++++++++- inst/extdata/pins/_pins.yaml | 2 +- .../20241202T103456Z-f72f3/cross_notes.qs | Bin 981 -> 0 bytes .../20241202T154954Z-7cf6a/cross_notes.qs | Bin 0 -> 1296 bytes .../data.txt | 6 +-- man/crosswalk_footnotes.Rd | 21 +++++++++ man/taxonomy_raw.Rd | 2 + 10 files changed, 115 insertions(+), 5 deletions(-) delete mode 100644 inst/extdata/pins/cross_notes/20241202T103456Z-f72f3/cross_notes.qs create mode 100644 inst/extdata/pins/cross_notes/20241202T154954Z-7cf6a/cross_notes.qs rename inst/extdata/pins/cross_notes/{20241202T103456Z-f72f3 => 20241202T154954Z-7cf6a}/data.txt (73%) create mode 100644 man/crosswalk_footnotes.Rd diff --git a/NAMESPACE b/NAMESPACE index 782dee2..c416dab 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,5 +1,6 @@ # Generated by roxygen2: do not edit by hand +export(crosswalk_footnotes) export(crosswalk_raw) export(crosswalk_taxonomy) export(get_pin) diff --git a/R/crosswalk.R b/R/crosswalk.R index 9356d10..43851fa 100644 --- a/R/crosswalk.R +++ b/R/crosswalk.R @@ -59,3 +59,37 @@ crosswalk_taxonomy <- function(taxonomy_code = NULL, return(pin) } + +#' Medicare Specialty Crosswalk Footnotes +#' +#' @param taxonomy_code `` Health Care Provider Taxonomy code, a unique +#' alphanumeric code, ten characters in length +#' +#' @param specialty_code `` Medicare Specialty Code, an alphanumeric code, +#' two characters in length +#' +#' @returns `` of search results +#' +#' @examples +#' crosswalk_footnotes(taxonomy_code = "251E00000X") +#' +#' crosswalk_footnotes(specialty_code = "A0) +#' +#' @importFrom fuimus search_in_if +#' +#' @autoglobal +#' +#' @export +crosswalk_footnotes <- function(taxonomy_code = NULL, + specialty_code = NULL) { + + check_nchar(taxonomy_code, 10) + check_nchar(specialty_code, 2) + + pin <- get_pin("cross_notes") + + pin <- search_in_if(pin, pin[["taxonomy_code"]], taxonomy_code) + pin <- search_in_if(pin, pin[["specialty_code"]], specialty_code) + + return(pin) +} diff --git a/R/taxonomy.R b/R/taxonomy.R index 13e9cf0..622328b 100644 --- a/R/taxonomy.R +++ b/R/taxonomy.R @@ -14,6 +14,8 @@ #' #' taxonomy_raw(taxonomy_code = "101Y00000X") #' +#' taxonomy_raw(taxonomy_code = c("101YM0800X", "101YP2500X")) |> print(n = 100) +#' #' @importFrom fuimus search_in_if #' #' @autoglobal @@ -78,8 +80,11 @@ taxonomy_sources <- function(taxonomy_code = NULL) { #' #' @export taxonomy_changelog <- function(taxonomy_code = NULL) { + check_nchar(taxonomy_code, 10) + pin <- get_pin("tax_changelog") + search_in_if(pin, pin[["code"]], taxonomy_code) } @@ -101,8 +106,11 @@ taxonomy_changelog <- function(taxonomy_code = NULL) { #' #' @export taxonomy_hierarchy <- function(taxonomy_code = NULL) { + check_nchar(taxonomy_code, 10) + pin <- get_pin("tax_hierarchy") + search_in_if(pin, pin[["code"]], taxonomy_code) } @@ -124,8 +132,11 @@ taxonomy_hierarchy <- function(taxonomy_code = NULL) { #' #' @export taxonomy_display <- function(taxonomy_code = NULL) { + check_nchar(taxonomy_code, 10) + pin <- get_pin("tax_display") + search_in_if(pin, pin[["code"]], taxonomy_code) } @@ -147,7 +158,10 @@ taxonomy_display <- function(taxonomy_code = NULL) { #' #' @export taxonomy_definition <- function(taxonomy_code = NULL) { + check_nchar(taxonomy_code, 10) + pin <- get_pin("tax_definitions") + search_in_if(pin, pin[["code"]], taxonomy_code) } diff --git a/data-raw/12_crosswalk_footnotes.R b/data-raw/12_crosswalk_footnotes.R index ed5cf86..d839fd5 100644 --- a/data-raw/12_crosswalk_footnotes.R +++ b/data-raw/12_crosswalk_footnotes.R @@ -8,8 +8,46 @@ footnotes <- dplyr::tibble( "raw", "taxonomy_notes.txt"))) + +notes <- walk |> + dplyr::left_join(footnotes, by = dplyr::join_by(type_note == note)) |> + dplyr::left_join(footnotes, by = dplyr::join_by(code_note == note)) |> + dplyr::filter(!is.na(type_note) | !is.na(code_note)) |> + dplyr::rename( + type_note_description = note_description.x, + code_note_description = note_description.y) |> + dplyr::select(-.id) + + +notes <- vctrs::vec_rbind( + notes |> + dplyr::select( + taxonomy_code, + specialty_code, + # specialty_type, + type_note, + type_note_description) |> + dplyr::filter(!is.na(type_note) | !is.na(type_note_description)) |> + dplyr::mutate( + footnote = stringr::str_glue("({type_note}) {type_note_description}"), + type_note = NULL, + type_note_description = NULL), + notes |> + dplyr::select( + taxonomy_code, + specialty_code, + code_note, + code_note_description) |> + dplyr::filter(!is.na(code_note) | !is.na(code_note_description)) |> + dplyr::mutate( + footnote = stringr::str_glue("({code_note}) {code_note_description}"), + code_note = NULL, + code_note_description = NULL) +) + + pin_update( - footnotes, + notes, "cross_notes", "Medicare Taxonomy Crosswalk Footnotes 2024", "Medicare Provider and Supplier Taxonomy Crosswalk Footnotes 2024" diff --git a/inst/extdata/pins/_pins.yaml b/inst/extdata/pins/_pins.yaml index f7307ef..b4143f9 100644 --- a/inst/extdata/pins/_pins.yaml +++ b/inst/extdata/pins/_pins.yaml @@ -1,5 +1,5 @@ cross_notes: -- cross_notes/20241202T103456Z-f72f3/ +- cross_notes/20241202T154954Z-7cf6a/ cross_raw: - cross_raw/20241129T223149Z-59f58/ cross_tax: diff --git a/inst/extdata/pins/cross_notes/20241202T103456Z-f72f3/cross_notes.qs b/inst/extdata/pins/cross_notes/20241202T103456Z-f72f3/cross_notes.qs deleted file mode 100644 index fad1083317c282a86bec420716e45e70f72f2c0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 zcmV;`11kIr4hjqa000030S^EH000000002F0{{RhwJ-f(VhDX504DK|I$%wb4!~&L zutiZ6FtJVmz|K!%Yed?HY{}2$CQa_GqHuInwQ5&Jy5$H(ThwfcD`MfHTNebnY_kD@ z0D1s>0NPMmiqW+ynOb}E$@;F}3SX~NmmJHS&$?l$FjWt^`5) z$;p>2^WKE=S$q$_c-D?bg`&x5>c3oyaW6V6>vL=FZT{u6uHEhPq0*Hc%>#tSB$6?S z7??yRlL*EnvH+q0k^q7LasZ+M$$%JuOdud4A_C`Cgz~M6mzd1B2!E4JTFI2ED~-B49VmM2U49;y(J#<7dL zMY3aE@kZ89=c`FBa|^D>$9RPRk>Hfpz=o?e?5*{mmk4C)tc!3|rxXBgU1hmt0#x5>2R* zLh*s3X;CCu{*v{Cx5gkBFtXhS=pdlPh7uDcCPqv+oDgo4anB+le3u3r7lGz9fXlkj zoF3poK(kSi@WpJ7KHBn~fiYpsf46jL5eL#4}9wtBDAi!x(V=WL$v0aqG;mZ(9k zL`Y~xL<$O$RMG(;LP8L8b{-Ny)HR4|!%Q#|NgyL7WkscF4h@qJ?$E?Puk5#$SF&Pj z3joi8@~n!UuB9XLTK?$%D!f?y9!Q@xNeZ{$-PRy%&$A$`Px_Iv6jB+r&d}apWcW%;GLq4o+UjL@ zC43PEAp*@ehe90IEn5Z~QxgS#$ zkcuz{66;UoMtTVO3+P-QJJKwg!wIdpzw>yB?Q)}VfWQIqCE^GwKQSYyjMP{k)Kv;#V_r{SFw+fG}D$2!kBp&1l$F$Ic zN(^Pb+2m1CspY9~vr)QD#~cn27vaIsugD{Xexxj6h_fP-gGQ1lcVN0IDpzq8SHW=AbU~3U zF3HkSQPf1*K;W#&RTj!om7}VOyEsddC@vEoTjoYl~q|zQgE4^M7fO% z#$6N3Q4|dV%3`9pOxJWd&4pFD3F(?B>Omt_T+;La0DwkH;Hv3iatL4{vj4f3iKttK zr-x1kvjf6v)?aE`L!ZxaI6ER{|9kt17uc=?U7#F<0g0?zs?|;7j0VQSQo$2^ zYh$=l4%?sDTZhkD&;`UDylt;-|mb*^k}B5Z5!TSuQZ?RaY4b=gl{v4zI#@|l8J*bNMs}IM!$Av_RD|G z;S9r>!L#jq4%Y7=2u^YkM&+W&em~>$`}j`!oVT{+W9!#yFadraZ)@~@_30R2OS5LN9KztPg*=1by)Ry@FQk$F3kI9*WlfWYc_UL zSC)%x{D;2$#KW6haNO0{y5$jnX8TO#rnCkd+#rVytK7HOBC_7)g%2)fbPA3!e&D=? z?Iq-Mq^%D~7bqT@n#7y=M#MgyawMrUvyq@W4Z>Dx+BCYf$Q2>PvWL^~J*U&{QR*OH{W{psT&&x?5sMyzjR7&SbrE3I9x@Z(Z)`|bd!hM)>n!mh z*VnW(2L>00)N(ZT++eAx@)qrd91Zh}8?z_!aVyp^U4WI9MZQ)@8ROeBRsuoajFc$p GeVRi{8G23t literal 0 HcmV?d00001 diff --git a/inst/extdata/pins/cross_notes/20241202T103456Z-f72f3/data.txt b/inst/extdata/pins/cross_notes/20241202T154954Z-7cf6a/data.txt similarity index 73% rename from inst/extdata/pins/cross_notes/20241202T103456Z-f72f3/data.txt rename to inst/extdata/pins/cross_notes/20241202T154954Z-7cf6a/data.txt index ee1367d..6750fac 100644 --- a/inst/extdata/pins/cross_notes/20241202T103456Z-f72f3/data.txt +++ b/inst/extdata/pins/cross_notes/20241202T154954Z-7cf6a/data.txt @@ -1,10 +1,10 @@ file: cross_notes.qs -file_size: 981 -pin_hash: f72f35f03df16118 +file_size: 1296 +pin_hash: 7cf6a84209eb0b3a type: qs title: Medicare Taxonomy Crosswalk Footnotes 2024 description: Medicare Provider and Supplier Taxonomy Crosswalk Footnotes 2024 tags: ~ urls: ~ -created: 20241202T103456Z +created: 20241202T154954Z api_version: 1 diff --git a/man/crosswalk_footnotes.Rd b/man/crosswalk_footnotes.Rd new file mode 100644 index 0000000..cf65f86 --- /dev/null +++ b/man/crosswalk_footnotes.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/crosswalk.R +\name{crosswalk_footnotes} +\alias{crosswalk_footnotes} +\title{Medicare Specialty Crosswalk Footnotes} +\usage{ +crosswalk_footnotes(taxonomy_code = NULL, specialty_code = NULL) +} +\arguments{ +\item{taxonomy_code}{\verb{} Health Care Provider Taxonomy code, a unique +alphanumeric code, ten characters in length} + +\item{specialty_code}{\verb{} Medicare Specialty Code, an alphanumeric code, +two characters in length} +} +\value{ +\verb{} of search results +} +\description{ +Medicare Specialty Crosswalk Footnotes +} diff --git a/man/taxonomy_raw.Rd b/man/taxonomy_raw.Rd index 162f0e1..cacfe6a 100644 --- a/man/taxonomy_raw.Rd +++ b/man/taxonomy_raw.Rd @@ -25,4 +25,6 @@ taxonomy_raw(year = 2024, taxonomy_code = "101Y00000X") taxonomy_raw(taxonomy_code = "101Y00000X") +taxonomy_raw(taxonomy_code = c("101YM0800X", "101YP2500X")) |> print(n = 100) + }