For the purpose of this page, we use the terms “rows” and “cases” interchangeably to refer to the entries of the dataset. In many of the processes made along the deduplication of entries in the C1 dataset, we used unstandardized columns or many other data that were in fact duplicated by HASHs, which did not depend on events related to treatment.In order to find and delete duplicated data that does not add relevant information for the purposes of the study, we now may use these standardized variables as a criteria to achieve the goal of having a unique event per HASH, by reducing its complexity based on irrelevant differences.


As stated in the second part of the deduplication process, we need to consolidate and define separate treatments as blocks, by keeping information about each event’s complexities (such as referrals, changes of treatment center, changes in plans and programs within each treatment) as variables of a single treatment. That is, to collapse intermediate events relative to a determined treatment into a single entry for each user. This will let us have a different treatment in every row. To get to this point, we had to standardize complex user-invariant variables and other types that were not directly related or relevant to the study aims. Additionally, we had to identify which relevant variables may experience changes between the different entries and much of the basis that let us define what would be a suitable criteria to collapse a greater amount of common entries.

1. Missing Dates of Discharge

In the previous deduplication stage, we only imputed the discharge dates of the cases that overlapped with other cases inside the database.


#table(is.na(CONS_C1_df_dup_FEB_2020$fech_nac)) #para comprobar si se hizo l imputación de las fechas de nacimiento
library(dplyr)
library(data.table)

CONS_C1_df_dup_FEB_2020 %>% dplyr::filter(is.na(fech_egres_imp)) %>% janitor::tabyl(ano_bd) %>% dplyr::mutate(percent=scales::percent(percent)) %>% 
    knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption="Table 1. Missing Dates of Discharge by Year of the Dataset",
                 align =rep('c', 3), 
               col.names = c("Year of Dataset", "Freq", "%")) %>%
   kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 10)
Table 1. Missing Dates of Discharge by Year of the Dataset
Year of Dataset Freq %
2,010 11 0.135%
2,011 63 0.776%
2,012 10 0.123%
2,013 23 0.283%
2,014 15 0.185%
2,015 23 0.283%
2,016 55 0.677%
2,017 59 0.727%
2,018 122 1.503%
2,019 7,738 95.307%


2. Last User-Invariant Variables.

The last user-invariant variables had many different values by user. That is why it was necessary to use different sources to overcome ambiguities. It is possible that the process of formulating an answer is one of the factors that explain the ambiguity in the answers. Many times the respondents are not precise remembering specific ages. It is reasonable to think that those with a sustained substance abuse profile would experience difficulties to recall specific information.


  • Age of the Onset of Drug Use (edad_ini_cons) (n= 40,627), had too many distinct values by each user (n 15,253).

  • Age of the Onset of Drug Use Primary Substance (edad_ini_sus_prin) (n= 41,794), had too many distinct values by each user (n= 15,800).


First, we discarded cases with ages of onset of drug use that were posterior to the age at admission (n= 96). We also did the same for the invalid ages of onset of primary drug use (n= 256).


CONS_C1_df_dup_FEB_2020 %>%
  dplyr::mutate(edad_ini_cons=case_when(edad_al_ing<=edad_ini_cons~NA_integer_,TRUE~as.integer(edad_ini_cons)))%>% #may 2010= filtro por aquellos casos que son invalidos, para descartarlos
  dplyr::mutate(edad_ini_sus_prin=case_when(edad_al_ing<=edad_ini_sus_prin~NA_integer_,TRUE~as.integer(edad_ini_sus_prin)))%>% #may 2010= filtro por aquellos casos que son invalidos, para descartarlos
  dplyr::mutate(edad_ini_sus_prin=case_when(edad_ini_sus_prin<edad_ini_cons~NA_integer_,TRUE~as.integer(edad_ini_sus_prin)))%>%

assign("CONS_C1_df_dup_MAY_2020_prev0",., envir = .GlobalEnv)

The following table shows the amount of ages that varies within each user.


prueba_edad_ini_cons <- CONS_C1_df_dup_MAY_2020_prev0 %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>% dplyr::distinct(hash_key)

prueba_edad_ini_sus_prin <- CONS_C1_df_dup_MAY_2020_prev0 %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_sus_prin_por_hash=n_distinct(edad_ini_sus_prin)) %>% ungroup() %>% dplyr::filter(edad_ini_sus_prin_por_hash>1) %>% dplyr::distinct(hash_key)

edad_ini_cons_summ<-
  CONS_C1_df_dup_MAY_2020_prev0 %>% 
   dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(prueba_edad_ini_cons)))))) %>%
    group_by(hash_key) %>%
  dplyr::add_tally() %>%  
   summarise(n=mean(n), edad_ini_cons_p25 = quantile(edad_ini_cons, c(0.25),na.rm=T),edad_ini_cons_p50 = quantile(edad_ini_cons, c(0.50),na.rm=T),edad_ini_cons_p75 = quantile(edad_ini_cons, c(0.75),na.rm=T),edad_ini_conssd=sd(edad_ini_cons,na.rm=T), min=min(edad_ini_cons, na.rm = T),max=max(edad_ini_cons, na.rm = T),mean=mean(edad_ini_cons,na.rm=T),ranges=abs(max-min)) %>%
    ungroup()%>%
  dplyr::mutate(diff_p25_p50=abs(edad_ini_cons_p50-edad_ini_cons_p25),diff_p75_p50=abs(edad_ini_cons_p50-edad_ini_cons_p75),min_mean=abs(min-mean), max_mean=abs(max-mean))%>%
    summarise(avg_n=mean(n), sd_n=sd(n),avg_p25_p50=mean(diff_p25_p50),avg_p75_p50=mean(diff_p75_p50),avg_sd=mean(edad_ini_conssd,na.rm=T),avg_min_mean=mean(min_mean,na.rm=T),avg_max_mean=mean(max_mean,na.rm=T),avg_ranges=mean(ranges,na.rm=T),sd_ranges=sd(ranges,na.rm=T),p75_ranges=quantile(ranges, c(0.75),na.rm=T),p90_ranges=quantile(ranges, c(0.90),na.rm=T)) %>% 
  round(2)
`summarise()` ungrouping output (override with `.groups` argument)
edad_ini_sus_prin_summ<-
  CONS_C1_df_dup_MAY_2020_prev0 %>% 
   dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(prueba_edad_ini_sus_prin)))))) %>%
    group_by(hash_key) %>%
    dplyr::add_tally() %>%  
   summarise(n=mean(n),edad_ini_sus_prin_p25 = quantile(edad_ini_sus_prin, c(0.25),na.rm=T),edad_ini_sus_prin_p50 = quantile(edad_ini_sus_prin, c(0.50),na.rm=T),edad_ini_sus_prin_p75 = quantile(edad_ini_sus_prin, c(0.75),na.rm=T),edad_ini_sus_prinsd=sd(edad_ini_sus_prin,na.rm=T), min=min(edad_ini_sus_prin, na.rm = T),max=max(edad_ini_sus_prin, na.rm = T),mean=mean(edad_ini_sus_prin,na.rm=T),ranges=abs(max-min)) %>%
    ungroup()%>%
    dplyr::mutate(diff_p25_p50=abs(edad_ini_sus_prin_p50-edad_ini_sus_prin_p25),diff_p75_p50=abs(edad_ini_sus_prin_p50-edad_ini_sus_prin_p75),min_mean=abs(min-mean), max_mean=abs(max-mean))%>%
    summarise(avg_n=mean(n), sd_n=sd(n),avg_p25_p50=mean(diff_p25_p50),avg_p75_p50=mean(diff_p75_p50),avg_sd=mean(edad_ini_sus_prinsd,na.rm=T),avg_min_mean=mean(min_mean,na.rm=T),avg_max_mean=mean(max_mean,na.rm=T),avg_ranges=mean(ranges,na.rm=T),sd_ranges=sd(ranges,na.rm=T),p75_ranges=quantile(ranges, c(0.75),na.rm=T),p90_ranges=quantile(ranges, c(0.90),na.rm=T)) %>% 
  round(2)
`summarise()` ungrouping output (override with `.groups` argument)
rbind(cbind(Variable="Age of the Onset of Drug Use",round(edad_ini_cons_summ,2)),cbind(Variable="Age of the Onset of Drug Use Primary Substance",round(edad_ini_sus_prin_summ,2))) %>%
    knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption="Table 2. Distribution of Differences in Years Within Users",
                 align =rep('c', 101),
               col.names = c("Variables","Avg. Cases per User", "Std.Dev. Cases per User","Avg. Diff. Perc 25-50", "Avg. Diff. Perc 75-50","Avg. Std.Dev","Avg. Diff. Min-Mean","Avg. Diff. Max-Mean","Avg. Range", "Std.Dev. Range","Perc 75 Range","Perc 90 Range"))  %>%
   kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size =10) %>%
  kableExtra::scroll_box(width = "100%", height = "250px")
Table 2. Distribution of Differences in Years Within Users
Variables Avg. Cases per User Std.Dev. Cases per User Avg. Diff. Perc 25-50 Avg. Diff. Perc 75-50 Avg. Std.Dev Avg. Diff. Min-Mean Avg. Diff. Max-Mean Avg. Range Std.Dev. Range Perc 75 Range Perc 90 Range
Age of the Onset of Drug Use 2.66 1.06 0.86 0.96 2.63 1.82 1.93 3.75 4.96 4 9
Age of the Onset of Drug Use Primary Substance 2.64 1.05 1.43 1.45 3.69 2.95 2.95 5.91 6.24 8 14


Considering the abovementioned, we decided to restrict the rules to obtain unique values in user-invariant variables by each user to the 25% of users that had more considerable variability in each value of the registries present in the dataset.

knitr::include_graphics(paste0(path,"/SUD_CL/Figures/same_hash_distinct_values_user_invariant_top.svg"))
Figure 1. Decision Tree for the Users with more than one value in a User-Invariant Variable

Figure 1. Decision Tree for the Users with more than one value in a User-Invariant Variable


In case of Age of the Onset of Drug Use (edad_ini_cons), users that had Age of the Onset of Drug Use (edad_ini_cons) greater than 4.

#knitr::include_graphics("G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/SUD_CL/Figures/age_onset_drug_use_same_hash_distinct_values_user_invariant.svg")
knitr::include_graphics(paste0(path,"/SUD_CL/Figures/age_onset_drug_use_same_hash_distinct_values_user_invariant.svg"))
Figure 2. Decision Tree for the Users with more than one value in a Age of the Onset of Substance Use of Primary Substance

Figure 2. Decision Tree for the Users with more than one value in a Age of the Onset of Substance Use of Primary Substance

CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons <- CONS_C1_df_dup_MAY_2020_prev0 %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>% dplyr::distinct(hash_key)
CONS_C1_df_dup_FEB_2020 %>% 
 dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons)))))) %>% # Select HASHs of cited cases
 dplyr::arrange(hash_key) %>% #ordeno por ids 
dplyr::select(row, hash_key, ano_bd, edad_ini_cons, edad, fech_nac,edad_al_ing, fech_ing, fech_egres_imp, tipo_de_plan, senda)%>%
    head(40)%>%
    knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption="Table 3. HASHs with more than one Age of the Onset of Drug Use (First 40 Cases)",
                 align =rep('c', 101))  %>%
   kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
  kableExtra::scroll_box(width = "100%", height = "375px")
Table 3. HASHs with more than one Age of the Onset of Drug Use (First 40 Cases)
row hash_key ano_bd edad_ini_cons edad fech_nac edad_al_ing fech_ing fech_egres_imp tipo_de_plan senda
157,456 00012586ea3036b7a18093c396847a87 2,019 15 42 1977-11-12 41.47023 2019-05-03 NA PG-PAI Si
53,084 00012586ea3036b7a18093c396847a87 2,014 13 42 1977-11-12 36.15606 2014-01-08 2014-11-03 PG-PR No
120,237 0007678b8b35fa0961d1e8110fbf9620 2,017 15 31 1988-03-08 29.39904 2017-08-01 2017-09-19 M-PR Si
117,796 0007678b8b35fa0961d1e8110fbf9620 2,017 15 31 1988-03-08 29.23203 2017-06-01 2017-07-05 M-PR No
109,116 0007678b8b35fa0961d1e8110fbf9620 2,017 19 31 1988-03-08 28.49555 2016-09-05 2017-05-29 PG-PAI Si
21,420 000abb62b93e12b04ad68c69e37597a6 2,012 14 37 1982-10-25 28.51745 2011-05-02 2012-03-19 PG-PAI Si
2,859 000abb62b93e12b04ad68c69e37597a6 2,010 NA 37 1982-10-25 25.66735 2008-06-25 2010-06-23 PG-PAI Si
57,760 000ec7b631988f81f3fc07f4de6cb9a9 2,014 15 39 1980-06-14 33.93566 2014-05-22 2014-07-24 PG-PAI Si
52,499 000ec7b631988f81f3fc07f4de6cb9a9 2,014 16 39 1980-06-14 33.48939 2013-12-10 2014-02-28 PG-PAB Si
36,044 000ec7b631988f81f3fc07f4de6cb9a9 2,013 15 39 1980-06-14 32.58590 2013-01-14 2013-11-28 PG-PAI Si
90,698 000ff5e2fdd25462e4febeb6a9099bec 2,016 14 50 1969-05-16 46.46954 2015-11-04 2016-09-14 PG-PR Si
19,994 000ff5e2fdd25462e4febeb6a9099bec 2,011 12 50 1969-05-16 42.51061 2011-11-19 2012-01-31 PG-PAI Si
29,383 001022ffb28057b24dd76900bbf1e3de 2,012 14 37 1982-04-20 30.25873 2012-07-23 2012-11-02 M-PR Si
16,163 001022ffb28057b24dd76900bbf1e3de 2,011 15 37 1982-04-20 29.10062 2011-05-27 2011-10-10 PG-PAI Si
162,840 0012beab59a3a84eec95c9371f393a06 2,019 15 27 1991-11-26 27.76728 2019-09-02 NA PG-PAB Si
156,952 0012beab59a3a84eec95c9371f393a06 2,019 14 27 1991-11-26 27.48802 2019-05-23 2019-08-29 PG-PR Si
123,290 001844aad3a5ef098c4c1d5e479ccbd6 2,017 14 37 1982-02-12 35.64134 2017-10-04 2017-12-01 PG-PAB Si
86,678 001844aad3a5ef098c4c1d5e479ccbd6 2,016 15 37 1982-02-12 33.09240 2015-03-18 2016-12-20 M-PR Si
66,251 001844aad3a5ef098c4c1d5e479ccbd6 2,015 15 37 1982-02-12 31.89049 2014-01-03 2015-03-16 M-PAI Si
92,601 001b0ff241cd0d95828b86b4bdab8c19 2,016 20 52 1967-06-30 48.54209 2016-01-14 2016-05-12 PG-PR Si
37,992 001b0ff241cd0d95828b86b4bdab8c19 2,013 18 52 1967-06-30 45.74127 2013-03-27 2013-06-28 PG-PAI Si
31,481 001b0ff241cd0d95828b86b4bdab8c19 2,012 17 52 1967-06-30 45.34155 2012-11-01 2013-01-02 PG-PAB Si
73,339 001ba6dfc8332930f9d9d20a0fa6685b 2,015 14 26 1993-06-28 21.60712 2015-02-05 2015-03-24 PG-PAI No
44,192 001ba6dfc8332930f9d9d20a0fa6685b 2,013 13 26 1993-06-28 20.22177 2013-09-17 2013-09-30 PG-PR Si
36,728 001ba6dfc8332930f9d9d20a0fa6685b 2,013 13 26 1993-06-28 19.61123 2013-02-06 2013-03-20 PG-PR Si
139,264 001fb4d82755ca201c292fe318fef341 2,018 15 55 1963-12-14 54.51608 2018-06-20 2018-10-19 PG-PR Si
32,645 001fb4d82755ca201c292fe318fef341 2,013 18 55 1963-12-14 48.09309 2012-01-17 2013-08-27 PG-PAI Si
35,823 00227e8787d1ce564dae87621440d48b 2,013 14 45 1974-10-18 38.22861 2013-01-09 2013-11-01 M-PAI Si
32,399 00227e8787d1ce564dae87621440d48b 2,013 15 45 1974-10-18 37.23203 2012-01-11 2013-01-04 PG-PAI Si
4,824 00227e8787d1ce564dae87621440d48b 2,010 NA 45 1974-10-18 35.52635 2010-04-28 2010-08-10 PG-PAI Si
72,657 00237788c4c803c12fecac82105ea4f0 2,015 13 37 1982-08-26 32.43806 2015-02-02 2015-09-23 PG-PAI Si
46,208 00237788c4c803c12fecac82105ea4f0 2,013 14 37 1982-08-26 31.21424 2013-11-12 2014-02-26 PG-PAB Si
139,158 002a54a1864024540089017666091fc0 2,018 27 39 1980-10-31 37.65366 2018-06-27 2018-11-23 PG-PR Si
10,890 002a54a1864024540089017666091fc0 2,011 NA 39 1980-10-31 29.67830 2010-07-06 2011-03-31 PG-PAB Si
122,564 002b4df919e2b1cc6ff0cdb26b27a514 2,017 14 36 1983-09-23 34.00684 2017-09-25 2017-12-15 PG-PAI Si
76,859 002b4df919e2b1cc6ff0cdb26b27a514 2,015 15 36 1983-09-23 31.67693 2015-05-28 2015-11-27 PG-PAB Si
34,105 002c979e254773f17812d9bff13996dc 2,013 16 35 1983-12-05 28.85147 2012-10-11 2013-01-04 PG-PAB Si
4,271 002c979e254773f17812d9bff13996dc 2,010 NA 35 1983-12-05 26.28337 2010-03-18 2010-05-31 PG-PAI Si
158,646 00335a6165270de0986718e354c20dcb 2,019 12 58 1961-08-05 57.86995 2019-06-19 2019-07-17 PG-PR Si
156,853 00335a6165270de0986718e354c20dcb 2,019 15 58 1961-08-05 57.76865 2019-05-13 2019-06-14 PG-PAI Si
#edad_ini_cons_summ[,"p75_ranges"]
#edad_ini_cons_summ[,"p90_diff_p75_p50"]

#invisible(
  #CONS_C1_df_dup_MAY_2020_prev%>%
#    edad_ini_cons_lo_75%>%
#  dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71")) %>%
#  dplyr::select(row, hash_key, obs)
  
#      edad_ini_cons_lo_75%>%
#  dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))
#      
##  data.frame(hash_key=edad_ini_cons_up_75)%>%
#  dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))
#)

###PARA HACER LA CONVERSION
#_______________________

edad_ini_cons_up_75<-
    as.character(
      CONS_C1_df_dup_MAY_2020_prev0 %>%
    dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons)))))) %>% 
    dplyr::group_by(hash_key) %>%
    dplyr::mutate(range=abs(max(edad_ini_cons,na.rm=T)-abs(min(edad_ini_cons,na.rm=T)))) %>%
    dplyr::filter(range>as.numeric(edad_ini_cons_summ[,"p75_ranges"]))%>%
    #dplyr::select(hash_key, range)
    distinct(hash_key)%>%
    unlist())

##BAJO EL PERCENTIL 75, SE REEMPLAZA CON LA MEDIA
edad_ini_cons_lo_75<-
    CONS_C1_df_dup_MAY_2020_prev0 %>%
    dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons)))))) %>% 
    dplyr::group_by(hash_key) %>%
    dplyr::mutate(mean_edad_ini_cons_lo75=round(mean(edad_ini_cons,na.rm=T),0),range=abs(max(edad_ini_cons,na.rm=T)-abs(min(edad_ini_cons,na.rm=T)))) %>%
    dplyr::ungroup()%>%
    dplyr::filter(range<=as.numeric(edad_ini_cons_summ[,"p75_ranges"]))%>%
    dplyr::select(hash_key,mean_edad_ini_cons_lo75)%>%
    dplyr::distinct(hash_key,.keep_all=T)


##VER el resumen de los casos
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#<- CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>% dplyr::group_by(hash_key) %>% dplyr::add_tally(name="n_edad_ini_cons_sus") %>% dplyr::mutate(n_dis=n_distinct(ano_bd)) %>% dplyr::ungroup() %>% dplyr::filter(n_dis>1)%>% distinct(hash_key)%>% unlist()%>% as.character()

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_______________________
###PARA HACER LA CONVERSION en los mayores al 75 (edad_ini_cons_great_75)
#_______________________

#_#_#_#_#_#_
#1. distinta edad, bd tratamiento más reciente- Dejar la fecha del tratamiento más reciente
#proviene de más de una base de datos anual  
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>% 
dplyr::group_by(hash_key) %>%
dplyr::add_tally(name="n_edad_ini_cons_sus") %>%  
dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_dis>1,!is.na(edad_ini_cons)) %>% 
dplyr::arrange(hash_key,desc(ano_bd)) %>% #may 2020, agregué descendiente la edad, de más reciente a más antiguo
dplyr::select(row, hash_key, ano_bd, edad_ini_cons, edad, fech_nac,edad_al_ing,n_edad_ini_cons_sus)%>%
dplyr::group_by(hash_key)%>%
dplyr::mutate(max_ano=max(ano_bd))%>%
#dplyr::slice(which.max(ano_bd)) %>% #MAY 2020, dejé como un procedimiento de APR 2020
dplyr::filter(max_ano==ano_bd) %>%
dplyr::ungroup()%>%
assign("hash_edad_ini_cons_most_recent_db",., envir = .GlobalEnv) %>% #APR 2020= 3,416 casos // #MAY 2020= 3,931 (3,416 usuarios)
 dplyr::group_by(hash_key)%>%
  distinct(edad_ini_cons,.keep_all=T)%>%
  dplyr::mutate(n_dis=n_distinct(edad_ini_cons)) %>%
  dplyr::filter(n_dis>1)%>% #45
  dplyr::mutate(edad_ini_cons_=paste0("edad_ini_cons_",row_number()))%>%
  tidyr::pivot_wider(id_cols =hash_key,names_from = edad_ini_cons_, values_from = edad_ini_cons,names_repair="minimal",values_fill = list(n = ""))%>%
  dplyr::rename("edad_ini_cons"="edad_ini_cons_1")%>%
  assign("hash_edad_ini_cons_most_recent_db_more_one_value_1b",., envir = .GlobalEnv) #1,268 casos de 625 HASHs

hash_edad_ini_cons_most_recent_db_1a <- hash_edad_ini_cons_most_recent_db%>%  #3,031
  dplyr::select(-n_edad_ini_cons_sus)%>%
    group_by(hash_key)%>%
    distinct(edad_ini_cons,.keep_all=T)%>%
    dplyr::mutate(n_dis=n_distinct(edad_ini_cons)) %>%
    dplyr::filter(n_dis==1) %>%
      ungroup()%>%
    dplyr::select(-n_dis,-row,-ano_bd,-max_ano)

#_#_#_#_#_#_
#_#_#_#_#_#_
#2a. distinta edad, misma bd tratamiento, más de 2 casos- Dejar la fecha del tratamiento más frecuente
#misma edad base de datos por año, pero más de 2 casos ---> valor + frecuente
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>% 
dplyr::group_by(hash_key) %>%
dplyr::add_tally() %>%  
dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_dis==1,n>2) %>% #más de 2 hash, pero todos dentro de la misma bd del mismo año
dplyr::select(-n) %>%
dplyr::filter(!is.na(edad_ini_cons))%>%
dplyr::mutate(concat_hash_edadinicons=paste0(hash_key,"_",edad_ini_cons)) %>%
dplyr::group_by(concat_hash_edadinicons) %>%
dplyr::add_tally() %>%  #agrego un nuevo n, para contar los distintos nacionalidades
dplyr::ungroup() %>%
dplyr::select(row, hash_key, ano_bd, edad_ini_cons, edad, fech_nac,edad_al_ing,n)%>%
dplyr::group_by(hash_key) %>%
#dplyr::slice(which.max(n)) %>% #me quedo con la concatenación por hash key que más se repite.
dplyr::top_n(n)%>%
dplyr::rename("cases_by_concat_hash_edad_ini_cons"="n")%>%
dplyr::ungroup() %>%
assign("hash_edad_ini_cons_most_freq_value",., envir = .GlobalEnv)%>% # APR 2020= 43 casos // MAY 2020, 99 casos, 43 usuarios.
dplyr::select(-cases_by_concat_hash_edad_ini_cons)%>%
group_by(hash_key)%>%
add_tally()%>%
dplyr::filter(n>1)%>% #99 casos
dplyr::mutate(edad_ini_cons_=paste0("edad_ini_cons_",row_number()))%>%
tidyr::pivot_wider(id_cols =hash_key,names_from = edad_ini_cons_, values_from = edad_ini_cons,names_repair="minimal",values_fill = list(n = ""))%>%
dplyr::rename("edad_ini_cons"="edad_ini_cons_1")%>%
assign("hash_sus_ini_most_freq_value_more_one_value_2a2",., envir = .GlobalEnv) #136

#seleccionar los casos en que en la misma base de datos hay sólo un caso que es mayor
hash_edad_ini_cons_most_freq_value_2a1 <- hash_edad_ini_cons_most_freq_value%>% 
  dplyr::select(-cases_by_concat_hash_edad_ini_cons)%>%
    group_by(hash_key)%>%
    add_tally()%>%
    dplyr::filter(n==1) %>%
    dplyr::select(-n, -row, -ano_bd)

#_#_#_#_#_#_
#_#_#_#_#_#_
#2b. distinta edad, misma bd tratamiento, más de 2 casos- Dejar la fecha del tratamiento más frecuente. Casos con fecha de trat + reciente
CONS_C1_df_dup_MAY_2020_prev0 %>% 
  dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_1b["hash_key"])))%>%
  dplyr::group_by(hash_key,edad_ini_cons) %>%
  dplyr::add_tally(name="n_por_hash_edad_ini_cons") %>%  
  dplyr::ungroup()%>%
  dplyr::filter(!is.na(edad_ini_cons))%>%
  dplyr::group_by(hash_key) %>%
  dplyr::add_tally(name="n_por_hash") %>%  
  dplyr::arrange(desc(n_por_hash_edad_ini_cons))%>%
  #  dplyr::ungroup()%>%
  dplyr::top_n(1,n_por_hash_edad_ini_cons)%>%
  dplyr::arrange(desc(n_por_hash),hash_key)%>%
  dplyr::distinct(hash_key,edad_ini_cons,.keep_all=T)%>%
  dplyr::select(row, hash_key, ano_bd, edad_ini_cons,edad_al_ing, n_por_hash,n_por_hash_edad_ini_cons) %>%
  dplyr::group_by(hash_key)%>%
  dplyr::add_tally(name="n_por_hash_edad_ini_cons") %>%
  assign("hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b",., envir = .GlobalEnv)

hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b %>%
  dplyr::filter(n_por_hash_edad_ini_cons>1)%>% #45
  dplyr::mutate(edad_ini_cons_=paste0("edad_ini_cons_",row_number()))%>%
  tidyr::pivot_wider(id_cols =hash_key,names_from = edad_ini_cons_, values_from = edad_ini_cons,names_repair="minimal",values_fill = list(n = ""))%>%
  dplyr::rename("edad_ini_cons"="edad_ini_cons_1")%>%
  assign("hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2",., envir = .GlobalEnv) 

hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1<-
  hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b%>%
  dplyr::filter(n_por_hash_edad_ini_cons==1)%>%
  dplyr::select(hash_key,edad_ini_cons)

#_#_#_#_#_#_
#_#_#_#_#_#_
# 3. Sólo 2 casos . fechas de nacimiento, en la misma base de datos anual.
#misma edad base de datos por año, pero sólo 2 casos ---> se obtiene la media
#Actualizar a mayo

CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>% 
dplyr::group_by(hash_key) %>%
dplyr::add_tally() %>%  
dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_dis==1,n==2) %>% #casos en que hay que recurrir a otras variables
dplyr::arrange(hash_key) %>%
 dplyr::select(row, hash_key, ano_bd, edad_ini_cons, edad, fech_nac,edad_al_ing)%>%
  dplyr::group_by(hash_key) %>% 
    dplyr::mutate(rn=row_number()) %>% 
  as.data.frame() %>%
  reshape(idvar = "hash_key", timevar = "rn", direction = "wide") %>%
  dplyr::mutate(mean_edad_ini_cons=round(rowMeans(cbind(edad_ini_cons.1,edad_ini_cons.2), na.rm=T),0)) %>%
dplyr::select(hash_key,mean_edad_ini_cons) %>%
  assign("edad_ini_cons_misma_bd_2_casos_3",., envir = .GlobalEnv)

invisible(
CONS_C1_df_dup_MAY_2020_prev0 %>%
    dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])))))) %>% 
          dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))%>%
    dplyr::select(hash_key,ano_bd,edad_ini_cons,obs)
)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_

#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>%
#dplyr::filter(hash_key %in% as.character(unlist(hash_sus_ini_most_freq_value_more_one_value_2a2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>%
#dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_1a[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_1b[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))) %>% group_by(hash_key)%>% print()

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
invisible(c("Manual Review"))

invisible(
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% c(as.character(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])),
                              as.character(unlist(hash_sus_ini_most_freq_value_more_one_value_2a2[,"hash_key"])),
                              as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))))%>% 
    dplyr::arrange(hash_key)%>%
    dplyr::filter(!is.na(edad_ini_cons))%>%
    dplyr::select(hash_key, ano_bd,edad_al_ing, edad_inicio_consumo,edad_ini_cons, edad_inicio_sustancia_principal, edad_ini_sus_prin)
#1480
)

casos_fecha_inicio_cons_sus_empates_3 <-
  CONS_C1_df_dup_MAY_2020_prev0 %>%
  dplyr::filter(hash_key %in% c(as.character(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])),
                              as.character(unlist(hash_sus_ini_most_freq_value_more_one_value_2a2[,"hash_key"])),
                              as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))))%>% 
  dplyr::filter(!is.na(edad_ini_cons))%>%
  group_by(hash_key) %>%
  summarise(mean_edad_ini_cons=round(mean(edad_ini_cons,na.rm=T),0))

#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a[,"hash_key"])))%>% group_by(hash_key)

#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a[,"hash_key"])))%>% group_by(hash_key)

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#

#hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1  
#  casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a
  
CONS_C1_df_dup_MAY_2020_prev0 %>%
  #janitor::tabyl(sexo_2) %>%
#0b
  dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_lo_75[,"hash_key"])))))~glue::glue("{obs};3.01.0b.HASH w/ more than one distinct Age of Onset of Drug Use.Minor differences within users,replaced with mean"),TRUE~obs))%>%
  dplyr::left_join(edad_ini_cons_lo_75,by="hash_key", suffix=c("","_edad_lo_75"))%>%
  dplyr::mutate(edad_ini_cons= ifelse(!is.na(mean_edad_ini_cons_lo75), mean_edad_ini_cons_lo75, edad_ini_cons)) %>%
  dplyr::select(-mean_edad_ini_cons_lo75) %>%
#1a
  dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_most_recent_db_1a)))))~glue::glue("{obs};3.01.1a.HASH w/ more than one distinct Age of Onset of Drug Use. Recent db"),TRUE~obs))%>%
  dplyr::left_join(hash_edad_ini_cons_most_recent_db_1a, by="hash_key",suffix=c("","_edadinicons_recent_db")) %>%
  dplyr::mutate(edad_ini_cons= ifelse(!is.na(edad_ini_cons_edadinicons_recent_db), edad_ini_cons_edadinicons_recent_db, edad_ini_cons)) %>%
  dplyr::select(-ends_with("_edadinicons_recent_db")) %>%
#2a1
  dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_most_freq_value_2a1)))))~glue::glue("{obs};3.01.2a1.HASH w/ more than one distinct Age of Onset of Drug Use. Most frequent value"),TRUE~obs))%>%
  dplyr::left_join(hash_edad_ini_cons_most_freq_value_2a1, by="hash_key",suffix=c("","_edadinicons_mfv")) %>%
  dplyr::mutate(edad_ini_cons= ifelse(!is.na(edad_ini_cons_edadinicons_mfv), edad_ini_cons_edadinicons_mfv, edad_ini_cons)) %>%
  dplyr::select(-ends_with("_edadinicons_mfv")) %>%  
#2b1
  dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1)))))~glue::glue("{obs};3.01.2b1.HASH w/ more than one distinct Age of Onset of Drug Use.>1 recent DB, mfv"),TRUE~obs))%>%
  dplyr::left_join(hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1, by="hash_key",suffix=c("","_edadinicons_recent_db_mfv")) %>%
  dplyr::mutate(edad_ini_cons= ifelse(!is.na(edad_ini_cons_edadinicons_recent_db_mfv), edad_ini_cons_edadinicons_recent_db_mfv, edad_ini_cons)) %>%
  dplyr::select(-ends_with("_edadinicons_recent_db_mfv")) %>%  
 # dplyr::filter(!is.na(mean_edad_ini_cons))%>% dplyr::select(hash_key,edad_ini_cons,mean_edad_ini_cons)%>%#solo una prueba
#3
  dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(casos_fecha_inicio_cons_sus_empates_3)))))~glue::glue("{obs};3.01.3b.HASH w/ more than one distinct Age of Onset of Drug Use.2 cases, same yearly dataset or ties"),TRUE~obs))%>%
  dplyr::left_join(casos_fecha_inicio_cons_sus_empates_3, by="hash_key",suffix=c("","_edadinicons_misma_bd_2_casos_3b")) %>%
  dplyr::mutate(edad_ini_cons= ifelse(!is.na(mean_edad_ini_cons), mean_edad_ini_cons, edad_ini_cons)) %>%
  dplyr::select(-ends_with("_edadinicons_misma_bd_2_casos"),-mean_edad_ini_cons) %>% 
  assign("CONS_C1_df_dup_MAY_2020_prev",., envir = .GlobalEnv)

#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a[,"hash_key"])))%>% group_by(hash_key)

##dim(CONS_C1_df_dup_MAY_2020_prev);names(CONS_C1_df_dup_MAY_2020_prev)
#CONS_C1_df_dup_MAY_2020_prev %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>%  dplyr::select(hash_key,obs)%>% View()

#CONS_C1_df_dup_MAY_2020_prev %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>% nrow() %>%  formatC(, format="f", big.mark=",", digits=0)

#CONS_C1_df_dup_MAY_2020_prev %>% dplyr::filter(grepl('3.01.3b.', obs)) %>% dplyr::group_by(hash_key) 

invisible(
CONS_C1_df_dup_MAY_2020_prev%>%
dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))%>%
  dplyr::select(row, hash_key, edad_ini_cons, obs)
)
invisible(
CONS_C1_df_dup_MAY_2020_prev0 %>%
    dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])))))) %>% 
          dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))%>%
    dplyr::select(hash_key,ano_bd,edad_ini_cons,obs)
)
#dim(CONS_C1_df_dup_MAY_2020_prev) #117,387, 140
#dim(CONS_C1_df_dup_FEB_2020) #117,387, 140

#CONS_C1_df_dup_MAY_2020_prev %>% dplyr::group_by(obs) %>% summarise(n=n()) %>% dplyr::filter(n,grepl('3.01.', obs)) %>% View()
#CONS_C1_df_dup_MAY_2020_prev %>% dplyr::group_by(obs) %>% summarise(n=n()) %>% dplyr::filter(n,grepl('3.02.', obs)) %>% View()
CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin <-
  CONS_C1_df_dup_MAY_2020_prev %>% 
  dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
  dplyr::group_by(concat_hash_sus_prin) %>% 
  dplyr::mutate(sus_prin_y_edad_ini_sus_prin_por_hash=n_distinct(edad_ini_sus_prin)) %>% 
  ungroup() %>% 
  dplyr::filter(sus_prin_y_edad_ini_sus_prin_por_hash>1) %>% 
  dplyr::select(row,hash_key,concat_hash_sus_prin,sus_prin_y_edad_ini_sus_prin_por_hash,sus_principal,edad_ini_sus_prin) %>% 
  dplyr::distinct(concat_hash_sus_prin,.keep_all=T)

cases_affected_by_hash_sus_prin_age<- CONS_C1_df_dup_MAY_2020_prev %>% 
                      dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
                      dplyr::group_by(concat_hash_sus_prin) %>% 
                      dplyr::mutate(sus_prin_y_edad_ini_sus_prin_por_hash=n_distinct(edad_ini_sus_prin)) %>% 
                      ungroup() %>% 
                      dplyr::filter(sus_prin_y_edad_ini_sus_prin_por_hash>1) %>% nrow()

summ_edad_ini_cons_sus_prin_por_concat_hash_sus_prin<-
    CONS_C1_df_dup_MAY_2020_prev %>% 
    dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
    dplyr::filter(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin[,"concat_hash_sus_prin"])))))) %>%
    dplyr::group_by(concat_hash_sus_prin) %>%
    dplyr::add_tally() %>%  
    summarise(n=mean(n),edad_ini_sus_prin_p25 = quantile(edad_ini_sus_prin, c(0.25),na.rm=T),edad_ini_sus_prin_p50 = quantile(edad_ini_sus_prin, c(0.50),na.rm=T),edad_ini_sus_prin_p75 = quantile(edad_ini_sus_prin, c(0.75),na.rm=T),edad_ini_sus_prinsd=sd(edad_ini_sus_prin,na.rm=T), min=min(edad_ini_sus_prin, na.rm= T),max=max(edad_ini_sus_prin, na.rm= T),mean=mean(edad_ini_sus_prin,na.rm=T),ranges=range(edad_ini_sus_prin,na.rm=T, finite=T)[2]-range(edad_ini_sus_prin,na.rm=T, finite=T)[1]) %>%
    ungroup()%>%
    dplyr::mutate(diff_p25_p50=abs(edad_ini_sus_prin_p50-edad_ini_sus_prin_p25),diff_p75_p50=abs(edad_ini_sus_prin_p50-edad_ini_sus_prin_p75),min_mean=abs(min-mean), max_mean=abs(max-mean))%>%
    summarise(avg_n=mean(n), sd_n=sd(n),avg_p25_p50=mean(diff_p25_p50, na.rm=T),avg_p75_p50=mean(diff_p75_p50, na.rm=T),avg_sd=mean(edad_ini_sus_prinsd,na.rm=T),avg_min_mean=mean(min_mean,na.rm=T),avg_max_mean=mean(max_mean,na.rm=T),avg_ranges=mean(ranges,na.rm=T),sd_ranges=sd(ranges,na.rm=T),p75_ranges=quantile(ranges, c(0.75),na.rm=T),p90_ranges=quantile(ranges, c(0.90),na.rm=T)) %>% 
    round(2)
`summarise()` ungrouping output (override with `.groups` argument)


In the case of Age of Onset of Drug Use Primary Substance (edad_ini_sus_prin), we needed to check for differences within each user, but for every admission in which he/she reported a common primary substance of admission. In total, 33,500 entries had different ages of onset of drug use in different treatments where they reported the same primary substance. For cases with ranges less than 6 years, we replaced the age of onset of drug use with the average age for each user that reported the same primary substance.

#knitr::include_graphics("G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/SUD_CL/Figures/age_onset_drug_use_prim_substance_same_hash_distinct_values_user_invariant.svg")
knitr::include_graphics(paste0(path,"/SUD_CL/Figures/age_onset_drug_use_prim_substance_same_hash_distinct_values_user_invariant.svg"))
Figure 3. Decision Tree for the Users with more than one value in a Age of Onset of Substance Use of Primary Substance

Figure 3. Decision Tree for the Users with more than one value in a Age of Onset of Substance Use of Primary Substance

#336+2834 combinaciones #3 más 2a
CONS_C1_df_dup_MAY_2020_prev %>% 
    dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
    dplyr::filter(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin[,"concat_hash_sus_prin"])))))) %>% # Select HASHs of cited cases
    dplyr::arrange(concat_hash_sus_prin) %>% #ordeno por ids 
    dplyr::select(row, concat_hash_sus_prin,hash_key, ano_bd, edad_ini_sus_prin, sus_principal,edad_al_ing, fech_ing, fech_egres_imp, tipo_de_plan, senda)%>%
      head(40)%>%
    knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption="Table 4. Entries of Users with the same Primary Substance, with more than one Age of Onset of Drug Use of Primary Substance (First 40 Cases)",
                 align =rep('c', 101))  %>%
   kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
  kableExtra::scroll_box(width = "100%", height = "375px")
Table 4. Entries of Users with the same Primary Substance, with more than one Age of Onset of Drug Use of Primary Substance (First 40 Cases)
row concat_hash_sus_prin hash_key ano_bd edad_ini_sus_prin sus_principal edad_al_ing fech_ing fech_egres_imp tipo_de_plan senda
157,456 00012586ea3036b7a18093c396847a87_Pasta Base 00012586ea3036b7a18093c396847a87 2,019 27 Pasta Base 41.47023 2019-05-03 NA PG-PAI Si
53,084 00012586ea3036b7a18093c396847a87_Pasta Base 00012586ea3036b7a18093c396847a87 2,014 28 Pasta Base 36.15606 2014-01-08 2014-11-03 PG-PR No
57,760 000ec7b631988f81f3fc07f4de6cb9a9_Pasta Base 000ec7b631988f81f3fc07f4de6cb9a9 2,014 29 Pasta Base 33.93566 2014-05-22 2014-07-24 PG-PAI Si
52,499 000ec7b631988f81f3fc07f4de6cb9a9_Pasta Base 000ec7b631988f81f3fc07f4de6cb9a9 2,014 25 Pasta Base 33.48939 2013-12-10 2014-02-28 PG-PAB Si
36,044 000ec7b631988f81f3fc07f4de6cb9a9_Pasta Base 000ec7b631988f81f3fc07f4de6cb9a9 2,013 20 Pasta Base 32.58590 2013-01-14 2013-11-28 PG-PAI Si
29,383 001022ffb28057b24dd76900bbf1e3de_Pasta Base 001022ffb28057b24dd76900bbf1e3de 2,012 26 Pasta Base 30.25873 2012-07-23 2012-11-02 M-PR Si
16,163 001022ffb28057b24dd76900bbf1e3de_Pasta Base 001022ffb28057b24dd76900bbf1e3de 2,011 25 Pasta Base 29.10062 2011-05-27 2011-10-10 PG-PAI Si
162,840 0012beab59a3a84eec95c9371f393a06_Pasta Base 0012beab59a3a84eec95c9371f393a06 2,019 18 Pasta Base 27.76728 2019-09-02 NA PG-PAB Si
156,952 0012beab59a3a84eec95c9371f393a06_Pasta Base 0012beab59a3a84eec95c9371f393a06 2,019 21 Pasta Base 27.48802 2019-05-23 2019-08-29 PG-PR Si
92,601 001b0ff241cd0d95828b86b4bdab8c19_Alcohol 001b0ff241cd0d95828b86b4bdab8c19 2,016 20 Alcohol 48.54209 2016-01-14 2016-05-12 PG-PR Si
37,992 001b0ff241cd0d95828b86b4bdab8c19_Alcohol 001b0ff241cd0d95828b86b4bdab8c19 2,013 18 Alcohol 45.74127 2013-03-27 2013-06-28 PG-PAI Si
73,339 001ba6dfc8332930f9d9d20a0fa6685b_Pasta Base 001ba6dfc8332930f9d9d20a0fa6685b 2,015 19 Pasta Base 21.60712 2015-02-05 2015-03-24 PG-PAI No
44,192 001ba6dfc8332930f9d9d20a0fa6685b_Pasta Base 001ba6dfc8332930f9d9d20a0fa6685b 2,013 15 Pasta Base 20.22177 2013-09-17 2013-09-30 PG-PR Si
36,728 001ba6dfc8332930f9d9d20a0fa6685b_Pasta Base 001ba6dfc8332930f9d9d20a0fa6685b 2,013 15 Pasta Base 19.61123 2013-02-06 2013-03-20 PG-PR Si
139,264 001fb4d82755ca201c292fe318fef341_Alcohol 001fb4d82755ca201c292fe318fef341 2,018 15 Alcohol 54.51608 2018-06-20 2018-10-19 PG-PR Si
32,645 001fb4d82755ca201c292fe318fef341_Alcohol 001fb4d82755ca201c292fe318fef341 2,013 18 Alcohol 48.09309 2012-01-17 2013-08-27 PG-PAI Si
35,823 00227e8787d1ce564dae87621440d48b_Pasta Base 00227e8787d1ce564dae87621440d48b 2,013 15 Pasta Base 38.22861 2013-01-09 2013-11-01 M-PAI Si
32,399 00227e8787d1ce564dae87621440d48b_Pasta Base 00227e8787d1ce564dae87621440d48b 2,013 30 Pasta Base 37.23203 2012-01-11 2013-01-04 PG-PAI Si
4,824 00227e8787d1ce564dae87621440d48b_Pasta Base 00227e8787d1ce564dae87621440d48b 2,010 30 Pasta Base 35.52635 2010-04-28 2010-08-10 PG-PAI Si
72,657 00237788c4c803c12fecac82105ea4f0_Pasta Base 00237788c4c803c12fecac82105ea4f0 2,015 28 Pasta Base 32.43806 2015-02-02 2015-09-23 PG-PAI Si
46,208 00237788c4c803c12fecac82105ea4f0_Pasta Base 00237788c4c803c12fecac82105ea4f0 2,013 29 Pasta Base 31.21424 2013-11-12 2014-02-26 PG-PAB Si
139,158 002a54a1864024540089017666091fc0_Pasta Base 002a54a1864024540089017666091fc0 2,018 32 Pasta Base 37.65366 2018-06-27 2018-11-23 PG-PR Si
10,890 002a54a1864024540089017666091fc0_Pasta Base 002a54a1864024540089017666091fc0 2,011 19 Pasta Base 29.67830 2010-07-06 2011-03-31 PG-PAB Si
122,564 002b4df919e2b1cc6ff0cdb26b27a514_Alcohol 002b4df919e2b1cc6ff0cdb26b27a514 2,017 14 Alcohol 34.00684 2017-09-25 2017-12-15 PG-PAI Si
76,859 002b4df919e2b1cc6ff0cdb26b27a514_Alcohol 002b4df919e2b1cc6ff0cdb26b27a514 2,015 15 Alcohol 31.67693 2015-05-28 2015-11-27 PG-PAB Si
34,105 002c979e254773f17812d9bff13996dc_Pasta Base 002c979e254773f17812d9bff13996dc 2,013 22 Pasta Base 28.85147 2012-10-11 2013-01-04 PG-PAB Si
4,271 002c979e254773f17812d9bff13996dc_Pasta Base 002c979e254773f17812d9bff13996dc 2,010 19 Pasta Base 26.28337 2010-03-18 2010-05-31 PG-PAI Si
158,646 00335a6165270de0986718e354c20dcb_Alcohol 00335a6165270de0986718e354c20dcb 2,019 NA Alcohol 57.86995 2019-06-19 2019-07-17 PG-PR Si
156,853 00335a6165270de0986718e354c20dcb_Alcohol 00335a6165270de0986718e354c20dcb 2,019 15 Alcohol 57.76865 2019-05-13 2019-06-14 PG-PAI Si
135,632 00335a6165270de0986718e354c20dcb_Alcohol 00335a6165270de0986718e354c20dcb 2,018 8 Alcohol 56.61875 2018-03-19 2018-11-08 PG-PAI Si
43,087 00335a6165270de0986718e354c20dcb_Alcohol 00335a6165270de0986718e354c20dcb 2,013 15 Alcohol 52.02190 2013-08-13 2014-05-20 PG-PAI Si
158,654 003c0a2d84d8b86df55485958c108ec3_Pasta Base 003c0a2d84d8b86df55485958c108ec3 2,019 32 Pasta Base 37.37988 2019-06-03 NA PG-PAI Si
153,026 003c0a2d84d8b86df55485958c108ec3_Pasta Base 003c0a2d84d8b86df55485958c108ec3 2,019 NA Pasta Base 36.99658 2019-01-14 2019-03-29 PG-PAI Si
38,349 0043106cf035f0191d66ee23e6c7acee_Pasta Base 0043106cf035f0191d66ee23e6c7acee 2,013 32 Pasta Base 46.91034 2013-03-21 2013-09-04 PG-PAI Si
30,343 0043106cf035f0191d66ee23e6c7acee_Pasta Base 0043106cf035f0191d66ee23e6c7acee 2,012 42 Pasta Base 46.46407 2012-10-09 2013-01-15 PG-PAI Si
119,011 004829ae26e6bf4fc4766f1f9863554a_Pasta Base 004829ae26e6bf4fc4766f1f9863554a 2,017 31 Pasta Base 38.83915 2017-05-10 2018-02-01 PG-PAI Si
111,065 004829ae26e6bf4fc4766f1f9863554a_Pasta Base 004829ae26e6bf4fc4766f1f9863554a 2,017 33 Pasta Base 38.41205 2016-12-05 2017-01-13 PG-PR Si
97,851 004d135beff90a24f4be7f85f443a405_Alcohol 004d135beff90a24f4be7f85f443a405 2,016 15 Alcohol 58.25873 2015-12-29 2016-08-11 PG-PAI Si
70,113 004d135beff90a24f4be7f85f443a405_Alcohol 004d135beff90a24f4be7f85f443a405 2,015 14 Alcohol 57.08693 2014-10-27 2015-04-24 PG-PAI Si
60,430 004d135beff90a24f4be7f85f443a405_Alcohol 004d135beff90a24f4be7f85f443a405 2,014 14 Alcohol 56.76386 2014-07-01 2014-10-27 PG-PR Si
#edad_ini_sus_prin_summ[,"p90_diff_p25_p50"]
#edad_ini_sus_prin_summ[,"p90_diff_p75_p50"]
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_______________________

edad_ini_cons_sus_prin_up_75<-
    as.character(CONS_C1_df_dup_MAY_2020_prev %>%
    dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
    dplyr::filter(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin[,"concat_hash_sus_prin"])))))) %>%
    dplyr::group_by(concat_hash_sus_prin) %>%
    dplyr::mutate(range=abs(max(edad_ini_sus_prin,na.rm=T)-abs(min(edad_ini_sus_prin,na.rm=T)))) %>%
    dplyr::filter(range>as.numeric(summ_edad_ini_cons_sus_prin_por_concat_hash_sus_prin[,"p75_ranges"]))%>%
    #dplyr::select(hash_key, range)
    distinct(concat_hash_sus_prin)%>%
    unlist())

edad_ini_cons_sus_prin_lo_75<-
    CONS_C1_df_dup_MAY_2020_prev %>%
    dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
    dplyr::filter(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin[,"concat_hash_sus_prin"])))))) %>%
    dplyr::group_by(concat_hash_sus_prin) %>%
    dplyr::mutate(mean_edad_ini_sus_prin_lo75=round(mean(edad_ini_sus_prin,na.rm=T),0),range=abs(max(edad_ini_sus_prin,na.rm=T)-abs(min(edad_ini_sus_prin,na.rm=T)))) %>%
    dplyr::ungroup()%>%
    dplyr::filter(range<=as.numeric(summ_edad_ini_cons_sus_prin_por_concat_hash_sus_prin[,"p75_ranges"]))%>%
    dplyr::select(concat_hash_sus_prin,mean_edad_ini_sus_prin_lo75)%>%
    dplyr::distinct(concat_hash_sus_prin,.keep_all=T)                                                                                                                                              

invisible(
CONS_C1_df_dup_MAY_2020_prev %>%
    dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
    dplyr::filter(concat_hash_sus_prin %in% as.character(unlist(edad_ini_cons_sus_prin_up_75)))
)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_______________________
###PARA HACER LA CONVERSION en los mayores al 75 (edad_ini_cons_sus_prin_up_75)
#_______________________

#Ver cada registro con un determinado hash y sustancia principal, pero con 2 casos de la misma base de datos anual con distina edad de inicio de consumo de esa sus principal, para sacar el promedio de eso

#_#_#_#_#_#_
#1. distinta edad, bd tratamiento más reciente- Dejar la fecha del tratamiento más reciente
#proviene de más de una base de datos anual  

  CONS_C1_df_dup_MAY_2020_prev %>%
      dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
      dplyr::filter(concat_hash_sus_prin %in% edad_ini_cons_sus_prin_up_75) %>%  
      dplyr::group_by(concat_hash_sus_prin) %>%
      dplyr::add_tally(name="n_edad_ini_cons_sus_prin_sus_prin_concat") %>%  
      dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
      dplyr::ungroup() %>%
      dplyr::filter(n_dis>1) %>% 
      dplyr::arrange(concat_hash_sus_prin,desc(ano_bd)) %>%
      dplyr::filter(!is.na(edad_ini_sus_prin))%>% #8138
      dplyr::select(row, hash_key, concat_hash_sus_prin,ano_bd, edad_ini_cons, edad_ini_sus_prin,sus_principal,n_edad_ini_cons_sus_prin_sus_prin_concat)%>%
      dplyr::group_by(concat_hash_sus_prin) %>%
    dplyr::mutate(max_ano=max(ano_bd))%>%
    dplyr::ungroup()%>%
    #dplyr::slice(which.max(ano_bd)) %>% #MAY 2020, dejé como un procedimiento de APR 2020
    dplyr::filter(max_ano==ano_bd) %>%
      dplyr::ungroup() %>%
    assign("hash_edadinisusprin_most_recent_db",., envir = .GlobalEnv) %>%#APR 2020=  casos // #MAY 2020= 8179 (2,824 usuarios)
    dplyr::group_by(concat_hash_sus_prin)%>%
    distinct(edad_ini_sus_prin,.keep_all=T)%>%
    dplyr::mutate(n_dis=n_distinct(edad_ini_sus_prin)) %>%
    dplyr::filter(n_dis>1)%>% #
    dplyr::mutate(edad_ini_sus_prin_=paste0("edad_ini_sus_prin_",row_number()))%>%
    tidyr::pivot_wider(id_cols =concat_hash_sus_prin,names_from = edad_ini_sus_prin_, values_from = edad_ini_sus_prin,names_repair="minimal",values_fill = list(n = ""))%>%
    dplyr::rename("edad_ini_sus_prin"="edad_ini_sus_prin_1")%>%
    assign("hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b",., envir = .GlobalEnv) #xxxxx casos de xxx HASHs

hash_edad_ini_cons_sus_prin_most_recent_db_1a <- hash_edadinisusprin_most_recent_db%>%  #>>>>
  group_by(concat_hash_sus_prin)%>%
  distinct(edad_ini_sus_prin,.keep_all=T)%>%
  dplyr::mutate(n_dis=n_distinct(edad_ini_sus_prin)) %>%
  dplyr::filter(n_dis==1) %>%
  ungroup()     

#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b %>% separate(concat_hash_sus_prin,sep="_",into=c("hash_key","sus_prin"))%>% group_by(hash_key)

#_#_#_#_#_#_
#_#_#_#_#_#_
#2a. distinta edad, misma bd tratamiento, más de 2 casos- Dejar la fecha del tratamiento más frecuente
#misma edad base de datos por año, pero más de 2 casos ---> valor + frecuente

#TIENE 0 CASOS...

CONS_C1_df_dup_MAY_2020_prev %>%
    dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
    dplyr::filter(concat_hash_sus_prin %in% edad_ini_cons_sus_prin_up_75) %>% 
    dplyr::group_by(concat_hash_sus_prin) %>%
    dplyr::add_tally() %>%  
    dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
    dplyr::ungroup() %>%
    dplyr::filter(n_dis==1,n>2) %>% #más de 2 hash, pero todos dentro de la misma bd del mismo año
    dplyr::select(-n) %>%
    dplyr::arrange(concat_hash_sus_prin,desc(ano_bd)) %>%
    dplyr::filter(!is.na(edad_ini_sus_prin))%>%
    dplyr::mutate(concat_hash_susini_edadinisusprin=paste0(concat_hash_sus_prin,"_",edad_ini_sus_prin)) %>%
    dplyr::group_by(concat_hash_susini_edadinisusprin) %>%
    dplyr::add_tally() %>%  #agrego un nuevo n, para contar los distintos nacionalidades
    dplyr::select(row, concat_hash_susini_edadinisusprin,concat_hash_sus_prin, ano_bd, edad_ini_sus_prin, sus_principal,n)%>%
    dplyr::ungroup() %>%  
    dplyr::group_by(concat_hash_sus_prin) %>%
  #dplyr::slice(which.max(n)) %>% #me quedo con la concatenación por hash key que más se repite.
    dplyr::top_n(1,n)%>%
   #aquí ya filtramos aquellos casos que más se repiten por cada combinación de usuario y sustancia principal
    dplyr::rename("cases_by_concat_hash_edad_ini_cons"="n")%>%
    dplyr::ungroup() %>%
    assign("hash_edadinisusprin_most_freq_value",., envir = .GlobalEnv)%>%
    dplyr::select(-cases_by_concat_hash_edad_ini_cons)%>%
    group_by(concat_hash_sus_prin)%>%
    add_tally()%>%
    dplyr::filter(n>1)%>% #99 casos
    dplyr::mutate(edad_ini_sus_prin_=paste0("edad_ini_sus_prin_",row_number()))%>%
    tidyr::pivot_wider(id_cols =concat_hash_sus_prin,names_from = edad_ini_sus_prin_, values_from = edad_ini_sus_prin,names_repair="minimal",values_fill = list(n = ""))%>%
    dplyr::rename("edad_ini_sus_prin"="edad_ini_sus_prin_1")%>%
    assign("hash_edad_ini_cons_sus_prin_most_freq_value_more_one_value_2a2",., envir = .GlobalEnv) #xxxxx casos de xxx HASHs

#seleccionar los casos en que en la misma base de datos hay sólo un caso que es mayor
hash_edad_ini_cons_sus_prin_most_freq_value_2a1 <- hash_edadinisusprin_most_freq_value%>% 
  dplyr::select(-cases_by_concat_hash_edad_ini_cons)%>%
  group_by(concat_hash_sus_prin)%>%
  add_tally()%>%
  dplyr::filter(n==1) %>%
  dplyr::select(-n, -row, -ano_bd)
#%>% dplyr::filter(concat_hash_sus_prin=="18c831d99a158c8dffda2acf1bd44076_Pasta Base")
#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b %>% separate(concat_hash_sus_prin,sep="_",into=c("hash_key","sus_prin"))%>% group_by(hash_key)
invisible(
hash_edadinisusprin_most_freq_value %>% 
    group_by(concat_hash_sus_prin)%>%
    add_tally()%>%
    dplyr::filter(n>1)%>% dplyr::filter(concat_hash_sus_prin=="3298142344cac01bc0eb330020572a55_Alcohol")
)
#_#_#_#_#_#_
#_#_#_#_#_#_
#2b. distinta edad, misma bd tratamiento, más de 2 casos- Dejar la fecha del tratamiento más frecuente. Casos con fecha de trat + reciente
CONS_C1_df_dup_MAY_2020_prev %>% 
  dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_1b["hash_key"])))%>%
  dplyr::group_by(hash_key,sus_principal,edad_ini_sus_prin) %>%
  dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
  dplyr::add_tally(name="n_por_hash_edad_ini_conssusprin") %>%  
  dplyr::ungroup()%>%
  dplyr::filter(!is.na(edad_ini_sus_prin))%>%
  dplyr::group_by(concat_hash_sus_prin) %>%
  dplyr::add_tally(name="n_por_hash") %>%  
  dplyr::arrange(desc(n_por_hash_edad_ini_conssusprin))%>%
  #  dplyr::ungroup()%>%
  dplyr::top_n(1,n_por_hash_edad_ini_conssusprin)%>%
  dplyr::arrange(desc(n_por_hash),concat_hash_sus_prin)%>%
  dplyr::distinct(concat_hash_sus_prin,edad_ini_sus_prin,.keep_all=T)%>%
  dplyr::select(row, hash_key, ano_bd, concat_hash_sus_prin,edad_ini_cons,edad_ini_sus_prin, n_por_hash,n_por_hash_edad_ini_conssusprin) %>%
  dplyr::group_by(concat_hash_sus_prin)%>%
  dplyr::add_tally(name="n_por_hash_edad_ini_conssusprin") %>%
  assign("hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b",., envir = .GlobalEnv)

hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b %>%
  dplyr::filter(n_por_hash_edad_ini_conssusprin>1)%>% #45
  dplyr::mutate(edad_ini_sus_prin_=paste0("edad_ini_sus_prin_",row_number()))%>%
  tidyr::pivot_wider(id_cols =concat_hash_sus_prin,names_from = edad_ini_sus_prin_, values_from = edad_ini_sus_prin,names_repair="minimal",values_fill = list(n = ""))%>%
  dplyr::rename("edad_ini_sus_prin"="edad_ini_sus_prin_1")%>%
  assign("hash_edad_ini_conssusprin_most_recent_db_more_one_value__mfv_more_one_value_2b2",., envir = .GlobalEnv) 

hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b1<-
  hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b%>%
  dplyr::filter(n_por_hash_edad_ini_conssusprin==1)%>%
  dplyr::select(concat_hash_sus_prin,edad_ini_sus_prin)

#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b %>% separate(concat_hash_sus_prin,sep="_",into=c("hash_key","sus_prin"))%>% group_by(hash_key)

#_#_#_#_#_#_
#_#_#_#_#_#_
# 3. Sólo 2 casos . fechas de nacimiento, en la misma base de datos anual.
#misma edad base de datos por año, pero sólo 2 casos ---> se obtiene la media
#Actualizar a mayo
CONS_C1_df_dup_MAY_2020_prev %>%
    dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
    dplyr::filter(concat_hash_sus_prin %in% edad_ini_cons_sus_prin_up_75) %>% 
    dplyr::group_by(concat_hash_sus_prin) %>%
    dplyr::add_tally() %>%  
    dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
    dplyr::ungroup() %>%
    dplyr::filter(n_dis==1,n==2) %>% #casos en que hay que recurrir a otras variables
    dplyr::arrange(concat_hash_sus_prin,desc(ano_bd)) %>%
    dplyr::filter(!is.na(edad_ini_sus_prin))%>%
    dplyr::select(row,concat_hash_sus_prin, hash_key, ano_bd, edad_ini_sus_prin, sus_principal)%>%
    #dejarla como segunda nacionalidad
    dplyr::group_by(concat_hash_sus_prin) %>% 
    dplyr::mutate(rn=row_number()) %>% 
    as.data.frame() %>%
    reshape(idvar = "concat_hash_sus_prin", timevar = "rn", direction = "wide") %>% 
    dplyr::mutate(mean_edad_ini_sus_prin=round(rowMeans(cbind(edad_ini_sus_prin.1,edad_ini_sus_prin.2), na.rm=T),0)) %>%
    dplyr::select(concat_hash_sus_prin,mean_edad_ini_sus_prin) %>%
  dplyr::arrange(concat_hash_sus_prin)%>%
  assign("edad_ini_conssusprin_misma_bd_2_casos_3",., envir = .GlobalEnv)

#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b %>% separate(concat_hash_sus_prin,sep="_",into=c("hash_key","sus_prin"))%>% group_by(hash_key)

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_

#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>%
#dplyr::filter(hash_key %in% as.character(unlist(hash_sus_ini_most_freq_value_more_one_value_2a2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>%
#dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_1a[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_1b[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))) %>% group_by(hash_key)%>% print()

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
invisible(c("Manual Review"))
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#
#hash_edad_ini_cons_sus_prin_most_recent_db_1a
#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b 
#hash_edad_ini_cons_sus_prin_most_freq_value_2a1 
#hash_edad_ini_cons_sus_prin_most_freq_value_more_one_value_2a2 
#hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1 
#hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2

#casos a descartar y a investigar a futuro
casos_fecha_inicio_cons_sus_prin_empates_3 <-
  CONS_C1_df_dup_MAY_2020_prev %>%
    dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
    dplyr::filter(concat_hash_sus_prin %in% c(as.character(unlist(edad_ini_conssusprin_misma_bd_2_casos_3[,"concat_hash_sus_prin"])),
                                  as.character(unlist(hash_edad_ini_cons_sus_prin_most_freq_value_more_one_value_2a2[,"concat_hash_sus_prin"])),
                                  as.character(unlist(hash_edad_ini_conssusprin_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"concat_hash_sus_prin"]))))%>% 
    dplyr::arrange(concat_hash_sus_prin)%>%
  dplyr::filter(!is.na(edad_ini_sus_prin))%>%
  group_by(concat_hash_sus_prin) %>%
  dplyr::select(concat_hash_sus_prin, ano_bd, edad_ini_sus_prin)%>%
  summarise(mean_edad_ini_cons=round(mean(edad_ini_sus_prin,na.rm=T),0))
`summarise()` ungrouping output (override with `.groups` argument)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_

#hash_edad_ini_cons_sus_prin_most_recent_db_1a
#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b 
#hash_edad_ini_cons_sus_prin_most_freq_value_2a1 
#hash_edad_ini_cons_sus_prin_most_freq_value_more_one_value_2a2 
#hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1 
#hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2
#edad_ini_conssusprin_misma_bd_2_casos_3
CONS_C1_df_dup_MAY_2020_prev %>%
  #janitor::tabyl(sexo_2) %>%
  dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
  #0b
  dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_sus_prin_lo_75[,1])))))~glue::glue("{obs};3.02.0b.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs. Minor differences within users,replaced with mean"),TRUE~obs))%>%
  dplyr::left_join(edad_ini_cons_sus_prin_lo_75,by="concat_hash_sus_prin", suffix=c("","_lo_75"))%>%
  dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(mean_edad_ini_sus_prin_lo75), mean_edad_ini_sus_prin_lo75, edad_ini_sus_prin)) %>%
  dplyr::select(-mean_edad_ini_sus_prin_lo75) %>%
  #1a
  dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_sus_prin_most_recent_db_1a)))))~glue::glue("{obs};3.02.1a.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs. Recent db"),TRUE~obs))%>%
  dplyr::left_join(hash_edad_ini_cons_sus_prin_most_recent_db_1a, by="concat_hash_sus_prin",suffix=c("","_edadinicons_susprin_recent_db")) %>%
  dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(edad_ini_sus_prin_edadinicons_susprin_recent_db), edad_ini_sus_prin_edadinicons_susprin_recent_db, edad_ini_sus_prin)) %>%
  dplyr::select(-ends_with("_edadinicons_susprin_recent_db")) %>%
  #2a1
  dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_sus_prin_most_freq_value_2a1)))))~glue::glue("{obs};3.02.2a1.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs. Most frequent value"),TRUE~obs))%>%
  dplyr::left_join(hash_edad_ini_cons_sus_prin_most_freq_value_2a1, by="concat_hash_sus_prin",suffix=c("","_edadinicons_susprin_mfv")) %>%
  dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(edad_ini_sus_prin_edadinicons_susprin_mfv), edad_ini_sus_prin_edadinicons_susprin_mfv, edad_ini_sus_prin)) %>%
  dplyr::select(-ends_with("_edadinicons_susprin_mfv")) %>%  
  #2b1
  dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b1)))))~glue::glue("{obs};3.02.2b1.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs.>1 recent DB, mfv"),TRUE~obs))%>%
  dplyr::left_join(hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b1, by="concat_hash_sus_prin",suffix=c("","_edadinicons_susprin_recent_db_mfv")) %>%
  dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(edad_ini_sus_prin_edadinicons_susprin_recent_db_mfv), edad_ini_sus_prin_edadinicons_susprin_recent_db_mfv, edad_ini_sus_prin)) %>%
  dplyr::select(-ends_with("_edadinicons_susprin_recent_db_mfv")) %>%  
  # dplyr::filter(!is.na(mean_edad_ini_cons))%>% dplyr::select(hash_key,edad_ini_cons,mean_edad_ini_cons)%>%#solo una prueba
  #3b
  dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(casos_fecha_inicio_cons_sus_prin_empates_3)))))~glue::glue("{obs};3.02.3.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs.Other"),TRUE~obs))%>%
  dplyr::left_join(casos_fecha_inicio_cons_sus_prin_empates_3, by="concat_hash_sus_prin",suffix=c("","_edadinicons_susprin_misma_bd_2_casos_3")) %>%
  dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(mean_edad_ini_cons), mean_edad_ini_cons, edad_ini_sus_prin)) %>%
  dplyr::select(-ends_with("_edadinicons_misma_bd_2_casos"),mean_edad_ini_cons) %>% 
  assign("CONS_C1_df_dup_MAY_2020_prev_2",., envir = .GlobalEnv)

descartado=0
if(descartado==1) {
  CONS_C1_df_dup_MAY_2020_prev %>%
    #janitor::tabyl(sexo_2) %>%
  dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
  print()
}

#casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a %>% group_by(concat_hash_sus_prin) %>% add_tally()%>% View()
invisible(
CONS_C1_df_dup_MAY_2020_prev_2 %>% dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>% group_by(concat_hash_sus_prin) %>% dplyr::mutate(edad_ini_cons_sus_prin_por_hash=n_distinct(edad_ini_sus_prin)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_sus_prin_por_hash>1) %>% nrow() %>%  formatC(format="f", big.mark=",", digits=0)
)
#89 3.02.0b.

#CONS_C1_df_dup_MAY_2020_prev %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>% nrow() %>%  formatC(, format="f", big.mark=",", digits=0)

#CONS_C1_df_dup_MAY_2020_prev_2 %>% dplyr::group_by(obs) %>% summarise(n=n()) %>% dplyr::filter(n,grepl('3.02.', obs)) %>% View()

#CONS_C1_df_dup_MAY_2020_prev_2 %>% dplyr::filter(grepl('3.02.0b', obs)) %>% group_by(hash_key)

3. Correction of Ties in Variable Values as a Result of Rule-Based Imputations

3.1.Ties in sex


We used a neural network model to obtain a definitive value of the 24 users that had two different sexes entered into the system.


suppressPackageStartupMessages(library(radiant))

#2022
#https://arulvelkumar.wordpress.com/2017/02/28/neuralnet-function-in-r-error-in-neuronsi-weightsi/
#' 2022, modificaciones= Predict method for the nn function
#'
#' @details See \url{https://radiant-rstats.github.io/docs/model/nn.html} for an example in Radiant
#'
#' @param object Return value from \code{\link{nn}}
#' @param pred_data Provide the dataframe to generate predictions (e.g., diamonds). The dataset must contain all columns used in the estimation
#' @param pred_cmd Generate predictions using a command. For example, `pclass = levels(pclass)` would produce predictions for the different levels of factor `pclass`. To add another variable, create a vector of prediction strings, (e.g., c('pclass = levels(pclass)', 'age = seq(0,100,20)')
#' @param dec Number of decimals to show
#' @param envir Environment to extract data from
#' @param ... further arguments passed to or from other methods
#'
#' @examples
#' result <- nn(titanic, "survived", c("pclass", "sex"), lev = "Yes")
#' predict(result, pred_cmd = "pclass = levels(pclass)")
#' result <- nn(diamonds, "price", "carat:color", type = "regression")
#' predict(result, pred_cmd = "carat = 1:3")
#' predict(result, pred_data = diamonds) %>% head()
#'
#' @seealso \code{\link{nn}} to generate the result
#' @seealso \code{\link{summary.nn}} to summarize results
#'
#' @export
predict.nn <- function(
  object, pred_data = NULL, pred_cmd = "",
  dec = 3, envir = parent.frame(), ...
) {

  if (is.character(object)) return(object)

  ## ensure you have a name for the prediction dataset
  if (is.data.frame(pred_data)) {
    df_name <- deparse(substitute(pred_data))
  } else {
    df_name <- pred_data
  }

  pfun <- function(model, pred, se, conf_lev) {
    pred_val <- try(sshhr(predict(model, pred)), silent = TRUE)

    if (!inherits(pred_val, "try-error")) {
      pred_val %<>% as.data.frame(stringsAsFactors = FALSE) %>%
        select(1) %>%
        set_colnames("Prediction")
    }

    pred_val
  }

  predict_model(object, pfun, "nn.predict", pred_data, pred_cmd, conf_lev = 0.95, se = FALSE, dec, envir = envir) %>%
    set_attr("radiant_pred_data", df_name)
}



#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_



#https://github.com/radiant-rstats/radiant.model/blob/master/R/nn.R
#' Plot method for the nn function
#'
#' @details See \url{https://radiant-rstats.github.io/docs/model/nn.html} for an example in Radiant
#'
#' @param x Return value from \code{\link{nn}}
#' @param shiny Did the function call originate inside a shiny app
#' @param plots Plots to produce for the specified Neural Network model. Use "" to avoid showing any plots (default). Options are "olden" or "garson" for importance plots, or "net" to depict the network structure
#' @param size Font size used
#' @param pad_x Padding for explanatory variable labels in the network plot. Default value is 0.9, smaller numbers (e.g., 0.5) increase the amount of padding
#' @param nrobs Number of data points to show in dashboard scatter plots (-1 for all)
#' @param custom Logical (TRUE, FALSE) to indicate if ggplot object (or list of ggplot objects) should be returned. This option can be used to customize plots (e.g., add a title, change x and y labels, etc.). See examples and \url{https://ggplot2.tidyverse.org} for options.
#' @param ... further arguments passed to or from other methods
#'
#' @examples
#' result <- nn(titanic, "survived", c("pclass", "sex"), lev = "Yes")
#' plot(result, plots = "net")
#' plot(result, plots = "olden")
#'
#' @seealso \code{\link{nn}} to generate results
#' @seealso \code{\link{summary.nn}} to summarize results
#' @seealso \code{\link{predict.nn}} for prediction
#'
#' @importFrom NeuralNetTools plotnet olden garson
#' @importFrom graphics par
#'
#' @export
plot.nn <- function(
  x, plots = "garson", size = 12, pad_x = 0.9, nrobs = -1,
  shiny = FALSE, custom = FALSE, ...
) {

  if (is.character(x) || !inherits(x$model, "nnet")) return(x)
  plot_list <- list()
  ncol <- 1

  if ("olden" %in% plots || "olsen" %in% plots) { ## legacy for typo
    plot_list[["olsen"]] <- NeuralNetTools::olden(x$model, x_lab = x$coefnames, cex_val = 4) +
      coord_flip() +
      theme_set(theme_gray(base_size = size)) +
      theme(legend.position = "none") +
      labs(title = paste0("Olden plot of variable importance (size = ", x$size, ", decay = ", x$decay, ")"))
  }

  if ("garson" %in% plots) {
    plot_list[["garson"]] <- NeuralNetTools::garson(x$model, x_lab = x$coefnames) +
      coord_flip() +
      theme_set(theme_gray(base_size = size)) +
      theme(legend.position = "none") +
      labs(title = paste0("Garson plot of variable importance (size = ", x$size, ", decay = ", x$decay, ")"))
  }

  if ("net" %in% plots) {
    ## don't need as much spacing at the top and bottom
    mar <- par(mar = c(0, 4.1, 0, 2.1))
    on.exit(par(mar = mar$mar))
    return(do.call(NeuralNetTools::plotnet, list(mod_in = x$model, x_names = x$coefnames, pad_x = pad_x, cex_val = size / 16)))
  }

  if ("pdp" %in% plots) {
    ncol <- 2
    for (pn in x$evar) {
      plot_list[[pn]] <- pdp::partial(
        x$model, pred.var = pn, plot = TRUE, rug = TRUE,
        prob = x$type == "classification", plot.engine = "ggplot2"
      ) + labs(y = "")
    }
  }

  if (x$type == "regression" && "dashboard" %in% plots) {
    plot_list <- plot.regress(x, plots = "dashboard", lines = "line", nrobs = nrobs, custom = TRUE)
    ncol <- 2
  }

  if (length(plot_list) > 0) {
    if (custom) {
      if (length(plot_list) == 1) plot_list[[1]] else plot_list
    } else {
      patchwork::wrap_plots(plot_list, ncol = ncol) %>%
        {if (shiny) . else print(.)}
    }
  }
}

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_

#genero la base de datos de entrenamiento.
CONS_C1_df_dup_FEB_2020_prev24_train_nn<- CONS_C1_df_dup_FEB_2020_prev24 %>% 
                                          dplyr::filter(!hash_key %in% as.character(unlist(sexo_casos_pendientes_3["hash_key"])))

#_#_#_#_#_#_#_#_#_#_#_#_#_
#First training model
#_#_#_#_#_#_#_#_#_#_#_#_#_

#corro el modelo con la base de entrenamiento
  neuralnet_sex_train0<-
        nn(
          CONS_C1_df_dup_FEB_2020_prev24_train_nn, 
           "sexo_2", #The response variable in the model
         c("estatus_ocupacional","edad", "estado_conyugal_2","tenencia_de_la_vivienda","numero_de_hijos","escolaridad"), 
           lev = "Mujer", #lev  The level in the response variable defined as _success_
           seed = 1245 # seed   Random seed to use as the starting point
           )
 
#hago la validación cruzada
  
           #The best way to determine the optimal values for Size and Decays is to use Cross-Validation. 
            #In radiant, you can use the cv.nn function for this purpose. 
            
            #cv.nn: Cross-validation for a Neural Network
            #https://radiant-rstats.github.io/radiant.model/reference/cv.nn.html
            #K= número de cv pasa para usar
            #repeats= cv repetido
            #decay= decaimiento en parámetros
            #size=número de nodos en la capa oculta
            #seed= semilla aleatoria como inicio
            #trace= imprimir progreso
            #fun= función para usar evaluación del modelo (auc para clasificación, RMSE para regresión; también está Rsq)
            #https://rdrr.io/cran/radiant.model/man/auc.html
            #https://rdrr.io/cran/radiant.model/man/RMSE.html
            #https://rdrr.io/cran/radiant.model/man/profit.html
  
#_#_#_#_#_#_#_#_#_#_#_#_#_
#Cross-validation
#_#_#_#_#_#_#_#_#_#_#_#_#_
    
result_sex_all_cv<- cv.nn(neuralnet_sex_train0, K= nn_K, decay =nn_seq, size = nn_size, fun = auc, trace=T, seed=1245)
Working on size 1 decay 0 
Working on size 1 decay 0.5 
Working on size 1 decay 1 
Working on size 2 decay 0 
Working on size 2 decay 0.5 
Working on size 2 decay 1 
Working on size 3 decay 0 
Working on size 3 decay 0.5 
Working on size 3 decay 1 
Working on size 4 decay 0 
Working on size 4 decay 0.5 
Working on size 4 decay 1 
Working on size 5 decay 0 
Working on size 5 decay 0.5 
Working on size 5 decay 1 
nn_sex_par<- result_sex_all_cv[order(-result_sex_all_cv$"auc (mean)"),]

 #selecciono los parámetros que permitan hacer la mejor estimación

#_#_#_#_#_#_#_#_#_#_#_#_#_
#Final Model
#_#_#_#_#_#_#_#_#_#_#_#_#_
        
neuralnet_sex<- nn(
                CONS_C1_df_dup_FEB_2020_prev24_train_nn[c("sexo_2",
                                                          "estatus_ocupacional",
                                                         "edad",
                                                         "estado_conyugal_2",
                                                         "tenencia_de_la_vivienda",
                                                         "numero_de_hijos",
                                                         "escolaridad")], 
                "sexo_2", #The response variable in the model
                 c("estatus_ocupacional",
                   "edad",
                   "estado_conyugal_2",
                  "tenencia_de_la_vivienda",
                  "numero_de_hijos",
                  "escolaridad"), 
                  lev = "Mujer", #lev   The level in the response variable defined as _success_
                  size = nn_sex_par[1,"size"],
                  decay = nn_sex_par[1,"decay"],
                  seed = 1245 # seed    Random seed to use as the starting point
                    )

#_#_#_#_#_#_#_#_#_#_#_#_#_
#Prediction
#_#_#_#_#_#_#_#_#_#_#_#_#_

CONS_C1_df_dup_FEB_2020_prev24_test_nn<- CONS_C1_df_dup_FEB_2020_prev24 %>% 
                                          dplyr::filter(hash_key %in% as.character(unlist(sexo_casos_pendientes_3["hash_key"])))%>%
                                          dplyr::select(row,hash_key,sexo_2,estatus_ocupacional, edad,estado_conyugal_2, tenencia_de_la_vivienda, numero_de_hijos, escolaridad)

          #predict(result, pred_cmd = "carat = 1:3")
            #https://radiant-rstats.github.io/radiant.model/reference/predict.nn.html
            #pred_data= Provide the dataframe to generate predictions (e.g., diamonds). The dataset must contain all columns used in the estimation
            #pred_cmd= Generate predictions using a command. For example, `pclass = levels(pclass)` would produce predictions 
              #for the different levels of factor `pclass`. To add another variable, create a vector of prediction strings, 
              #(e.g., c('pclass = levels(pclass)', 'age = seq(0,100,20)')
              #dec=  Number of decimals to show
              #envir= Environment to extract data from
        result_sex_all_cv_pred<- predict(neuralnet_sex, pred_data = CONS_C1_df_dup_FEB_2020_prev24_test_nn)


The model was trained using the rest of the dataset with valid attributes on the variable sex (n= 117,340). We generated a total of 10 cross-validations, with alternatives of 1 to 5 layers, and a threshold of 0, 0.5 and 1 in every model (10x5x3). The model that obtained the highest area under the curve (AUC (mean)= 0.78) had a size of 5 layers and a threshold for weights of 1 (L2 penalty). Tee following figure shows the neural network structure Due to the great amount of categories, we generated a garson plot of importance of variables into the weight.


#sexo_casos_pendientes_3

mar <- par(mar =c(5.1, 4.1, 4.1, 2.1),mgp=c(3, 1, 0))

on.exit(par(mar = mar$mar))

plot(neuralnet_sex, plots = "net", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)
Figure 4a. Neural Network of Sex

Figure 4a. Neural Network of Sex

#sexo_casos_pendientes_3

mar <- par(mar = c(0, 0, 0, 0))

on.exit(par(mar = mar$mar))

plot(neuralnet_sex, plots = "olden", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)+
  ggtitle("")
Figure 4b. Garson Plot of Variable Importance

Figure 4b. Garson Plot of Variable Importance


The plot presented showed the product of the weights through the model from each predictor to the output and the target category of classifying a user as a women. As seen, the number of kids and an inactive employment status had an important and positive contribution to the weights of the model. In contrast, the condition of a household that is divested, or the condition of widowhood, had a small contribution. Lastly, the condition of employment contributed however in a negative direction into the model, just as the fact that the interviewees did not answer the question about housing tenure.


#sexo_casos_pendientes_3

  sex_replace_neuralnet <-
                  result_sex_all_cv_pred%>%
                     cbind(CONS_C1_df_dup_FEB_2020_prev24_test_nn[c("row","hash_key","sexo_2")])%>%
                    dplyr::select(row, hash_key, everything())%>%
                    as.data.frame()%>%
                    dplyr::mutate(sexo_2_corr= if_else(Prediction>=.5,"Mujer","Hombre",NA_character_))%>%
                    dplyr::arrange(hash_key)%>%
                    dplyr::group_by(hash_key)%>%
                    dplyr::mutate(sexo_2_corr2=lag(sexo_2_corr))%>%
                    dplyr::mutate(sexo_2_2=lag(sexo_2))%>%
                    dplyr::mutate(sexo_2_final=ifelse(sexo_2_2==sexo_2,sexo_2,NA_character_))%>%
                    dplyr::filter(!is.na(sexo_2_corr2))%>%
                    dplyr::mutate(Predicted_sex=ifelse(sexo_2_corr==sexo_2_corr2,sexo_2_corr,NA_character_))%>%
                    dplyr::filter(!is.na(Predicted_sex))%>%
                    dplyr::rename("Prediction_sex"="Prediction")

 
invisible(
    CONS_C1_df_dup_MAY_2020_prev0 %>%
        dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])))))) %>% 
        dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))%>%
        dplyr::select(hash_key,ano_bd,edad_ini_cons,obs)
) 

#21

#Misma bd, 2 casos
              CONS_C1_df_dup_MAY_2020_prev_2%>%
                  dplyr::left_join(sex_replace_neuralnet, by="hash_key",suffix=c("","_sexo_2_neuralnet")) %>%
                  dplyr::mutate(obs=case_when(!is.na(Predicted_sex)~glue::glue("{obs};3.03.1.XX.HASH w/ more than one distinct Sex.2 cases, same yearly dataset.Neural network imputation"),TRUE~obs))%>%  
                  dplyr::mutate(sexo_2= ifelse(!is.na(Predicted_sex), as.character(sexo_2), as.character(sexo_2))) %>%
                  dplyr::select(-ends_with("_sexo_2_neuralnet"),-sexo_2_corr,-sexo_2_corr2,-sexo_2_2,-sexo_2_final) %>% 
                  dplyr::mutate(sexo_2=as.factor(sexo_2))%>%
                  dplyr::select(-mean_edad_ini_cons,-n_edad_ini_cons_sus_prin_sus_prin_concat, -max_ano, -n_dis, -concat_hash_susini_edadinisusprin,-edad_al_ing_n_as,-edad_al_ing_less15,-Prediction_sex,-Predicted_sex)%>%
                  assign("CONS_C1_df_dup_MAY_2020_prev_3",., envir = .GlobalEnv)
#janitor::tabyl(sexo_2)

#CONS_C1_df_dup_FEB_2020_prev25 %>% group_by(hash_key) %>% dplyr::mutate(sexo_2_por_hash=n_distinct(sexo_2)) %>% ungroup() %>% dplyr::filter(sexo_2_por_hash>1) %>% nrow() %>%  formatC(, format="f", big.mark=",", digits=0)
              
#CONS_C1_df_dup_MAY_2020_prev_3 %>% dplyr::filter(grepl('3.03.1.', obs)) %>% dplyr::group_by(hash_key) 


We replaced the value in sex with the imputed one in cases with two entries with different sexes. The imputed cases were restricted to users that both cases were imputed with the same sex (n=19).


3.2.Ties and major differences in the age of onset of drug use

We used a neural network model to obtain valid ages of onset of drug use for 572 users that had more than one age of onset of drug use.


#casos_fecha_inicio_cons_sus_prin_empates_3

#preparo la base de datos con los datos que me interesan
C1_edad_ini_cons_sus_not_ties<-     
            CONS_C1_df_dup_MAY_2020_prev_3 %>% 
            dplyr::filter(!hash_key %in% c(as.character(unlist(casos_fecha_inicio_cons_sus_empates_3["hash_key"]))))%>%
            dplyr::as_tibble()%>%
            janitor::clean_names()%>%
            dplyr::select(row, hash_key, edad_ini_cons, sus_ini, sus_principal,edad_al_ing,edad,ano_bd,edad_ini_sus_prin)%>%
           # sample_frac(.05)%>%
            na.omit()%>%
            dplyr::mutate(rn=row_number())

#_#_#_#_#_#_#_
#_#_#_#_#_#_#_
C1_edad_ini_cons_sus_ties<-
        CONS_C1_df_dup_MAY_2020_prev0 %>% 
        dplyr::filter(hash_key %in% c(as.character(unlist(casos_fecha_inicio_cons_sus_empates_3["hash_key"]))))%>%
        dplyr::as_tibble()%>%
        janitor::clean_names()%>%
        dplyr::select(row, hash_key, edad_ini_cons, sus_ini, sus_principal,edad_al_ing,edad,ano_bd,edad_ini_sus_prin)%>%
        dplyr::arrange(hash_key)%>%
        dplyr::mutate(rn=row_number())

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
          
          #nn: Neural Networks using nnet
          #https://rdrr.io/cran/radiant.model/man/nn.html
          #https://radiant-rstats.github.io/radiant.model/reference/nn.html
          #https://radiant-rstats.github.io/docs/model/nn.html
          #result <- radiant::nn(C1_fech_nac_ties, "fech_nac", "edad:edad_inicio_sustancia_principal", type = "regression")
            result_edad_ini_cons_sus0<- nn(
              C1_edad_ini_cons_sus_not_ties, 
              rvar = "edad_ini_cons", #The response variable in the model
              evar = c(
                "sus_ini", "sus_principal", "edad_al_ing", "edad",
                "ano_bd","edad_ini_sus_prin"
              ), #Explanatory variables in the model
              type = "regression", #Model type (i.e., "classification" or "regression")
              #lev= The level in the response variable defined as _success_
              #size= Number of units (nodes) in the hidden layer
              #decay=  Parameter decay
              #wts=  Weights to use in estimation
              #seed= Random seed to use as the starting point
              #check=  Optional estimation parameters ("standardize" is the default)
              #data_filter= Expression entered in, e.g., Data > View to filter the dataset in Radiant. The expression should be a string (e.g., "price > 10000")
              #form=   Optional formula to use instead of rvar and evar // Ocupar formula
              seed = 1245
            )
          #The model can be “tuned” by changing the Size (i.e., the number of nodes in the hidden layer) 
            #and by adjusting the Decay rate. The higher the value set for Decay, the higher the penalty on 
            #the size of (the sum of squares of) the weights. When Decay is set to 0, the model has the most 
            #flexibility to fit the (training) data accurately. However, without Decay the model is also more 
            #likely to overfit.
            
          #The best way to determine the optimal values for Size and Decays is to use Cross-Validation. 
            #In radiant, you can use the cv.nn function for this purpose. 
            
#_#_#_#_#_#_#_

            #cv.nn: Cross-validation for a Neural Network
            #https://radiant-rstats.github.io/radiant.model/reference/cv.nn.html
            #K= número de cv pasa para usar
            #repeats= cv repetido
            #decay= decaimiento en parámetros
            #size=número de nodos en la capa oculta
            #seed= semilla aleatoria como inicio
            #trace= imprimir progreso
            #fun= función para usar evaluación del modelo (auc para clasificación, RMSE para regresión; también está Rsq)
            #https://rdrr.io/cran/radiant.model/man/auc.html
            #https://rdrr.io/cran/radiant.model/man/RMSE.html
            #https://rdrr.io/cran/radiant.model/man/profit.html
            
            result_edad_ini_cons_all_cv<- 
              cv.nn(result_edad_ini_cons_sus0, K= nn_K, decay = nn_seq, size = nn_size, fun = RMSE, trace=T, seed=1245)
Working on size 1 decay 0 
Working on size 1 decay 0.5 
Working on size 1 decay 1 
Working on size 2 decay 0 
Working on size 2 decay 0.5 
Working on size 2 decay 1 
Working on size 3 decay 0 
Working on size 3 decay 0.5 
Working on size 3 decay 1 
Working on size 4 decay 0 
Working on size 4 decay 0.5 
Working on size 4 decay 1 
Working on size 5 decay 0 
Working on size 5 decay 0.5 
Working on size 5 decay 1 
            #cv.nn(result, decay = seq(0, 1, .5), size = 1:2, fun = profit, cost = 1, margin = 5)
            #30 minutos se demora en sacar size 1:4 con 4 fragmentos en decay
            
            #selecciono los parámetros que permitan hacer la mejor estimación
            nn_edad_ini_cons_par<-
              result_edad_ini_cons_all_cv[which(result_edad_ini_cons_all_cv$`RMSE (mean)`==min(result_edad_ini_cons_all_cv$`RMSE (mean)`)),c("decay","size","RMSE (mean)")]
            
#_#_#_#_#_#_#_
#Modelo final
            result_edad_ini_cons_sus<- nn(
                                      C1_edad_ini_cons_sus_not_ties, 
                                      rvar = "edad_ini_cons",
                                      evar = c(
                                        "sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin"
                                      ), 
                                      type = "regression", 
                                      decay= as.numeric(nn_edad_ini_cons_par[1]),
                                      size= as.numeric(nn_edad_ini_cons_par[2]),
                                      seed = 1245
            )
            #33 MINUTOS DURA
            
#_#_#_#_#_#_#_
#PREDICT
                    
            #https://radiant-rstats.github.io/radiant.model/reference/predict.nn.html
            #pred_data= Provide the dataframe to generate predictions (e.g., diamonds). The dataset must contain all columns used in the estimation
            #pred_cmd= Generate predictions using a command. For example, `pclass = levels(pclass)` would produce predictions 
              #for the different levels of factor `pclass`. To add another variable, create a vector of prediction strings, 
              #(e.g., c('pclass = levels(pclass)', 'age = seq(0,100,20)')
              #dec=  Number of decimals to show
              #envir= Environment to extract data from
            
                      #debemos eliminar los NAs
no_es=1
  if (no_es==0){
              print(paste0("comprobar si se reemplazó los valores perdidos por un 0.", 
                    "Independiente de ello, si los lleno, al final los casos hacen un match perfecto a futuro"))
              C1_edad_ini_cons_sus_ties[!complete.cases(C1_edad_ini_cons_sus_ties[, c("sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin")]),
                               c("sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin")]
          }

#na.omit, sin variables na.
  result_edad_ini_cons_sus_cv_pred<- predict(result_edad_ini_cons_sus, pred_data = na.omit(C1_edad_ini_cons_sus_ties))


To obtain valid ages, we predicted the age of the onset of drug use. We generated a total of 10 cross-validations, with alternatives of 1 to 5 layers, and a threshold of 0, .5 and 1 in every model (10x5x3). The model that obtained the best fit (RMSE (mean)= 2.88) had a size of 5 hidden layers, and a threshold for weights of 0.5 (L2 penalty).


mar <- par(mar = c(0, 0, 0, 0))

on.exit(par(mar = mar$mar))

plot(result_edad_ini_cons_sus, plots = "net", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)
Figure 5a. Neural Network of Age of the Onset of Drug Use

Figure 5a. Neural Network of Age of the Onset of Drug Use

#https://rdrr.io/cran/radiant.model/man/plot.nn.html  
  
  #Options are "olden" or "garson" for importance plots, or "net" to depict the network structure
  #custom es para modificarlo con ggplot2
  
  #neural network as a neural interpretation diagram
  #f the sign of the weights switches after passing the hidden layer

mar <- par(mar = c(0, 0, 0, 0))

on.exit(par(mar = mar$mar))

plot(result_edad_ini_cons_sus, plots = "olden", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)+
  ggtitle("")
Figure 5b. Garson Plot of Variable Importance, Age of the Onset of Drug Use

Figure 5b. Garson Plot of Variable Importance, Age of the Onset of Drug Use


The plot presented showed the product of the weights through the model from each predictor to the output. As seen, the age of the onset of drug use of the primary substance had an important and positive contribution to the weights of the model. In contrast, the year of the dataset in which cases were obtained had a small contribution. Lastly, starting substances such as cocaine paste base, hallucinogens and tranquilizers, contributed however in a negative direction into the model.


#result_edad_ini_cons_sus_cv_pred 
#na.omit(C1_edad_ini_cons_sus_ties)

age_onset_drug_use_replace_neuralnet_prev <-
                  result_edad_ini_cons_sus_cv_pred%>%
                     cbind(na.omit(C1_edad_ini_cons_sus_ties)[c("row","hash_key","edad_ini_cons")])%>%
                    dplyr::select(row, hash_key, everything())%>%
                    as.data.frame()%>%
                    dplyr::arrange(hash_key)%>%
                    dplyr::group_by(hash_key)%>%
                    dplyr::mutate(edad_ini_cons_2=lag(edad_ini_cons), edad_ini_sus_prin_2=lag(edad_ini_sus_prin), n_hash=n(), rn=row_number(), mean_pr= mean(Prediction))%>%
    janitor::clean_names()%>%
                    dplyr::filter(n_hash>1)%>% #De  1,463 [572] a 1,450 [559]
                    dplyr::ungroup()%>%                
                    dplyr::mutate(diff_mean=abs(edad_ini_cons-mean_pr))%>% #es la diferencia absoluta entre la edad d einicio de consumo y el promedio predicho. EL que tiene menor cantidad, es el que selecciono.p
                    dplyr::group_by(hash_key)%>%
                    dplyr::slice(which.min(diff_mean)) %>%
                    #dplyr::filter(diff_mean==min(diff_mean))%>%
                    dplyr::rename("Prediction_age_onset_dr_use"="prediction")


#SACAR CASOS INVALIDOS PORQUE LA EDAD DE INICIO DE CONSUMO DE SUSTANCIAS, SUSTANCIA PRINCIPAL, 
#  TERMINA SIENDO MENOR A LA EDAD DE INICIO DE CONSUMO A IMPUTAR
  
invalid_users_imputed_age_onset <-
              CONS_C1_df_dup_MAY_2020_prev_3%>%
                              dplyr::left_join(age_onset_drug_use_replace_neuralnet_prev[,c("hash_key", "edad_ini_cons")], by="hash_key",suffix=c("","_age_of_onset_drug_use_neuralnet")) %>%
                              dplyr::filter(!is.na(edad_ini_cons_age_of_onset_drug_use_neuralnet))%>%
                              dplyr::mutate(edad_ini_cons_age_onset=ifelse(edad_ini_cons_age_of_onset_drug_use_neuralnet>edad_ini_sus_prin,1,0))%>%
                              dplyr::group_by(hash_key)%>%
                              dplyr::mutate(sum_inalid_imputed_age=sum(edad_ini_cons_age_onset))%>%
                              dplyr::ungroup()%>%
                              dplyr::filter(sum_inalid_imputed_age>0)%>%
                              dplyr::arrange(hash_key)%>%
              dplyr::select(hash_key,edad_ini_cons_age_of_onset_drug_use_neuralnet,edad_ini_sus_prin,sum_inalid_imputed_age)%>%
  group_by(hash_key)



age_onset_drug_use_replace_neuralnet <-
                    age_onset_drug_use_replace_neuralnet_prev %>%
  dplyr::filter(!hash_key %in% as.character(unlist(invalid_users_imputed_age_onset["hash_key"])))

#21 

#Misma bd, 2 casos
              CONS_C1_df_dup_MAY_2020_prev_3%>%
                  dplyr::left_join(age_onset_drug_use_replace_neuralnet[,c("hash_key", "edad_ini_cons","edad_ini_sus_prin")], by="hash_key",suffix=c("","_age_of_onset_drug_use_neuralnet")) %>%
                  dplyr::mutate(obs=case_when(!is.na(edad_ini_cons_age_of_onset_drug_use_neuralnet)~glue::glue("{obs};3.03.2.XX.HASH w/ more than one distinct Age of Onset Drug Use.Neural network imputation of ties"),TRUE~obs))%>%  
                
                  dplyr::mutate(edad_ini_cons= ifelse(!is.na(edad_ini_cons_age_of_onset_drug_use_neuralnet), as.integer(edad_ini_cons_age_of_onset_drug_use_neuralnet),  as.integer(edad_ini_cons))) %>%
                
                  dplyr::select(-ends_with("_age_of_onset_drug_use_neuralnet")) %>% 
                
                  dplyr::mutate(edad_ini_cons= as.integer(edad_ini_cons))%>%
                  dplyr::mutate(edad_ini_sus_prin= as.integer(edad_ini_sus_prin))%>%
                  assign("CONS_C1_df_dup_MAY_2020_prev_4",., envir = .GlobalEnv)
#janitor::tabyl(sexo_2)

#CONS_C1_df_dup_FEB_2020_prev25 %>% group_by(hash_key) %>% dplyr::mutate(sexo_2_por_hash=n_distinct(sexo_2)) %>% ungroup() %>% dplyr::filter(sexo_2_por_hash>1) %>% nrow() %>%  formatC(, format="f", big.mark=",", digits=0)

#CONS_C1_df_dup_MAY_2020_prev_4 %>% dplyr::filter(grepl('3.03.2.', obs)) %>% dplyr::group_by(hash_key) 


We selected the age of the onset of drug use of cases within users that had the same amount of different values in the age of the onset of drug use. We also extended this selection to the age of the onset of drug use in the primary substance (users=481).


3.3.Ties and major differences in the age of the onset of drug use of primary substance

We used a neural network model to obtain valid ages of onset of drug use of the primary substance for 489 users that had more than one age of the onset of drug use in treatments with the same primary substance.


#casos_fecha_inicio_cons_sus_prin_empates_3

age_onset_drug_use_replace_neuralnet_for_concat<-
            age_onset_drug_use_replace_neuralnet %>%
              dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal))

#preparo la base de datos con los datos que me interesan
C1_edad_ini_cons_sus_prin_not_ties<-     
            CONS_C1_df_dup_MAY_2020_prev_4 %>% 
            dplyr::filter(!concat_hash_sus_prin %in% c(as.character(unlist(casos_fecha_inicio_cons_sus_prin_empates_3["concat_hash_sus_prin"]))))%>%
  #"_"_
  #SACO LOS CASOS QUE TIENEN QUE VER CON LA IMPUTACION ANTERIOR   
            dplyr::filter(!concat_hash_sus_prin %in% c(as.character(unlist(age_onset_drug_use_replace_neuralnet_for_concat["concat_hash_sus_prin"]))))%>%
            dplyr::as_tibble()%>%
            janitor::clean_names()%>%
            dplyr::select(row, concat_hash_sus_prin, hash_key, edad_ini_cons, sus_ini, sus_principal, edad_al_ing, edad, ano_bd, edad_ini_sus_prin)%>%
           # sample_frac(.05)%>%
            na.omit()%>%
            dplyr::mutate(rn=row_number())

#_#_#_#_#_#_#_
#_#_#_#_#_#_#_
C1_edad_ini_cons_sus_prin_ties<-
        CONS_C1_df_dup_MAY_2020_prev %>% 
        dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
        dplyr::filter(concat_hash_sus_prin %in% c(as.character(unlist(casos_fecha_inicio_cons_sus_prin_empates_3["concat_hash_sus_prin"]))))%>%
    #SACO LOS CASOS QUE TIENEN QUE VER CON LA IMPUTACION ANTERIOR   
            dplyr::filter(!concat_hash_sus_prin %in% c(as.character(unlist(age_onset_drug_use_replace_neuralnet_for_concat["concat_hash_sus_prin"]))))%>%
        dplyr::as_tibble()%>%
        janitor::clean_names()%>%
        dplyr::select(row, concat_hash_sus_prin, hash_key, edad_ini_cons, sus_ini, sus_principal, edad_al_ing, edad, ano_bd, edad_ini_sus_prin)%>%
        dplyr::arrange(concat_hash_sus_prin)%>%
        dplyr::mutate(rn=row_number())

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
          
          #nn: Neural Networks using nnet
          #https://rdrr.io/cran/radiant.model/man/nn.html
          #https://radiant-rstats.github.io/radiant.model/reference/nn.html
          #https://radiant-rstats.github.io/docs/model/nn.html
          #result <- radiant::nn(C1_fech_nac_ties, "fech_nac", "edad:edad_inicio_sustancia_principal", type = "regression")
            result_edad_ini_cons_sus_prin0<- nn(
              C1_edad_ini_cons_sus_prin_not_ties, 
              rvar = "edad_ini_sus_prin", #The response variable in the model
              evar = c(
                "sus_ini", "sus_principal", "edad_al_ing", "edad",
                "ano_bd","edad_ini_cons"
              ), #Explanatory variables in the model
              type = "regression", #Model type (i.e., "classification" or "regression")
              #lev= The level in the response variable defined as _success_
              #size= Number of units (nodes) in the hidden layer
              #decay=  Parameter decay
              #wts=  Weights to use in estimation
              #seed= Random seed to use as the starting point
              #check=  Optional estimation parameters ("standardize" is the default)
              #data_filter= Expression entered in, e.g., Data > View to filter the dataset in Radiant. The expression should be a string (e.g., "price > 10000")
              #form=   Optional formula to use instead of rvar and evar // Ocupar formula
              seed = 1245
            )
          #The model can be “tuned” by changing the Size (i.e., the number of nodes in the hidden layer) 
            #and by adjusting the Decay rate. The higher the value set for Decay, the higher the penalty on 
            #the size of (the sum of squares of) the weights. When Decay is set to 0, the model has the most 
            #flexibility to fit the (training) data accurately. However, without Decay the model is also more 
            #likely to overfit.
            
          #The best way to determine the optimal values for Size and Decays is to use Cross-Validation. 
            #In radiant, you can use the cv.nn function for this purpose. 
            
#_#_#_#_#_#_#_

            #cv.nn: Cross-validation for a Neural Network
            #https://radiant-rstats.github.io/radiant.model/reference/cv.nn.html
            #K= número de cv pasa para usar
            #repeats= cv repetido
            #decay= decaimiento en parámetros
            #size=número de nodos en la capa oculta
            #seed= semilla aleatoria como inicio
            #trace= imprimir progreso
            #fun= función para usar evaluación del modelo (auc para clasificación, RMSE para regresión; también está Rsq)
            #https://rdrr.io/cran/radiant.model/man/auc.html
            #https://rdrr.io/cran/radiant.model/man/RMSE.html
            #https://rdrr.io/cran/radiant.model/man/profit.html
            
            result_edad_ini_cons_susprin_all_cv<- 
              cv.nn(result_edad_ini_cons_sus_prin0, K= nn_K, decay = nn_seq, size = nn_size, fun = RMSE, trace=T, seed=1245)
Working on size 1 decay 0 
Working on size 1 decay 0.5 
Working on size 1 decay 1 
Working on size 2 decay 0 
Working on size 2 decay 0.5 
Working on size 2 decay 1 
Working on size 3 decay 0 
Working on size 3 decay 0.5 
Working on size 3 decay 1 
Working on size 4 decay 0 
Working on size 4 decay 0.5 
Working on size 4 decay 1 
Working on size 5 decay 0 
Working on size 5 decay 0.5 
Working on size 5 decay 1 
            #cv.nn(result, decay = seq(0, 1, .5), size = 1:2, fun = profit, cost = 1, margin = 5)
            #30 minutos se demora en sacar size 1:4 con 4 fragmentos en decay
            
            #selecciono los parámetros que permitan hacer la mejor estimación
    nn_edad_ini_cons_sus_prin_par<-
              result_edad_ini_cons_susprin_all_cv[which(result_edad_ini_cons_susprin_all_cv$`RMSE (mean)`==min(result_edad_ini_cons_susprin_all_cv$`RMSE (mean)`)),c("decay","size","RMSE (mean)")]
            
#_#_#_#_#_#_#_
#Modelo final
            result_edad_ini_cons_sus_prin<- nn(
                                      C1_edad_ini_cons_sus_prin_not_ties, 
                                      rvar = "edad_ini_sus_prin",
                                      evar = c(
                                        "sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_cons"
                                      ), 
                                      type = "regression", 
                                      decay= as.numeric(nn_edad_ini_cons_sus_prin_par[1]),
                                      size= as.numeric(nn_edad_ini_cons_sus_prin_par[2]),
                                      seed = 1245
            )
            #33 MINUTOS DURA
            
#_#_#_#_#_#_#_
#PREDICT
            #https://radiant-rstats.github.io/radiant.model/reference/predict.nn.html
            #pred_data= Provide the dataframe to generate predictions (e.g., diamonds). The dataset must contain all columns used in the estimation
            #pred_cmd= Generate predictions using a command. For example, `pclass = levels(pclass)` would produce predictions 
              #for the different levels of factor `pclass`. To add another variable, create a vector of prediction strings, 
              #(e.g., c('pclass = levels(pclass)', 'age = seq(0,100,20)')
              #dec=  Number of decimals to show
              #envir= Environment to extract data from
            
                      #debemos eliminar los NAs
no_es=1
  if (no_es==0){
              print(paste0("comprobar si se reemplazó los valores perdidos por un 0.", 
                    "Independiente de ello, si los lleno, al final los casos hacen un match perfecto a futuro"))
              C1_edad_ini_cons_sus_ties[!complete.cases(C1_edad_ini_cons_sus_ties[, c("sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin")]),
                               c("sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin")]
          }

#na.omit, sin variables na.
  result_edad_ini_cons_sus_prin_cv_pred<- predict(result_edad_ini_cons_sus_prin, 
                                                  pred_data = na.omit(C1_edad_ini_cons_sus_prin_ties))


To obtain valid ages, we predicted the age of the onset of drug use. We generated a total of 10 cross-validations, with alternatives of 1 to 5 layers, and a threshold of 0, 0.5 and 1 in every model (10x5x3). The model that obtained the best fit (RMSE (mean)= 4.63) had a size of 5 hidden layers, and a threshold for weights of 0.5 (L2 penalty).


mar <- par(mar = c(0, 0, 0, 0))

on.exit(par(mar = mar$mar))

plot(result_edad_ini_cons_sus_prin, plots = "net", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)
Figure 6a. Neural Network of Age of the Onset of Drug Use

Figure 6a. Neural Network of Age of the Onset of Drug Use

#https://rdrr.io/cran/radiant.model/man/plot.nn.html  
  
  #Options are "olden" or "garson" for importance plots, or "net" to depict the network structure
  #custom es para modificarlo con ggplot2
  
  #neural network as a neural interpretation diagram
  #f the sign of the weights switches after passing the hidden layer

mar <- par(mar = c(0, 0, 0, 0))

on.exit(par(mar = mar$mar))

plot(result_edad_ini_cons_sus, plots = "olden", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)+
  ggtitle("")
Figure 6b. Garson Plot of Variable Importance, Age of the Onset of Drug Use

Figure 6b. Garson Plot of Variable Importance, Age of the Onset of Drug Use


The plot presented showed the product of the weights through the model from each predictor to the output. As seen, the age of the onset of drug use of the primary substance had an important and positive contribution to the weights of the model. In contrast, the year of the dataset in which cases were obtained had a small contribution. Lastly, starting substances such as cocaine paste base, hallucinogens and tranquilizers, contributed however in a negative direction into the model.


#result_edad_ini_cons_sus_prin_cv_pred 
#na.omit(C1_edad_ini_cons_sus_prin_ties)

age_onset_drug_use_prim_subs_replace_neuralnet_prev <-
                  result_edad_ini_cons_sus_prin_cv_pred%>%
                     cbind(na.omit(C1_edad_ini_cons_sus_prin_ties)[c("row","hash_key","concat_hash_sus_prin","edad_ini_sus_prin")])%>%
                    dplyr::select(row, hash_key, everything())%>%
                    as.data.frame()%>%
                    dplyr::arrange(concat_hash_sus_prin)%>%
                    dplyr::group_by(concat_hash_sus_prin)%>%
                    dplyr::mutate(n_concat_hash=n(), rn=row_number(), mean_pr= mean(Prediction))%>%
    janitor::clean_names()%>%
                    dplyr::filter(n_concat_hash>1)%>% #De  795  [316] a 795 [316]
                    dplyr::ungroup()%>%                
                    dplyr::mutate(diff_mean=abs(edad_ini_sus_prin-mean_pr))%>% #es la diferencia absoluta entre la edad d einicio de consumo sus prin y el promedio predicho. EL que tiene menor cantidad, es el que selecciono.p
                    dplyr::group_by(concat_hash_sus_prin)%>%
                    dplyr::slice(which.min(diff_mean)) %>%
                    #dplyr::filter(diff_mean==min(diff_mean))%>%
                    dplyr::rename("Prediction_age_onset_dr_use_prim_subs"="prediction")


#CONS_C1_df_dup_MAY_2020_prev_4 %>%  dplyr::filter(concat_hash_sus_prin %in% as.character(unlist(na.omit(C1_edad_ini_cons_sus_prin_ties["concat_hash_sus_prin"]))))%>% group_by(concat_hash_sus_prin)


#SACAR CASOS INVALIDOS PORQUE LA EDAD DE INICIO DE CONSUMO DE SUSTANCIAS, SUSTANCIA PRINCIPAL, 
#  TERMINA SIENDO MENOR A LA EDAD DE INICIO DE CONSUMO A IMPUTAR
  
invalid_users_imputed_age_onset_prim_subs <-
              CONS_C1_df_dup_MAY_2020_prev_4%>%
                              dplyr::left_join(age_onset_drug_use_prim_subs_replace_neuralnet_prev[,c("concat_hash_sus_prin", "edad_ini_sus_prin")], by="concat_hash_sus_prin",suffix=c("","_age_of_onset_drug_use_neuralnet")) %>% # glimpse()
                              dplyr::filter(!is.na(edad_ini_sus_prin_age_of_onset_drug_use_neuralnet))%>%
                              dplyr::mutate(edad_ini_sus_prin_age_onset_prim_subs=ifelse(edad_ini_sus_prin_age_of_onset_drug_use_neuralnet<edad_ini_cons,1,0))%>%
                              dplyr::group_by(concat_hash_sus_prin)%>%
                              dplyr::mutate(sum_inalid_imputed_age=sum(edad_ini_sus_prin_age_onset_prim_subs))%>%
                              dplyr::ungroup()%>%
                              dplyr::filter(sum_inalid_imputed_age>0)%>%
                              dplyr::arrange(concat_hash_sus_prin)%>%
              dplyr::select(concat_hash_sus_prin,edad_ini_sus_prin_age_of_onset_drug_use_neuralnet,edad_ini_cons,sum_inalid_imputed_age)%>%
  group_by(concat_hash_sus_prin)

#PARA VER CÓMO VOY
#CONS_C1_df_dup_MAY_2020_prev_4 %>% dplyr::filter(concat_hash_sus_prin=="01ade496577825c5d26c96df19531e9f_Pasta Base") %>% dplyr::select(hash_key, sus_principal, edad_ini_cons, edad_ini_sus_prin)

#NO ME VA A CALZAR, PORQUE EN UNA BASE ANTERIOR (PREV A SOLAS DE MAYO), ESTA COMBINACION DE USUARIO CON SUS PRIN TENIA DISTINTAS FECHAS, QUE ESTÁN YA RESUELTAS AHORA

 
age_onset_drug_use_prim_subs_replace_neuralnet <-
                    age_onset_drug_use_prim_subs_replace_neuralnet_prev %>%
  dplyr::filter(!concat_hash_sus_prin %in% as.character(unlist(invalid_users_imputed_age_onset_prim_subs["concat_hash_sus_prin"])))%>%
  #se supone que ya los descarté de un principio, pero por si acaso
  dplyr::filter(!concat_hash_sus_prin %in% as.character(unlist(age_onset_drug_use_replace_neuralnet_for_concat["concat_hash_sus_prin"])))

#21 

#Misma bd, 2 casos
              CONS_C1_df_dup_MAY_2020_prev_4%>%
                  dplyr::left_join(age_onset_drug_use_prim_subs_replace_neuralnet[,c("concat_hash_sus_prin","edad_ini_sus_prin")], by="concat_hash_sus_prin",suffix=c("","_age_of_onset_drug_use_prim_subs_neuralnet")) %>%
                  dplyr::mutate(obs=case_when(!is.na(edad_ini_sus_prin_age_of_onset_drug_use_prim_subs_neuralnet)~glue::glue("{obs};3.03.3.XX.HASH w/ more than one distinct Age of Onset Drug Use Primary Substance.Neural network imputation of ties"),TRUE~obs))%>%  
                
                  dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(edad_ini_sus_prin_age_of_onset_drug_use_prim_subs_neuralnet), as.integer(edad_ini_sus_prin_age_of_onset_drug_use_prim_subs_neuralnet),  as.integer(edad_ini_sus_prin))) %>%
                
                  dplyr::select(-ends_with("_age_of_onset_drug_use_prim_subs_neuralnet")) %>% 
                
                  dplyr::mutate(edad_ini_sus_prin= as.integer(edad_ini_sus_prin))%>%
                  assign("CONS_C1_df_dup_MAY_2020_prev_5",., envir = .GlobalEnv)
#janitor::tabyl(sexo_2)

#CONS_C1_df_dup_FEB_2020_prev25 %>% group_by(hash_key) %>% dplyr::mutate(sexo_2_por_hash=n_distinct(sexo_2)) %>% ungroup() %>% dplyr::filter(sexo_2_por_hash>1) %>% nrow() %>%  formatC(, format="f", big.mark=",", digits=0)

#CONS_C1_df_dup_MAY_2020_prev_5 %>% dplyr::filter(grepl('3.03.3.XX.', obs)) %>% dplyr::group_by(hash_key) 
#800 casos y 311 usuarios, 316 combinaciones


We selected the age of the onset of drug use in the primary substance of cases within users that had the same amount of different values in the age of the onset of drug use of primary substance. We also extended this selection to the age of the onset of drug use in the primary substance of admission (users= 296).


4. Standardization of Some Variables

At this point, it is necessary to differentiate between intermediate treatment events (referrals, changes in the treatment center, among others) and different treatments. But what would be a suitable cut-off point?, which is why we explored the amount of days between each entry in users that had more than one treatment.


4.1. Geographical

First, we created the variable called macrozona into the following macro-zones: North (02, 15, 03, 04, 01), Center (08, 05, 06, 07, 13, 16) & South (09,11, 10, 14, 12). Also, we recoded the regions into more readable labels and added the number of the region in parenthesis into the variable nombre_region. We recoded the municipalities/districts of residence of users by taking the notation of the Nationwide Census of 2017 and a standardized code in parenthesis into the variable comuna_residencia_cod.

CONS_C1_df_dup_MAY_2020_prev_5%>%
   dplyr::mutate(macrozona=as.factor(dplyr::recode(region_del_centro,
                                              "DE ANTOFAGASTA"="Norte",
                                              "DE LA ARAUCANIA"="Sur",
                                              "DE ARICA Y PARINACOTA"="Norte",
                                              "DE ATACAMA"="Norte",
                                              "DE AYSEN DEL GENERAL CARLOS IBA?S DEL CAMPO"="Sur",
                                              "DEL BIO-BIO"="Centro",
                                              "DE COQUIMBO"="Norte",
                                              "DE LOS LAGOS"="Sur",
                                              "DE LOS RIOS"="Sur",
                                              "DE MAGALLANES Y LA ANTARTICA CHILENA"="Sur",
                                              "DEL MAULE"="Centro",
                                              "METROPOLITANA"="Centro",
                                              "DE ?BLE"="Centro",
                                              "DEL LIBERTADOR GENERAL  BERNARDO OHIGGINS"="Centro",
                                              "DE TARAPACA"="Norte",
                                              "DE VALPARAISO"="Centro")))%>%
 dplyr::mutate(nombre_region=as.factor(dplyr::recode(region_del_centro,
                                              "DE ANTOFAGASTA"="Antofagasta (02)",
                                              "DE LA ARAUCANIA"="Araucanía (09)",
                                              "DE ARICA Y PARINACOTA"="Arica (15)",
                                              "DE ATACAMA"="Atacama (03)",
                                              "DE AYSEN DEL GENERAL CARLOS IBA?S DEL CAMPO"="Aysén (11)",
                                              "DEL BIO-BIO"="Biobío (08)",
                                              "DE COQUIMBO"="Coquimbo (04)",
                                              "DE LOS LAGOS"="Los Lagos (10)",
                                              "DE LOS RIOS"="Los Ríos (14)",
                                              "DE MAGALLANES Y LA ANTARTICA CHILENA"="Magallanes (12)",
                                              "DEL MAULE"="Maule (07)",
                                              "METROPOLITANA"="Metropolitana (13)",
                                              "DE ?BLE"="Ñuble (16)",
                                              "DEL LIBERTADOR GENERAL  BERNARDO OHIGGINS"="O'Higgins (06)",
                                              "DE TARAPACA"="Tarapacá (01)",
                                              "DE VALPARAISO"="Valparaíso (05)")))%>%
      dplyr::mutate(comuna_residencia_cod=as.factor(dplyr::recode(comuna_residencia,
                        "??A"="ÑUÑOA (13120)",
                        "ALGARROBO"="ALGARROBO (5602)",
                        "ALHUE"="ALHUÉ (13502)",
                        "ALTO DEL CARMEN"="ALTO DEL CARMEN (3302)",
                        "ALTO HOSPICIO"="ALTO HOSPICIO (1107)",
                        "ANCUD"="ANCUD (10202)",
                        "ANDACOLLO"="ANDACOLLO (4103)",
                        "ANGOL"="ANGOL (9201)",
                        "ANTOFAGASTA"="ANTOFAGASTA (2101)",
                        "ANTUCO"="ANTUCO (8302)",
                        "ARAUCO"="ARAUCO (8202)",
                        "ARICA"="ARICA (15101)",
                        "AYSEN"="AYSÉN (11201)",
                        "BUIN"="BUIN (13402)",
                        "BULNES"="BULNES * (8402)",
                        "CA?TE"="CAÑETE (8203)",
                        "CABILDO"="CABILDO (5402)",
                        "CABRERO"="CABRERO (8303)",
                        "CALAMA"="CALAMA (2201)",
                        "CALBUCO"="CALBUCO (10102)",
                        "CALDERA"="CALDERA (3102)",
                        "CALERA DE TANGO"="CALERA DE TANGO (13403)",
                        "CALLE LARGA"="CALLE LARGA (5302)",
                        "CAMARONES"="CAMARONES (15102)",
                        "CAMINA"="CAMIÑA (1402)",
                        "CANELA"="CANELA (4202)",
                        "CARAHUE"="CARAHUE (9102)",
                        "CARTAGENA"="CARTAGENA (5603)",
                        "CASABLANCA"="CASABLANCA (5102)",
                        "CASTRO"="CASTRO (10201)",
                        "CATEMU"="CATEMU (5702)",
                        "CAUQUENES"="CAUQUENES (7201)",
                        "CERRILLOS"="CERRILLOS (13102)",
                        "CERRO NAVIA"="CERRO NAVIA (13103)",
                        "CHA?RAL"="CHAÑARAL (3201)",
                        "CHANCO"="CHANCO (7202)",
                        "CHEPICA"="CHÉPICA (6302)",
                        "CHIGUAYANTE"="CHIGUAYANTE (8103)",
                        "CHILE CHICO"="CHILE CHICO (11401)",
                        "CHILLAN"="CHILLÁN * (8401)",
                        "CHILLAN VIEJO"="CHILLÁN VIEJO * (8406)",
                        "CHIMBARONGO"="CHIMBARONGO (6303)",
                        "Cholchol"="CHOLCHOL (9121)",
                        "CHONCHI"="CHONCHI (10203)",
                        "CISNES"="CISNES (11202)",
                        "COCHAMO"="COCHAMÓ (10103)",
                        "COCHRANE"="COCHRANE (11301)",
                        "CODEGUA"="CODEGUA (6102)",
                        "COELEMU"="COELEMU * (8404)",
                        "COIHUECO"="COIHUECO * (8405)",
                        "COINCO"="COINCO (6103)",
                        "COLBUN"="COLBÚN (7402)",
                        "COLCHANE"="COLCHANE (1403)",
                        "COLINA"="COLINA (13301)",
                        "COLLIPULLI"="COLLIPULLI (9202)",
                        "COLTAUCO"="COLTAUCO (6104)",
                        "COMBARBALA"="COMBARBALÁ (4302)",
                        "CONCEPCION"="CONCEPCIÓN (8101)",
                        "CONCHALI"="CONCHALÍ (13104)",
                        "CONCON"="CONCÓN (5103)",
                        "CONSTITUCION"="CONSTITUCIÓN (7102)",
                        "CONTULMO"="CONTULMO (8204)",
                        "COPIAPO"="COPIAPÓ (3101)",
                        "COQUIMBO"="COQUIMBO (4102)",
                        "CORONEL"="CORONEL (8102)",
                        "CORRAL"="CORRAL (14102)",
                        "COYHAIQUE"="COYHAIQUE (11101)",
                        "CUNCO"="CUNCO (9103)",
                        "CURACAUTIN"="CURACAUTÍN (9203)",
                        "CURACAVI"="CURACAVÍ (13503)",
                        "CURACO DE VELEZ"="CURACO DE VÉLEZ (10204)",
                        "CURANILAHUE"="CURANILAHUE (8205)",
                        "CURARREHUE"="CURARREHUE (9104)",
                        "CUREPTO"="CUREPTO (7103)",
                        "CURICO"="CURICÓ (7301)",
                        "DALCAHUE"="DALCAHUE (10205)",
                        "DIEGO DE ALMAGRO"="DIEGO DE ALMAGRO (3202)",
                        "DO?HUE"="DOÑIHUE (6105)",
                        "EL BOSQUE"="EL BOSQUE (13105)",
                        "EL CARMEN"="EL CARMEN * (8407)",
                        "EL MONTE"="EL MONTE (13602)",
                        "EL QUISCO"="EL QUISCO (5604)",
                        "EL TABO"="EL TABO (5605)",
                        "EMPEDRADO"="EMPEDRADO (7104)",
                        "ERCILLA"="ERCILLA (9204)",
                        "ESTACION CENTRAL"="ESTACIÓN CENTRAL (13106)",
                        "FLORIDA"="FLORIDA (8104)",
                        "FREIRE"="FREIRE (9105)",
                        "FREIRINA"="FREIRINA (3303)",
                        "FRESIA"="FRESIA (10104)",
                        "FRUTILLAR"="FRUTILLAR (10105)",
                        "FUTRONO"="FUTRONO (14202)",
                        "GORBEA"="GORBEA (9107)",
                        "GRANEROS"="GRANEROS (6106)",
                        "GUAITECAS"="GUAITECAS (11203)",
                        "HIJUELAS"="HIJUELAS (5503)",
                        "HUALA?"="HUALAÑÉ (7302)",
                        "HUALAIHUE"="HUALAIHUÉ (10403)",
                        "HUALPEN"="HUALPÉN (8112)",
                        "HUALQUI"="HUALQUI (8105)",
                        "HUARA"="HUARA (1404)",
                        "HUASCO"="HUASCO (3304)",
                        "HUECHURABA"="HUECHURABA (13107)",
                        "ILLAPEL"="ILLAPEL (4201)",
                        "INDEPENDENCIA"="INDEPENDENCIA (13108)",
                        "IQUIQUE"="IQUIQUE (1101)",
                        "ISLA DE MAIPO"="ISLA DE MAIPO (13603)",
                        "ISLA DE PASCUA"="ISLA DE PASCUA (5201)",
                        "JUAN FERNANDEZ"="JUAN FERNÁNDEZ (5104)",
                        "LA CALERA"="CALERA (5502)",
                        "LA CISTERNA"="LA CISTERNA (13109)",
                        "LA CRUZ"="LA CRUZ (5504)",
                        "LA ESTRELLA"="LA ESTRELLA (6202)",
                        "LA FLORIDA"="LA FLORIDA (13110)",
                        "LA GRANJA"="LA GRANJA (13111)",
                        "LA HIGUERA"="LA HIGUERA (4104)",
                        "LA LIGUA"="LA LIGUA (5401)",
                        "LA PINTANA"="LA PINTANA (13112)",
                        "LA REINA"="LA REINA (13113)",
                        "LA SERENA"="LA SERENA (4101)",
                        "LA UNION"="LA UNIÓN (14201)",
                        "LAGO RANCO"="LAGO RANCO (14203)",
                        "LAGO VERDE"="LAGO VERDE (11102)",
                        "LAJA"="LAJA (8304)",
                        "LAMPA"="LAMPA (13302)",
                        "LANCO"="LANCO (14103)",
                        "LAS CABRAS"="LAS CABRAS (6107)",
                        "LAS CONDES"="LAS CONDES (13114)",
                        "LAUTARO"="LAUTARO (9108)",
                        "LEBU"="LEBU (8201)",
                        "LICANTEN"="LICANTÉN (7303)",
                        "LIMACHE"="LIMACHE (5802)",
                        "LINARES"="LINARES (7401)",
                        "LITUECHE"="LITUECHE (6203)",
                        "LLANQUIHUE"="LLANQUIHUE (10107)",
                        "LLAY LLAY"="LLAILLAY (5703)",
                        "LO BARNECHEA"="LO BARNECHEA (13115)",
                        "LO ESPEJO"="LO ESPEJO (13116)",
                        "LO PRADO"="LO PRADO (13117)",
                        "LOLOL"="LOLOL (6304)",
                        "LONCOCHE"="LONCOCHE (9109)",
                        "LONGAVI"="LONGAVÍ (7403)",
                        "LONQUIMAY"="LONQUIMAY (9205)",
                        "LOS ALAMOS"="LOS ÁLAMOS (8206)",
                        "LOS ANDES"="LOS ANDES (5301)",
                        "LOS ANGELES"="LOS ÁNGELES (8301)",
                        "LOS LAGOS"="LOS LAGOS (14104)",
                        "LOS MUERMOS"="LOS MUERMOS (10106)",
                        "LOS SAUCES"="LOS SAUCES (9206)",
                        "LOS VILOS"="LOS VILOS (4203)",
                        "LOTA"="LOTA (8106)",
                        "LUMACO"="LUMACO (9207)",
                        "MACHALI"="MACHALÍ (6108)",
                        "MACUL"="MACUL (13118)",
                        "MAFIL"="MÁFIL (14105)",
                        "MAIPU"="MAIPÚ (13119)",
                        "MALLOA"="MALLOA (6109)",
                        "MARCHIGUE"="MARCHIHUE (6204)",
                        "MARIA ELENA"="MARÍA ELENA (2302)",
                        "MARIA PINTO"="MARÍA PINTO (13504)",
                        "MARIQUINA"="MARIQUINA (14106)",
                        "MAULE"="MAULE (7105)",
                        "MAULLIN"="MAULLÍN (10108)",
                        "MEJILLONES"="MEJILLONES (2102)",
                        "MELIPEUCO"="MELIPEUCO (9110)",
                        "MELIPILLA"="MELIPILLA (13501)",
                        "MOLINA"="MOLINA (7304)",
                        "MONTE PATRIA"="MONTE PATRIA (4303)",
                        "MULCHEN"="MULCHÉN (8305)",
                        "NACIMIENTO"="NACIMIENTO (8306)",
                        "NANCAGUA"="NANCAGUA (6305)",
                        "NAVARINO"="CABO DE HORNOS (12201)",
                        "NAVIDAD"="NAVIDAD (6205)",
                        "NEGRETE"="NEGRETE (8307)",
                        "NINHUE"="NINHUE * (8408)",
                        "NOGALES"="NOGALES (5506)",
                        "NUEVA IMPERIAL"="NUEVA IMPERIAL (9111)",
                        "O´HIGGINS"="O'HIGGINS (11302)",
                        "OLIVAR"="OLIVAR (6111)",
                        "OLLAG?"="OLLAGÜE (2202)",
                        "OLMUE"="OLMUÉ (5803)",
                        "OSORNO"="OSORNO (10301)",
                        "OVALLE"="OVALLE (4301)",
                        "PADRE HURTADO"="PADRE HURTADO (13604)",
                        "PADRE LAS CASAS"="PADRE LAS CASAS (9112)",
                        "PAIHUANO"="PAIGUANO (4105)",
                        "PAILLACO"="PAILLACO (14107)",
                        "PAINE"="PAINE (13404)",
                        "PALENA"="PALENA (10404)",
                        "PALMILLA"="PALMILLA (6306)",
                        "PANGUIPULLI"="PANGUIPULLI (14108)",
                        "PANQUEHUE"="PANQUEHUE (5704)",
                        "PAPUDO"="PAPUDO (5403)",
                        "PAREDONES"="PAREDONES (6206)",
                        "PARRAL"="PARRAL (7404)",
                        "PE?FLOR"="PEÑAFLOR (13605)",
                        "PE?LOLEN"="PEÑALOLÉN (13122)",
                        "PEDRO AGUIRRE CERDA"="PEDRO AGUIRRE CERDA (13121)",
                        "PELARCO"="PELARCO (7106)",
                        "PELLUHUE"="PELLUHUE (7203)",
                        "PEMUCO"="PEMUCO * (8410)",
                        "PENCAHUE"="PENCAHUE (7107)",
                        "PENCO"="PENCO (8107)",
                        "PERALILLO"="PERALILLO (6307)",
                        "PERQUENCO"="PERQUENCO (9113)",
                        "PETORCA"="PETORCA (5404)",
                        "PEUMO"="PEUMO (6112)",
                        "PICA"="PICA (1405)",
                        "PICHIDEGUA"="PICHIDEGUA (6113)",
                        "PICHILEMU"="PICHILEMU (6201)",
                        "PINTO"="PINTO * (8411)",
                        "PIRQUE"="PIRQUE (13202)",
                        "PITRUFQUEN"="PITRUFQUÉN (9114)",
                        "PLACILLA"="PLACILLA (6308)",
                        "PORTEZUELO"="PORTEZUELO * (8412)",
                        "PORVENIR"="PORVENIR (12301)",
                        "POZO ALMONTE"="POZO ALMONTE (1401)",
                        "PRIMAVERA"="PRIMAVERA (12302)",
                        "PROVIDENCIA"="PROVIDENCIA (13123)",
                        "PUCHUNCAVI"="PUCHUNCAVÍ (5105)",
                        "PUCON"="PUCÓN (9115)",
                        "PUDAHUEL"="PUDAHUEL (13124)",
                        "PUENTE ALTO"="PUENTE ALTO (13201)",
                        "PUERTO MONTT"="PUERTO MONTT (10101)",
                        "PUERTO NATALES"="NATALES (12401)",
                        "PUERTO OCTAY"="PUERTO OCTAY (10302)",
                        "PUERTO SAAVEDRA"="SAAVEDRA (9116)",
                        "PUERTO VARAS"="PUERTO VARAS (10109)",
                        "PUMANQUE"="PUMANQUE (6309)",
                        "PUNITAQUI"="PUNITAQUI (4304)",
                        "PUNTA ARENAS"="PUNTA ARENAS (12101)",
                        "PUQUELDON"="PUQUELDÓN (10206)",
                        "PUREN"="PURÉN (9208)",
                        "PURRANQUE"="PURRANQUE (10303)",
                        "PUTAENDO"="PUTAENDO (5705)",
                        "PUYEHUE"="PUYEHUE (10304)",
                        "QUEILEN"="QUEILÉN (10207)",
                        "QUELLON"="QUELLÓN (10208)",
                        "QUEMCHI"="QUEMCHI (10209)",
                        "QUILACO"="QUILACO (8308)",
                        "QUILICURA"="QUILICURA (13125)",
                        "QUILLECO"="QUILLECO (8309)",
                        "QUILLON"="QUILLÓN * (8413)",
                        "QUILLOTA"="QUILLOTA (5501)",
                        "QUILPUE"="QUILPUÉ (5801)",
                        "QUINCHAO"="QUINCHAO (10210)",
                        "QUINTA DE TILCOCO"="QUINTA DE TILCOCO (6114)",
                        "QUINTA NORMAL"="QUINTA NORMAL (13126)",
                        "QUINTERO"="QUINTERO (5107)",
                        "QUIRIHUE"="QUIRIHUE * (8414)",
                        "RANCAGUA"="RANCAGUA (6101)",
                        "RANQUIL"="RÁNQUIL * (8415)",
                        "RAUCO"="RAUCO (7305)",
                        "RECOLETA"="RECOLETA (13127)",
                        "RENAICO"="RENAICO (9209)",
                        "RENCA"="RENCA (13128)",
                        "RENGO"="RENGO (6115)",
                        "REQUINOA"="REQUÍNOA (6116)",
                        "RETIRO"="RETIRO (7405)",
                        "RINCONADA"="RINCONADA (5303)",
                        "RIO BUENO"="RÍO BUENO (14204)",
                        "RIO CLARO"="RÍO CLARO (7108)",
                        "RIO HURTADO"="RÍO HURTADO (4305)",
                        "RIO NEGRO"="RÍO NEGRO (10305)",
                        "ROMERAL"="ROMERAL (7306)",
                        "SAGRADA FAMILIA"="SAGRADA FAMILIA (7307)",
                        "SALAMANCA"="SALAMANCA (4204)",
                        "SAN ANTONIO"="SAN ANTONIO (5601)",
                        "SAN BERNARDO"="SAN BERNARDO (13401)",
                        "SAN CARLOS"="SAN CARLOS * (8416)",
                        "SAN CLEMENTE"="SAN CLEMENTE (7109)",
                        "SAN ESTEBAN"="SAN ESTEBAN (5304)",
                        "SAN FELIPE"="SAN FELIPE (5701)",
                        "SAN FERNANDO"="SAN FERNANDO (6301)",
                        "SAN FRANCISCO DE MOSTAZAL"="MOSTAZAL (6110)",
                        "SAN GREGORIO DE ?QUEN"="SAN GREGORIO (12104)",
                        "SAN IGNACIO"="SAN IGNACIO * (8418)",
                        "SAN JAVIER"="SAN JAVIER (7406)",
                        "SAN JOAQUIN"="SAN JOAQUÍN (13129)",
                        "SAN JOSE DE MAIPO"="SAN JOSÉ DE MAIPO (13203)",
                        "SAN JUAN DE LA COSTA"="SAN JUAN DE LA COSTA (10306)",
                        "SAN MIGUEL"="SAN MIGUEL (13130)",
                        "SAN PABLO"="SAN PABLO (10307)",
                        "SAN PEDRO"="SAN PEDRO (13505)",
                        "SAN PEDRO DE ATACAMA"="SAN PEDRO DE ATACAMA (2203)",
                        "SAN PEDRO DE LA PAZ"="SAN PEDRO DE LA PAZ (8108)",
                        "SAN RAFAEL"="SAN RAFAEL (7110)",
                        "SAN RAMON"="SAN RAMÓN (13131)",
                        "SAN ROSENDO"="SAN ROSENDO (8310)",
                        "SAN VICENTE"="SAN VICENTE (6117)",
                        "SANTA BARBARA"="SANTA BÁRBARA (8311)",
                        "SANTA CRUZ"="SANTA CRUZ (6310)",
                        "SANTA JUANA"="SANTA JUANA (8109)",
                        "SANTA MARIA"="SANTA MARÍA (5706)",
                        "SANTIAGO CENTRO"="SANTIAGO (13101)",
                        "SANTIAGO OESTE"="SANTIAGO (13101)",
                        "SANTIAGO SUR"="SANTIAGO (13101)",
                        "SANTO DOMINGO"="SANTO DOMINGO (5606)",
                        "SIERRA GORDA"="SIERRA GORDA (2103)",
                        "TALAGANTE"="TALAGANTE (13601)",
                        "TALCA"="TALCA (7101)",
                        "TALCAHUANO"="TALCAHUANO (8110)",
                        "TALTAL"="TALTAL (2104)",
                        "TEMUCO"="TEMUCO (9101)",
                        "TENO"="TENO (7308)",
                        "TEODORO SCHMIDT"="TEODORO SCHMIDT (9117)",
                        "TIERRA AMARILLA"="TIERRA AMARILLA (3103)",
                        "TIL-TIL"="TILTIL (13303)",
                        "TIRUA"="TIRÚA (8207)",
                        "TOCOPILLA"="TOCOPILLA (2301)",
                        "TOLTEN"="TOLTÉN (9118)",
                        "TOME"="TOMÉ (8111)",
                        "TORRES DEL PAINE"="TORRES DEL PAINE (12402)",
                        "TORTEL"="TORTEL (11303)",
                        "TRAIGUEN"="TRAIGUÉN (9210)",
                        "TREHUACO"="TREGUACO * (8420)",
                        "TUCAPEL"="TUCAPEL (8312)",
                        "VALDIVIA"="VALDIVIA (14101)",
                        "VALLENAR"="VALLENAR (3301)",
                        "VALPARAISO"="VALPARAÍSO (5101)",
                        "VI? DEL MAR"="VIÑA DEL MAR (5109)",
                        "VICHUQUEN"="VICHUQUÉN (7309)",
                        "VICTORIA"="VICTORIA (9211)",
                        "VICU?"="VICUÑA (4106)",
                        "VILCUN"="VILCÚN (9119)",
                        "VILLA ALEGRE"="VILLA ALEGRE (7407)",
                        "VILLA ALEMANA"="VILLA ALEMANA (5804)",
                        "VILLARRICA"="VILLARRICA (9120)",
                        "VITACURA"="VITACURA (13132)",
                        "YERBAS BUENAS"="YERBAS BUENAS (7408)",
                        "YUMBEL"="YUMBEL (8313)",
                        "YUNGAY"="YUNGAY * (8421)",
                        "ZAPALLAR"="ZAPALLAR (5405)")))%>%
      assign("CONS_C1_df_dup_MAY_2020_prev_6a",., envir = .GlobalEnv)


library(dplyr)
library(choroplethr)
Error: package or namespace load failed for 'choroplethr' in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]):
 there is no package called 'tidycensus'
library(choroplethrMaps)
library(choroplethrAdmin1)
#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_

library(ggplot2)
data(admin1.map, package="choroplethrAdmin1")
#get_admin1_regions("chile") # falta ñuble po la cresta
chile.map = admin1.map[admin1.map$admin == "chile" & admin1.map$long > -80, ]
#ggplot(chile.map, aes(long, lat, group=group)) + geom_polygon() + coord_map()

arica <- list(v ="01", n = "region de arica y parinacota")
tarapaca <- list(v = "02", n= "region de tarapaca")
antofagasta <- list(v = "6.24",n = "region de antofagasta")
atacama <- list(v = 6.66, n = "region de atacama")
coquimbo <- list(v = 6.93, n = "region de coquimbo")
valparaiso <- list(v = 7.19,n = "region de valparaiso")
metropolitana <- list(v = 6.33, n = "region metropolitana de santiago")
ohiggins <- list(v = 5.27, n = "region del libertador general bernardo o'higgins")
maule <- list(v = 5.99, n = "region del maule")
nuble <- list(v = 5.99, n = "region de ñuble")
biobio <- list(v = 8.07, n = "region del biobio")
araucania <- list(v = 6.07, n = "region de la araucania")
losrios <- list(v = 4.72, n = "region de los rios")
loslagos <- list(v = 3.82, n = "region de los lagos")
aysen <- list(v = 3.84, n = "region aisen del general carlos ibanez del campo")
magallanes <- list(v = 2.63, n = "region de magallanes y de la antartica chilena")

dat2 <- data.frame(
  region = c(arica$n,tarapaca$n,antofagasta$n,atacama$n,coquimbo$n,valparaiso$n,
             metropolitana$n,ohiggins$n,maule$n,nuble$n, biobio$n,araucania$n,losrios$n,
             loslagos$n,aysen$n,magallanes$n)
)

datos_region <- chilemapas::    generar_regiones(mapa = chilemapas::mapa_comunas)

casos_region<-CONS_C1_df_dup_MAY_2020_prev_6a %>%
    group_by(nombre_region)%>%
    summarise(n=n())%>%
    dplyr::mutate(cod.V1= str_sub(nombre_region, -3, -2))
    
dat2<-datos_region %>%
  dplyr:::left_join(as_tibble(casos_region), by=c("codigo_region"="cod.V1")) %>%
  dplyr::mutate(tooltip=paste0(`nombre_region`,"=",formatC(as.numeric(n), format="f", big.mark=",", digits=0)))

gg2<-ggplot(data=dat2) +
  #geom_sf(aes(fill=as.numeric(dat2$value))) +
  theme_minimal() +
  geom_sf_interactive(aes(fill = cut(as.numeric(dat2$`n`),round(quantile(as.numeric(dat2$`n`),na.rm=T),0), include.lowest=TRUE,dig.lab=10,right=T), tooltip = tooltip, data_id = codigo_region))+
  scale_fill_brewer(palette="Blues",na.value="grey80") +
  labs(caption='Source: ',fill="No. of cases\n(quantiles)")# geom_sf(data = dat2, aes(fill = value)) +
#  coord_sf( expand = T)
tooltip_css <- "background-color:gray;color:white;font-style:italic;padding:10px;border-radius:10px 20px 10px 20px;"

ggiraph(code = {print(gg2)}, tooltip_extra_css = tooltip_css, tooltip_opacity = .75 )

Figure 7a. Cases By Region


As seen in Figure 7a, most of the treatments have been concentrated in the Metropolitan Region.


mapa_comunas = chilemapas::mapa_comunas

codigo_comunas<-
CONS_C1_df_dup_MAY_2020_prev_6a%>%
    dplyr::filter(grepl("Metropolitana",nombre_region))%>%
    dplyr::group_by(comuna_residencia_cod)%>%
    summarise(n=n())%>%
    dplyr::mutate(cod.V1= str_sub(comuna_residencia_cod, -6, -2))%>%
   # dplyr::select(-comuna_residencia_cod)%>%
    dplyr::mutate(cod.V1= stringr::str_replace(cod.V1, "\\(", "0"))
    
dat2<-mapa_comunas %>%
  dplyr:::left_join(as_tibble(codigo_comunas), by=c("codigo_comuna"="cod.V1")) %>%
  dplyr::filter(codigo_region=="13")%>%
  dplyr::mutate(tooltip=paste0(`comuna_residencia_cod`,"=",formatC(as.numeric(n), format="f", big.mark=",", digits=0)))%>%
  dplyr::mutate(n_cut=cut(as.numeric(n),round(quantile(as.numeric(n),na.rm=T),0), include.lowest=TRUE,dig.lab=10,right=T))

dat2 <- as_tibble(dat2)

suppressPackageStartupMessages(library(ggiraph))
suppressPackageStartupMessages(library(sf))

gg2<-
  ggplot(data=dat2) +
 # geom_sf(aes(fill=factor(n),geometry=geometry)) +
  theme_minimal() +
  geom_sf_interactive(aes(fill = n, tooltip = tooltip, data_id = codigo_comuna, geometry= geometry))+
  scale_fill_gradient(low="white",high="steelblue") +
  
  #scale_colour_brewer(breaks = rev(levels(dsamp$clarity)))+
  labs(caption='Source: ',fill="No. of cases")# geom_sf(data = dat2, aes(fill = value)) +
#  coord_sf( expand = T)

tooltip_css <- "background-color:gray;color:white;font-style:italic;padding:10px;border-radius:10px 20px 10px 20px;"

ggiraph(code = {print(gg2)}, tooltip_extra_css = tooltip_css, tooltip_opacity = .75 )

Figure 7b. Cases By Municipality


As seen in Figure 7b, most of the treatments have been concentrated in La Pintana, Puente Alto, Pudahuel, and San Bernardo. In contrast, only a few treatments were registered in San Pedro, Alhue and Vitacura.


5.Overview of spaces between treatments

At this point, it was necessary to differentiate between intermediate treatment events (referrals, changes in the treatment center, among others) and different treatments. But what would be a suitable cut-off point?, that is why we explored the amount of days between each entry in users that had more than one treatment. This was done through the difference between the date of admission of a subsequent (more recent) entry of a user, and the date of discharge of the entry.


CONS_C1_df_dup_MAY_2020_prev_6e_exp_spaces<-
      CONS_C1_df_dup_MAY_2020_prev_6e %>%
          dplyr::group_by(hash_key) %>%
          dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
          dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
          dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
          dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
          dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
          dplyr::filter(!is.na(dias_trat_imp))%>%
          #dplyr::select(hash_key,fech_ing,fech_ing_num_may20,fech_egres_imp, fech_egres_num_may20,dias_trat_imp,fech_ing_next_treat,diff_bet_treat)
          dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp,id_centro)

knitr::kable(cbind(data.frame(psych::describe(CONS_C1_df_dup_MAY_2020_prev_6e_exp_spaces$diff_bet_treat)),t(quantile(CONS_C1_df_dup_MAY_2020_prev_6e_exp_spaces$diff_bet_treat,c(.10,.25,.5,.75,.9),na.rm=T))),
            format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
            caption="Table 11. Summary Table for Difference Between Treatments (with the following entry)",
            align =rep('c', 101))  %>%
        kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
        kableExtra::scroll_box(width = "100%", height = "150px")
Table 11. Summary Table for Difference Between Treatments (with the following entry)
vars n mean sd median trimmed mad min max range skew kurtosis se 10% 25% 50% 75% 90%
X1 1 31,609 434.0835 574.1905 199 315.3274 292.0722 0 3,464 3,464 1.898423 3.702513 3.229614 1 19 199 623 1,244
#117,387
#85,722 unique hash key
# 109,268 = 8119 fechas de egreso perdidas
#
#quantile(CONS_C1_df_dup_MAY_2020_prev_2_exp_spaces$diff_bet_treat,c(seq(1,100)/100),na.rm=T)
quantiles_diff_bet_treat<-data.table::data.table(cbind(quantile(CONS_C1_df_dup_MAY_2020_prev_6e_exp_spaces$diff_bet_treat,c(seq(1,100)/100),na.rm=T)),keep.rownames = T)
#117387-31665

#diff_bet_treat= siempre es la diferencia con el siguiente tratmaiento


Considering the distribution of differences in days between each entry and what was discussed with the team of professionals of SENDA in charge of treatments, we defined the cut-off point at 60 days, which represented 34% of the total differences (n= 31,609).


p<-ggplot(CONS_C1_df_dup_MAY_2020_prev_6e_exp_spaces,aes(x=diff_bet_treat), alpha=.7)+
  geom_histogram_interactive(bins=120)+
  geom_vline(aes(xintercept=30), color="darkred", linetype="dashed")+
  geom_vline(aes(xintercept=45), color="darkmagenta", linetype="solid")+
  geom_vline(aes(xintercept=60), color="darkblue", linetype="dotted")+
  theme_bw() +
  #facet_wrap(~motivodeegreso_mod_imp)+
labs(y = "Frequency",x="Diff. Between Treatments", caption= "Blue dotted line= 60 days; Violet solid line= 45 days; Red dashed line= 30 days")#+
# xlim(c(-1,2000))

ggiraph(code = {print(p)}, tooltip_extra_css = tooltip_css, tooltip_opacity = .75)
Warning: Removed 77484 rows containing non-finite values (stat_bin).

Figure 8. Histogram of Diff Between Treatments

5.1. Cause of discharge

We explored how the distribution was between the causes of discharge depending on treatment conditions. This could be useful to get an impression of the adjustment of the cut-off point chosen.


#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_
### Casos que tienen un motivo de egreso de derivación, pero en
cause_sin_otro_trat <-
      CONS_C1_df_dup_MAY_2020_prev_6e %>%
        dplyr::group_by(hash_key) %>%
        dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
        dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
        dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
        dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
        dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
        dplyr::ungroup()%>%
        dplyr::mutate(caso=case_when(is.na(diff_bet_treat) & motivodeegreso_mod=="Derivación"~"1.sin tratamiento posterior, con motivo derivación",TRUE~""))%>%
        #dplyr::filter(grepl('1.sin tratamiento', caso))%>%
       # dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp,id_centro)
    # 1. Motivo de egreso
        dplyr::filter(is.na(diff_bet_treat)) %>% 
  janitor::tabyl(motivodeegreso_mod_imp)  %>%
        dplyr::mutate(percent=percent*100,
                       valid_percent=valid_percent*100)
    # Una8817 tiene como motivo Derivación
        #dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp_imp,id_centro)

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_
#CON TRATAMIENTO POSTERIOR, MENOR O IGUAL A 60 DIAS

cause_menor_60_dias<-
      CONS_C1_df_dup_MAY_2020_prev_6e %>%
        dplyr::group_by(hash_key) %>%
        dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
        dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
        dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
        dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
        dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
        dplyr::ungroup()%>%
        dplyr::mutate(caso=case_when(is.na(diff_bet_treat) & motivodeegreso_mod_imp=="Derivación"~"1.sin tratamiento posterior, con motivo derivación",TRUE~""))%>%
        #dplyr::filter(grepl('1.sin tratamiento', caso))%>%
       # dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp,id_centro)
    # 1. Motivo de egreso
        dplyr::filter(!is.na(diff_bet_treat),diff_bet_treat<=60) %>% 
    janitor::tabyl(motivodeegreso_mod_imp)%>%
        dplyr::mutate(percent=percent*100 ,
                       valid_percent=valid_percent*100)

cause_mayor_60_dias<-
      CONS_C1_df_dup_MAY_2020_prev_6e %>%
        dplyr::group_by(hash_key) %>%
        dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
        dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
        dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
        dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
        dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
        dplyr::ungroup()%>%
        dplyr::mutate(caso=case_when(is.na(diff_bet_treat) & motivodeegreso_mod_imp=="Derivación"~"1.sin tratamiento posterior, con motivo derivación",TRUE~""))%>%
        #dplyr::filter(grepl('1.sin tratamiento', caso))%>%
       # dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp,id_centro)
    # 1. Motivo de egreso
        dplyr::filter(!is.na(diff_bet_treat),diff_bet_treat>60) %>% 
    janitor::tabyl(motivodeegreso_mod_imp)%>%
        dplyr::mutate(percent=percent*100 ,
                       valid_percent=valid_percent*100)
 
 #_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
library(ggplot2) 
library(treemapify)

dt_cause_discharge<-data.frame(
            rbind(
            cbind(Status="Only one Entry", cause_sin_otro_trat[1:3]),
            cbind(Status=">1 Entry, <= 60d",cause_menor_60_dias[1:3]),
            cbind(Status=">1 Entry, >60d",cause_mayor_60_dias[1:3])
            )
      ) %>% dplyr::mutate(percent= paste0(round(as.numeric(percent)),"%"))%>%
  dplyr::mutate(tooltip=paste0(`motivodeegreso_mod_imp`,"=",`n`,"\n", percent))


# plot
plot<-ggplot(dt_cause_discharge, aes(area = n, 
                               fill = motivodeegreso_mod_imp,
                               label = percent,
                               subgroup=Status)) +
  geom_treemap() +
  geom_treemap_subgroup_border(color="grey25") +
  scale_fill_brewer(palette = "Blues",na.value = "gray70") +
  geom_treemap_subgroup_text(place = "centre", grow = T, alpha = 0.5, colour =
                             "black", fontface = "bold", min.size = 1) +
  geom_treemap_text(colour = "blue4",fontface = "italic", place = "centre", reflow = T, alpha=.6,size = 10.5)+
  geom_rect_interactive(alpha = 0.1, xmin=.1, xmax=.1, ymin=.1,ymax=.1) +
  # Remove plot elements added by geom_rect_interactive
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0)) +
    theme_void()+
  theme(legend.position="bottom")+
  guides(fill=guide_legend(ncol=4))+
  theme(legend.text = element_text(size=9))+
  theme(legend.title = element_blank())+
  theme(axis.text = element_blank(), axis.ticks = element_blank())

# Draw with ggiraph
ggiraph(code = print(plot))

Figure 9. Treemap of Cause of Discharge Depending On Treatment/Events Conditions

#ggiraph(code = {print(plot)}, tooltip_extra_css = tooltip_css, tooltip_opacity = .75 )


As can be seen in Figure 8, Referrals in cases with more than one entry by user and equal to or less than 60 days of difference between them were overwhelmingly superior compared to the same category among entries that had more than 60 days of difference. Also, users that only had one treatment in the study period had a small proportion of referrals compared to cases with more than one entry by user, with equal to or less than 60 days of difference between the last treatment.


5.2. Changes between the last treatments

We considered that it was important to explore the changes between one entry of a user and their previous entry, since this can shed light on if a certain entry can really be considered as a different treatment from another, leading to identify a true readmission.


CONS_C1_df_dup_MAY_2020_prev_6e %>%
    dplyr::group_by(hash_key) %>%
    dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
    dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp)))%>%
    dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
    dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
    dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
    dplyr::mutate(id_centro_sig_trat=dplyr::lag(id_centro)) %>%
    dplyr::mutate(tipo_plan_sig_trat=dplyr::lag(tipo_de_plan_2)) %>%
    dplyr::mutate(tipo_programa_sig_trat=dplyr::lag(tipo_de_programa_2)) %>%
    dplyr::mutate(senda_sig_trat=dplyr::lag(senda)) %>%
  dplyr::ungroup()%>%
  #ver los criterios ppt
    dplyr::filter(!is.na(diff_bet_treat),diff_bet_treat<=60) %>%
    
    dplyr::mutate(obs_cambios=case_when(id_centro_sig_trat!=id_centro~"1.1.cambio centro",TRUE~""))%>%
    dplyr::mutate(obs_cambios=case_when(tipo_plan_sig_trat!=tipo_de_plan_2~glue::glue("{obs_cambios};1.2.cambio tipo plan"),TRUE~obs_cambios))%>%
    dplyr::mutate(obs_cambios=case_when(tipo_programa_sig_trat!=tipo_de_programa_2~glue::glue("{obs_cambios};1.3.cambio tipo programa"),TRUE~obs_cambios))%>%
    dplyr::mutate(obs_cambios=case_when(senda_sig_trat!=senda~glue::glue("{obs_cambios};1.4.cambio senda"),TRUE~obs_cambios))%>%
  
    dplyr::mutate(obs_cambios_num=case_when(id_centro_sig_trat!=id_centro~1,TRUE~0))%>%
    dplyr::mutate(obs_cambios_num=case_when(tipo_plan_sig_trat!=tipo_de_plan_2~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
    dplyr::mutate(obs_cambios_num=case_when(tipo_programa_sig_trat!=tipo_de_programa_2~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
    dplyr::mutate(obs_cambios_num=case_when(senda_sig_trat!=senda~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
  
  dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,obs_cambios) %>% 
  janitor::tabyl(obs_cambios)%>%
        dplyr::mutate(percent=round(percent*100,1))%>%
  knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
            caption="Table 12. Frequency and Percentage of Types of Changes Between Treatments (<=60 days between treatments)",
            col.names = c("Changes", "No.", "%"),
            align =rep('c', 101))  %>%
        kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
        kableExtra::scroll_box(width = "100%", height = "350px")
Table 12. Frequency and Percentage of Types of Changes Between Treatments (<=60 days between treatments)
Changes No.  %
1,218 11.6
;1.2.cambio tipo plan 1,069 10.2
;1.2.cambio tipo plan;1.3.cambio tipo programa 143 1.4
;1.2.cambio tipo plan;1.3.cambio tipo programa;1.4.cambio senda 22 0.2
;1.2.cambio tipo plan;1.4.cambio senda 62 0.6
;1.3.cambio tipo programa 3 0.0
;1.3.cambio tipo programa;1.4.cambio senda 2 0.0
;1.4.cambio senda 128 1.2
1.1.cambio centro 937 8.9
1.1.cambio centro;1.2.cambio tipo plan 4,664 44.3
1.1.cambio centro;1.2.cambio tipo plan;1.3.cambio tipo programa 1,658 15.7
1.1.cambio centro;1.2.cambio tipo plan;1.3.cambio tipo programa;1.4.cambio senda 112 1.1
1.1.cambio centro;1.2.cambio tipo plan;1.4.cambio senda 387 3.7
1.1.cambio centro;1.3.cambio tipo programa 50 0.5
1.1.cambio centro;1.3.cambio tipo programa;1.4.cambio senda 6 0.1
1.1.cambio centro;1.4.cambio senda 71 0.7


From the Table above, we can see that the majority of cases changed center and type of plan (44.2%). These are followed by a group that changed treatment center, type of plan and type of program (15.7%). There was another group that did not change in any characteristic from the earlier entry (11.6%). Also, a group of cases only changed the type of plan (10.2%), and another, only changed from one center to another (8.9%).


We fitted a model of the interactive effect of the number of changes from the next entry with referral, on the odds of showing <=60 days of difference with the next entry We suspected a nonlinear effect of reporting the next treatment with a cause of discharge as a referral. This difference may not be the same for cases that changed in one, two, three or even four of characteristics of the treatment between the first and next entry.


#       main= "Efecto conjunto de Cambios en Características de Tratamiento y Motivo de \n egreso (Derivación), en la probabilidad de que el Tratamiento Dure Menos o Igual de 60 días",

CONS_C1_df_dup_MAY_2020_prev_6e_glm_mas_de_un_trat <-
  CONS_C1_df_dup_MAY_2020_prev_6e %>%
  dplyr::group_by(hash_key) %>%
  dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
  dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
  dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
  dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
  dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
  dplyr::mutate(id_centro_sig_trat=dplyr::lag(id_centro)) %>%
  dplyr::mutate(tipo_plan_sig_trat=dplyr::lag(tipo_de_plan_2)) %>%
  dplyr::mutate(tipo_programa_sig_trat=dplyr::lag(tipo_de_programa_2)) %>%
  dplyr::mutate(senda_sig_trat=dplyr::lag(senda)) %>%
  dplyr::ungroup()%>%
  #para tener sólo los casos que corresponde, que tienen comparaciones con un siguiente. Los otros no me interesan
  dplyr::filter(!is.na(diff_bet_treat))%>%
  dplyr::mutate(menor_60_dias_diff=case_when(diff_bet_treat<60~1,TRUE~0))%>%
  dplyr::mutate(motivoegreso_derivacion=case_when(motivodeegreso_mod_imp=="Derivación"~1,TRUE~0))%>%
  
  dplyr::mutate(obs_cambios=case_when(id_centro_sig_trat!=id_centro~"1.1.cambio centro",TRUE~""))%>%
  dplyr::mutate(obs_cambios=case_when(tipo_plan_sig_trat!=tipo_de_plan_2~glue::glue("{obs_cambios};1.2.cambio tipo plan"),TRUE~obs_cambios))%>%
  dplyr::mutate(obs_cambios=case_when(tipo_programa_sig_trat!=tipo_de_programa_2~glue::glue("{obs_cambios};1.3.cambio tipo programa"),TRUE~obs_cambios))%>%
  dplyr::mutate(obs_cambios=case_when(senda_sig_trat!=senda~glue::glue("{obs_cambios};1.4.cambio senda"),TRUE~obs_cambios))%>%
  dplyr::mutate(obs_cambios_ninguno=case_when(obs_cambios==""~1,TRUE~0))%>%
  dplyr::mutate(obs_cambios_num=case_when(id_centro_sig_trat!=id_centro~1,TRUE~0))%>%
  dplyr::mutate(obs_cambios_num=case_when(tipo_plan_sig_trat!=tipo_de_plan_2~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
  dplyr::mutate(obs_cambios_num=case_when(tipo_programa_sig_trat!=tipo_de_programa_2~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
  dplyr::mutate(obs_cambios_num=case_when(senda_sig_trat!=senda~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
  dplyr::mutate(obs_cambios_num=as.numeric(obs_cambios_num))%>%
  dplyr::mutate(obs_cambios_ninguno=as.factor(obs_cambios_ninguno))%>%
  dplyr::mutate(motivoegreso_derivacion=as.factor(motivoegreso_derivacion))%>%
  dplyr::mutate(menor_60_dias_diff=as.factor(menor_60_dias_diff))%>%
  dplyr::mutate(obs_cambios_fac=as.factor(obs_cambios_num))

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
no_mostrar=0
if(no_mostrar>0){
  CONS_C1_df_dup_MAY_2020_prev_6e_glm_mas_de_un_trat%>% 
     dplyr::group_by(hash_key) %>% 
     dplyr::mutate(less_10=ifelse(diff_bet_treat<10,1,0),less_10=sum(less_10,na.rm=T))%>% 
     dplyr::ungroup() %>% 
     dplyr::filter(less_10>1)%>% 
     dplyr::select(hash_key,fech_ing, fech_egres_imp,fech_ing_next_treat,diff_bet_treat, motivodeegreso_mod_imp)%>% 
     View()
}
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#Para ver el efecto de los cambios entre un tratamiento y otro y el motivo de egreso derivación, en que la distancia enrte un tratamiento a otro sea mayor a 60 días.

glm_60d <- glm(menor_60_dias_diff ~ motivoegreso_derivacion*obs_cambios_fac, 
                data=CONS_C1_df_dup_MAY_2020_prev_6e_glm_mas_de_un_trat, family="binomial")
library(finalfit)
#explanatory = c("age.factor*sex.factor", "obstruct.factor", "perfor.factor")
CONS_C1_df_dup_MAY_2020_prev_6e_glm_mas_de_un_trat %>%
  dplyr::mutate(obs_cambios_fac= ff_label(obs_cambios_fac, "No. of Changes Between Datasets"),
                motivoegreso_derivacion= ff_label(motivoegreso_derivacion, "Cause of Discharge (Referral=1)"),
                menor_60_dias_diff= ff_label(menor_60_dias_diff, "< 60 days of difference between next treatment"))%>%
    ff_interaction(motivoegreso_derivacion, obs_cambios_fac) %>% 
    finalfit("menor_60_dias_diff", "motivoegreso_derivacion__obs_cambios_fac") -> t 
Waiting for profiling to be done...
Waiting for profiling to be done...
knitr::kable(t,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
            caption="Table 13. Summary Table for Difference Between Treatments",
            align =rep('c', 101))  %>%
        kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
        kableExtra::scroll_box(width = "100%", height = "350px")
Table 13. Summary Table for Difference Between Treatments
Dependent: < 60 days of difference between next treatment 0 1 OR (univariable) OR (multivariable)
Cause of Discharge (Referral=1):No. of Changes Between Datasets 0|0 6861 (88.1) 931 (11.9)
0|1 4284 (84.9) 761 (15.1) 1.31 (1.18-1.45, p<0.001) 1.31 (1.18-1.45, p<0.001)
0|2 5062 (80.8) 1203 (19.2) 1.75 (1.60-1.92, p<0.001) 1.75 (1.60-1.92, p<0.001)
0|3 1889 (77.6) 546 (22.4) 2.13 (1.89-2.39, p<0.001) 2.13 (1.89-2.39, p<0.001)
0|4 143 (79.9) 36 (20.1) 1.86 (1.26-2.66, p=0.001) 1.86 (1.26-2.66, p=0.001)
1|0 827 (76.0) 261 (24.0) 2.33 (1.99-2.71, p<0.001) 2.33 (1.99-2.71, p<0.001)
1|1 650 (32.2) 1369 (67.8) 15.52 (13.83-17.44, p<0.001) 15.52 (13.83-17.44, p<0.001)
1|2 911 (19.5) 3772 (80.5) 30.51 (27.64-33.73, p<0.001) 30.51 (27.64-33.73, p<0.001)
1|3 443 (22.5) 1523 (77.5) 25.34 (22.36-28.76, p<0.001) 25.34 (22.36-28.76, p<0.001)
1|4 61 (44.5) 76 (55.5) 9.18 (6.52-12.99, p<0.001) 9.18 (6.52-12.99, p<0.001)


In the following figure, we show the marginal effects on the probability of having 60 days or less of difference with the next entry, depending on the cause of discharge (referral) and the number of changes in the characteristics of treatments with the next entry.


#
library("effects")
    #Effect(focal.predictors = "diff_bet_treat",polrMod)
    #plot(Effect(focal.predictors = "motivoegreso_derivacion",polrMod))
    plot(Effect(focal.predictors = c("obs_cambios_fac", "motivoegreso_derivacion"),glm_60d),
       ylab= "Probability of <60 days of \ndiff. w/ next treatment", 
       xlab="No. of Changes in the Treatment Characteristics",
       main=NULL,
       #esto si se quiere dejar todos los niveles juntos, y no hacer gráficos por separado
       rug = FALSE,
       style="stacked")
library(lsmeans)
refR <- lsmeans(glm_60d, specs = c("motivoegreso_derivacion","obs_cambios_fac"))
ref_dfR <- as.data.frame(cbind(summary(refR)[1:2],exp(summary(refR)[,c(3,6,7)])))

g4R <- ggplot(ref_dfR, aes(x=obs_cambios_fac, y=lsmean,group=motivoegreso_derivacion, colour=motivoegreso_derivacion))+
geom_errorbar(aes(ymin=asymp.LCL, ymax=asymp.UCL), width=.1,position=position_dodge(0.1), size=1) +
geom_line(position=position_dodge(0.1), size=.5)+
geom_point(position=position_dodge(0.1), size=2)+
  xlab("No. of Changes in the Treatment Characteristics")+
  ylab("Odds Ratio (OR) of <60 days of \ndiff. w/ next entry")+
  theme_bw() +
  geom_rect_interactive(alpha = 0.1, xmin=.1, xmax=.1, ymin=.1,ymax=.1) +
    # Remove plot elements added by geom_rect_interactive
  theme(legend.position="bottom")+
  guides(color=guide_legend(ncol=4,name = "Cause of Discharge"))+
  labs(color="Cause of Discharge")+
  scale_colour_brewer(palette = "Set1",labels=c("Other Causes", "Referral"))+
  theme(legend.title = element_blank())
  #theme(axis.text = element_blank(), axis.ticks = element_blank())

ggiraph(code = print(g4R))

Figure 10. Interactive Effects on Odds of having <60 days of difference with the previous entry

#The lsmeans statement estimates least squares means, or predicted population margins, which are the expected values (means) of the outcome in a population where the levels of all class variables are balanced and averaged over the effects of the continuous covariates. We can estimate these means at each level of categorical age and across female.


Figure 10 shows that there was more chance to have a minor difference with the next treatment, if the cause of discharge was a referral and a user had among 2 or 3 changes in the characteristics of the treatment in the following entry. However, it must be noted that referrals had more chance than other causes of discharge by itself, regardless of the number of changes.


6. Include variables of the difference between treatments with the original dataset

CONS_C1_df_dup_MAY_2020_prev_6e%>%
  dplyr::left_join(CONS_C1_df_dup_MAY_2020_prev_6e_glm_mas_de_un_trat[c("row","menor_60_dias_diff","diff_bet_treat","id_centro_sig_trat","tipo_plan_sig_trat","tipo_programa_sig_trat","senda_sig_trat","motivoegreso_derivacion","obs_cambios","obs_cambios_ninguno","obs_cambios_num","obs_cambios_fac")], by="row")%>%
  assign("CONS_C1_df_dup_JUN_2020",., envir = .GlobalEnv)


6.1. Type of referral


We looked over the center in which each user was referred, but considered the cause of admission.


#Además deberá especificarse el tipo de establecimiento al que se deriva:
##1. APS*;##2. COSAM**; ##3. Hospital (Ambulatorio ej. H. Diurno, Atención ambulatoria de especialidad); ##4. Hospital (residencial ej. Corta, Mediana Estadía, Unidad de Desintoxicación); ##5. Comunidad Terapéutica Ambulatoria; ##6. Comunidad Terapéutica Residencial; ##7. Clínica Ambulatoria; ##8. Clínica Residencial; ##9. Otro Centro; ##*APS: se refiere a cualquier establecimiento de atención primaria de salud como Centro de Salud Familiar (CESFAM), Centro de Salud Urbano (Consultorio, Centro de Salud), Centro de Salud Rural, Posta Salud Rural), Centro Comunitario de Salud Familiar (CECOF), Servicio de Atención Primaria de Urgencia (SAPU); ##** Centro Comunitario de Salud Mental (CESAMCO, CSMC, ESSMA, CESAM, etc.) 

CONS_C1_df_dup_JUN_2020%>% janitor::tabyl(tipo_centro_derivacion,motivodeegreso_mod_imp,sort=T)%>% adorn_percentages("col")%>% adorn_pct_formatting(rounding = "half up", digits = 1) %>% adorn_ns()%>%
  knitr::kable(format= "html", format.args= list(decimal.mark= ".", big.mark= ","),
               caption="Table 14. Type of Center of Referral by the Cause of Discharge",
               align= c("l",rep('c', 5)), col.names = c("Type of Center of Referral","Late Withdrawal","Early Withdrawal", "Administrative Discharge","Therapeutic Discharge","Referral","Death","NA"))%>%
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size= 8)%>%
        kableExtra::add_footnote("Note= Percentages by Column", notation = "none")%>%
  kableExtra::scroll_box(width= "100%", height = "375x")
Table 14. Type of Center of Referral by the Cause of Discharge
Type of Center of Referral Late Withdrawal Early Withdrawal Administrative Discharge Therapeutic Discharge Referral Death NA
APS 0.0% (0) 0.0% (0) 0.0% (0) 0.0% (0) 3.4% (631) 0.0% (0) 0.0% (0)
Clínica Ambulatoria 0.0% (0) 0.0% (0) 0.0% (0) 0.0% (0) 0.1% (28) 0.0% (0) 0.0% (0)
Clínica Residencial 0.0% (0) 0.0% (0) 0.0% (0) 0.0% (0) 0.3% (59) 0.0% (0) 0.0% (0)
Comunidad Terapéutica Ambulatoria 0.0% (0) 0.0% (0) 0.0% (0) 0.0% (0) 3.5% (654) 0.0% (0) 0.0% (0)
Comunidad Terapéutica Residencial 0.0% (0) 0.0% (0) 0.0% (0) 0.0% (0) 9.6% (1796) 0.0% (0) 0.0% (0)
COSAM 0.0% (0) 0.0% (0) 0.0% (0) 0.0% (0) 7.4% (1380) 0.0% (0) 0.0% (0)
Hospital (Ambulatorio ej. H. Diurno, Atención ambulatoria de especialidad) 0.0% (0) 0.0% (0) 0.0% (0) 0.0% (0) 3.8% (704) 0.0% (0) 0.0% (0)
Hospital (residencial ej. Corta, Mediana Estadía, Unidad de Desintoxicación) 0.0% (0) 0.0% (0) 0.0% (0) 0.0% (0) 1.3% (244) 0.0% (0) 0.0% (0)
Otro Centro 0.0% (0) 0.0% (0) 0.0% (0) 0.0% (0) 2.8% (521) 0.0% (0) 0.0% (0)
NA 100.0% (37231) 100.0% (18739) 100.0% (9797) 100.0% (24602) 67.8% (12686) 100.0% (1) 100.0% (8139)
Note= Percentages by Column


From the Table 14, we can see that no other causes of discharge had a type of referral, so there was no reason to alter this variable.


 CONS_C1_df_dup_JUN_2020%>% 
    dplyr::filter(!is.na(diff_bet_treat))%>%
    #dplyr::mutate(motivoegreso_derivacion=factor(motivoegreso_derivacion, levels = c("Motivo: Otro", "Motivo: Derivación","NA")))%>%
    dplyr::mutate(obs_cambios_num=factor(obs_cambios_num))%>%
    
    dplyr::mutate(diff_bet_treat_bar=round(diff_bet_treat,0)) %>%
    dplyr::mutate(diff_bet_treat_bar=cut2(diff_bet_treat_bar, g =40))%>%
    
    dplyr::mutate(grupo_var=obs_cambios_num)%>%
    dplyr::group_by(diff_bet_treat_bar, grupo_var,motivoegreso_derivacion)%>%
    summarise(n_2_grupos=n())%>%
    dplyr::ungroup()%>%
    dplyr::group_by(motivoegreso_derivacion,diff_bet_treat_bar)%>%
    dplyr::mutate(freq = (n_2_grupos / sum(n_2_grupos)))%>%
    dplyr::ungroup()%>%
    
    ggplot2::ggplot(aes(x = diff_bet_treat_bar, y = freq,fill=grupo_var))+
    geom_bar(stat='identity', alpha=.8) + 
    scale_x_discrete()+
    scale_fill_viridis(discrete = T, name= "No. of changes") +
    theme_bw()+
    labs(x="",y="Percentages ",
         caption= paste0("Note. ;\n", 
                         ""))+
    #ylim(0,101)+
    scale_y_continuous(limits=c(0,1),labels = scales::percent) +
    theme(legend.position="bottom")+
    guides(fill=guide_legend(title="No. de cambios",ncol=5))+
    theme(legend.text = element_text(size=10))+
    theme(legend.title = element_blank(),
          panel.grid.minor = element_blank(), 
          panel.grid.major = element_blank(), 
          panel.grid.major.x = element_blank(),
          panel.background = element_blank(),
          axis.title.x = element_blank())+
    theme(axis.text.x = element_text(vjust = 0.5,hjust = 0.5,angle = 90, size= 6.5), plot.caption= element_text(hjust=0))+
    facet_wrap(~motivoegreso_derivacion, labeller = as_labeller(c(`0` = "Motivo:Otro", `1` = "Motivo:Derivación")))+
    geom_vline(aes(xintercept = 45), 
               linetype = "dashed", colour = "red",size = 1)+
    labs(caption=paste0("Note. ",CONS_C1_df_dup_JUN_2020%>% dplyr::filter(is.na(diff_bet_treat))%>% nrow() %>% formatC(big.mark = ",")," obs. had missing data that corresponded to unique treatments by users;\nDays of treatment were divided en 30 equal parts"))
 CONS_C1_df_dup_JUN_2020%>% 
    dplyr::filter(!is.na(diff_bet_treat))%>%
    #dplyr::mutate(motivoegreso_derivacion=factor(motivoegreso_derivacion, levels = c("Motivo: Otro", "Motivo: Derivación","NA")))%>%
    dplyr::mutate(obs_cambios_num=factor(obs_cambios_num))%>%
    
    dplyr::mutate(diff_bet_treat_bar=round(diff_bet_treat,0)) %>%
    dplyr::mutate(diff_bet_treat_bar=cut2(diff_bet_treat_bar, g =35))%>%
    
    dplyr::mutate(grupo_var=obs_cambios_num)%>%
    dplyr::group_by(diff_bet_treat_bar, grupo_var,tipo_centro_derivacion)%>%
    summarise(n_2_grupos=n())%>%
    dplyr::ungroup()%>%
    dplyr::group_by(tipo_centro_derivacion,diff_bet_treat_bar)%>%
    dplyr::mutate(freq = (n_2_grupos / sum(n_2_grupos)))%>%
    dplyr::ungroup()%>%
    
    ggplot2::ggplot(aes(x = diff_bet_treat_bar, y = freq,fill=grupo_var))+
    geom_bar(stat='identity', alpha=.8) + 
    scale_x_discrete()+
    scale_fill_manual(name= "No. of changes",values=c("cornsilk3", "lightskyblue2", "#56B4E9", "steelblue","slategray4")) +
    theme_bw()+
    labs(x="",y="Percentages ", fill="No. of changes")+
    #ylim(0,101)+
    scale_y_continuous(limits=c(0,1),labels = scales::percent) +
    theme(legend.position="bottom")+
    guides(fill=guide_legend(title="No. of changes",ncol=5))+
    theme(legend.text = element_text(size=9))+
    theme(panel.grid.minor = element_blank(), 
          panel.grid.major = element_blank(), 
          panel.grid.major.x = element_blank(),
          panel.background = element_blank(),
          axis.title.x = element_blank())+
    theme(axis.text.x = element_text(vjust = 0.5,hjust = 0.5,angle = 90, size= 6.5), plot.caption= element_text(hjust=0))+
    facet_wrap(~tipo_centro_derivacion, ncol=2, labeller = as_labeller(c(`APS` = "APS", `Clínica Ambulatoria` = "Clínica Ambulatoria",
    `Clínica Residencial` = "Clínica Residencial",`Comunidad Terapéutica Residencial` = "Comunidad Terapéutica Residencial",`COSAM` = "COSAM",`Hospital (Ambulatorio ej. H. Diurno, Atención ambulatoria de especialidad)` = "Hospital (Ambulatorio)",`Hospital (residencial ej. Corta, Mediana Estadía, Unidad de Desintoxicación)` = "Hospital (residencial)",`Otro Centro`="Otro Centro",`NA`="NULL")))+ 
    geom_vline(aes(xintercept = 45), 
               linetype = "dashed", colour = "red",size = 1)+
    labs(fill="No. of changes",caption=paste0("Note. ",CONS_C1_df_dup_JUN_2020%>% dplyr::filter(is.na(diff_bet_treat))%>% nrow() %>% formatC(big.mark = ",")," obs. had missing data that corresponded to unique treatments by users;\nDays of treatment were divided en 35 equal parts"))+
  theme(strip.background =element_rect(colour=NA,fill=NA))+
  theme(strip.text = element_text(colour = 'gray60', size=8),
        plot.caption= element_text(size=7))+
  theme(legend.title = element_text(colour = 'gray30', size=8))
`summarise()` regrouping output by 'diff_bet_treat_bar', 'grupo_var' (override
with `.groups` argument)
Figure 11. Changes with the Next Treatment by No. of Days of Treatment, depending on Type of Referrals

Figure 11. Changes with the Next Treatment by No. of Days of Treatment, depending on Type of Referrals


As seen in Figure 12, there was not a clear distribution of changes by days among the different types of center. However, some types of centers of referral had missing areas due to the amount of cases that were referred to that type of center, and/or did not have a more recent treatment to detect eventual changes.


#Además deberá especificarse el tipo de establecimiento al que se deriva:
##1. APS*;##2. COSAM**; ##3. Hospital (Ambulatorio ej. H. Diurno, Atención ambulatoria de especialidad); ##4. Hospital (residencial ej. Corta, Mediana Estadía, Unidad de Desintoxicación); ##5. Comunidad Terapéutica Ambulatoria; ##6. Comunidad Terapéutica Residencial; ##7. Clínica Ambulatoria; ##8. Clínica Residencial; ##9. Otro Centro; ##*APS: se refiere a cualquier establecimiento de atención primaria de salud como Centro de Salud Familiar (CESFAM), Centro de Salud Urbano (Consultorio, Centro de Salud), Centro de Salud Rural, Posta Salud Rural), Centro Comunitario de Salud Familiar (CECOF), Servicio de Atención Primaria de Urgencia (SAPU); ##** Centro Comunitario de Salud Mental (CESAMCO, CSMC, ESSMA, CESAM, etc.) 

CONS_C1_df_dup_JUN_2020%>% dplyr::mutate(no_otro_trat=!is.na(diff_bet_treat))%>% janitor::tabyl(tipo_centro_derivacion,no_otro_trat,sort=T)%>%  
  adorn_percentages("row")%>% adorn_pct_formatting(rounding = "half up", digits = 1) %>% adorn_ns()%>%
  knitr::kable(format= "html", format.args= list(decimal.mark= ".", big.mark= ","),
               caption="Table 15. Type of Center of Referral by the presence of a posterior treatment",
               align= c("l",rep('c', 5)), col.names = c("Type of Center of Referral","Absence of a Posterior Treatment","Presence of a Posterior Treatment"))%>%
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size= 8)%>%
          kableExtra::add_footnote("Note= Percentages by Row", notation = "none")%>%
  kableExtra::scroll_box(width= "100%", height = "375x")
Table 15. Type of Center of Referral by the presence of a posterior treatment
Type of Center of Referral Absence of a Posterior Treatment Presence of a Posterior Treatment
APS 71.0% (448) 29.0% (183)
Clínica Ambulatoria 42.9% (12) 57.1% (16)
Clínica Residencial 25.4% (15) 74.6% (44)
Comunidad Terapéutica Ambulatoria 33.9% (222) 66.1% (432)
Comunidad Terapéutica Residencial 13.9% (249) 86.1% (1547)
COSAM 53.8% (743) 46.2% (637)
Hospital (Ambulatorio ej. H. Diurno, Atención ambulatoria de especialidad) 54.7% (385) 45.3% (319)
Hospital (residencial ej. Corta, Mediana Estadía, Unidad de Desintoxicación) 46.7% (114) 53.3% (130)
Otro Centro 52.6% (274) 47.4% (247)
NA 74.8% (83141) 25.2% (28054)
Note= Percentages by Row


As seen in the Table 15, it was not clear whether the absence of a following treatment is explicitly associated with a type of center of referral. This is why we had to ask SENDA professionals about the characteristics of the referrals.


7. Consolidation of the dataset and its variables


  metadata(CONS_C1_df_dup_JUN_2020)$name <- "Agreement 1 SENDA"
  metadata(CONS_C1_df_dup_JUN_2020)$description <- "Information About Agreement 1 of SENDA and MINSAL"

#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
CONS_C1_df_dup_JUN_2020<-
 CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(dg_trs_psiq_cie_10_or= recode(as.character(dg_trs_psiq_cie_10_or),
                                           'En estudio' ='En estudio(NA)',
                                           'Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes' ='Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes(F20-29)',
                                           'Retraso Mental' ='Retraso Mental(F70-79)',
                                           'Sin trastorno' ='Sin trastorno(NA)',
                                           'Trastornos de la conducta alimentaria ' ='Trastornos de la conducta alimentaria(F50)',
                                           'Trastornos de la personalidad y del comportamiento del adulto' ='Trastornos de la personalidad y del comportamiento del adulto(F60-69)',
                                           'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
                                           'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos(F50-59)',
                                           'Trastornos del Desarrollo Psicológico' ='Trastornos del Desarrollo Psicológico(F80-89)',
                                           'Trastornos del humor (afectivos).' ='Trastornos del humor (afectivos) (F30-39)',
                                           'Trastornos mentales orgánicos, incluidos los sintomáticos' ='Trastornos mentales orgánicos, incluidos los sintomáticos(F00-09)',
                                           'Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos' ='Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos(F40-49)',
                                           'Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia' ='Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia(F90-98)'))

CONS_C1_df_dup_JUN_2020<-
  CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(x2_dg_trs_psiq_cie_10_or= recode(as.character(x2_dg_trs_psiq_cie_10_or),
                                                                          'En estudio' ='En estudio(NA)',
                                                                          'Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes' ='Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes(F20-29)',
                                                                          'Retraso Mental' ='Retraso Mental(F70-79)',
                                                                          'Sin trastorno' ='Sin trastorno(NA)',
                                                                          'Trastornos de la conducta alimentaria ' ='Trastornos de la conducta alimentaria(F50)',
                                                                          'Trastornos de la personalidad y del comportamiento del adulto' ='Trastornos de la personalidad y del comportamiento del adulto(F60-69)',
                                                                          'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
                                                                          'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos(F50-59)',
                                                                          'Trastornos del Desarrollo Psicológico' ='Trastornos del Desarrollo Psicológico(F80-89)',
                                                                          'Trastornos del humor (afectivos).' ='Trastornos del humor (afectivos) (F30-39)',
                                                                          'Trastornos mentales orgánicos, incluidos los sintomáticos' ='Trastornos mentales orgánicos, incluidos los sintomáticos(F00-09)',
                                                                          'Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos' ='Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos(F40-49)',
                                                                          'Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia' ='Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia(F90-98)'))


CONS_C1_df_dup_JUN_2020<-
  CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(x3_dg_trs_psiq_cie_10_or= recode(as.character(x3_dg_trs_psiq_cie_10_or),
                                                                             'En estudio' ='En estudio(NA)',
                                                                             'Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes' ='Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes(F20-29)',
                                                                             'Retraso Mental' ='Retraso Mental(F70-79)',
                                                                             'Sin trastorno' ='Sin trastorno(NA)',
                                                                             'Trastornos de la conducta alimentaria ' ='Trastornos de la conducta alimentaria(F50)',
                                                                             'Trastornos de la personalidad y del comportamiento del adulto' ='Trastornos de la personalidad y del comportamiento del adulto(F60-69)',
                                                                             'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
                                                                             'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos(F50-59)',
                                                                             'Trastornos del Desarrollo Psicológico' ='Trastornos del Desarrollo Psicológico(F80-89)',
                                                                             'Trastornos del humor (afectivos).' ='Trastornos del humor (afectivos) (F30-39)',
                                                                             'Trastornos mentales orgánicos, incluidos los sintomáticos' ='Trastornos mentales orgánicos, incluidos los sintomáticos(F00-09)',
                                                                             'Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos' ='Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos(F40-49)',
                                                                             'Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia' ='Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia(F90-98)'))

CONS_C1_df_dup_JUN_2020<-
  CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(dg_trs_psiq_sub_cie_10_or= recode(as.character(dg_trs_psiq_sub_cie_10_or),
    'Abuso de sustancias que no producen dependencia' ='Abuso de sustancias que no producen dependencia(F55X)',
    'Delirium no inducido por alcohol u otras sustancias psicotropas' ='Delirium no inducido por alcohol u otras sustancias psicotropas(F059)',
    'Demencia en enfermedades clasificadas en otro lugar' ='Demencia en enfermedades clasificadas en otro lugar(F02)',
    'Demencia sin especificación' ='Demencia sin especificación(F03)',
    'Demencia vascular' ='Demencia vascular(F01)',
    'Episodios depresivos' ='Episodios depresivos(F32)',
    'Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar' ='Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar(F54)',
    'Otros trastornos de ansiedad' ='Otros trastornos de ansiedad(F41)',
    'Otros trastornos de la personalidad y del comportamiento del adulto' ='Otros trastornos de la personalidad y del comportamiento del adulto(F68)',
    'Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia' ='Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia(F98)',
    'Otros trastornos del desarrollo psicológico' ='Otros trastornos del desarrollo psicológico(F88)',
    'Otros trastornos del humor (afectivos)' ='Otros trastornos del humor (afectivos)(F38)',
    'Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática' ='Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática(F06)',
    'Otros trastornos neuróticos' ='Otros trastornos neuróticos(F48)',
    'Otros trastornos psicóticos no orgánicos' ='Otros trastornos psicóticos no orgánicos(F28)',
    'Psicosis no orgánica sin especificación' ='Psicosis no orgánica sin especificación(F29)',
    'Reacciones a estrés grave y trastornos de adaptación' ='Reacciones a estrés grave y trastornos de adaptación(F43)',
    'Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas' ='Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas(F04)',
    'Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral' ='Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral(F62)',
    'Trastorno bipolar' ='Trastorno bipolar(F31)',
    'Trastorno de ideas delirantes inducidas' ='Trastorno de ideas delirantes inducidas(F24)',
    'Trastorno de la personalidad y del comportamiento del adulto sin especificación' ='Trastorno de la personalidad y del comportamiento del adulto sin especificación(F69)',
    'Trastorno del desarrollo psicológico sin especificación' ='Trastorno del desarrollo psicológico sin especificación(F89)',
    'Trastorno depresivo recurrente' ='Trastorno depresivo recurrente(F33)',
    'Trastorno específico del desarrollo mixto' ='Trastorno específico del desarrollo mixto(F83)',
    'Trastorno esquizotípico.' ='Trastorno esquizotípico.(F21)',
    'Trastorno generalizado del desarrollo sin especificación' ='Trastorno generalizado del desarrollo sin especificación(F849)',
    'Trastorno mental orgánico o sintomático sin especificación' ='Trastorno mental orgánico o sintomático sin especificación(F09)',
    'Trastorno mental sin especificación' ='Trastorno mental sin especificación(F99)',
    'Trastorno obsesivo-compulsivo' ='Trastorno obsesivo-compulsivo(F42)',
    'Trastornos de ideas delirantes persistentes.' ='Trastornos de ideas delirantes persistentes.(F22)',
    'Trastornos de la identidad sexual' ='Trastornos de la identidad sexual(F64)',
    'Trastornos de la inclinación sexual' ='Trastornos de la inclinación sexual(F65)',
    'Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral' ='Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral(F07)',
    'Trastornos de las emociones de comienzo habitual en la infancia' ='Trastornos de las emociones de comienzo habitual en la infancia(F93)',
    'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
    'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación(F59)',
    'Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia' ='Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia(F94)',
    'Trastornos del humor (afectivos) persistentes' ='Trastornos del humor (afectivos) persistentes(F34)',
    'Trastornos disociales' ='Trastornos disociales(F91)',
    'Trastornos disociales y de las emociones mixtos' ='Trastornos disociales y de las emociones mixtos(F92)',
    'Trastornos disociativos (de conversión)' ='Trastornos disociativos (de conversión)(F44)',
    'Trastornos específicos de la personalidad' ='Trastornos específicos de la personalidad(F60)',
    'Trastornos específicos del desarrollo del aprendizaje escolar' ='Trastornos específicos del desarrollo del aprendizaje escolar(F81)',
    'Trastornos esquizoafectivos' ='Trastornos esquizoafectivos(F25)',
    'Trastornos generalizados del desarrollo' ='Trastornos generalizados del desarrollo(F84)',
    'Trastornos Hipercineticos' ='Trastornos Hipercineticos(F90)',
    'Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar' ='Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar(F53)',
    'Trastornos mixtos y otros trastornos de la personalidad' ='Trastornos mixtos y otros trastornos de la personalidad(F61)',
    'Trastornos no orgánicos del sueño' ='Trastornos no orgánicos del sueño(F51)',
    'Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales' ='Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales(F66)',
    'Trastornos psicóticos agudos y transitorios' ='Trastornos psicóticos agudos y transitorios(F23)',
    'Trastornos somatomorfos' ='Trastornos somatomorfos(F45)'))
CONS_C1_df_dup_JUN_2020<-
    CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(x2_dg_trs_psiq_sub_cie_10_or= recode(as.character(x2_dg_trs_psiq_sub_cie_10_or),
                                                                                'Abuso de sustancias que no producen dependencia' ='Abuso de sustancias que no producen dependencia(F55X)',
                                                                                'Delirium no inducido por alcohol u otras sustancias psicotropas' ='Delirium no inducido por alcohol u otras sustancias psicotropas(F059)',
                                                                                'Demencia en enfermedades clasificadas en otro lugar' ='Demencia en enfermedades clasificadas en otro lugar(F02)',
                                                                                'Demencia sin especificación' ='Demencia sin especificación(F03)',
                                                                                'Demencia vascular' ='Demencia vascular(F01)',
                                                                                'Episodios depresivos' ='Episodios depresivos(F32)',
                                                                                'Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar' ='Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar(F54)',
                                                                                'Otros trastornos de ansiedad' ='Otros trastornos de ansiedad(F41)',
                                                                                'Otros trastornos de la personalidad y del comportamiento del adulto' ='Otros trastornos de la personalidad y del comportamiento del adulto(F68)',
                                                                                'Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia' ='Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia(F98)',
                                                                                'Otros trastornos del desarrollo psicológico' ='Otros trastornos del desarrollo psicológico(F88)',
                                                                                'Otros trastornos del humor (afectivos)' ='Otros trastornos del humor (afectivos)(F38)',
                                                                                'Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática' ='Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática(F06)',
                                                                                'Otros trastornos neuróticos' ='Otros trastornos neuróticos(F48)',
                                                                                'Otros trastornos psicóticos no orgánicos' ='Otros trastornos psicóticos no orgánicos(F28)',
                                                                                'Psicosis no orgánica sin especificación' ='Psicosis no orgánica sin especificación(F29)',
                                                                                'Reacciones a estrés grave y trastornos de adaptación' ='Reacciones a estrés grave y trastornos de adaptación(F43)',
                                                                                'Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas' ='Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas(F04)',
                                                                                'Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral' ='Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral(F62)',
                                                                                'Trastorno bipolar' ='Trastorno bipolar(F31)',
                                                                                'Trastorno de ideas delirantes inducidas' ='Trastorno de ideas delirantes inducidas(F24)',
                                                                                'Trastorno de la personalidad y del comportamiento del adulto sin especificación' ='Trastorno de la personalidad y del comportamiento del adulto sin especificación(F69)',
                                                                                'Trastorno del desarrollo psicológico sin especificación' ='Trastorno del desarrollo psicológico sin especificación(F89)',
                                                                                'Trastorno depresivo recurrente' ='Trastorno depresivo recurrente(F33)',
                                                                                'Trastorno específico del desarrollo mixto' ='Trastorno específico del desarrollo mixto(F83)',
                                                                                'Trastorno esquizotípico.' ='Trastorno esquizotípico.(F21)',
                                                                                'Trastorno generalizado del desarrollo sin especificación' ='Trastorno generalizado del desarrollo sin especificación(F849)',
                                                                                'Trastorno mental orgánico o sintomático sin especificación' ='Trastorno mental orgánico o sintomático sin especificación(F09)',
                                                                                'Trastorno mental sin especificación' ='Trastorno mental sin especificación(F99)',
                                                                                'Trastorno obsesivo-compulsivo' ='Trastorno obsesivo-compulsivo(F42)',
                                                                                'Trastornos de ideas delirantes persistentes.' ='Trastornos de ideas delirantes persistentes.(F22)',
                                                                                'Trastornos de la identidad sexual' ='Trastornos de la identidad sexual(F64)',
                                                                                'Trastornos de la inclinación sexual' ='Trastornos de la inclinación sexual(F65)',
                                                                                'Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral' ='Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral(F07)',
                                                                                'Trastornos de las emociones de comienzo habitual en la infancia' ='Trastornos de las emociones de comienzo habitual en la infancia(F93)',
                                                                                'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
                                                                                'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación(F59)',
                                                                                'Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia' ='Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia(F94)',
                                                                                'Trastornos del humor (afectivos) persistentes' ='Trastornos del humor (afectivos) persistentes(F34)',
                                                                                'Trastornos disociales' ='Trastornos disociales(F91)',
                                                                                'Trastornos disociales y de las emociones mixtos' ='Trastornos disociales y de las emociones mixtos(F92)',
                                                                                'Trastornos disociativos (de conversión)' ='Trastornos disociativos (de conversión)(F44)',
                                                                                'Trastornos específicos de la personalidad' ='Trastornos específicos de la personalidad(F60)',
                                                                                'Trastornos específicos del desarrollo del aprendizaje escolar' ='Trastornos específicos del desarrollo del aprendizaje escolar(F81)',
                                                                                'Trastornos esquizoafectivos' ='Trastornos esquizoafectivos(F25)',
                                                                                'Trastornos generalizados del desarrollo' ='Trastornos generalizados del desarrollo(F84)',
                                                                                'Trastornos Hipercineticos' ='Trastornos Hipercineticos(F90)',
                                                                                'Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar' ='Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar(F53)',
                                                                                'Trastornos mixtos y otros trastornos de la personalidad' ='Trastornos mixtos y otros trastornos de la personalidad(F61)',
                                                                                'Trastornos no orgánicos del sueño' ='Trastornos no orgánicos del sueño(F51)',
                                                                                'Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales' ='Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales(F66)',
                                                                                'Trastornos psicóticos agudos y transitorios' ='Trastornos psicóticos agudos y transitorios(F23)',
                                                                                'Trastornos somatomorfos' ='Trastornos somatomorfos(F45)'))
    
CONS_C1_df_dup_JUN_2020<-
  CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(x3_dg_trs_psiq_sub_cie_10_or= recode(as.character(x3_dg_trs_psiq_sub_cie_10_or),
                                                                                   'Abuso de sustancias que no producen dependencia' ='Abuso de sustancias que no producen dependencia(F55X)',
                                                                                   'Delirium no inducido por alcohol u otras sustancias psicotropas' ='Delirium no inducido por alcohol u otras sustancias psicotropas(F059)',
                                                                                   'Demencia en enfermedades clasificadas en otro lugar' ='Demencia en enfermedades clasificadas en otro lugar(F02)',
                                                                                   'Demencia sin especificación' ='Demencia sin especificación(F03)',
                                                                                   'Demencia vascular' ='Demencia vascular(F01)',
                                                                                   'Episodios depresivos' ='Episodios depresivos(F32)',
                                                                                   'Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar' ='Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar(F54)',
                                                                                   'Otros trastornos de ansiedad' ='Otros trastornos de ansiedad(F41)',
                                                                                   'Otros trastornos de la personalidad y del comportamiento del adulto' ='Otros trastornos de la personalidad y del comportamiento del adulto(F68)',
                                                                                   'Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia' ='Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia(F98)',
                                                                                   'Otros trastornos del desarrollo psicológico' ='Otros trastornos del desarrollo psicológico(F88)',
                                                                                   'Otros trastornos del humor (afectivos)' ='Otros trastornos del humor (afectivos)(F38)',
                                                                                   'Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática' ='Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática(F06)',
                                                                                   'Otros trastornos neuróticos' ='Otros trastornos neuróticos(F48)',
                                                                                   'Otros trastornos psicóticos no orgánicos' ='Otros trastornos psicóticos no orgánicos(F28)',
                                                                                   'Psicosis no orgánica sin especificación' ='Psicosis no orgánica sin especificación(F29)',
                                                                                   'Reacciones a estrés grave y trastornos de adaptación' ='Reacciones a estrés grave y trastornos de adaptación(F43)',
                                                                                   'Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas' ='Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas(F04)',
                                                                                   'Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral' ='Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral(F62)',
                                                                                   'Trastorno bipolar' ='Trastorno bipolar(F31)',
                                                                                   'Trastorno de ideas delirantes inducidas' ='Trastorno de ideas delirantes inducidas(F24)',
                                                                                   'Trastorno de la personalidad y del comportamiento del adulto sin especificación' ='Trastorno de la personalidad y del comportamiento del adulto sin especificación(F69)',
                                                                                   'Trastorno del desarrollo psicológico sin especificación' ='Trastorno del desarrollo psicológico sin especificación(F89)',
                                                                                   'Trastorno depresivo recurrente' ='Trastorno depresivo recurrente(F33)',
                                                                                   'Trastorno específico del desarrollo mixto' ='Trastorno específico del desarrollo mixto(F83)',
                                                                                   'Trastorno esquizotípico.' ='Trastorno esquizotípico.(F21)',
                                                                                   'Trastorno generalizado del desarrollo sin especificación' ='Trastorno generalizado del desarrollo sin especificación(F849)',
                                                                                   'Trastorno mental orgánico o sintomático sin especificación' ='Trastorno mental orgánico o sintomático sin especificación(F09)',
                                                                                   'Trastorno mental sin especificación' ='Trastorno mental sin especificación(F99)',
                                                                                   'Trastorno obsesivo-compulsivo' ='Trastorno obsesivo-compulsivo(F42)',
                                                                                   'Trastornos de ideas delirantes persistentes.' ='Trastornos de ideas delirantes persistentes.(F22)',
                                                                                   'Trastornos de la identidad sexual' ='Trastornos de la identidad sexual(F64)',
                                                                                   'Trastornos de la inclinación sexual' ='Trastornos de la inclinación sexual(F65)',
                                                                                   'Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral' ='Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral(F07)',
                                                                                   'Trastornos de las emociones de comienzo habitual en la infancia' ='Trastornos de las emociones de comienzo habitual en la infancia(F93)',
                                                                                   'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
                                                                                   'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación(F59)',
                                                                                   'Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia' ='Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia(F94)',
                                                                                   'Trastornos del humor (afectivos) persistentes' ='Trastornos del humor (afectivos) persistentes(F34)',
                                                                                   'Trastornos disociales' ='Trastornos disociales(F91)',
                                                                                   'Trastornos disociales y de las emociones mixtos' ='Trastornos disociales y de las emociones mixtos(F92)',
                                                                                   'Trastornos disociativos (de conversión)' ='Trastornos disociativos (de conversión)(F44)',
                                                                                   'Trastornos específicos de la personalidad' ='Trastornos específicos de la personalidad(F60)',
                                                                                   'Trastornos específicos del desarrollo del aprendizaje escolar' ='Trastornos específicos del desarrollo del aprendizaje escolar(F81)',
                                                                                   'Trastornos esquizoafectivos' ='Trastornos esquizoafectivos(F25)',
                                                                                   'Trastornos generalizados del desarrollo' ='Trastornos generalizados del desarrollo(F84)',
                                                                                   'Trastornos Hipercineticos' ='Trastornos Hipercineticos(F90)',
                                                                                   'Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar' ='Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar(F53)',
                                                                                   'Trastornos mixtos y otros trastornos de la personalidad' ='Trastornos mixtos y otros trastornos de la personalidad(F61)',
                                                                                   'Trastornos no orgánicos del sueño' ='Trastornos no orgánicos del sueño(F51)',
                                                                                   'Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales' ='Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales(F66)',
                                                                                   'Trastornos psicóticos agudos y transitorios' ='Trastornos psicóticos agudos y transitorios(F23)',
                                                                                   'Trastornos somatomorfos' ='Trastornos somatomorfos(F45)'))
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_

CONS_C1_df_dup_JUN_2020%>%
dplyr::mutate_at(c('dg_trs_psiq_cie_10_or','x2_dg_trs_psiq_cie_10_or','x3_dg_trs_psiq_cie_10_or','x2_dg_trs_psiq_sub_cie_10_or','x3_dg_trs_psiq_sub_cie_10_or','compromiso_biopsicosocial','pais_nacimiento','nacionalidad','dg_trs_psiq_sub_dsm_iv_or','x2_dg_trs_psiq_sub_dsm_iv_or','x3_dg_trs_psiq_sub_dsm_iv_or','dg_trs_psiq_sub_cie_10_or','etnia_cor_2','motivodeegreso_mod_imp','fecha_ultimo_tratamiento','fecha_ultimo_tratamiento','tiene_menores_de_edad_a_cargo'),~as.factor(.)) %>%
  dplyr::group_by(hash_key)%>%
  dplyr::mutate(at_least_one_cont_entry=sum(!is.na(diff_bet_treat)))%>%
  ungroup()%>%
  dplyr::mutate(at_least_one_cont_entry= ifelse(at_least_one_cont_entry>0,1,0))%>%
  dplyr::mutate(menor_45_dias_diff= ifelse(diff_bet_treat<45,1,0))%>%
  dplyr::mutate(at_least_one_cont_entry= recode(as.character(at_least_one_cont_entry),"0"="User with no cont. entry","1"="User with cont. entry"))%>%
  dplyr::mutate(menor_45_dias_diff= recode(as.character(menor_45_dias_diff),"0"=">= 45 Days of Difference Between Entries","1"="<45 Days of Difference Between Entries"))%>%
  dplyr::mutate(menor_60_dias_diff= recode(as.character(menor_60_dias_diff),"0"=">= 60 Days of Difference Between Entries","1"="<60 Days of Difference Between Entries"))%>%
  dplyr::mutate(obs_cambios_ninguno= recode(as.character(obs_cambios_ninguno),"0"="At least 1 Change w/ the Next Entry","1"="No Changes w/ the Next Entry"))%>%
  dplyr::mutate(motivoegreso_derivacion= recode(as.character(motivoegreso_derivacion),"0"="Other causes of discharge","1"="Referral"))%>%
  dplyr::mutate_at(vars(at_least_one_cont_entry,menor_45_dias_diff,menor_60_dias_diff,obs_cambios_ninguno,motivoegreso_derivacion,obs_cambios),~as.factor(.))%>%
  assign("CONS_C1_df_dup_JUN_2020",., envir = .GlobalEnv)
  
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_  
  
codebook::var_label(CONS_C1_df_dup_JUN_2020) <- list(
row= 'Numerador de los eventos presentes en la Base de Datos/Events in the Dataset',
table= 'Origen de los Datos (de los archivos por año)/Source of Data (of files per year)',
hash_key= 'Codificación del RUN/Masked Identifier (RUN)',
ano_bd= 'Año de la Base de Datos/Year of the Dataset (Source)',
id= 'Codigo Identificación de SENDA/SENDA ID',
nombre_centro= 'Nombre del Centro de Tratamiento/Treatment Center',
tipo_centro= 'Tipo de Centro/Type of Center',
region_del_centro= '(original, Recodificado en nombre_region)/',
servicio_de_salud= 'Servicio de Salud/Health Service',
tipo_de_programa= '(original, Recodificado en tipo_de_programa_2)/',
tipo_de_plan= '(original, Recodificado en tipo_de_plan_2)/',
senda= 'SENDA/SENDA',
dias_trat= 'Días de Tratamiento/Days of Treatment',
nmesesentratamiento= 'Número de Meses en Tratamiento/Number of Months in Treatment',
dias_en_senda= 'Días en SENDA/Days in SENDA',
n_meses_en_senda= 'Número de Meses en SENDA/Number of Months in SENDA',
sexo= '(original, Recodificado en sexo_2)/',
edad= 'Edad (número entero)/Age (In years, Discrete Number)',
nombre_usuario= 'Nombre del Usuario (OCULTO y no accesible)/Name of the User (Not Accessible)',
comuna_residencia= '(original, Recodificado en comuna_residencia_cod)/',
origen_de_ingreso= '(original, Recodificado en origen_ingreso)/',
pais_nacimiento= 'País de Nacimiento/Country of Birth',
nacionalidad= 'Nacionalidad/Nationality',
etnia= '(original, recodificado en etnia_cor)/',
estado_conyugal= '(original, Recodificado en estado_conyugal_2)/',
numero_de_hijos= 'Número de Hijos/Number of Children',
num_hijos_ing_trat_res= 'Número de Hijos para Ingreso a Tratamiento Residencial/Number of Children to Residential Treatment',
parentesco_con_el_jefe_de_hogar= '(Sólo presenta valores perdidos)/',
num_trat_ant= 'Número de Tratamientos Anteriores/Number of Previous Treatments',
fecha_ultimo_tratamiento= 'Fecha del Último Tratamiento/Date of the Last Treatment',
sustancia_de_inicio= '(original, Recodificado en sus_ini)/',
edad_inicio_consumo= '(original, Recodificado en edad_ini_cons)/', 
x_se_trata_mujer_emb= 'Mujer Embarazada al Ingreso/Pregnant at Admission',
escolaridad_ultimo_ano_cursado= '(original, Recodificado en escolaridad)/', 
condicion_ocupacional= '(original, Recodificado en estatus_ocupacional)/', 
categoria_ocupacional= '(original, Recodificado en cat_ocupacional)/',
rubro_trabaja= '(original, Recodificado en rubro_trabaja_mod)/',
con_quien_vive= 'Persona con la que vive el Usuario/People that Share Household with the User',
tipo_de_vivienda= '(original, Recodificado en tipo_de_vivienda_mod)/',
tenencia_de_la_vivienda= '(original, Recodificado en tenencia_de_la_vivienda_mod)/',
sustancia_principal= '(original, Recodificado en sus_principal)/',
`otras_sustancias_nº1`= '(original, Recodificado en otras_sus1)/',
`otras_sustancias_nº2`= '(original, Recodificado en otras_sus2)/',
`otras_sustancias_nº3`= '(original, Recodificado en otras_sus3)/',
freq_cons_sus_prin_original= '(original, Recodificado en freq_cons_sus_prin)/',
edad_inicio_sustancia_principal= '(original, Recodificado en edad_ini_sus_prin)/',
via_adm_sus_prin_original= '(original, Recodificado en via_adm_sus_prin)/',
dg_trs_cons_sus_or= 'Diagnósico de Trastorno por Consumo de Sustancias/Diagnosed of Substance Use Disorder',
dg_trs_psiq_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV/Diagnosis of Psychiatric Disorders, DSM-IV criteria',
dg_trs_psiq_sub_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (Subclasificacion)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (sub-classification)',
x2_dg_trs_psiq_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (2)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (2)',
x2_dg_trs_psiq_sub_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (Subclasificacion) (2)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (sub-classification) (2)',
x3_dg_trs_psiq_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (3)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (3)',
x3_dg_trs_psiq_sub_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (Subclasificacion) (3)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (sub-classification) (3)',
dg_trs_psiq_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10/Diagnosis of Psychiatric Disorders, CIE-10 criteria',
dg_trs_psiq_sub_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (Subclasificacion)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (subclassification)',
x2_dg_trs_psiq_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (2)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (2)',
x2_dg_trs_psiq_sub_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (Subclasificacion) (2)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (subclassification) (2)',
x3_dg_trs_psiq_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (3)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (3)',
x3_dg_trs_psiq_sub_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (Subclasificacion) (3)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (subclassification) (3)',
diagnostico_trs_fisico= 'Diagnóstico de Trastorno Físico/Diagnosis of Physical Disorder',
otros_probl_at_sm_or= 'Otros Problemas de Atención Vinculados a Salud Mental/Other problems linked to Mental Health',
compromiso_biopsicosocial= 'Compromiso Biopsicosocial/Biopsychosocial Involvement',
dg_global_nec_int_soc_or= 'Diagnóstico Global de Necesidades de Integración Social (Al Ingreso)/Global Diagnosis of Social Integration (At Admission)',
dg_nec_int_soc_cap_hum_or= 'Diagnóstico de Necesidades de Integración Social en Capital Humano (Al Ingreso)/Global Diagnosis of Social Integration in Human Capital (At Admission)',
dg_nec_int_soc_cap_fis_or= 'Diagnóstico de Necesidades de Integración Social en Capital Físico (Al Ingreso)/Global Diagnosis of Social Integration in Physical Capital (At Admission)',
dg_nec_int_soc_cap_soc_or= 'Diagnóstico de Necesidades de Integración Social en Capital Social (Al Ingreso)/Global Diagnosis of Social Integration in Social Capital (At Admission)',
fech_ing= 'Fecha de Ingreso a Tratamiento/Date of Admission to Treatment',
fecha_ingreso_a_convenio_senda= 'Fecha de Ingreso a Convenio SENDA (aún no formateada como fecha)/Date of Admission to SENDA Agreement',
usuario_tribunal_trat_droga= 'Usuario de modalidad Tribunales de Tratamiento de Drogas/User of Drug Treatment Courts Modality',
consentimiento_informado= 'Consentimiento Informado/Informed Consent',
fech_egres= 'Fecha de Egreso de Tratamiento/Date of Discharge from Treatment',
motivodeegreso= 'Motivo de Egreso/Cause of Discharge',
tipo_centro_derivacion= 'Tipo de Centro al que el Usuario es Derivado/Type of Center of Derivation',
evaluacindelprocesoteraputico= 'Evaluación del Proceso Terapéutico/Evaluation of the Therapeutic Process',
eva_consumo= 'Evaluación al Egreso Respecto al Patrón de consumo/Evaluation at Discharge regarding to Consumption Pattern',
eva_fam= 'Evaluación al Egreso Respecto a Situación Familiar/Evaluation at Discharge regarding to Family Situation',
eva_relinterp= 'Evaluación al Egreso Respecto a Relaciones Interpersonales/Evaluation at Discharge regarding to Interpersonal Relations',
eva_ocupacion= 'Evaluación al Egreso Respecto a Situación Ocupacional/Evaluation at Discharge regarding to Occupational Status',
eva_sm= 'Evaluación al Egreso Respecto a Salud Mental/Evaluation at Discharge regarding to Mental Health',
eva_fisica= 'Evaluación al Egreso Respecto a Salud Física/Evaluation at Discharge regarding to Physical Health',
eva_transgnorma= 'Evaluación al Egreso Respecto a Trasgresión a la Norma Social/Evaluation at Discharge regarding to Transgression to the Norm',
dg_trs_psiq_cie_10_egres_or= '(Sólo presenta valores perdidos)/',
dg_global_nec_int_soc_or_1= 'Diagnóstico Global de Necesidades de Integración Social (Al Egreso)/Global Diagnosis of Social Integration (At Discharge)',
dg_nec_int_soc_cap_hum_or_1= 'Diagnóstico de Necesidades de Integración Social en Capital Humano (Al Egreso)/Global Diagnosis of Social Integration in Human Capital (At Discharge)',
dg_nec_int_soc_cap_fis_or_1= 'Diagnóstico de Necesidades de Integración Social en Capital Físico (Al Egreso)/Global Diagnosis of Social Integration in Physical Capital (At Discharge)',
dg_nec_int_soc_cap_soc_or_1= 'Diagnóstico de Necesidades de Integración Social en Capital Social (Al Egreso)/Global Diagnosis of Social Integration in Social Capital (At Discharge)',
tiene_menores_de_edad_a_cargo= 'Menores de Edad A Cargo/Minor Dependants',
mot_egres_alt_adm_or= 'Motivo de Egreso Alta Administrativa/Cause of Administrative Discharge',
consorcio=  'Sociedades de Tratamiento Servicios de Salud- Fundaciones- entre otras entidades encargadas de los centros/Consortium',
id_centro= 'ID de Centro/Treatment center ID',
ha_estado_embarazada_egreso= '¿Ha estado embarazada? (al Egreso)/Have you been Pregnant (at Discharge)',
identidad_de_genero= 'Identidad de Género/Gender Identity',
discapacidad= 'Presenta Discapacidad/Disability',
hash_rut_completo= 'HASH alternativo, en el escenario en que se asuma que el individuo al que se le codificó el RUN presente mayor edad/Alternative HASH-Key',
opcion_discapacidad= 'Origen de Discapacidad/Cause of Disability',
sexo_2= 'Sexo Usuario/Sex of User',
embarazo= 'Embarazo al Ingreso /Pregnant at Admission',
tipo_de_plan_2= 'Tipo de Plan/Type of Plan',
tipo_de_programa_2= 'Tipo de Programa de Tratamiento/Type of Program',
fech_egres_sin_fmt= 'Fecha de Egreso de Tratamiento (Sin Formato de Fecha)/Date of Discharge',
id_mod= 'ID de SENDA para Presentación en Página Web (enmascara caracteres 5 y 6)/SENDA ID (mask characters 5 & 6)',
ano_nac= 'Año de Nacimiento (numérico)/Year of Birth (numeric)',
fech_ing_ano= 'Año de Ingreso (numérico)/Year of Admission (numeric)',
fech_ing_mes= 'Mes de Ingreso (numérico)/Month of Admission (numeric)',
fech_ing_dia= 'Día de Ingreso (numérico)/Day of Admission (numeric)',
concat= 'ID de SENDA y HASH Concatenado (permite discriminar más de un HASH en un mismo ID)/Combination of SENDA ID & HASH',
obs= 'Observaciones al Proceso de Limpieza y Estandarización de Casos/Observations to the Process of Data Tidying & Standardization',
dias_trat_inv= 'Días de Tratamiento Invertidos (fecha más reciente, menor valor numérico)/Treatment Days (Reversed)',
fech_nac= 'Fecha de Nacimiento/Date of Birth',
edad_al_ing= 'Edad a la Fecha de Ingreso a Tratamiento (numérico continuo)/Age at Admission to Treatment',
edad_ini_cons= 'Edad de Inicio de Consumo/Age of the Onset of Drug Use',
edad_ini_sus_prin=  'Edad de Inicio de Consumo Sustancia Principal/Age of the Onset of Drug Use of Primary Substance',
dias_trat_alta_temprana= 'Días de tratamiento (<90)/Less than 90 days in treatment',
motivodeegreso_mod= 'Motivo de Egreso (con abandono temprano y tardío)/Cause of Discharge (with late and early withdrawal)',
sus_principal= 'Sustancia Principal de Consumo/Primary or Main Substance of Consumption at Admission',
otras_sus1= 'Otras Sustancias (1)/Other Substances (1)',
otras_sus2= 'Otras Sustancias (2)/Other Substances (2)',
otras_sus3= 'Otras Sustancias (3)/Other Substances (3)',
sus_ini= 'Sustancia de Inicio/Starting Substance',
estado_conyugal_2= 'Estado Conyugal/Marital Status',
estatus_ocupacional= 'Condición Ocupacional/Occupational Status',
cat_ocupacional= 'Categoría Ocupacional/Occupational Category',
edad_grupos= 'Edad agrupada/Age in groups',
origen_ingreso= "(modificado en origen_ingreso_mod)/",
escolaridad= 'Escolaridad: Nivel Eduacional/Educational Attainment',
via_adm_sus_prin= 'Vía de Administración de la Sustancia Principal/Route of Administration of the Primary or Main Substance',
freq_cons_sus_prin= 'Frecuencia de Consumo de la Sustancia Principal (30 días previos a la admisión)/Frequency of Consumption of the Primary or Main Substance (30 days previous to admission)',
dias_trat_knn_imp= 'Días de Tratamiento (Imputados KNN)/Days of Treatment (Imputed KNN)',
fech_egres_knn_imp= 'Fecha de Egreso (Imputados KNN)/Date of Discharge (Imputed KNN)',
dias_trat_alta_temprana_knn_imp= 'Días de Tratamiento con Alta Temprana (<90) (Imputados KNN)/Days of Treatment w Early Withdrawal (Imputed KNN)',
fech_egres_imp= 'Fecha de Egreso (Imputados KNN & Lógico)/Date of Discharge (Imputed KNN & Logic)',
motivodeegreso_imp= 'Motivo de Egreso(Imputados KNN & Lógico)/Cause of Discharge (Imputed KNN & Logic)',
motivodeegreso_mod_imp= 'Motivo de Egreso (con abandono temprano y tardío)(Imputados KNN & Lógico)/Cause of Discharge (with late and early withdrawal)(Imputed KNN & Logic)',
dias_trat_imp= 'Días de Tratamiento (Imputados KNN & Lógico)/Days of Treatment (Imputed KNN & Logic)', 
dias_trat_alta_temprana_imp= 'Días de Tratamiento con Alta Temprana (<90) (Imputados KNN & Lógico)/Days of Treatment w Early Withdrawal (Imputed KNN & Logic)',
via_adm_sus_prin_act= 'Vía de Administración de la Sustancia Principal (Se aplicaron criterios de limpieza)/Route of Administration of the Primary or Main Substance (Tidy)',
etnia_cor= 'Etnia/Ethnic Group',
nacionalidad_2= 'Segunda Nacionalidad/Second Nationality',
etnia_cor_2= 'Etnia (2)/Second Ethnic Group',
sus_ini_2= 'Segunda Sustancia de Inicio/Second Starting Substance',
sus_ini_3= 'Tercera Sustancia de Inicio/Third Starting Substance',
concat_hash_sus_prin= 'Combination of User & Primary Substance',
macrozona= "Macrozona/Macrozones",
nombre_region= " Región del Centro/Chilean Region of the Center",
comuna_residencia_cod= "Comuna de Residencia/Municipality or District of Residence",
sus_ini_mod= "Sustancia de Inicio (Sólo más frecuentes)/Starting Substance (Only more frequent)",
sus_principal_mod= 'Sustancia Principal de Consumo (Sólo más frecuentes)/Primary or Main Substance of Consumption at Admission (Only more frequent)',
origen_ingreso_mod= 'Origen de Ingreso/Motive of Admission to Treatment',
tipo_de_vivienda_mod= 'Tipo de Vivienda/Type of Housing', 
tenencia_de_la_vivienda_mod= 'Tenencia de la Vivienda/Tenure status of Households',
rubro_trabaja_mod= 'Rubro de Trabajo/Area of Work',
edad_al_ing_grupos= 'Edad a la Fecha de Ingreso a Tratamiento en Grupos/Age at Admission to Treatment In Groups',
menor_60_dias_diff= 'Menor a 60 días de diferencia con el registro posterior/Menor a 60 days of difference between the next entry',
menor_45_dias_diff= 'Menor a 45 días de diferencia con el registro posterior/Less than 45 days of difference between the next entry',
diff_bet_treat= 'Días de diferencia con el registro posterior/Days of difference between the next entry',
id_centro_sig_trat= "ID del Centro del registro posterior/Center ID of the Next Treatment",
tipo_plan_sig_trat= "Tipo de Plan del registro posterior/Type of Plan of the Next Entry",
tipo_programa_sig_trat= "Tipo de Programa del registro posterior/Type of Program of the Next Entry", 
senda_sig_trat= "SENDA del registro posterior/SENDA of the Next Entry",
motivoegreso_derivacion= "Motivo de Egreso= Derivación/Cause of Discharge= Derivación",
obs_cambios= "Cambios del tratamiento en comparación al registro posterior/Changes in treatment compared to the Next Entry",
obs_cambios_ninguno= "Sin cambios del tratamiento en comparación al registro posterior/No changes in treatment compared to the Next Entry",
obs_cambios_num= "Recuento de cambios del tratamiento en comparación al registro posterior/Count of changes in treatment compared to the Next Entry",
obs_cambios_fac= "Recuento de cambios del tratamiento en comparación al registro posterior(factor)/Count of changes in treatment compared to the Next Entry(factor)",
at_least_one_cont_entry= "Casos de Usuarios con más de una entrada después de otra/Cases of users with more than one entry after another one"
)

time_after_dedup3<-Sys.time()

paste0("Time in markdown: ");time_after_dedup3-time_before_dedup3
[1] "Time in markdown: "
Time difference of 4.735676 hours
CONS_C1_df_dup_JUN_2020 %>%
  dplyr::arrange(hash_key, desc(fech_ing)) %>% 
  rio::export(file = paste0(path,"/CONS_C1_df_dup_JUN_2020.dta"))
#save.image("G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/6.RData")
save.image(paste0(path,"/6.RData"))
# #####to_export_labels
# table_labels<-
#   tibble::rownames_to_column(data.frame(Hmisc::label(CONS_C1_df_dup_JUN_2020))) %>% data.frame() %>%
#   dplyr::rename("code" = !!names(.[1]), "label" = !!names(.[2])) %>% data.frame() %>%
#   dplyr::mutate(first= "cap label variable")%>%
#   dplyr::mutate(final= paste0(first, " ",code,' "',label,'"'))%>%
#   dplyr::select(-code,-label,-first)%>%
#   rbind('cap save "G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/CONS_C1_df_dup_JUN_2020.dta", replace')%>%
#   rbind('cap drop id id_mod nombre_centro consentimiento_informado')%>%
#   rbind('cap save "G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/CONS_C1_df_dup_JUN_2020_exp.dta", replace')
# 
# table_labels<-
#   data.frame(final='use "G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/CONS_C1_df_dup_JUN_2020.dta", clear')%>%
#   rbind(table_labels)%>%
#   rename("*final"="final")
#   #write.csv2(table_labels,"__labels_to_stata_C1_jun_2020.do",row.names =F)
#   write.table(table_labels, file = "G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/SUD_CL/_label_var_to_stata.do", sep = "",
#             row.names = FALSE, quote = FALSE,fileEncoding="UTF-8")

# dplyr::filter(label!="") %>%
#  bind_rows(data.frame("code"=c("fech_egres_imp", 
##                                "dias_trat_imp",
#                                "dias_trat_alta_temprana_imp",
#                                "motivodeegreso_mod_imp"), "label"=c("Date of Discharge (Imputed)", 
##                                                                     "Days of Treatment (Imputed)",
#                                                                     "Days of Treatment for Early Withdrawal (Imputed)",
#                                                                     "Cause of Discharge w/ Early or Late Withdrawal (Imputed)"))) %>% 

#Agregar nuevas variables al codebook
#hacer codebook
#Agregar procesos a strobe
#Poner olr y arriba pondría los otros modelos.

export_lab_stata<-
  tibble::rownames_to_column(data.frame(Hmisc::label(CONS_C1_df_dup_JUN_2020)))%>% data.frame() %>%
  dplyr::rename("code" = !!names(.[1]), "label" = !!names(.[2]))%>% data.frame()%>%
  dplyr::mutate(first= "cap noi label variable")%>%
  dplyr::mutate(final= paste0(first, " ",code,' "',label,'"'))%>%
  dplyr::select(-code,-label,-first)%>%
  dplyr::rename("*clear all"="final") %>% 
  rbind(paste0('cap noi save "', gsub('/', '\\', path, fixed=T),'\\CONS_C1_df_dup_JUN_2020.dta", replace'))%>%
  rbind('cap noi drop id id_mod nombre_centro consentimiento_informado')%>%
  rbind('cap noi drop id id_mod nombre_centro')%>%
  rbind(paste0('cap noi save "', gsub('/', '\\', path, fixed=T),'\\CONS_C1_df_dup_JUN_2020_exp.dta", replace'))

rbind(paste0('cap noi use "', gsub('/', '\\', path, fixed=T),'\\CONS_C1_df_dup_JUN_2020.dta", clear'),export_lab_stata) %>% knitr::kable("html") %>% 
    kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size =10) %>% 
  kableExtra::scroll_box(width = "100%", height = "375px")
*clear all
cap noi use “C:Fondecytunidad (github)_C1_df_dup_JUN_2020.dta”, clear
cap noi label variable row “Numerador de los eventos presentes en la Base de Datos/Events in the Dataset”
cap noi label variable table “Origen de los Datos (de los archivos por año)/Source of Data (of files per year)”
cap noi label variable hash_key “Codificación del RUN/Masked Identifier (RUN)”
cap noi label variable ano_bd “Año de la Base de Datos/Year of the Dataset (Source)”
cap noi label variable id “Codigo Identificación de SENDA/SENDA ID”
cap noi label variable nombre_centro “Nombre del Centro de Tratamiento/Treatment Center”
cap noi label variable tipo_centro “Tipo de Centro/Type of Center”
cap noi label variable region_del_centro “(original, Recodificado en nombre_region)/”
cap noi label variable servicio_de_salud “Servicio de Salud/Health Service”
cap noi label variable tipo_de_programa “(original, Recodificado en tipo_de_programa_2)/”
cap noi label variable tipo_de_plan “(original, Recodificado en tipo_de_plan_2)/”
cap noi label variable senda “SENDA/SENDA”
cap noi label variable dias_trat “Días de Tratamiento/Days of Treatment”
cap noi label variable nmesesentratamiento “Número de Meses en Tratamiento/Number of Months in Treatment”
cap noi label variable dias_en_senda “Días en SENDA/Days in SENDA”
cap noi label variable n_meses_en_senda “Número de Meses en SENDA/Number of Months in SENDA”
cap noi label variable sexo “(original, Recodificado en sexo_2)/”
cap noi label variable edad “Edad (número entero)/Age (In years, Discrete Number)”
cap noi label variable nombre_usuario “Nombre del Usuario (OCULTO y no accesible)/Name of the User (Not Accessible)”
cap noi label variable comuna_residencia “(original, Recodificado en comuna_residencia_cod)/”
cap noi label variable origen_de_ingreso “(original, Recodificado en origen_ingreso)/”
cap noi label variable pais_nacimiento “País de Nacimiento/Country of Birth”
cap noi label variable nacionalidad “Nacionalidad/Nationality”
cap noi label variable etnia “(original, recodificado en etnia_cor)/”
cap noi label variable estado_conyugal “(original, Recodificado en estado_conyugal_2)/”
cap noi label variable numero_de_hijos “Número de Hijos/Number of Children”
cap noi label variable num_hijos_ing_trat_res “Número de Hijos para Ingreso a Tratamiento Residencial/Number of Children to Residential Treatment”
cap noi label variable parentesco_con_el_jefe_de_hogar “(Sólo presenta valores perdidos)/”
cap noi label variable num_trat_ant “Número de Tratamientos Anteriores/Number of Previous Treatments”
cap noi label variable fecha_ultimo_tratamiento “Fecha del Último Tratamiento/Date of the Last Treatment”
cap noi label variable sustancia_de_inicio “(original, Recodificado en sus_ini)/”
cap noi label variable edad_inicio_consumo “(original, Recodificado en edad_ini_cons)/”
cap noi label variable x_se_trata_mujer_emb “Mujer Embarazada al Ingreso/Pregnant at Admission”
cap noi label variable escolaridad_ultimo_ano_cursado “(original, Recodificado en escolaridad)/”
cap noi label variable condicion_ocupacional “(original, Recodificado en estatus_ocupacional)/”
cap noi label variable categoria_ocupacional “(original, Recodificado en cat_ocupacional)/”
cap noi label variable rubro_trabaja “(original, Recodificado en rubro_trabaja_mod)/”
cap noi label variable con_quien_vive “Persona con la que vive el Usuario/People that Share Household with the User”
cap noi label variable tipo_de_vivienda “(original, Recodificado en tipo_de_vivienda_mod)/”
cap noi label variable tenencia_de_la_vivienda “(original, Recodificado en tenencia_de_la_vivienda_mod)/”
cap noi label variable sustancia_principal “(original, Recodificado en sus_principal)/”
cap noi label variable otras_sustancias_nº1 “(original, Recodificado en otras_sus1)/”
cap noi label variable otras_sustancias_nº2 “(original, Recodificado en otras_sus2)/”
cap noi label variable otras_sustancias_nº3 “(original, Recodificado en otras_sus3)/”
cap noi label variable freq_cons_sus_prin_original “(original, Recodificado en freq_cons_sus_prin)/”
cap noi label variable edad_inicio_sustancia_principal “(original, Recodificado en edad_ini_sus_prin)/”
cap noi label variable via_adm_sus_prin_original “(original, Recodificado en via_adm_sus_prin)/”
cap noi label variable dg_trs_cons_sus_or “Diagnósico de Trastorno por Consumo de Sustancias/Diagnosed of Substance Use Disorder”
cap noi label variable dg_trs_psiq_dsm_iv_or “Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV/Diagnosis of Psychiatric Disorders, DSM-IV criteria”
cap noi label variable dg_trs_psiq_sub_dsm_iv_or “Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (Subclasificacion)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (sub-classification)”
cap noi label variable x2_dg_trs_psiq_dsm_iv_or “Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (2)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (2)”
cap noi label variable x2_dg_trs_psiq_sub_dsm_iv_or “Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (Subclasificacion) (2)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (sub-classification) (2)”
cap noi label variable x3_dg_trs_psiq_dsm_iv_or “Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (3)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (3)”
cap noi label variable x3_dg_trs_psiq_sub_dsm_iv_or “Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (Subclasificacion) (3)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (sub-classification) (3)”
cap noi label variable dg_trs_psiq_cie_10_or “Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10/Diagnosis of Psychiatric Disorders, CIE-10 criteria”
cap noi label variable dg_trs_psiq_sub_cie_10_or “Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (Subclasificacion)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (subclassification)”
cap noi label variable x2_dg_trs_psiq_cie_10_or “Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (2)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (2)”
cap noi label variable x2_dg_trs_psiq_sub_cie_10_or “Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (Subclasificacion) (2)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (subclassification) (2)”
cap noi label variable x3_dg_trs_psiq_cie_10_or “Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (3)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (3)”
cap noi label variable x3_dg_trs_psiq_sub_cie_10_or “Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (Subclasificacion) (3)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (subclassification) (3)”
cap noi label variable diagnostico_trs_fisico “Diagnóstico de Trastorno Físico/Diagnosis of Physical Disorder”
cap noi label variable otros_probl_at_sm_or “Otros Problemas de Atención Vinculados a Salud Mental/Other problems linked to Mental Health”
cap noi label variable compromiso_biopsicosocial “Compromiso Biopsicosocial/Biopsychosocial Involvement”
cap noi label variable dg_global_nec_int_soc_or “Diagnóstico Global de Necesidades de Integración Social (Al Ingreso)/Global Diagnosis of Social Integration (At Admission)”
cap noi label variable dg_nec_int_soc_cap_hum_or “Diagnóstico de Necesidades de Integración Social en Capital Humano (Al Ingreso)/Global Diagnosis of Social Integration in Human Capital (At Admission)”
cap noi label variable dg_nec_int_soc_cap_fis_or “Diagnóstico de Necesidades de Integración Social en Capital Físico (Al Ingreso)/Global Diagnosis of Social Integration in Physical Capital (At Admission)”
cap noi label variable dg_nec_int_soc_cap_soc_or “Diagnóstico de Necesidades de Integración Social en Capital Social (Al Ingreso)/Global Diagnosis of Social Integration in Social Capital (At Admission)”
cap noi label variable fech_ing “Fecha de Ingreso a Tratamiento/Date of Admission to Treatment”
cap noi label variable fecha_ingreso_a_convenio_senda “Fecha de Ingreso a Convenio SENDA (aún no formateada como fecha)/Date of Admission to SENDA Agreement”
cap noi label variable usuario_tribunal_trat_droga “Usuario de modalidad Tribunales de Tratamiento de Drogas/User of Drug Treatment Courts Modality”
cap noi label variable consentimiento_informado “Consentimiento Informado/Informed Consent”
cap noi label variable fech_egres “Fecha de Egreso de Tratamiento/Date of Discharge from Treatment”
cap noi label variable motivodeegreso “Motivo de Egreso/Cause of Discharge”
cap noi label variable tipo_centro_derivacion “Tipo de Centro al que el Usuario es Derivado/Type of Center of Derivation”
cap noi label variable evaluacindelprocesoteraputico “Evaluación del Proceso Terapéutico/Evaluation of the Therapeutic Process”
cap noi label variable eva_consumo “Evaluación al Egreso Respecto al Patrón de consumo/Evaluation at Discharge regarding to Consumption Pattern”
cap noi label variable eva_fam “Evaluación al Egreso Respecto a Situación Familiar/Evaluation at Discharge regarding to Family Situation”
cap noi label variable eva_relinterp “Evaluación al Egreso Respecto a Relaciones Interpersonales/Evaluation at Discharge regarding to Interpersonal Relations”
cap noi label variable eva_ocupacion “Evaluación al Egreso Respecto a Situación Ocupacional/Evaluation at Discharge regarding to Occupational Status”
cap noi label variable eva_sm “Evaluación al Egreso Respecto a Salud Mental/Evaluation at Discharge regarding to Mental Health”
cap noi label variable eva_fisica “Evaluación al Egreso Respecto a Salud Física/Evaluation at Discharge regarding to Physical Health”
cap noi label variable eva_transgnorma “Evaluación al Egreso Respecto a Trasgresión a la Norma Social/Evaluation at Discharge regarding to Transgression to the Norm”
cap noi label variable dg_trs_psiq_cie_10_egres_or “(Sólo presenta valores perdidos)/”
cap noi label variable dg_global_nec_int_soc_or_1 “Diagnóstico Global de Necesidades de Integración Social (Al Egreso)/Global Diagnosis of Social Integration (At Discharge)”
cap noi label variable dg_nec_int_soc_cap_hum_or_1 “Diagnóstico de Necesidades de Integración Social en Capital Humano (Al Egreso)/Global Diagnosis of Social Integration in Human Capital (At Discharge)”
cap noi label variable dg_nec_int_soc_cap_fis_or_1 “Diagnóstico de Necesidades de Integración Social en Capital Físico (Al Egreso)/Global Diagnosis of Social Integration in Physical Capital (At Discharge)”
cap noi label variable dg_nec_int_soc_cap_soc_or_1 “Diagnóstico de Necesidades de Integración Social en Capital Social (Al Egreso)/Global Diagnosis of Social Integration in Social Capital (At Discharge)”
cap noi label variable tiene_menores_de_edad_a_cargo “Menores de Edad A Cargo/Minor Dependants”
cap noi label variable mot_egres_alt_adm_or “Motivo de Egreso Alta Administrativa/Cause of Administrative Discharge”
cap noi label variable consorcio “Sociedades de Tratamiento Servicios de Salud- Fundaciones- entre otras entidades encargadas de los centros/Consortium”
cap noi label variable id_centro “ID de Centro/Treatment center ID”
cap noi label variable ha_estado_embarazada_egreso “¿Ha estado embarazada? (al Egreso)/Have you been Pregnant (at Discharge)”
cap noi label variable identidad_de_genero “Identidad de Género/Gender Identity”
cap noi label variable discapacidad “Presenta Discapacidad/Disability”
cap noi label variable hash_rut_completo “HASH alternativo, en el escenario en que se asuma que el individuo al que se le codificó el RUN presente mayor edad/Alternative HASH-Key”
cap noi label variable opcion_discapacidad “Origen de Discapacidad/Cause of Disability”
cap noi label variable sexo_2 “Sexo Usuario/Sex of User”
cap noi label variable embarazo “Embarazo al Ingreso /Pregnant at Admission”
cap noi label variable tipo_de_plan_2 “Tipo de Plan/Type of Plan”
cap noi label variable tipo_de_programa_2 “Tipo de Programa de Tratamiento/Type of Program”
cap noi label variable fech_egres_sin_fmt “Fecha de Egreso de Tratamiento (Sin Formato de Fecha)/Date of Discharge”
cap noi label variable id_mod “ID de SENDA para Presentación en Página Web (enmascara caracteres 5 y 6)/SENDA ID (mask characters 5 & 6)”
cap noi label variable ano_nac “Año de Nacimiento (numérico)/Year of Birth (numeric)”
cap noi label variable fech_ing_ano “Año de Ingreso (numérico)/Year of Admission (numeric)”
cap noi label variable fech_ing_mes “Mes de Ingreso (numérico)/Month of Admission (numeric)”
cap noi label variable fech_ing_dia “Día de Ingreso (numérico)/Day of Admission (numeric)”
cap noi label variable concat “ID de SENDA y HASH Concatenado (permite discriminar más de un HASH en un mismo ID)/Combination of SENDA ID & HASH”
cap noi label variable obs “Observaciones al Proceso de Limpieza y Estandarización de Casos/Observations to the Process of Data Tidying & Standardization”
cap noi label variable dias_trat_inv “Días de Tratamiento Invertidos (fecha más reciente, menor valor numérico)/Treatment Days (Reversed)”
cap noi label variable fech_nac “Fecha de Nacimiento/Date of Birth”
cap noi label variable edad_al_ing “Edad a la Fecha de Ingreso a Tratamiento (numérico continuo)/Age at Admission to Treatment”
cap noi label variable edad_ini_cons “Edad de Inicio de Consumo/Age of the Onset of Drug Use”
cap noi label variable edad_ini_sus_prin “Edad de Inicio de Consumo Sustancia Principal/Age of the Onset of Drug Use of Primary Substance”
cap noi label variable dias_trat_alta_temprana “Días de tratamiento (<90)/Less than 90 days in treatment”
cap noi label variable motivodeegreso_mod “Motivo de Egreso (con abandono temprano y tardío)/Cause of Discharge (with late and early withdrawal)”
cap noi label variable sus_principal “Sustancia Principal de Consumo/Primary or Main Substance of Consumption at Admission”
cap noi label variable otras_sus1 “Otras Sustancias (1)/Other Substances (1)”
cap noi label variable otras_sus2 “Otras Sustancias (2)/Other Substances (2)”
cap noi label variable otras_sus3 “Otras Sustancias (3)/Other Substances (3)”
cap noi label variable sus_ini “Sustancia de Inicio/Starting Substance”
cap noi label variable estado_conyugal_2 “Estado Conyugal/Marital Status”
cap noi label variable estatus_ocupacional “Condición Ocupacional/Occupational Status”
cap noi label variable cat_ocupacional “Categoría Ocupacional/Occupational Category”
cap noi label variable edad_grupos “Edad agrupada/Age in groups”
cap noi label variable origen_ingreso “(modificado en origen_ingreso_mod)/”
cap noi label variable escolaridad “Escolaridad: Nivel Eduacional/Educational Attainment”
cap noi label variable via_adm_sus_prin “Vía de Administración de la Sustancia Principal/Route of Administration of the Primary or Main Substance”
cap noi label variable freq_cons_sus_prin “Frecuencia de Consumo de la Sustancia Principal (30 días previos a la admisión)/Frequency of Consumption of the Primary or Main Substance (30 days previous to admission)”
cap noi label variable dias_trat_knn_imp “Días de Tratamiento (Imputados KNN)/Days of Treatment (Imputed KNN)”
cap noi label variable fech_egres_knn_imp “Fecha de Egreso (Imputados KNN)/Date of Discharge (Imputed KNN)”
cap noi label variable dias_trat_alta_temprana_knn_imp “Días de Tratamiento con Alta Temprana (<90) (Imputados KNN)/Days of Treatment w Early Withdrawal (Imputed KNN)”
cap noi label variable fech_egres_imp “Fecha de Egreso (Imputados KNN & Lógico)/Date of Discharge (Imputed KNN & Logic)”
cap noi label variable motivodeegreso_imp “Motivo de Egreso(Imputados KNN & Lógico)/Cause of Discharge (Imputed KNN & Logic)”
cap noi label variable motivodeegreso_mod_imp “Motivo de Egreso (con abandono temprano y tardío)(Imputados KNN & Lógico)/Cause of Discharge (with late and early withdrawal)(Imputed KNN & Logic)”
cap noi label variable dias_trat_imp “Días de Tratamiento (Imputados KNN & Lógico)/Days of Treatment (Imputed KNN & Logic)”
cap noi label variable dias_trat_alta_temprana_imp “Días de Tratamiento con Alta Temprana (<90) (Imputados KNN & Lógico)/Days of Treatment w Early Withdrawal (Imputed KNN & Logic)”
cap noi label variable via_adm_sus_prin_act “Vía de Administración de la Sustancia Principal (Se aplicaron criterios de limpieza)/Route of Administration of the Primary or Main Substance (Tidy)”
cap noi label variable etnia_cor “Etnia/Ethnic Group”
cap noi label variable nacionalidad_2 “Segunda Nacionalidad/Second Nationality”
cap noi label variable etnia_cor_2 “Etnia (2)/Second Ethnic Group”
cap noi label variable sus_ini_2 “Segunda Sustancia de Inicio/Second Starting Substance”
cap noi label variable sus_ini_3 “Tercera Sustancia de Inicio/Third Starting Substance”
cap noi label variable concat_hash_sus_prin “Combination of User & Primary Substance”
cap noi label variable macrozona “Macrozona/Macrozones”
cap noi label variable nombre_region ” Región del Centro/Chilean Region of the Center”
cap noi label variable comuna_residencia_cod “Comuna de Residencia/Municipality or District of Residence”
cap noi label variable sus_ini_mod “Sustancia de Inicio (Sólo más frecuentes)/Starting Substance (Only more frequent)”
cap noi label variable sus_principal_mod “Sustancia Principal de Consumo (Sólo más frecuentes)/Primary or Main Substance of Consumption at Admission (Only more frequent)”
cap noi label variable origen_ingreso_mod “Origen de Ingreso/Motive of Admission to Treatment”
cap noi label variable tipo_de_vivienda_mod “Tipo de Vivienda/Type of Housing”
cap noi label variable tenencia_de_la_vivienda_mod “Tenencia de la Vivienda/Tenure status of Households”
cap noi label variable rubro_trabaja_mod “Rubro de Trabajo/Area of Work”
cap noi label variable edad_al_ing_grupos “Edad a la Fecha de Ingreso a Tratamiento en Grupos/Age at Admission to Treatment In Groups”
cap noi label variable numero_de_hijos_mod “”
cap noi label variable num_hijos_trat_res_mod “”
cap noi label variable menor_60_dias_diff “Menor a 60 días de diferencia con el registro posterior/Menor a 60 days of difference between the next entry”
cap noi label variable diff_bet_treat “Días de diferencia con el registro posterior/Days of difference between the next entry”
cap noi label variable id_centro_sig_trat “ID del Centro del registro posterior/Center ID of the Next Treatment”
cap noi label variable tipo_plan_sig_trat “Tipo de Plan del registro posterior/Type of Plan of the Next Entry”
cap noi label variable tipo_programa_sig_trat “Tipo de Programa del registro posterior/Type of Program of the Next Entry”
cap noi label variable senda_sig_trat “SENDA del registro posterior/SENDA of the Next Entry”
cap noi label variable motivoegreso_derivacion “Motivo de Egreso= Derivación/Cause of Discharge= Derivación”
cap noi label variable obs_cambios “Cambios del tratamiento en comparación al registro posterior/Changes in treatment compared to the Next Entry”
cap noi label variable obs_cambios_ninguno “Sin cambios del tratamiento en comparación al registro posterior/No changes in treatment compared to the Next Entry”
cap noi label variable obs_cambios_num “Recuento de cambios del tratamiento en comparación al registro posterior/Count of changes in treatment compared to the Next Entry”
cap noi label variable obs_cambios_fac “Recuento de cambios del tratamiento en comparación al registro posterior(factor)/Count of changes in treatment compared to the Next Entry(factor)”
cap noi label variable at_least_one_cont_entry “Casos de Usuarios con más de una entrada después de otra/Cases of users with more than one entry after another one”
cap noi label variable menor_45_dias_diff “Menor a 45 días de diferencia con el registro posterior/Less than 45 days of difference between the next entry”
cap noi save “C:Fondecytunidad (github)_C1_df_dup_JUN_2020.dta”, replace
cap noi drop id id_mod nombre_centro consentimiento_informado
cap noi drop id id_mod nombre_centro
cap noi save “C:Fondecytunidad (github)_C1_df_dup_JUN_2020_exp.dta”, replace
write.table(rbind(paste0('cap noi use "', gsub('/', '\\', path, fixed=T),'\\CONS_C1_df_dup_JUN_2020.dta", clear'),export_lab_stata), file = paste0(path,"/SUD_CL/_label_var_to_stata.do"), sep = "",row.names = FALSE, quote = FALSE, fileEncoding="UTF-8")


*should be in the same folder of the .Rmd to work
cap noi do _label_var_to_stata.do
. *should be in the same folder of the .Rmd to w. cap noi do _label_var_to_stata.do

. *clear all
. cap noi use "C:\Users\CISS Fondecyt\Mi unidad\Alvacast\SISTRAT 2019 (github)\
> CONS_C1_df_dup_JUN_2020.dta", clear

. cap noi label variable row "Numerador de los eventos presentes en la Base de 
> Datos/Events in the Dataset"

. cap noi label variable table "Origen de los Datos (de los archivos por año)/S
> ource of Data (of files per year)"

. cap noi label variable hash_key "Codificación del RUN/Masked Identifier (RUN)
> "

. cap noi label variable ano_bd "Año de la Base de Datos/Year of the Dataset (S
> ource)"

. cap noi label variable id "Codigo Identificación de SENDA/SENDA ID"

. cap noi label variable nombre_centro "Nombre del Centro de Tratamiento/Treatm
> ent Center"

. cap noi label variable tipo_centro "Tipo de Centro/Type of Center"

. cap noi label variable region_del_centro "(original, Recodificado en nombre_r
> egion)/"

. cap noi label variable servicio_de_salud "Servicio de Salud/Health Service"

. cap noi label variable tipo_de_programa "(original, Recodificado en tipo_de_p
> rograma_2)/"

. cap noi label variable tipo_de_plan "(original, Recodificado en tipo_de_plan_
> 2)/"

. cap noi label variable senda "SENDA/SENDA"

. cap noi label variable dias_trat "Días de Tratamiento/Days of Treatment"

. cap noi label variable nmesesentratamiento "Número de Meses en Tratamiento/Nu
> mber of Months in Treatment"

. cap noi label variable dias_en_senda "Días en SENDA/Days in SENDA"

. cap noi label variable n_meses_en_senda "Número de Meses en SENDA/Number of M
> onths in SENDA"

. cap noi label variable sexo "(original, Recodificado en sexo_2)/"

. cap noi label variable edad "Edad (número entero)/Age (In years, Discrete Num
> ber)"

. cap noi label variable nombre_usuario "Nombre del Usuario (OCULTO y no accesi
> ble)/Name of the User (Not Accessible)"

. cap noi label variable comuna_residencia "(original, Recodificado en comuna_r
> esidencia_cod)/"

. cap noi label variable origen_de_ingreso "(original, Recodificado en origen_i
> ngreso)/"

. cap noi label variable pais_nacimiento "País de Nacimiento/Country of Birth"

. cap noi label variable nacionalidad "Nacionalidad/Nationality"

. cap noi label variable etnia "(original, recodificado en etnia_cor)/"

. cap noi label variable estado_conyugal "(original, Recodificado en estado_con
> yugal_2)/"

. cap noi label variable numero_de_hijos "Número de Hijos/Number of Children"

. cap noi label variable num_hijos_ing_trat_res "Número de Hijos para Ingreso a
>  Tratamiento Residencial/Number of Children to Residential Treatment"
note: label truncated to 80 characters

. cap noi label variable parentesco_con_el_jefe_de_hogar "(Sólo presenta valore
> s perdidos)/"

. cap noi label variable num_trat_ant "Número de Tratamientos Anteriores/Number
>  of Previous Treatments"

. cap noi label variable fecha_ultimo_tratamiento "Fecha del Último Tratamiento
> /Date of the Last Treatment"

. cap noi label variable sustancia_de_inicio "(original, Recodificado en sus_in
> i)/"

. cap noi label variable edad_inicio_consumo "(original, Recodificado en edad_i
> ni_cons)/"

. cap noi label variable x_se_trata_mujer_emb "Mujer Embarazada al Ingreso/Preg
> nant at Admission"

. cap noi label variable escolaridad_ultimo_ano_cursado "(original, Recodificad
> o en escolaridad)/"

. cap noi label variable condicion_ocupacional "(original, Recodificado en esta
> tus_ocupacional)/"

. cap noi label variable categoria_ocupacional "(original, Recodificado en cat_
> ocupacional)/"

. cap noi label variable rubro_trabaja "(original, Recodificado en rubro_trabaj
> a_mod)/"

. cap noi label variable con_quien_vive "Persona con la que vive el Usuario/Peo
> ple that Share Household with the User"

. cap noi label variable tipo_de_vivienda "(original, Recodificado en tipo_de_v
> ivienda_mod)/"

. cap noi label variable tenencia_de_la_vivienda "(original, Recodificado en te
> nencia_de_la_vivienda_mod)/"

. cap noi label variable sustancia_principal "(original, Recodificado en sus_pr
> incipal)/"

. cap noi label variable otras_sustancias_nº1 "(original, Recodificado en otras
> _sus1)/"

. cap noi label variable otras_sustancias_nº2 "(original, Recodificado en otras
> _sus2)/"

. cap noi label variable otras_sustancias_nº3 "(original, Recodificado en otras
> _sus3)/"

. cap noi label variable freq_cons_sus_prin_original "(original, Recodificado e
> n freq_cons_sus_prin)/"

. cap noi label variable edad_inicio_sustancia_principal "(original, Recodifica
> do en edad_ini_sus_prin)/"

. cap noi label variable via_adm_sus_prin_original "(original, Recodificado en 
> via_adm_sus_prin)/"

. cap noi label variable dg_trs_cons_sus_or "Diagnósico de Trastorno por Consum
> o de Sustancias/Diagnosed of Substance Use Disorder"
note: label truncated to 80 characters

. cap noi label variable dg_trs_psiq_dsm_iv_or "Diagnóstico de Trastorno Psiqui
> átrico, Criterios DSM IV/Diagnosis of Psychiatric Disorders, DSM-IV criteria"
note: label truncated to 80 characters

. cap noi label variable dg_trs_psiq_sub_dsm_iv_or "Diagnóstico de Trastorno Ps
> iquiátrico, Criterios DSM IV (Subclasificacion)/Diagnosis of Psychiatric Diso
> rders, DSM-IV criteria (sub-classification)"
note: label truncated to 80 characters

. cap noi label variable x2_dg_trs_psiq_dsm_iv_or "Diagnóstico de Trastorno Psi
> quiátrico, Criterios DSM IV (2)/Diagnosis of Psychiatric Disorders, DSM-IV cr
> iteria (2)"
note: label truncated to 80 characters

. cap noi label variable x2_dg_trs_psiq_sub_dsm_iv_or "Diagnóstico de Trastorno
>  Psiquiátrico, Criterios DSM IV (Subclasificacion) (2)/Diagnosis of Psychiatr
> ic Disorders, DSM-IV criteria (sub-classification) (2)"
note: label truncated to 80 characters

. cap noi label variable x3_dg_trs_psiq_dsm_iv_or "Diagnóstico de Trastorno Psi
> quiátrico, Criterios DSM IV (3)/Diagnosis of Psychiatric Disorders, DSM-IV cr
> iteria (3)"
note: label truncated to 80 characters

. cap noi label variable x3_dg_trs_psiq_sub_dsm_iv_or "Diagnóstico de Trastorno
>  Psiquiátrico, Criterios DSM IV (Subclasificacion) (3)/Diagnosis of Psychiatr
> ic Disorders, DSM-IV criteria (sub-classification) (3)"
note: label truncated to 80 characters

. cap noi label variable dg_trs_psiq_cie_10_or "Diagnóstico de Trastorno Psiqui
> átrico, Criterios CIE-10/Diagnosis of Psychiatric Disorders, CIE-10 criteria"
note: label truncated to 80 characters

. cap noi label variable dg_trs_psiq_sub_cie_10_or "Diagnóstico de Trastorno Ps
> iquiátrico, Criterios CIE-10 (Subclasificacion)/Diagnosis of Psychiatric Diso
> rders, CIE-10 criteria (subclassification)"
note: label truncated to 80 characters

. cap noi label variable x2_dg_trs_psiq_cie_10_or "Diagnóstico de Trastorno Psi
> quiátrico, Criterios CIE-10 (2)/Diagnosis of Psychiatric Disorders, CIE-10 cr
> iteria (2)"
note: label truncated to 80 characters

. cap noi label variable x2_dg_trs_psiq_sub_cie_10_or "Diagnóstico de Trastorno
>  Psiquiátrico, Criterios CIE-10 (Subclasificacion) (2)/Diagnosis of Psychiatr
> ic Disorders, CIE-10 criteria (subclassification) (2)"
note: label truncated to 80 characters

. cap noi label variable x3_dg_trs_psiq_cie_10_or "Diagnóstico de Trastorno Psi
> quiátrico, Criterios CIE-10 (3)/Diagnosis of Psychiatric Disorders, CIE-10 cr
> iteria (3)"
note: label truncated to 80 characters

. cap noi label variable x3_dg_trs_psiq_sub_cie_10_or "Diagnóstico de Trastorno
>  Psiquiátrico, Criterios CIE-10 (Subclasificacion) (3)/Diagnosis of Psychiatr
> ic Disorders, CIE-10 criteria (subclassification) (3)"
note: label truncated to 80 characters

. cap noi label variable diagnostico_trs_fisico "Diagnóstico de Trastorno Físic
> o/Diagnosis of Physical Disorder"

. cap noi label variable otros_probl_at_sm_or "Otros Problemas de Atención Vinc
> ulados a Salud Mental/Other problems linked to Mental Health"
note: label truncated to 80 characters

. cap noi label variable compromiso_biopsicosocial "Compromiso Biopsicosocial/B
> iopsychosocial Involvement"

. cap noi label variable dg_global_nec_int_soc_or "Diagnóstico Global de Necesi
> dades de Integración Social (Al Ingreso)/Global Diagnosis of Social Integrati
> on (At Admission)"
note: label truncated to 80 characters

. cap noi label variable dg_nec_int_soc_cap_hum_or "Diagnóstico de Necesidades 
> de Integración Social en Capital Humano (Al Ingreso)/Global Diagnosis of Soci
> al Integration in Human Capital (At Admission)"
note: label truncated to 80 characters

. cap noi label variable dg_nec_int_soc_cap_fis_or "Diagnóstico de Necesidades 
> de Integración Social en Capital Físico (Al Ingreso)/Global Diagnosis of Soci
> al Integration in Physical Capital (At Admission)"
note: label truncated to 80 characters

. cap noi label variable dg_nec_int_soc_cap_soc_or "Diagnóstico de Necesidades 
> de Integración Social en Capital Social (Al Ingreso)/Global Diagnosis of Soci
> al Integration in Social Capital (At Admission)"
note: label truncated to 80 characters

. cap noi label variable fech_ing "Fecha de Ingreso a Tratamiento/Date of Admis
> sion to Treatment"

. cap noi label variable fecha_ingreso_a_convenio_senda "Fecha de Ingreso a Con
> venio SENDA (aún no formateada como fecha)/Date of Admission to SENDA Agreeme
> nt"
note: label truncated to 80 characters

. cap noi label variable usuario_tribunal_trat_droga "Usuario de modalidad Trib
> unales de Tratamiento de Drogas/User of Drug Treatment Courts Modality"
note: label truncated to 80 characters

. cap noi label variable consentimiento_informado "Consentimiento Informado/Inf
> ormed Consent"

. cap noi label variable fech_egres "Fecha de Egreso de Tratamiento/Date of Dis
> charge from Treatment"

. cap noi label variable motivodeegreso "Motivo de Egreso/Cause of Discharge"

. cap noi label variable tipo_centro_derivacion "Tipo de Centro al que el Usuar
> io es Derivado/Type of Center of Derivation"

. cap noi label variable evaluacindelprocesoteraputico "Evaluación del Proceso 
> Terapéutico/Evaluation of the Therapeutic Process"

. cap noi label variable eva_consumo "Evaluación al Egreso Respecto al Patrón d
> e consumo/Evaluation at Discharge regarding to Consumption Pattern"
note: label truncated to 80 characters

. cap noi label variable eva_fam "Evaluación al Egreso Respecto a Situación Fam
> iliar/Evaluation at Discharge regarding to Family Situation"
note: label truncated to 80 characters

. cap noi label variable eva_relinterp "Evaluación al Egreso Respecto a Relacio
> nes Interpersonales/Evaluation at Discharge regarding to Interpersonal Relati
> ons"
note: label truncated to 80 characters

. cap noi label variable eva_ocupacion "Evaluación al Egreso Respecto a Situaci
> ón Ocupacional/Evaluation at Discharge regarding to Occupational Status"
note: label truncated to 80 characters

. cap noi label variable eva_sm "Evaluación al Egreso Respecto a Salud Mental/E
> valuation at Discharge regarding to Mental Health"
note: label truncated to 80 characters

. cap noi label variable eva_fisica "Evaluación al Egreso Respecto a Salud Físi
> ca/Evaluation at Discharge regarding to Physical Health"
note: label truncated to 80 characters

. cap noi label variable eva_transgnorma "Evaluación al Egreso Respecto a Trasg
> resión a la Norma Social/Evaluation at Discharge regarding to Transgression t
> o the Norm"
note: label truncated to 80 characters

. cap noi label variable dg_trs_psiq_cie_10_egres_or "(Sólo presenta valores pe
> rdidos)/"

. cap noi label variable dg_global_nec_int_soc_or_1 "Diagnóstico Global de Nece
> sidades de Integración Social (Al Egreso)/Global Diagnosis of Social Integrat
> ion (At Discharge)"
note: label truncated to 80 characters

. cap noi label variable dg_nec_int_soc_cap_hum_or_1 "Diagnóstico de Necesidade
> s de Integración Social en Capital Humano (Al Egreso)/Global Diagnosis of Soc
> ial Integration in Human Capital (At Discharge)"
note: label truncated to 80 characters

. cap noi label variable dg_nec_int_soc_cap_fis_or_1 "Diagnóstico de Necesidade
> s de Integración Social en Capital Físico (Al Egreso)/Global Diagnosis of Soc
> ial Integration in Physical Capital (At Discharge)"
note: label truncated to 80 characters

. cap noi label variable dg_nec_int_soc_cap_soc_or_1 "Diagnóstico de Necesidade
> s de Integración Social en Capital Social (Al Egreso)/Global Diagnosis of Soc
> ial Integration in Social Capital (At Discharge)"
note: label truncated to 80 characters

. cap noi label variable tiene_menores_de_edad_a_cargo "Menores de Edad A Cargo
> /Minor Dependants"

. cap noi label variable mot_egres_alt_adm_or "Motivo de Egreso Alta Administra
> tiva/Cause of Administrative Discharge"

. cap noi label variable consorcio "Sociedades de Tratamiento Servicios de Salu
> d- Fundaciones- entre otras entidades encargadas de los centros/Consortium"
note: label truncated to 80 characters

. cap noi label variable id_centro "ID de Centro/Treatment center ID"

. cap noi label variable ha_estado_embarazada_egreso "¿Ha estado embarazada? (a
> l Egreso)/Have you been Pregnant (at Discharge)"

. cap noi label variable identidad_de_genero "Identidad de Género/Gender Identi
> ty"

. cap noi label variable discapacidad "Presenta Discapacidad/Disability"

. cap noi label variable hash_rut_completo "HASH alternativo, en el escenario e
> n que se asuma que el individuo al que se le codificó el RUN presente mayor e
> dad/Alternative HASH-Key"
note: label truncated to 80 characters

. cap noi label variable opcion_discapacidad "Origen de Discapacidad/Cause of D
> isability"

. cap noi label variable sexo_2 "Sexo Usuario/Sex of User"

. cap noi label variable embarazo "Embarazo al Ingreso /Pregnant at Admission"

. cap noi label variable tipo_de_plan_2 "Tipo de Plan/Type of Plan"

. cap noi label variable tipo_de_programa_2 "Tipo de Programa de Tratamiento/Ty
> pe of Program"

. cap noi label variable fech_egres_sin_fmt "Fecha de Egreso de Tratamiento (Si
> n Formato de Fecha)/Date of Discharge"

. cap noi label variable id_mod "ID de SENDA para Presentación en Página Web (e
> nmascara caracteres 5 y 6)/SENDA ID (mask characters 5 & 6)"
note: label truncated to 80 characters

. cap noi label variable ano_nac "Año de Nacimiento (numérico)/Year of Birth (n
> umeric)"

. cap noi label variable fech_ing_ano "Año de Ingreso (numérico)/Year of Admiss
> ion (numeric)"

. cap noi label variable fech_ing_mes "Mes de Ingreso (numérico)/Month of Admis
> sion (numeric)"

. cap noi label variable fech_ing_dia "Día de Ingreso (numérico)/Day of Admissi
> on (numeric)"

. cap noi label variable concat "ID de SENDA y HASH Concatenado (permite discri
> minar más de un HASH en un mismo ID)/Combination of SENDA ID & HASH"
note: label truncated to 80 characters

. cap noi label variable obs "Observaciones al Proceso de Limpieza y Estandariz
> ación de Casos/Observations to the Process of Data Tidying & Standardization"
note: label truncated to 80 characters

. cap noi label variable dias_trat_inv "Días de Tratamiento Invertidos (fecha m
> ás reciente, menor valor numérico)/Treatment Days (Reversed)"
note: label truncated to 80 characters

. cap noi label variable fech_nac "Fecha de Nacimiento/Date of Birth"

. cap noi label variable edad_al_ing "Edad a la Fecha de Ingreso a Tratamiento 
> (numérico continuo)/Age at Admission to Treatment"
note: label truncated to 80 characters

. cap noi label variable edad_ini_cons "Edad de Inicio de Consumo/Age of the On
> set of Drug Use"

. cap noi label variable edad_ini_sus_prin "Edad de Inicio de Consumo Sustancia
>  Principal/Age of the Onset of Drug Use of Primary Substance"
note: label truncated to 80 characters

. cap noi label variable dias_trat_alta_temprana "Días de tratamiento (<90)/Les
> s than 90 days in treatment"

. cap noi label variable motivodeegreso_mod "Motivo de Egreso (con abandono tem
> prano y tardío)/Cause of Discharge (with late and early withdrawal)"
note: label truncated to 80 characters

. cap noi label variable sus_principal "Sustancia Principal de Consumo/Primary 
> or Main Substance of Consumption at Admission"
note: label truncated to 80 characters

. cap noi label variable otras_sus1 "Otras Sustancias (1)/Other Substances (1)"

. cap noi label variable otras_sus2 "Otras Sustancias (2)/Other Substances (2)"

. cap noi label variable otras_sus3 "Otras Sustancias (3)/Other Substances (3)"

. cap noi label variable sus_ini "Sustancia de Inicio/Starting Substance"

. cap noi label variable estado_conyugal_2 "Estado Conyugal/Marital Status"

. cap noi label variable estatus_ocupacional "Condición Ocupacional/Occupationa
> l Status"

. cap noi label variable cat_ocupacional "Categoría Ocupacional/Occupational Ca
> tegory"

. cap noi label variable edad_grupos "Edad agrupada/Age in groups"

. cap noi label variable origen_ingreso "(modificado en origen_ingreso_mod)/"

. cap noi label variable escolaridad "Escolaridad: Nivel Eduacional/Educational
>  Attainment"

. cap noi label variable via_adm_sus_prin "Vía de Administración de la Sustanci
> a Principal/Route of Administration of the Primary or Main Substance"
note: label truncated to 80 characters

. cap noi label variable freq_cons_sus_prin "Frecuencia de Consumo de la Sustan
> cia Principal (30 días previos a la admisión)/Frequency of Consumption of the
>  Primary or Main Substance (30 days previous to admission)"
note: label truncated to 80 characters

. cap noi label variable dias_trat_knn_imp "Días de Tratamiento (Imputados KNN)
> /Days of Treatment (Imputed KNN)"

. cap noi label variable fech_egres_knn_imp "Fecha de Egreso (Imputados KNN)/Da
> te of Discharge (Imputed KNN)"

. cap noi label variable dias_trat_alta_temprana_knn_imp "Días de Tratamiento c
> on Alta Temprana (<90) (Imputados KNN)/Days of Treatment w Early Withdrawal (
> Imputed KNN)"
note: label truncated to 80 characters

. cap noi label variable fech_egres_imp "Fecha de Egreso (Imputados KNN & Lógic
> o)/Date of Discharge (Imputed KNN & Logic)"

. cap noi label variable motivodeegreso_imp "Motivo de Egreso(Imputados KNN & L
> ógico)/Cause of Discharge (Imputed KNN & Logic)"
note: label truncated to 80 characters

. cap noi label variable motivodeegreso_mod_imp "Motivo de Egreso (con abandono
>  temprano y tardío)(Imputados KNN & Lógico)/Cause of Discharge (with late and
>  early withdrawal)(Imputed KNN & Logic)"
note: label truncated to 80 characters

. cap noi label variable dias_trat_imp "Días de Tratamiento (Imputados KNN & Ló
> gico)/Days of Treatment (Imputed KNN & Logic)"
note: label truncated to 80 characters

. cap noi label variable dias_trat_alta_temprana_imp "Días de Tratamiento con A
> lta Temprana (<90) (Imputados KNN & Lógico)/Days of Treatment w Early Withdra
> wal (Imputed KNN & Logic)"
note: label truncated to 80 characters

. cap noi label variable via_adm_sus_prin_act "Vía de Administración de la Sust
> ancia Principal (Se aplicaron criterios de limpieza)/Route of Administration 
> of the Primary or Main Substance (Tidy)"
note: label truncated to 80 characters

. cap noi label variable etnia_cor "Etnia/Ethnic Group"

. cap noi label variable nacionalidad_2 "Segunda Nacionalidad/Second Nationalit
> y"

. cap noi label variable etnia_cor_2 "Etnia (2)/Second Ethnic Group"

. cap noi label variable sus_ini_2 "Segunda Sustancia de Inicio/Second Starting
>  Substance"

. cap noi label variable sus_ini_3 "Tercera Sustancia de Inicio/Third Starting 
> Substance"

. cap noi label variable concat_hash_sus_prin "Combination of User & Primary Su
> bstance"

. cap noi label variable macrozona "Macrozona/Macrozones"

. cap noi label variable nombre_region " Región del Centro/Chilean Region of th
> e Center"

. cap noi label variable comuna_residencia_cod "Comuna de Residencia/Municipali
> ty or District of Residence"

. cap noi label variable sus_ini_mod "Sustancia de Inicio (Sólo más frecuentes)
> /Starting Substance (Only more frequent)"
note: label truncated to 80 characters

. cap noi label variable sus_principal_mod "Sustancia Principal de Consumo (Sól
> o más frecuentes)/Primary or Main Substance of Consumption at Admission (Only
>  more frequent)"
note: label truncated to 80 characters

. cap noi label variable origen_ingreso_mod "Origen de Ingreso/Motive of Admiss
> ion to Treatment"

. cap noi label variable tipo_de_vivienda_mod "Tipo de Vivienda/Type of Housing
> "

. cap noi label variable tenencia_de_la_vivienda_mod "Tenencia de la Vivienda/T
> enure status of Households"

. cap noi label variable rubro_trabaja_mod "Rubro de Trabajo/Area of Work"

. cap noi label variable edad_al_ing_grupos "Edad a la Fecha de Ingreso a Trata
> miento en Grupos/Age at Admission to Treatment In Groups"
note: label truncated to 80 characters

. cap noi label variable numero_de_hijos_mod ""

. cap noi label variable num_hijos_trat_res_mod ""

. cap noi label variable menor_60_dias_diff "Menor a 60 días de diferencia con 
> el registro posterior/Menor a 60 days of difference between the next entry"
note: label truncated to 80 characters

. cap noi label variable diff_bet_treat "Días de diferencia con el registro pos
> terior/Days of difference between the next entry"
note: label truncated to 80 characters

. cap noi label variable id_centro_sig_trat "ID del Centro del registro posteri
> or/Center ID of the Next Treatment"

. cap noi label variable tipo_plan_sig_trat "Tipo de Plan del registro posterio
> r/Type of Plan of the Next Entry"

. cap noi label variable tipo_programa_sig_trat "Tipo de Programa del registro 
> posterior/Type of Program of the Next Entry"

. cap noi label variable senda_sig_trat "SENDA del registro posterior/SENDA of 
> the Next Entry"

. cap noi label variable motivoegreso_derivacion "Motivo de Egreso= Derivación/
> Cause of Discharge= Derivación"

. cap noi label variable obs_cambios "Cambios del tratamiento en comparación al
>  registro posterior/Changes in treatment compared to the Next Entry"
note: label truncated to 80 characters

. cap noi label variable obs_cambios_ninguno "Sin cambios del tratamiento en co
> mparación al registro posterior/No changes in treatment compared to the Next 
> Entry"
note: label truncated to 80 characters

. cap noi label variable obs_cambios_num "Recuento de cambios del tratamiento e
> n comparación al registro posterior/Count of changes in treatment compared to
>  the Next Entry"
note: label truncated to 80 characters

. cap noi label variable obs_cambios_fac "Recuento de cambios del tratamiento e
> n comparación al registro posterior(factor)/Count of changes in treatment com
> pared to the Next Entry(factor)"
note: label truncated to 80 characters

. cap noi label variable at_least_one_cont_entry "Casos de Usuarios con más de 
> una entrada después de otra/Cases of users with more than one entry after ano
> ther one"
note: label truncated to 80 characters

. cap noi label variable menor_45_dias_diff "Menor a 45 días de diferencia con 
> el registro posterior/Less than 45 days of difference between the next entry"
note: label truncated to 80 characters

. cap noi save "C:\Users\CISS Fondecyt\Mi unidad\Alvacast\SISTRAT 2019 (github)
> \CONS_C1_df_dup_JUN_2020.dta", replace
file C:\Users\CISS Fondecyt\Mi unidad\Alvacast\SISTRAT 2019 (github)\CONS_C1_df
> _dup_JUN_2020.dta saved

. cap noi drop id id_mod nombre_centro consentimiento_informado

. cap noi drop id id_mod nombre_centro
id ambiguous abbreviation

. cap noi save "C:\Users\CISS Fondecyt\Mi unidad\Alvacast\SISTRAT 2019 (github)
> \CONS_C1_df_dup_JUN_2020_exp.dta", replace
file C:\Users\CISS Fondecyt\Mi unidad\Alvacast\SISTRAT 2019 (github)\CONS_C1_df
> _dup_JUN_2020_exp.dta saved

. 
end of do-file



sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042)

Matrix products: default

locale:
[1] LC_COLLATE=Spanish_Chile.1252  LC_CTYPE=Spanish_Chile.1252   
[3] LC_MONETARY=Spanish_Chile.1252 LC_NUMERIC=C                  
[5] LC_TIME=Spanish_Chile.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] DT_0.14                    gdtools_0.2.2             
 [3] radiant_1.3.2              radiant.multivariate_1.3.6
 [5] radiant.model_1.3.12       radiant.basics_1.3.4      
 [7] radiant.design_1.3.5       mvtnorm_1.1-1             
 [9] radiant.data_1.3.9         lubridate_1.7.9           
[11] magrittr_1.5               choroplethrAdmin1_1.1.1   
[13] choroplethrMaps_1.0.1      acs_2.1.4                 
[15] XML_3.99-0.3               dplyr_1.0.0               
[17] tidylog_1.0.1              treemapify_2.5.3          
[19] ggiraph_0.7.0              chilemapas_0.2            
[21] sf_0.9-3                   finalfit_1.0.1            
[23] lsmeans_2.30-0             emmeans_1.4.7             
[25] RColorBrewer_1.1-2         panelr_0.7.3              
[27] lme4_1.1-23                Matrix_1.2-18             
[29] data.table_1.12.8          codebook_0.9.2            
[31] Statamarkdown_0.4.5        devtools_2.3.0            
[33] usethis_1.6.1              sqldf_0.4-11              
[35] RSQLite_2.2.0              gsubfn_0.7                
[37] proto_1.0.0                broom_0.7.12              
[39] zoo_1.8-8                  rbokeh_0.5.1              
[41] janitor_2.0.1              plotly_4.9.2.1            
[43] kableExtra_1.1.0           Hmisc_4.4-0               
[45] Formula_1.2-3              survival_3.2-3            
[47] lattice_0.20-41            ggplot2_3.3.2             
[49] stringr_1.4.0              stringi_1.4.6             
[51] tidyr_1.1.0                knitr_1.29                
[53] matrixStats_0.56.0         boot_1.3-28               
[55] here_0.1                  

loaded via a namespace (and not attached):
  [1] estimability_1.3        jqr_1.1.0               coda_0.19-4            
  [4] acepack_1.4.1           bit64_0.9-7             multcomp_1.4-13        
  [7] rpart_4.1-15            generics_0.0.2          callr_3.7.0            
 [10] TH.data_1.0-10          mice_3.9.0              ggfittext_0.9.0        
 [13] DiagrammeR_1.0.6.1.9000 chron_2.3-55            bit_1.1-15.2           
 [16] webshot_0.5.2           xml2_1.3.2              httpuv_1.5.4           
 [19] assertthat_0.2.1        gower_0.2.2             xfun_0.29              
 [22] hms_0.5.3               jquerylib_0.1.4         data.tree_0.7.11       
 [25] evaluate_0.14           promises_1.1.1          readxl_1.3.1           
 [28] randomizr_0.20.0        DBI_1.1.0               tmvnsim_1.0-2          
 [31] htmlwidgets_1.5.1       jsonvalidate_1.1.0      purrr_0.3.4            
 [34] ellipsis_0.3.1          import_1.1.0            crosstalk_1.1.0.1      
 [37] backports_1.1.8         V8_3.1.0                markdown_1.1           
 [40] pwr_1.3-0               vctrs_0.3.1             remotes_2.4.2          
 [43] abind_1.4-5             withr_2.4.3             pryr_0.1.4             
 [46] checkmate_2.0.0         ggmap_3.0.0             prettyunits_1.1.1      
 [49] mnormt_2.0.0            cluster_2.1.0           lazyeval_0.2.2         
 [52] clustMixType_0.2-15     crayon_1.3.4            crul_0.9.0             
 [55] labeling_0.3            pkgconfig_2.0.3         units_0.6-6            
 [58] nlme_3.1-148            pkgload_1.1.0           nnet_7.3-14            
 [61] rlang_1.0.1             RJSONIO_1.3-1.4         lifecycle_0.2.0        
 [64] sandwich_2.5-1          polycor_0.7-10          httpcode_0.3.0         
 [67] cellranger_1.1.0        tcltk_4.0.2             rprojroot_1.3-2        
 [70] shinyFiles_0.8.0.9003   carData_3.0-5           geojsonio_0.9.2        
 [73] base64enc_0.1-3         processx_3.5.2          rjson_0.2.20           
 [76] png_0.1-7               viridisLite_0.3.0       clisymbols_1.2.0       
 [79] bitops_1.0-7            KernSmooth_2.23-17      visNetwork_2.0.9       
 [82] geojson_0.3.2           pander_0.6.3            blob_1.2.2             
 [85] classInt_0.4-3          maptools_1.0-1          readr_1.3.1            
 [88] jpeg_0.1-8.1            shinyAce_0.4.1          scales_1.1.1           
 [91] memoise_1.1.0           plyr_1.8.6              hexbin_1.28.1          
 [94] compiler_4.0.2          snakecase_0.11.0        cli_3.1.1              
 [97] patchwork_1.0.1         ps_1.3.3                htmlTable_2.0.0        
[100] MASS_7.3-51.6           tidyselect_1.1.0        forcats_0.5.0          
[103] highr_0.8               jtools_2.0.5            yaml_2.2.1             
[106] latticeExtra_0.6-29     ggrepel_0.8.2           grid_4.0.2             
[109] tools_4.0.2             rmapshaper_0.4.4        rio_0.5.16             
[112] parallel_4.0.2          RgoogleMaps_1.4.5.3     rstudioapi_0.11        
[115] uuid_0.1-4              GPArotation_2014.11-1   foreign_0.8-80         
[118] NeuralNetTools_1.5.2    gridExtra_2.3           pdp_0.7.0              
[121] gistr_0.5.0             farver_2.0.3            rgeos_0.5-3            
[124] digest_0.6.25           shiny_1.5.0             geojsonlint_0.4.0      
[127] Rcpp_1.0.4.6            car_3.0-12              later_1.1.0.1          
[130] writexl_1.3             httr_1.4.2              WDI_2.6.0              
[133] psych_1.9.12.31         colorspace_1.4-1        rvest_0.3.5            
[136] fs_1.4.2                ranger_0.12.1           splines_4.0.2          
[139] statmod_1.4.34          sp_1.4-2                xgboost_1.1.1.1        
[142] sessioninfo_1.1.1       systemfonts_0.2.3       xtable_1.8-4           
[145] jsonlite_1.7.0          nloptr_1.2.2.1          AlgDesign_1.2.0        
[148] testthat_2.3.2          R6_2.4.1                pillar_1.4.6           
[151] htmltools_0.5.2         mime_0.9                glue_1.4.1             
[154] fastmap_1.1.0           minqa_1.2.4             class_7.3-17           
[157] codetools_0.2-18        maps_3.3.0              pkgbuild_1.1.0         
[160] tibble_3.0.1            curl_4.3                zip_2.0.4              
[163] openxlsx_4.1.5          rmarkdown_2.11          desc_1.2.0             
[166] munsell_0.5.0           e1071_1.7-3             labelled_2.5.0         
[169] haven_2.3.1             reshape2_1.4.4          gtable_0.3.0