# County configurations: list of lists with fips, nc_key, cl_key, and optional transforms
county_configs <- list(
# 28 common FIPS: parno vs APN (PARCEL NUMBER UNFORMATTED)
list(fips = "37005"), list(fips = "37133"), list(fips = "37093"), list(fips = "37097"),
list(fips = "37025"), list(fips = "37167"), list(fips = "37117"), list(fips = "37041"),
list(fips = "37053"), list(fips = "37029"), list(fips = "37139"), list(fips = "37015"),
list(fips = "37195"), list(fips = "37181"), list(fips = "37191"), list(fips = "37105"),
list(fips = "37033"), list(fips = "37123"), list(fips = "37031"), list(fips = "37153"),
list(fips = "37037"), list(fips = "37009"), list(fips = "37135"), list(fips = "37019"),
list(fips = "37179"), list(fips = "37049"), list(fips = "37017"), list(fips = "37151"),
# Unique cases
list(fips = "37177", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37059", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37127", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37073", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37131", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37083", nc_key = "altparno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37069", nc_key = "altparno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37091", nc_key = "altparno", cl_key = "ONLINE FORMATTED PARCEL ID"),
list(fips = "37143", nc_key = "altparno", cl_key = "ORIGINAL APN"),
list(fips = "37145", nc_key = "altparno", cl_key = "ORIGINAL APN"),
list(fips = "37155", nc_key = "altparno", cl_key = "ORIGINAL APN"),
list(fips = "37187", nc_key = "altparno", cl_key = "ORIGINAL APN"),
list(fips = "37027", nc_key = "altparno", cl_key = "ORIGINAL APN"),
list(fips = "37157", nc_key = "altparno", cl_key = "ORIGINAL APN"),
list(fips = "37197", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37129", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37067", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37057", nc_key = "altparno", cl_key = "ONLINE FORMATTED PARCEL ID"),
list(fips = "37003", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37189", nc_key = "parno", cl_key = "ONLINE FORMATTED PARCEL ID"),
list(fips = "37047", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37101", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37193", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37183", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37063", nc_key = "altparno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)"),
list(fips = "37071", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37109", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37137", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37013", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37001", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID"),
list(fips = "37103", nc_key = "parno", cl_key = "ORIGINAL APN"),
list(fips = "37159", nc_key = "parno", cl_key = "ORIGINAL APN"),
list(fips = "37141", nc_key = "parno", cl_key = "ONLINE FORMATTED PARCEL ID"),
list(fips = "37165", nc_key = "parno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)",
cl_transform = function(df) mutate(df, `APN (PARCEL NUMBER UNFORMATTED)` = str_pad(`APN (PARCEL NUMBER UNFORMATTED)`, 11, pad = "0"))),
list(fips = "37035", nc_key = "parno", cl_key = "APN (PARCEL NUMBER UNFORMATTED)",
cl_transform = function(df) mutate(df, `APN (PARCEL NUMBER UNFORMATTED)` = str_sub(`APN (PARCEL NUMBER UNFORMATTED)`, 1, -5))),
list(fips = "37081", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID",
nc_transform = function(df) mutate(df, parno = str_sub(parno, 1, -4))),
list(fips = "37085", nc_key = "parno", cl_key = "ORIGINAL APN",
nc_transform = function(df) mutate(df, parno = str_sub(parno, 1, -4))),
list(fips = "37147", nc_key = "parno", cl_key = "ALTERNATE PARCEL ID",
cl_transform = function(df) mutate(df,
`ALTERNATE PARCEL ID` = str_sub(`ALTERNATE PARCEL ID`, 1, 5),
`APN (PARCEL NUMBER UNFORMATTED)` = str_pad(`APN (PARCEL NUMBER UNFORMATTED)`, 5, pad = "0"),
`ALTERNATE PARCEL ID` = paste0(`ALTERNATE PARCEL ID`, `APN (PARCEL NUMBER UNFORMATTED)`))),
list(fips = "37065", nc_key = "parno", cl_key = "ONLINE FORMATTED PARCEL ID",
cl_transform = function(df) mutate(df, `ONLINE FORMATTED PARCEL ID` = str_sub(`ONLINE FORMATTED PARCEL ID`, 1, -3))),
list(fips = "37011", nc_key = "parno", cl_key = "ONLINE FORMATTED PARCEL ID",
cl_transform = function(df) mutate(df, `ONLINE FORMATTED PARCEL ID` = str_sub(`ONLINE FORMATTED PARCEL ID`, 2, -6))),
# nparno cases (strip leading 5 chars after alnum clean)
list(fips = "37077", nc_key = "nparno", cl_key = "ALTERNATE PARCEL ID",
nc_transform = function(df) mutate(df, nparno = str_sub(nparno, 6))),
list(fips = "37007", nc_key = "nparno", cl_key = "ONLINE FORMATTED PARCEL ID",
nc_transform = function(df) mutate(df, nparno = str_sub(nparno, 6)),
cl_transform = function(df) mutate(df, `ONLINE FORMATTED PARCEL ID` = str_sub(`ONLINE FORMATTED PARCEL ID`, 1, -3))),
list(fips = "37023", nc_key = "nparno", cl_key = "ALTERNATE PARCEL ID",
nc_transform = function(df) mutate(df, nparno = str_sub(nparno, 6))),
list(fips = "37125", nc_key = "nparno", cl_key = "ONLINE FORMATTED PARCEL ID",
nc_transform = function(df) mutate(df, nparno = str_sub(nparno, 6))),
list(fips = "37169", nc_key = "nparno", cl_key = "ONLINE FORMATTED PARCEL ID",
nc_transform = function(df) mutate(df, nparno = str_sub(nparno, 6))),
list(fips = "37171", nc_key = "nparno", cl_key = "ONLINE FORMATTED PARCEL ID",
nc_transform = function(df) mutate(df, nparno = str_sub(nparno, 6)))
)
# Fill defaults for common cases
county_configs <- map(county_configs, function(cfg) {
cfg$nc_key <- cfg$nc_key %||% "parno"
cfg$cl_key <- cfg$cl_key %||% "APN (PARCEL NUMBER UNFORMATTED)"
cfg$nc_transform <- cfg$nc_transform %||% NULL
cfg$cl_transform <- cfg$cl_transform %||% NULL
cfg
})