R/buildData_T1DM.R

Defines functions FunCovar_T1 buildFollowUp_T1 transformToFlat_T1 buildData_T1

Documented in buildData_T1 buildFollowUp_T1 FunCovar_T1 transformToFlat_T1

#' Build a Covariate Data for cohort
#'
#' @param cdm_bbdd A connection for a OMOP database via DatabaseConnector
#' @param cdm_schema A name for OMOP schema
#' @param results_sc A name for result schema
#' @param cohortTable A name of the result cohort
#' @param acohortId A Cohort number
#'
#' @return A covariateData object
#' @export
#'
#' @importFrom rlang .data
#'
#' @examples
#' # Not yet
buildData_T1 <- function(cdm_bbdd,
                         cdm_schema,
                         results_sc,
                         cohortTable,
                         acohortId = 1){
  covDemo <- FeatureExtraction::createCovariateSettings(
    useDemographicsGender = TRUE,
    useDemographicsAge = TRUE)

  BMI_conceptId <- c(3038553, 40762638) #LOINC
  height_conceptId <- c(3036277, 3015514) #LOINC
  weight_conceptId <- c(3025315) #LOINC
  covMeasValueAny <- FeatureExtraction::createCovariateSettings(
    useMeasurementValueAnyTimePrior = TRUE,
    # useMeasurementValueShortTerm = TRUE,
    # shortTermStartDays = 3*30,
    endDays = 365.25,
    includedCovariateConceptIds = c(BMI_conceptId,
                                    height_conceptId,
                                    weight_conceptId),
    addDescendantsToInclude = TRUE)

  SBP_conceptId <- c(3004249, #LOINC
                     4152194) #SNOMED
  DBP_conceptId <- c(3012888, #LOINC
                     4154790) #SNOMED
  cT_conceptId <- c(3019900, 3027114) #LOINC
  cHDL_conceptId <- c(3011884, 3007070, 3023602) #LOINC
  cLDL_conceptId <- c(3028437, 3001308) #LOINC
  cVLDL_conceptId <- c(3022487) #LOINC
  Tg_conceptId <- c(3022192, 42868692)  #LOINC
  glu_conceptId <- c(3004501,
                     46235168, 40757523, 3005834, 40757527, 3016567, 40757528, 40757529,
                     40757627, 40757628,
                     3018251, 46236948,
                     3015024, 3036895, 3001022, 3016701, 3018582, 3008799, 3045700,
                     3020491) #LOINC
  alt_conceptId <- c(3006923, 46235106)
  CRP_conceptId <- c(3020460) #LOINC
  ferritin_conceptId <- c(3001122) #LOINC
  WBC_conceptId <- c(3010813) #LOINC
  neutrophils_conceptId <- c(3017732, 3046321, 43055364) #LOINC
  basophils_conceptId <- c(3006315, 43055368) #LOINC
  eosinophils_conceptId <- c(3013115, 43055367) #LOINC
  monocytes_conceptId <- c(3001604, 43055365) #LOINC
  lymphocytes_conceptId <- c(3019198, 43055366) #LOINC
  HbA1c_conceptId <- c(3034639, 3004410) #LOINC
  creatinine_conceptId <- c(3016723)
  albumin_ser_conceptId <- c(3024561)
  CKDEPI_conceptId <- c(40764999)
  GOT_conceptId <- c(3010587)
  GGT_conceptId <- c(3026910)
  vitD_conceptId <- c(43055034)
  PEPTIDCs_conceptId <- c(3010084)
  hemoglobin_conceptId <- c(3000963)
  covMeasValueLong <- FeatureExtraction::createCovariateSettings(
    useMeasurementValueLongTerm = TRUE,
    longTermStartDays = 3*30,
    endDays = 365.25,
    includedCovariateConceptIds = c(
      SBP_conceptId,
      DBP_conceptId,
      # cT_conceptId,
      # cHDL_conceptId,
      # cLDL_conceptId,
      # cVLDL_conceptId,
      # Tg_conceptId,
      glu_conceptId,
      alt_conceptId,
      CRP_conceptId,
      ferritin_conceptId,
      WBC_conceptId,
      neutrophils_conceptId,
      basophils_conceptId,
      eosinophils_conceptId,
      monocytes_conceptId,
      lymphocytes_conceptId,
      HbA1c_conceptId,
      creatinine_conceptId,
      albumin_ser_conceptId,
      CKDEPI_conceptId,
      GOT_conceptId,
      GGT_conceptId,
      vitD_conceptId,
      PEPTIDCs_conceptId,
      hemoglobin_conceptId),
    addDescendantsToInclude = TRUE)
  covMeasValue_lipid <- FeatureExtraction::createTemporalCovariateSettings(
    useMeasurementValue = TRUE,
    temporalStartDays = c(-2, 1, 3/12)*365.25,
    temporalEndDays = c(0, 2, 1)*365.25,
    includedCovariateConceptIds = c(
      cT_conceptId,
      cHDL_conceptId,
      cLDL_conceptId,
      cVLDL_conceptId,
      Tg_conceptId),
    addDescendantsToInclude = TRUE)

  T2DM_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 111,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 111,
                      analysisName = "T2DM",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(201826, 443732, 40482801, 40485020),
    addDescendantsToInclude = TRUE)

  obesity_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 112,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 112,
                      analysisName = "Obesity",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(433736),
    addDescendantsToInclude = TRUE)

  angor_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 113,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 113,
                      analysisName = "Angina pectoris",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(#I20
      321318, #Angina pectoris
      315296, #Preinfarction syndrome
      4127089), #Coronary artery spasm,
    addDescendantsToInclude = FALSE)

  ami_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 114,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 114,
                      analysisName = "AMI",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(312327, #Acute myocardial infarction
                                    4296653, #Acute ST segment elevation myocardial infarction
                                    45766075, #Acute anterior ST segment elevation myocardial infarction
                                    45766116, #Acute ST segment elevation myocardial infarction of inferior wall
                                    4296653, #Acute ST segment elevation myocardial infarction
                                    4270024, #Acute non-ST segment elevation myocardial infarction
                                    4329847, #Myocardial infarction
                                    #I22
                                    4108217, #Subsequent myocardial infarction
                                    4108677, #Subsequent myocardial infarction of anterior wall
                                    4108218, #Subsequent myocardial infarction of inferior wall
                                    45766241, #Subsequent non-ST segment elevation myocardial infarction
                                    45766114, #Subsequent ST segment elevation myocardial infarction
                                    #I23
                                    4108678, #Hemopericardium due to and following acute myocardial infarction
                                    438172, #Atrial septal defect due to and following acute myocardial infarction
                                    4119953, #Post-infarction ventricular septal defect
                                    4108679, #Rupture of cardiac wall without hemopericardium as current complication following acute myocardial infarction
                                    4108219, #Rupture of chordae tendinae due to and following acute myocardial infarction
                                    4108220, #Rupture of papillary muscle as current complication following acute myocardial infarction
                                    4108680, #Thrombosis of atrium, auricular appendage, and ventricle due to and following acute myocardial infarction
                                    4198141, #Post infarct angina
                                    # Altres
                                    434376, #Acute myocardial infarction of anterior wall
                                    438170, #	Acute myocardial infarction of inferior wall
                                    4176969, #Sequelae of cardiovascular disorders
                                    37309626, #Myocardial infarction due to demand ischemia
                                    43020460, #Acute ST segment elevation myocardial infarction involving left anterior descending coronary artery
                                    46270162, #	Acute ST segment elevation myocardial infarction due to left coronary artery occlusion
                                    46270163),
    addDescendantsToInclude = FALSE)

  stroke_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 115,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 115,
                      analysisName = "Stroke",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(
      #I63
      443454, #Cerebral infarction
      4110189, #Cerebral infarct due to thrombosis of precerebral arteries
      4110190, #Cerebral infarction due to embolism of precerebral arteries
      4043731, #Infarction - precerebral
      4110192, #Cerebral infarction due to thrombosis of cerebral arteries
      4108356, #Cerebral infarction due to embolism of cerebral arteries
      4111714, #Cerebral infarction due to cerebral venous thrombosis, non-pyogenic
      #I64
      #I65
      43022059, #Disease of non-coronary systemic artery
      4153380, #Disorder of carotid artery
      4159164, #Disorder of basilar artery
      443239, #Precerebral arterial occlusion
      #Altres
      255919, #Finding of head and neck region
      313226, #Carotid artery occlusion
      321887, #Disorder of artery
      381316, #Cerebrovascular accident
      381591, #Cerebrovascular disease
      4006294, #Basilar artery embolism
      4028073, #Disorder of artery of neck
      4213731, #Carotid artery embolism
      4273526, #Vertebral artery thrombosis
      4274969, #Vertebral artery embolism
      4288310, #Carotid artery obstruction
      4311124, #Carotid artery thrombosis
      4338227, #Basilar artery thrombosis
      45767658, #Cerebral infarction due to thrombosis of middle cerebral artery
      45772786, #Cerebral infarction due to embolism of middle cerebral artery
      46270031, #Cerebral infarction due to occlusion of precerebral artery
      46273649 #Cerebral infarction due to occlusion of basilar artery
    ),
    addDescendantsToInclude = FALSE)

  TIA_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 116,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 116,
                      analysisName = "TIA",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(#G45
      373503, #Transient cerebral ischemia
      437306, #Transient global amnesia
      4338523, #Amaurosis fugax
      381036, #	Multiple AND bilateral precerebral artery stenosis
      4112020, #Carotid artery syndrome hemispheric
      4048785, #Vertebrobasilar territory transient ischemic attack
      #G46
      381591, #Cerebrovascular disease
      4110194, #Middle cerebral artery syndrome
      4108360, #Anterior cerebral artery syndrome
      4110195, #Posterior cerebral artery syndrome
      4111710, #Brainstem stroke syndrome
      4111711, #Cerebellar stroke syndrome
      4045737, #Pure motor lacunar infarction
      4045738, #Pure sensory lacunar infarction
      4046360 #Lacunar infarction
    ),
    addDescendantsToInclude = FALSE)

  COPD_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 117,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 117,
                      analysisName = "COPD",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(255841, 261325, 255573),
    addDescendantsToInclude = TRUE)

  CKD_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 118,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 118,
                      analysisName = "CKD",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(46271022, 192359),
    addDescendantsToInclude = TRUE)

  cancer_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 119,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 119,
                      analysisName = "Cancer",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(443392, 4144289, 439392, 200962, 139750, 4311499, 137809, 197500),
    addDescendantsToInclude = TRUE)

  depress_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 120,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 120,
                      analysisName = "Depress",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(4282096, 4282316, 433440),
    addDescendantsToInclude = TRUE)

  htn_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 121,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 121,
                      analysisName = "HTN",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(320128, 442604, 444101, 319034, 443919, 44782429, 44784621,
                                    439696, 319826, 317895, 443771, 4110948, 319826),
    addDescendantsToInclude = TRUE)

  hf_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 122,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 122,
                      analysisName = "HF",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(316139, 319835, 439846, 443580, 443587, 4229440, 4273632, 40479192,
                                    40479576, 40480602, 40480603, 40481042, 40481043, 40482727, 44782718,
                                    44782733),
    addDescendantsToInclude = TRUE)

  liver_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 123,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 123,
                      analysisName = "LiverFailure",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(4098652, 197795, 4211974, 4012113,
                                    192240, 192242, 193693, 196625, 197490, 197494, 198683,
                                    198964, 439673, 439674, 439675,
                                    4245975, 200763, 4267417, 194990, 194984,
                                    192675, 192680, 196455, 199867, 200762,
                                    201901, 377604, 4026125, 4046123, 4058696, 4059290, 4064161,
                                    4135822, 4238978, 4240725, 4313846, 4340390,
                                    4340394, 4340941, 4340948, 40484532, 46269836),
    addDescendantsToInclude = TRUE)

  ra_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 124,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 124,
                      analysisName = "RA",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(36684997, 80809), #M05, M06
    addDescendantsToInclude = TRUE)

  sleep_apnea_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 125,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 125,
                      analysisName = "SleepApnea",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(313459), #G47.3
    addDescendantsToInclude = TRUE)

  pcos_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 126,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 126,
                      analysisName = "PCOS",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(40443308), #E28.2
    addDescendantsToInclude = TRUE)

  T1DM_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 127,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 127,
                      analysisName = "T1DM",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(201254, 435216, 40484648, 40484649),
    addDescendantsToInclude = TRUE)

  nephro_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 128,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 128,
                      analysisName = "Nephropathy due to DM",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(192279, #Disorder of kidney due to diabetes mellitus
                                    200687, #Renal disorder due to type 1 diabetes mellitus
                                    443731, #Renal disorder due to type 2 diabetes mellitus
                                    43531578 #Chronic kidney disease due to type 2 diabetes mellitus
    ),
    addDescendantsToInclude = FALSE)

  retino_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 129,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 129,
                      analysisName = "Retinopathy due to DM",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(376114, #Severe nonproliferative retinopathy due to diabetes mellitus
                                    376979, #Cataract due to diabetes mellitus
                                    377552, #Moderate nonproliferative retinopathy due to diabetes mellitus
                                    378743, #Mild nonproliferative retinopathy due to diabetes mellitus
                                    380096, #	Proliferative retinopathy due to diabetes mellitus
                                    380097, #	Macular edema due to diabetes mellitus
                                    443733, #Disorder of eye due to type 2 diabetes mellitus
                                    443767, #Disorder of eye due to diabetes mellitus
                                    4174977, #Retinopathy due to diabetes mellitus
                                    4221495, #Cataract due to diabetes mellitus type 2
                                    4225656, #Cataract due to diabetes mellitus type 1
                                    4227210, #Retinopathy due to type 1 diabetes mellitus
                                    4266637, #Severe nonproliferative retinopathy without macular edema due to diabetes mellitus
                                    4290822, #Severe nonproliferative retinopathy with clinically significant macular edema due to diabetes mellitus
                                    4338896, #Traction retinal detachment involving macula
                                    4338897, #Combined traction and rhegmatogenous retinal detachment
                                    4338901, #Traction detachment of retina due to diabetes mellitus
                                    37016179, #Mild nonproliferative retinopathy due to type 1 diabetes mellitus
                                    37016180, #Moderate nonproliferative retinopathy due to type 1 diabetes mellitus
                                    42538169, #Disorder of eye due to type 1 diabetes mellitus
                                    43530656, #Nonproliferative retinopathy due to type 2 diabetes mellitus
                                    43530685, #Proliferative retinopathy due to type 2 diabetes mellitus
                                    45757435, #	Mild nonproliferative retinopathy due to type 2 diabetes mellitus
                                    45763583, #Nonproliferative diabetic retinopathy due to type 1 diabetes mellitus
                                    45763584, #Proliferative retinopathy due to type 1 diabetes mellitus
                                    45769873, #Traction detachment of retina due to type 1 diabetes mellitus
                                    45770830, #Macular edema and retinopathy due to type 2 diabetes mellitus
                                    45770881, #Moderate nonproliferative retinopathy due to type 2 diabetes mellitus
                                    45773064 #Traction detachment of retina due to type 2 diabetes mellitus
    ),
    addDescendantsToInclude = FALSE)

  neuro_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 130,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 130,
                      analysisName = "Neuropathy due to DM",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(376065, #Disorder of nervous system due to type 2 diabetes mellitus
                                    376112, #Polyneuropathy due to diabetes mellitus
                                    377821, #Disorder of nervous system due to type 1 diabetes mellitus
                                    443730, #Disorder of nervous system due to diabetes mellitus
                                    4044391, #Neuropathy due to diabetes mellitus
                                    4048028, #Diabetic mononeuropathy
                                    4140466, #Lumbosacral radiculoplexus neuropathy due to type 2 diabetes mellitus
                                    4143857, #Lumbosacral radiculoplexus neuropathy due to type 1 diabetes mellitus
                                    4175440, #Autonomic neuropathy due to diabetes mellitus
                                    4191611, #Lumbosacral radiculoplexus neuropathy due to diabetes mellitus
                                    4222415, #Mononeuropathy due to type 2 diabetes mellitus
                                    4225055, #Mononeuropathy due to type 1 diabetes mellitus
                                    37016767, #Autonomic neuropathy due to type 1 diabetes mellitus
                                    37016768, #Autonomic neuropathy due to type 2 diabetes mellitus
                                    37017431, #Polyneuropathy due to type 1 diabetes mellitus
                                    37017432 #Polyneuropathy due to type 2 diabetes mellitus
    ),
    addDescendantsToInclude = FALSE)

  PAD_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 131,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 131,
                      analysisName = "PAD",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(
      74719, #Ulcer of foot
      134380, #Erythromelalgia
      # 138525, #Pain in limb
      195834, #Atherosclerosis of renal artery
      197304, #Ulcer of lower extremity
      312934, #Atherosclerosis of aorta
      314965, #Embolism and thrombosis of an arm or leg artery
      315558, #Atherosclerosis of arteries of the extremities
      317577, #Arteriosclerotic gangrene
      318443, #Arteriosclerotic vascular disease
      321052, #Peripheral vascular disease
      321882, #Generalized atherosclerosis
      442287, #Rest pain
      442774, #Intermittent claudication
      443358, #Ulcer of heel
      443593, #Ulcer of thigh
      4171556, #Ankle ulcer
      4177703, #Ulcer
      4316222, #Venous intermittent claudication
      4325344, #Pain at rest due to peripheral vascular disease
      35611566, #Bilateral lower limb atherosclerosis pain at rest co-occurrent and due to atherosclerosis
      35615028, #Bilateral atherosclerosis of lower limbs with gangrene
      36712805, #Pain at rest of left lower limb co-occurrent and due to atherosclerosis
      36712806, #Intermittent claudication of right lower limb co-occurrent and due to atherosclerosis
      36712807, #Pain at rest of right lower limb co-occurrent and due to atherosclerosis
      36712963, #Gangrene of left lower limb due to atherosclerosis
      36717006, #Intermittent claudication of bilateral lower limbs co-occurrent and due to atherosclerosis
      36717279, #Gangrene of right lower limb due to atherosclerosis
      36717286, #Intermittent claudication of left lower limb co-occurrent and due to atherosclerosis
      37110250, #Atherosclerosis of artery of lower limb
      37312519, #Ulcer of calf due to atherosclerosis of artery of lower limb
      37312520, #Ischemic foot ulcer due to atherosclerosis of artery of lower limb
      37312524, #Ulcer of ankle due to atherosclerosis of artery of lower limb
      37312529, #Intermittent claudication due to atherosclerosis of artery of limb
      37312531, #Gangrene of limb due to atherosclerosis of artery of limb
      40479625, #Atherosclerosis of artery
      40483538, #Atherosclerosis of bypass graft of limb
      40484541, #Atherosclerosis of autologous vein bypass graft of limb
      40484551, #Atherosclerosis of nonautologous biological bypass graft of limb
      44782819, #Chronic occlusion of artery of extremity
      46271459 #Atherosclerosis of bypass graft of lower limb
    ),
    addDescendantsToInclude = FALSE)

  dka_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 132,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 130,
                      analysisName = "Neuropathy due to DM",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(439770, #Ketoacidosis due to type 1 diabetes mellitus
                                    4009303, #Diabetic ketoacidosis without coma
                                    4224254 #Ketoacidotic coma due to type 1 diabetes mellitus
    ),
    addDescendantsToInclude = FALSE)

  hypoglyc_vars <- FeatureExtraction::createAnalysisDetails(
    analysisId = 133,
    sqlFileName = "DomainConcept.sql",
    parameters = list(analysisId = 130,
                      analysisName = "Neuropathy due to DM",
                      startDay = "anyTimePrior",
                      endDay = 0,
                      subType = "all",
                      domainId = "Condition",
                      domainTable = "condition_occurrence",
                      domainConceptId = "condition_concept_id",
                      domainStartDate = "condition_start_date",
                      domainEndDate = "condition_start_date"),
    includedCovariateConceptIds = c(45769876, #Hypoglycemia due to type 1 diabetes mellitus
                                    4228112 #Hypoglycemic coma due to type 1 diabetes mellitus
                                    ),
    addDescendantsToInclude = FALSE)

  A10_conceptId <- c(21600712,
                     782681, 793321, 1502829, 1502830, 1503327, 1525221, 1529352,
                     1547554, 1596977, 1597761, 1597772, 1597773, 1597781, 1597792,
                     19006931, 19021312, 19023424, 19023425, 19023426, 19029030, 19029061,
                     19058398, 19059800, 19077638, 19077682, 19078552, 19078559, 19079293,
                     19079465, 19095211, 19095212, 19099055, 19101729, 19112791, 19125041,
                     19125045, 19125049, 19129179, 19133793, 19135264, 21022404, 21036596,
                     21061594, 21061613, 21076306, 21081251, 21086042, 21100924, 21114195,
                     21133671, 21169719, 35408233, 35410536, 35412102, 35412890, 35412958,
                     36403507, 36403509, 36884964, 40044221, 40051377, 40052768, 40054707,
                     40139098, 40164885, 40164888, 40164891, 40164897, 40164913, 40164916,
                     40164942, 40164943, 40164946, 40166037, 40166041, 40239218, 42479624,
                     42479783, 42481504, 42481541, 42482012, 42482588, 42656231, 42656236,
                     42656240, 42708086, 42708090, 42899447, 42902356, 42902587, 42902742,
                     42902821, 42902945, 42902992, 42903059, 42903341, 43013885, 43013905,
                     43013911, 43013918, 43013924, 43013928, 43526467, 43526471, 44032735,
                     44058584, 44123708, 44785831, 45774709, 45774754, 45774893, 46233969,
                     46234047, 46234234, 46234237, 46287408, 46287689)

  sel_med_conceptId <- c(21600712, #DRUGS USED IN DIABETES
                         #Aquestes insulines no les troba
                         21076306, 44058584, 21086042, 21036596,
                         21601238, #C01
                         21600381, #C02
                         21601461, #C03
                         21601664, #C07
                         21601744, #C08
                         21601782, #C09
                         21601853, #C10
                         21603933 #M01A
  )
  covDrug <- FeatureExtraction::createCovariateSettings(
    useDrugGroupEraMediumTerm = TRUE,
    mediumTermStartDays = -365.25,
    endDays = 0,
    includedCovariateConceptIds = sel_med_conceptId,
    addDescendantsToInclude = TRUE)

  # smoking_vars <- FeatureExtraction::createAnalysisDetails(
  #   analysisId = 810,
  #   sqlFileName = "DomainConcept.sql",
  #   parameters = list(analysisId = 810,
  #                     analysisName = "Tobacco",
  #                     startDay = "anyTimePrior",
  #                     endDay = 1,
  #                     subType = "last",
  #                     domainId = "Observation",
  #                     domainTable = "observation",
  #                     domainConceptId = "VALUE_AS_CONCEPT_ID",
  #                     domainStartDate = "observation_date",
  #                     domainEndDate = ""),
  #   includedCovariateConceptIds = c(45879404, 45884037, 45883458),
  #   addDescendantsToInclude = TRUE)

  SmokingCovSet <- createSmokingCovariateSettings(useSmoking = TRUE)

  T2DM_TimeCovSet <- createT2DM_TimeCovariateSettings(useT2DM_Time = TRUE)
  T1DM_TimeCovSet <- createT1DM_TimeCovariateSettings(useT1DM_Time = TRUE)
  T1DM_AgeCovSet <- createT1DM_AgeCovariateSettings(useT1DM_Age = TRUE)
  T1Rx_TimeCovSet <- createT1Rx_TimeCovariateSettings(useT1Rx_Time = TRUE)
  # T1Rx_AgeCovSet <- createT1Rx_AgeCovariateSettings(useT1Rx_Age = TRUE)
  # C10_TimeCovSet <- createC10_TimeCovariateSettings(useC10_Time = TRUE)
  # HTNRx_TimeCovSet <- createHTNRx_TimeCovariateSettings(useHTNRx_Time = TRUE)

  covariateSettings <- list(covDemo,
                            covMeasValueAny,
                            covMeasValueLong,
                            # covMeasValue_lipid,
                            FeatureExtraction::createDetailedCovariateSettings(
                              list(T2DM_vars,
                                   obesity_vars,
                                   angor_vars,
                                   ami_vars,
                                   stroke_vars,
                                   TIA_vars,
                                   COPD_vars,
                                   CKD_vars,
                                   cancer_vars,
                                   depress_vars,
                                   htn_vars,
                                   hf_vars,
                                   liver_vars,
                                   ra_vars,
                                   sleep_apnea_vars,
                                   pcos_vars,
                                   T1DM_vars,
                                   nephro_vars,
                                   retino_vars,
                                   neuro_vars,
                                   PAD_vars,
                                   dka_vars,
                                   hypoglyc_vars)),
                            covDrug,
                            SmokingCovSet,
                            T2DM_TimeCovSet,
                            T1DM_TimeCovSet,
                            T1Rx_TimeCovSet,
                            T1DM_AgeCovSet)#,
                            # T1Rx_AgeCovSet,
                            # C10_TimeCovSet,
                            # HTNRx_TimeCovSet)

  covariateData <- FeatureExtraction::getDbCovariateData(
    connection = cdm_bbdd,
    cdmDatabaseSchema = cdm_schema,
    cohortDatabaseSchema = results_sc,
    cohortTable = cohortTable,
    cohortId = acohortId,
    rowIdField = "subject_id",
    covariateSettings = covariateSettings)

  covariateData_temp <- FeatureExtraction::getDbCovariateData(
    connection = cdm_bbdd,
    cdmDatabaseSchema = cdm_schema,
    cohortDatabaseSchema = results_sc,
    cohortTable = cohortTable,
    cohortId = acohortId,
    rowIdField = "subject_id",
    covariateSettings = covMeasValue_lipid)

    return(list(covariateData = covariateData, covariateData_temp = covariateData_temp))
}

#' Transform covariateData object into FlatTable
#'
#' Si volem agafar l'últim valor podem canviar-ho
#'
#' @param covariateData A covariateDate object
#' @param covariateData_temp A Temporal covariateDate object
#'
#' @return A data.table with the covariate data
#' @export
#'
#' @importFrom rlang .data
#'
#' @examples
#' #Not yet
transformToFlat_T1 <- function(covariateData,
                               covariateData_temp){
  bbdd_covar <- dplyr::collect(covariateData$covariates)
  bbdd_covar <-  dplyr::mutate(
    .data = bbdd_covar,
    variable = as.character(NA),
    variable = dplyr::if_else(.data$covariateId == 1002, 'age', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 8507001, 'sex_male', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 8532001, 'sex_female', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 111, 'T2DM', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 112, 'obesity', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 113, 'angor', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 114, 'ami', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 115, 'stroke', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 116, 'tia', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 117, 'COPD', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 118, 'CKD', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 119, 'cancer', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 120, 'depress', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 121, 'htn', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 122, 'hf', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 123, 'liver', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 124, 'ra', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 125, 'sleep_apnea', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 126, 'pcos', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 127, 'T1DM', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 128, 'nephro', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 129, 'retino', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 130, 'neuro', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 131, 'PAD', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 132, 'DKA', .data$variable),
    variable = dplyr::if_else(stringr::str_sub(.data$covariateId, start = -3L) == 133, 'Hypoglyc', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21600712411, 'A10', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21600713411, 'A10A', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21600744411, 'A10B', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21601238411, 'C01', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21600381411, 'C02', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21601461411, 'C03', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21601664411, 'C07', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21601744411, 'C08', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21601782411, 'C09', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21601853411, 'C10', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21603933411, 'M01A', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 45879404, 'Never', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 45884037, 'Current', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 45883458, 'Former', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3038553531705, 'BMI', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3036277582705, 'height', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3025315529705, 'weight', .data$variable),
    variable = dplyr::if_else(.data$covariateId %in% c(3004249323706, 4152194876706), 'SBP', .data$variable),
    variable = dplyr::if_else(.data$covariateId %in% c(3012888323706, 4154790876706), 'DBP', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3010813848706, 'Leukocytes', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3001604554706, 'Monocytes', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3034639554706, 'HbA1c', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3027114840706, 'cT', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3011884840706, 'cHDL', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3028437840706, 'cLDL', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3022192840706, 'Tg', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3004501840706, 'Glucose', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3006923645706, 'ALT', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3020460751706, 'CRP', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3001122748706, 'Ferritin', .data$variable),
    variable = dplyr::if_else(substr(.data$covariateId, 1, 7) == 3016723, 'Creatinine', .data$variable),
    variable = dplyr::if_else(substr(.data$covariateId, 1, 7) == 3024561, 'Albumin', .data$variable),
    variable = dplyr::if_else(substr(.data$covariateId, 1, 8) == 40764999, 'CKDEPI', .data$variable),
    variable = dplyr::if_else(substr(.data$covariateId, 1, 7) == 3010587, 'GOT', .data$variable),
    variable = dplyr::if_else(substr(.data$covariateId, 1, 7) == 3026910, 'GGT', .data$variable),
    variable = dplyr::if_else(substr(.data$covariateId, 1, 8) == 43055034, 'vitD', .data$variable),
    variable = dplyr::if_else(substr(.data$covariateId, 1, 7) == 3010084, 'PEPTIDCs', .data$variable),
    variable = dplyr::if_else(substr(.data$covariateId, 1, 7) == 3000963, 'Hemoglobin', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 201820211, 'TimeT2DM', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 201254212, 'TimeT1DM', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 201254216, 'TimeT1Rx', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 201254213, 'AgeT1DM', .data$variable),
    # variable = dplyr::if_else(.data$covariateId == 201254217, 'AgeT1Rx', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21601853214, 'TimeC10', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 21600381215, 'TimeHTNRx', .data$variable))
  bbdd_covar <- dplyr::group_by(.data = bbdd_covar, .data$rowId, .data$variable)
  bbdd_covar <- dplyr::summarise(
    .data = bbdd_covar,
    covariateValue = mean(.data$covariateValue),
    .groups = 'keep')
  bbdd_covar <- dplyr::ungroup(x = bbdd_covar)
  bbdd_covar_temp <- dplyr::collect(covariateData_temp$covariates)
  bbdd_covar_temp <-  dplyr::mutate(
    .data = bbdd_covar_temp,
    variable = as.character(NA),
    variable = dplyr::if_else(.data$covariateId == 3027114840702 & .data$timeId == 3 , 'cT', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3011884840702 & .data$timeId == 3, 'cHDL', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3028437840702 & .data$timeId == 3, 'cLDL', .data$variable),
    variable = dplyr::if_else(.data$covariateId == 3022192840702 & .data$timeId == 3, 'Tg', .data$variable))#,
    # variable = dplyr::if_else(.data$covariateId == 3027114840702 & .data$timeId == 1, 'cT', .data$variable),
    # variable = dplyr::if_else(.data$covariateId == 3011884840702 & .data$timeId == 1, 'cHDL', .data$variable),
    # variable = dplyr::if_else(.data$covariateId == 3028437840702 & .data$timeId == 1, 'cLDL', .data$variable),
    # variable = dplyr::if_else(.data$covariateId == 3022192840702 & .data$timeId == 1, 'Tg', .data$variable),
    # variable = dplyr::if_else(.data$covariateId == 3027114840702 & .data$timeId == 2, 'cT_1y', .data$variable),
    # variable = dplyr::if_else(.data$covariateId == 3011884840702 & .data$timeId == 2, 'cHDL_1y', .data$variable),
    # variable = dplyr::if_else(.data$covariateId == 3028437840702 & .data$timeId == 2, 'cLDL_1y', .data$variable),
    # variable = dplyr::if_else(.data$covariateId == 3022192840702 & .data$timeId == 2, 'Tg_1y', .data$variable))
  bbdd_covar_temp <- dplyr::filter(.data = bbdd_covar_temp, !is.na(.data$variable))
  bbdd_covar_temp <- dplyr::group_by(.data = bbdd_covar_temp, .data$rowId, .data$variable)
  bbdd_covar_temp <- dplyr::summarise(
    .data = bbdd_covar_temp,
    covariateValue = mean(.data$covariateValue),
    .groups = 'keep')
  bbdd_covar_temp <- dplyr::ungroup(x = bbdd_covar_temp)
  bbdd_covar <- tidyr::pivot_wider(
    data = rbind(bbdd_covar, bbdd_covar_temp),
    id_cols = 'rowId',
    names_from = 'variable',
    values_from = 'covariateValue')
  bbdd_covar <- dplyr::mutate(
    .data = bbdd_covar,
    dplyr::across(dplyr::any_of(c('sex_female', 'sex_male', 'T2DM', 'obesity', 'angor', 'tia',
                                  'stroke', 'ami', 'Current', 'Former', 'Never',
                                  'A10', 'A10A', 'A10B','C01', 'C02', 'C03', 'C07', 'C08', 'C09',
                                  'C10', 'M01A',
                                  'COPD', 'CKD', 'cancer', 'depress', 'htn', 'hf', 'liver', 'ra',
                                  'sleep_apnea', 'pcos',
                                  "neuro", "nephro", "retino", "PAD",
                                  'ALT', 'Hemoglobin')),
                  ~ tidyr::replace_na(.x, 0)))
  return(bbdd_covar)
}

#' Build a Follow-up Data for cohort
#'
#' @param cdm_bbdd A connection for a OMOP database via DatabaseConnector
#' @param cdm_schema A name for OMOP schema
#' @param results_sc A name for result schema
#' @param cohortTable A name of the result cohort
#' @param acohortId A Cohort number
#' @param bbdd_covar A data.table create by transformToFlat function
#'
#' @return A data.frame object
#' @export
#'
#' @importFrom rlang .data
#'
#' @examples
#' # Not yet
buildFollowUp_T1 <- function(cdm_bbdd,
                             cdm_schema,
                             results_sc,
                             cohortTable,
                             acohortId = 1,
                             bbdd_covar){
  obs_per_sql <- "SELECT * FROM @omopSc.OBSERVATION_PERIOD
                  WHERE person_id IN (SELECT subject_id FROM @resultSc.@cohortTable)"
  obs_per <- DatabaseConnector::querySql(connection = cdm_bbdd,
                                         sql = SqlRender::render(sql = obs_per_sql,
                                                                 omopSc = cdm_schema,
                                                                 resultSc = results_sc,
                                                                 cohortTable = cohortTable))
  death_sql <- "SELECT * FROM @omopSc.DEATH
                WHERE person_id IN (SELECT subject_id FROM @resultSc.@cohortTable)"
  death <- DatabaseConnector::querySql(connection = cdm_bbdd,
                                       sql = SqlRender::render(sql = death_sql,
                                                               omopSc = cdm_schema,
                                                               resultSc = results_sc,
                                                               cohortTable = cohortTable))

  cohort <- DatabaseConnector::querySql(connection = cdm_bbdd,
                                        sql = SqlRender::render(sql = "SELECT * FROM @resultSc.@cohortTable",
                                                                resultSc = results_sc,
                                                                cohortTable = cohortTable))

  cohort_event <- cohort[cohort$COHORT_DEFINITION_ID %in% c(acohortId, 3:18),]
  cohort_event$event <- as.character(NA)
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == acohortId] <- 'dintro'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 3] <- 'AMI'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 4] <- 'Angor'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 5] <- 'StrokeI'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 6] <- 'TIA'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 7] <- 'Nephropathy'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 8] <- 'Retinopathy'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 9] <- 'Neuropathy'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 10] <- 'PAD'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 11] <- 'Angor_unstable'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 12] <- 'AMI_WP4'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 13] <- 'stroke_WP4'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 14] <- 'neuroWP4'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 15] <- 'nephroWP4'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 16] <- 'retinoWP4'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 17] <- 'footWP4'
  cohort_event$event[cohort_event$COHORT_DEFINITION_ID == 18] <- 'DKAWP4'

  cohort_event_w <- tidyr::pivot_wider(data = cohort_event,
                                       id_cols = "SUBJECT_ID",
                                       names_from = 'event',
                                       names_prefix = 'ep_',
                                       values_from = "COHORT_START_DATE")
  names(cohort_event_w)[2] <- 'dintro'
  cohort_event_w <- merge(cohort_event_w,
                          obs_per[, c("PERSON_ID", "OBSERVATION_PERIOD_END_DATE")],
                          by.x = 'SUBJECT_ID',
                          by.y = 'PERSON_ID',
                          all.x = TRUE)

  bbdd_covar <- merge(bbdd_covar,
                      cohort_event_w,
                      by.x = 'rowId',
                      by.y = "SUBJECT_ID",
                      all.x = TRUE)
  bbdd_covar <- merge(bbdd_covar,
                      death,
                      by.x = 'rowId',
                      by.y = "PERSON_ID",
                      all.x = TRUE)
  bbdd_covar$i.ep_AMI <- 0
  bbdd_covar$i.ep_AMI[bbdd_covar$dintro < bbdd_covar$ep_AMI &
                        bbdd_covar$ep_AMI <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_AMI <- as.numeric(pmin(bbdd_covar$ep_AMI, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_AMI[1 < bbdd_covar$t.ep_AMI] <- 0
  bbdd_covar$t.ep_AMI[1 < bbdd_covar$t.ep_AMI] <- 1
  bbdd_covar$i.ep_Angor <- 0
  bbdd_covar$i.ep_Angor[bbdd_covar$dintro < bbdd_covar$ep_Angor &
                          bbdd_covar$ep_Angor <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_Angor <- as.numeric(pmin(bbdd_covar$ep_Angor, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_Angor[1 < bbdd_covar$t.ep_Angor] <- 0
  bbdd_covar$t.ep_Angor[1 < bbdd_covar$t.ep_Angor] <- 1
  bbdd_covar$i.ep_StrokeI <- 0
  bbdd_covar$i.ep_StrokeI[bbdd_covar$dintro < bbdd_covar$ep_StrokeI &
                            bbdd_covar$ep_StrokeI <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_StrokeI <- as.numeric(pmin(bbdd_covar$ep_StrokeI, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_StrokeI[1 < bbdd_covar$t.ep_StrokeI] <- 0
  bbdd_covar$t.ep_StrokeI[1 < bbdd_covar$t.ep_StrokeI] <- 1
  bbdd_covar$i.ep_TIA <- 0
  bbdd_covar$i.ep_TIA[bbdd_covar$dintro < bbdd_covar$ep_TIA &
                        bbdd_covar$ep_TIA <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_TIA <- as.numeric(pmin(bbdd_covar$ep_TIA, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_TIA[1 < bbdd_covar$t.ep_TIA] <- 0
  bbdd_covar$t.ep_TIA[1 < bbdd_covar$t.ep_TIA] <- 1
  bbdd_covar$i.ep_Nephropathy <- 0
  bbdd_covar$i.ep_Nephropathy[bbdd_covar$dintro < bbdd_covar$ep_Nephropathy &
                                bbdd_covar$ep_Nephropathy <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_Nephropathy <- as.numeric(pmin(bbdd_covar$ep_Nephropathy, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_Nephropathy[1 < bbdd_covar$t.ep_Nephropathy] <- 0
  bbdd_covar$t.ep_Nephropathy[1 < bbdd_covar$t.ep_Nephropathy] <- 1
  bbdd_covar$i.ep_Retinopathy <- 0
  bbdd_covar$i.ep_Retinopathy[bbdd_covar$dintro < bbdd_covar$ep_Retinopathy &
                                bbdd_covar$ep_Retinopathy <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_Retinopathy <- as.numeric(pmin(bbdd_covar$ep_Retinopathy, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_Retinopathy[1 < bbdd_covar$t.ep_Retinopathy] <- 0
  bbdd_covar$t.ep_Retinopathy[1 < bbdd_covar$t.ep_Retinopathy] <- 1
  bbdd_covar$i.ep_Neuropathy <- 0
  bbdd_covar$i.ep_Neuropathy[bbdd_covar$dintro < bbdd_covar$ep_Neuropathy &
                                bbdd_covar$ep_Neuropathy <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_Neuropathy <- as.numeric(pmin(bbdd_covar$ep_Neuropathy, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_Neuropathy[1 < bbdd_covar$t.ep_Neuropathy] <- 0
  bbdd_covar$t.ep_Neuropathy[1 < bbdd_covar$t.ep_Neuropathy] <- 1
  bbdd_covar$i.ep_PAD <- 0
  bbdd_covar$i.ep_PAD[bbdd_covar$dintro < bbdd_covar$ep_PAD &
                               bbdd_covar$ep_PAD <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_PAD <- as.numeric(pmin(bbdd_covar$ep_PAD, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_PAD[1 < bbdd_covar$t.ep_PAD] <- 0
  bbdd_covar$t.ep_PAD[1 < bbdd_covar$t.ep_PAD] <- 1
  bbdd_covar$i.ep_Angor_unstable <- 0
  bbdd_covar$i.ep_Angor_unstable[bbdd_covar$dintro < bbdd_covar$ep_Angor_unstable &
                                   bbdd_covar$ep_Angor_unstable <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_Angor_unstable <- as.numeric(pmin(bbdd_covar$ep_Angor_unstable, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_Angor_unstable[1 < bbdd_covar$t.ep_Pt.ep_Angor_unstableAD] <- 0
  bbdd_covar$t.ep_Angor_unstable[1 < bbdd_covar$t.ep_Angor_unstable] <- 1
  bbdd_covar$i.ep_AMI_WP4 <- 0
  bbdd_covar$i.ep_AMI_WP4[bbdd_covar$dintro < bbdd_covar$ep_AMI_WP4 &
                            bbdd_covar$ep_AMI_WP4 <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_AMI_WP4 <- as.numeric(pmin(bbdd_covar$ep_AMI_WP4, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_AMI_WP4[1 < bbdd_covar$t.ep_AMI_WP4] <- 0
  bbdd_covar$t.ep_AMI_WP4[1 < bbdd_covar$t.ep_AMI_WP4] <- 1
  bbdd_covar$i.ep_stroke_WP4 <- 0
  bbdd_covar$i.ep_stroke_WP4[bbdd_covar$dintro < bbdd_covar$ep_stroke_WP4 &
                            bbdd_covar$ep_stroke_WP4 <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_stroke_WP4 <- as.numeric(pmin(bbdd_covar$ep_stroke_WP4, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_stroke_WP4[1 < bbdd_covar$t.ep_stroke_WP4] <- 0
  bbdd_covar$t.ep_stroke_WP4[1 < bbdd_covar$t.ep_stroke_WP4] <- 1
  bbdd_covar$i.ep_neuroWP4 <- 0
  bbdd_covar$i.ep_neuroWP4[bbdd_covar$dintro < bbdd_covar$ep_neuroWP4 &
                               bbdd_covar$ep_neuroWP4 <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_neuroWP4 <- as.numeric(pmin(bbdd_covar$ep_neuroWP4, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_neuroWP4[1 < bbdd_covar$t.ep_neuroWP4] <- 0
  bbdd_covar$t.ep_neuroWP4[1 < bbdd_covar$t.ep_neuroWP4] <- 1
  bbdd_covar$i.ep_nephroWP4 <- 0
  bbdd_covar$i.ep_nephroWP4[bbdd_covar$dintro < bbdd_covar$ep_nephroWP4 &
                             bbdd_covar$ep_nephroWP4 <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_nephroWP4 <- as.numeric(pmin(bbdd_covar$ep_nephroWP4, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_nephroWP4[1 < bbdd_covar$t.ep_nephroWP4] <- 0
  bbdd_covar$t.ep_nephroWP4[1 < bbdd_covar$t.ep_nephroWP4] <- 1
  bbdd_covar$i.ep_retinoWP4 <- 0
  bbdd_covar$i.ep_retinoWP4[bbdd_covar$dintro < bbdd_covar$ep_retinoWP4 &
                              bbdd_covar$ep_retinoWP4 <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_retinoWP4 <- as.numeric(pmin(bbdd_covar$ep_retinoWP4, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_retinoWP4[1 < bbdd_covar$t.ep_retinoWP4] <- 0
  bbdd_covar$t.ep_retinoWP4[1 < bbdd_covar$t.ep_retinoWP4] <- 1
  bbdd_covar$i.ep_footWP4 <- 0
  bbdd_covar$i.ep_footWP4[bbdd_covar$dintro < bbdd_covar$ep_footWP4 &
                              bbdd_covar$ep_footWP4 <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_footWP4 <- as.numeric(pmin(bbdd_covar$ep_footWP4, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_footWP4[1 < bbdd_covar$t.ep_footWP4] <- 0
  bbdd_covar$t.ep_footWP4[1 < bbdd_covar$t.ep_footWP4] <- 1
  bbdd_covar$i.ep_DKAWP4 <- 0
  bbdd_covar$i.ep_DKAWP4[bbdd_covar$dintro < bbdd_covar$ep_DKAWP4 &
                            bbdd_covar$ep_DKAWP4 <= bbdd_covar$OBSERVATION_PERIOD_END_DATE] <- 1
  bbdd_covar$t.ep_DKAWP4 <- as.numeric(pmin(bbdd_covar$ep_DKAWP4, bbdd_covar$OBSERVATION_PERIOD_END_DATE, na.rm = T) - bbdd_covar$dintro)/365.25
  bbdd_covar$i.ep_DKAWP4[1 < bbdd_covar$t.ep_DKAWP4] <- 0
  bbdd_covar$t.ep_DKAWP4[1 < bbdd_covar$t.ep_DKAWP4] <- 1

  return(bbdd_covar)
}

#' Funcion para pasar del servidor a una tabla plana
#' Necesita totes les coses del servidor més quina cohort volem contruir.
#'
#' @param cdm_bbdd A connection for a OMOP database via DatabaseConnector
#' @param cdm_schema A name for OMOP schema
#' @param results_sc A name for result schema
#' @param cohortTable A name of the result cohort
#' @param acohortId A Cohort number
#'
#' @return List with three objects: descriptive for numeric and category and database ready to analysis.
#' @export
#'
#' @examples
#' #Not yet
FunCovar_T1 <- function(cdm_bbdd,
                     cdm_schema,
                     results_sc,
                     cohortTable,
                     acohortId){
  covariateData_aux <- buildData_T1(cdm_bbdd = cdm_bbdd,
                                    cdm_schema = cdm_schema,
                                    results_sc = results_sc,
                                    cohortTable = cohortTable,
                                    acohortId = acohortId)
  covariateData_aux_temp <- covariateData_aux$covariateData_temp
  covariateData_aux <- covariateData_aux$covariateData

  covariateData2_aux <- FeatureExtraction::aggregateCovariates(covariateData_aux)
  sel_med_conceptId <- c(21600712, #DRUGS USED IN DIABETES
                         #Aquestes insulines no les troba
                         21076306, 44058584, 21086042, 21036596,
                         21601238, #C01
                         21600381, #C02
                         21601461, #C03
                         21601664, #C07
                         21601744, #C08
                         21601782, #C09
                         21601853, #C10
                         21603933 #M01A
  )
  cov_cate_resum_aux <- dplyr::filter(
    .data = covariateData2_aux$covariateRef,
    .data$analysisId %in% c(411, 413) & .data$conceptId %in% sel_med_conceptId |
      !(.data$analysisId %in% c(411, 413)))
  cov_cate_resum_aux <- dplyr::inner_join(
    x = cov_cate_resum_aux,
    y = covariateData2_aux$covariates)
  cov_cate_resum_aux <- dplyr::mutate(
    .data = cov_cate_resum_aux,
    covariateId = as.character(floor(.data$covariateId)),
    analysisId = as.integer(.data$analysisId),
    conceptId = as.integer(.data$conceptId),
    sumValue = as.integer(.data$sumValue),
    averageValue = .data$averageValue*100)
  cov_cate_resum_aux <-dplyr::collect(x = cov_cate_resum_aux)
  cov_num_resum_aux <- dplyr::inner_join(
    x = covariateData2_aux$covariateRef,
    y = covariateData2_aux$covariatesContinuous)
  cov_num_resum_aux <- dplyr::mutate(
    .data = cov_num_resum_aux,
    covariateId = as.character(floor(.data$covariateId)),
    analysisId = as.integer(.data$analysisId),
    conceptId = as.integer(.data$conceptId))
  cov_num_resum_aux <- dplyr::select(
    .data = cov_num_resum_aux,
    -.data$covariateId, -.data$analysisId, -.data$conceptId)
  cov_num_resum_aux <- dplyr::collect(x = cov_num_resum_aux)
  bbdd_covar_aux <- transformToFlat_T1(covariateData_aux,
                                       covariateData_aux_temp)
  bbdd_covar_aux <- buildFollowUp_T1(cdm_bbdd = cdm_bbdd,
                                     cdm_schema = cdm_schema,
                                     results_sc = results_sc,
                                     cohortTable = cohortTable,
                                     acohortId = acohortId,
                                     bbdd_covar = bbdd_covar_aux)
  return(list(cov_cate_resum = cov_cate_resum_aux,
              cov_num_resum = cov_num_resum_aux,
              bbdd_covar = bbdd_covar_aux))
}
Blanch-Font/SOPHIA documentation built on May 12, 2023, 1:09 a.m.