Preliminaries
egoDF <- WHAMPData::whampArtnetWA_egodata$main$egos
wDF <- WHAMPData::whamp_wide %>%
haven::zap_label() %>%
mutate(RCNTESTMONTH = as.numeric(RCNTESTMONTH),
RCNTESTYEAR = as.numeric(RCNTESTYEAR)) %>%
select(ego.id = Vrid, Vdatesub,
EVERTEST, TEST2YRS,
PREPCHKFREQ_CURR, PREP_HIVTESTFREQ,
RCNTESTMONTH, RCNTESTYEAR, RCNTRSLT)
aDF <- ARTnetData::ARTnet.wide %>%
filter(State == "WA") %>%
select(ego.id = AMIS_ID, Vdatesub = SUB_DATE,
EVERTEST, TEST2YRS, #aprep,
PREPCHKFREQ_CURR, PREP_HIVTESTFREQ,
RCNTESTMONTH = RCNTSTMONTH, RCNTESTYEAR = RCNTSTYEAR,
RCNTRSLT)
newvars <- bind_rows(wDF,aDF)
allDF <- egoDF %>% left_join(newvars, by = "ego.id")
# note we lose 181 cases if we filter on both
# EVERTEST != 1 (91), and diag.status=1 (90)
allDF %>%
with(table(notest.or.pos=(EVERTEST != 1 | diag.status==1),
if_artnet, useNA = "al"))
## if_artnet
## notest.or.pos 0 1 <NA>
## FALSE 541 110 0
## TRUE 140 40 0
## <NA> 1 0 0
# About 40% of HIV+ were dx this year
allDF %>%
with(table(last.testyr = RCNTESTYEAR,
HIV.status = diag.status, useNA = "al"))
## HIV.status
## last.testyr 0 1 <NA>
## 0 3 0 0
## 1962 0 1 0
## 1963 0 1 0
## 1985 0 1 0
## 1986 0 2 0
## 1987 0 3 0
## 1989 0 1 0
## 1992 0 3 0
## 1994 0 3 0
## 1995 1 1 0
## 1996 0 1 0
## 1997 0 4 0
## 1998 0 1 0
## 2000 0 2 0
## 2001 2 1 0
## 2002 1 0 0
## 2003 0 2 0
## 2004 0 1 0
## 2005 4 0 0
## 2006 3 1 0
## 2007 4 1 0
## 2008 2 5 0
## 2009 1 1 0
## 2010 3 1 0
## 2011 5 1 0
## 2012 3 0 0
## 2013 13 1 0
## 2014 8 0 0
## 2015 20 0 0
## 2016 25 1 0
## 2017 91 7 0
## 2018 121 5 1
## 2019 332 33 0
## <NA> 66 0 0
## NaN 34 4 0
allDF %>%
with(table(last.test.2019 = RCNTESTYEAR==2019,
HIV.status = diag.status, useNA = "al"))
## HIV.status
## last.test.2019 0 1 <NA>
## FALSE 310 52 1
## TRUE 332 33 0
## <NA> 100 4 0
# ## and for ARTnet
# ARTnetData::ARTnet.wide %>%
# with(table(last.testyr = RCNTSTYEAR,
# HIV.status = RCNTRSLT==2, useNA = "al"))
#
# ARTnetData::ARTnet.wide %>%
# with(table(last.test.2017 = RCNTSTYEAR > 2016,
# HIV.status = RCNTRSLT==2, useNA = "al"))
# Dx after 2017 have been testing in last 2 yrs
allDF %>%
filter(diag.status==1) %>%
with(table(TEST2YRS, diag.after.2017 = RCNTESTYEAR > 2017,
useNA = "al"))
## diag.after.2017
## TEST2YRS FALSE TRUE <NA>
## 0 35 1 2
## 1 7 3 0
## 2 2 6 0
## 3 0 2 0
## 4 1 12 0
## 5 0 4 0
## 6 0 3 0
## 7 0 1 0
## 8 0 4 0
## 12 0 1 0
## <NA> 2 1 0
## NaN 0 0 2
# So we filter on diag.status==1 (Negative),
# and set tests in last 2 yrs to 0 for EVERTEST != 1.
# Last test date is still NA for those folks.
allTestDF <- egoDF %>%
left_join(newvars, by = "ego.id") %>%
filter(diag.status == 0) %>%
mutate(age.grp = ifelse(age.grp == 6, 5, age.grp),
snap.grp = cut(snap,
breaks = c(0, .5, 1, 5, 10, 20,
max(snap)),
include.lowest = T,
include.hightest = T),
snap.grp = recode(snap.grp, "[0,0.5]" = "[0]",
"(0.5,1]" = "[1]"),
snap.grp3 = cut(snap,
breaks = c(0, 1, 5,
max(snap)),
include.lowest = T,
include.hightest = T),
snap.grp3 = recode(snap.grp3, "[0,1]" = "0-1",
"(1,5]" = "2-5",
"(5,125]" = "6-125"),
never_tested = ifelse(is.na(EVERTEST) | EVERTEST != 1,
"T", "F"),
tests_2yr = case_when(never_tested == "T" ~ 0,
is.na(TEST2YRS) ~ 0,
TEST2YRS == 100 ~ NA_real_,
TRUE ~ TEST2YRS),
no_tests_2yrs = ifelse(tests_2yr==0, "T", "F"),
testratemo_2yr = round(tests_2yr/24,3),
RCNTESTYEAR = ifelse(RCNTESTYEAR==0, 2019, RCNTESTYEAR),
last_test = case_when(
is.na(RCNTESTYEAR) | is.na(RCNTESTMONTH) ~ NA_character_,
as.numeric(RCNTESTYEAR) - (2019-age) < 13 ~ NA_character_,
as.numeric(RCNTESTYEAR) > 2019 ~ NA_character_,
TRUE ~ paste(RCNTESTYEAR, RCNTESTMONTH, 1, sep="-")),
mos_last_test = interval(ymd(last_test),
ymd(Vdatesub)) %/% months(1),
mos_last_test = ifelse(mos_last_test<0, 0, mos_last_test),
test_group = case_when(never_tested == "T" ~ 0,
never_tested == "F" & no_tests_2yrs == "T" ~ 1,
!is.na(mos_last_test) & mos_last_test < 13 ~ 3,
TRUE ~ 2),
prep_checkup = ifelse(prep==1,
case_when(PREPCHKFREQ_CURR==1 ~ 1,
PREPCHKFREQ_CURR==2 ~ 3,
PREPCHKFREQ_CURR==3 ~ 6,
PREPCHKFREQ_CURR==5 ~ 12,
TRUE ~ 12),
NA_real_),
prep_hivtest = ifelse(prep==1,
case_when(PREP_HIVTESTFREQ==1 ~ 1,
TRUE ~ 2),
NA_real_),
prep_rate = prep_checkup * prep_hivtest)
labelled::val_labels(allTestDF$test_group) <-
c("Never"=0, ">2yrs ago"=1, "1-2yrs"=2, "this yr"=3)
saveRDS(allTestDF,
file = here::here("Reports","WHAMPsurvey","MM","Testing",
"allTestDF.RDS"))
# # look at key variables
# table(allTestDF$never_tested, useNA = "al")
# table(allTestDF$no_tests_2yr, useNA = "al")
# table(allTestDF$tests_2yr, useNA = "al")
# table(allTestDF$testratemo_2yr, useNA = "al")
# table(allTestDF$mos_last_test, useNA = "al")
#
# table(allTestDF$prep, useNA = "al")
# table(allTestDF$prep_checkup, useNA = "al")
# table(allTestDF$prep_hivtest, useNA = "al")
# table(allTestDF$prep_rate, useNA = "al")
# Evertesters DF, for analyses of months since last test
mltDF <- allTestDF %>%
filter(!is.na(mos_last_test) & mos_last_test >= 0)