Skip to content
Tiffany J. Callahan edited this page Jul 19, 2021 · 44 revisions

Documentation


See the SQL query to identify the cohort below and note that the mapping between the bolded words at the beginning of each of the case and control criteria and the named query chunks

Cohort Criteria

Case Criteria:
CASE TYPE 1

  • age_criteria_1: Patient is 1460 days or older (age at earliest diagnosis of ADHD)
  • dx_case_inclusion_criteria_1: Presence of at least 1 relevant code in 1 or more in-person visits, on separate calendar days (ICD9 codes - criteria # 1)
    • In-person visits (visit_admitting_source_concept_id):
      • Ambulatory visit (44814672)
      • Emergency Room - Hospital (8870)
      • Hospitals, General Acute Care Hospital (38004279)
      • Skilled Nursing Facility (8863)
      • Hospice (8546)
  • rx_case_inclusion_criteria_1: Presence of >= 1 prescriptions of ADHD-related medications (drug strings - criteria # 2)
  • dx_case_exclusion_criteria_1: NOT presence of ANY exclusionary diagnosis codes (ICD9 codes - criteria # 3)

CASE TYPE 2

  • age_criteria_1: Patient is 1460 days or older (age at earliest diagnosis of ADHD)
  • dx_case_inclusion_criteria_2: Presence of at least 1 relevant code on 2 or more in-person visits, on separate calendar days (ICD9 codes - criteria # 1)
    • In-person visits (visit_admitting_source_concept_id):
      • Ambulatory visit (44814672)
      • Emergency Room - Hospital (8870)
      • Hospitals, General Acute Care Hospital (38004279)
      • Skilled Nursing Facility (8863)
      • Hospice (8546)
  • dx_case_exclusion_criteria_1: NOT presence of ANY exclusionary diagnosis codes (ICD9 codes - criteria # 3)

Control Criteria:

  • age_criteria_2: Patient is 1460 days or older (age at earliest diagnosis)
  • visit_criteria_1: Presence of 2 or more visits in the last five years (of last day in record -- latest visit_end_date in EHR)
  • rx_control_exclusion_criteria_1: NOT presence of >= 1 medication addressing psychiatric, neurological or related disorders (drug strings - criteria # 4)
  • dx_control_exclusion_criteria_1: NOT presence of >= 1 codes addressing psychiatric, neurological or related disorders (ICD9 codes - criteria # 5)
  • dx_control_exclusion_criteria_2: NOT presence of >= 1 ADHD or hyperkinesias codes (ICD9 codes - criteria # 6)


Cohort Logic Table

COHORT CHUNK LOGICAL OPERATOR
CASE TYPE 1 age_criteria_1 AND
CASE TYPE 1 dx_case_inclusion_criteria_1 AND
CASE TYPE 1 rx_case_inclusion_criteria_1 AND
CASE TYPE 1 dx_case_exclusion_criteria_1 ---
CASE TYPE 2 age_criteria_1 AND
CASE TYPE 2 dx_case_inclusion_criteria_2 AND
CASE TYPE 2 dx_case_exclusion_criteria_1 ---
CONTROL age_criteria_2 AND
CONTROL visit_criteria_1 AND
CONTROL rx_control_exclusion_criteria_1 OR
CONTROL dx_control_exclusion_criteria_1 OR
CONTROL dx_control_exclusion_criteria_2 ---

Covariates

  • Demographics
    • Age at each medication and visit
    • Gender
    • Ethnicity
    • Race
    • Birth month
  • Subject age in days at date associated with diagnosis code for ADHD
  • Subject age in days at date associated with ADHD prescription
  • Subject age in days at date associated with diagnosis code for any other psychiatric condition
  • Subject age in days at date of ANY in-person visit

SQL Query

WITH age_criteria_1 AS (
SELECT co.person_id, cohort.standard_code_set AS code_set 
FROM 
  {database}.person p, 
  {database}.condition_occurrence co, 
  {database}.ADHD_COHORT_VARS cohort 
WHERE p.person_id = co.person_id 
  AND co.condition_concept_id = CAST(cohort.standard_concept_id AS int64) 
  AND cohort.phenotype_definition_number = 1
  AND cohort.standard_code_set = {code_set_group}
GROUP BY
  co.person_id, p.birth_datetime, cohort.standard_code_set
HAVING
  DATETIME_DIFF(DATETIME(MIN(co.condition_start_datetime)), DATETIME(p.birth_datetime), DAY) >= 1460
),

dx_case_inclusion_criteria_1 AS (
SELECT co.person_id, cohort.standard_code_set AS code_set 
FROM 
  {database}.condition_occurrence co, 
  {database}.ADHD_COHORT_VARS cohort, 
  {database}.visit_occurrence v 
WHERE 
  co.visit_occurrence_id = v.visit_occurrence_id 
  AND co.condition_concept_id = CAST(cohort.standard_concept_id AS int64) 
  AND v.admitting_source_concept_id IN (44814672, 8870, 38004279, 8863, 8546) 
  AND cohort.phenotype_definition_number = 1 
  AND cohort.standard_code_set = {code_set_group}
GROUP BY 
  co.person_id, cohort.standard_code_set
HAVING 
  COUNT(DISTINCT co.condition_concept_id) >= 1 
  AND COUNT(DISTINCT v.visit_start_date) >= 1
),

rx_case_inclusion_criteria_1 AS (
SELECT de.person_id, cohort.standard_code_set AS code_set 
FROM 
  {database}.drug_exposure de, 
  {database}.ADHD_COHORT_VARS cohort 
WHERE 
  de.drug_concept_id = CAST(cohort.standard_concept_id AS int64) 
  AND cohort.phenotype_definition_number = 2 
  AND cohort.standard_code_set = {code_set_group}
GROUP BY 
  de.person_id, cohort.standard_code_set
HAVING 
  COUNT(DISTINCT de.drug_concept_id) >= 1
),

dx_case_exclusion_criteria_1 AS (
SELECT co.person_id, cohort.standard_code_set AS code_set
FROM 
  {database}.condition_occurrence co,
  {database}.ADHD_COHORT_VARS cohort
WHERE 
  co.condition_concept_id = CAST(cohort.standard_concept_id AS int64)
  AND cohort.phenotype_definition_number = 3
  AND cohort.standard_code_set = {code_set_group}
GROUP BY co.person_id, cohort.standard_code_set
HAVING 
  COUNT(DISTINCT co.condition_concept_id) >= 1
),

dx_case_inclusion_criteria_2 AS (
SELECT co.person_id, cohort.standard_code_set AS code_set 
FROM 
  {database}.condition_occurrence co, 
  {database}.ADHD_COHORT_VARS cohort, 
  {database}.visit_occurrence v 
WHERE 
  co.visit_occurrence_id = v.visit_occurrence_id 
  AND co.condition_concept_id = CAST(cohort.standard_concept_id AS int64) 
  AND v.admitting_source_concept_id IN (44814672, 8870, 38004279, 8863, 8546) 
  AND cohort.phenotype_definition_number = 1 
  AND cohort.standard_code_set = {code_set_group}
GROUP BY 
  co.person_id, cohort.standard_code_set
HAVING 
  COUNT(DISTINCT co.condition_concept_id) >= 1 
  AND COUNT(DISTINCT v.visit_start_date) >= 2
),

age_criteria_2 AS (
SELECT co.person_id, {code_set_group} AS code_set 
FROM 
  {database}.person p,
  {database}.condition_occurrence co
WHERE p.person_id = co.person_id 
GROUP BY
  co.person_id, p.birth_datetime
HAVING
  DATETIME_DIFF(DATETIME(MIN(co.condition_start_datetime)), DATETIME(p.birth_datetime), DAY) >= 1460
),

visit_criteria_1 AS (
SELECT v.person_id, {code_set_group} AS code_set 
FROM 
  {database}.visit_occurrence v
GROUP BY 
  v.person_id, v.visit_end_datetime 
HAVING
  DATETIME(visit_end_datetime) >= DATETIME_ADD((SELECT DATETIME(MAX(visit_end_datetime)) FROM {database}.visit_occurrence), INTERVAL -5 YEAR)
  AND COUNT(DISTINCT v.visit_start_date) >= 2
),

rx_control_exclusion_criteria_1 AS (
SELECT de.person_id, cohort.standard_code_set AS code_set
FROM 
  {database}.drug_exposure de,
  {database}.ADHD_COHORT_VARS cohort
WHERE 
  de.drug_concept_id = CAST(cohort.standard_concept_id AS int64)
  AND cohort.phenotype_definition_number = 4
  AND cohort.standard_code_set = {code_set_group}
GROUP BY de.person_id, cohort.standard_code_set
HAVING 
  COUNT(DISTINCT de.drug_concept_id) >= 1
),

dx_control_exclusion_criteria_1 AS (
SELECT co.person_id, cohort.standard_code_set AS code_set
FROM 
  {database}.condition_occurrence co,
  {database}.ADHD_COHORT_VARS cohort
WHERE 
  co.condition_concept_id = CAST(cohort.standard_concept_id AS int64)
  AND cohort.phenotype_definition_number = 5
  AND cohort.standard_code_set = {code_set_group}
GROUP BY co.person_id, cohort.standard_code_set
HAVING 
  COUNT(DISTINCT co.condition_concept_id) >= 1
),

dx_control_exclusion_criteria_2 AS (
SELECT co.person_id, cohort.standard_code_set AS code_set
FROM 
  {database}.condition_occurrence co,
  {database}.ADHD_COHORT_VARS cohort
WHERE 
  co.condition_concept_id = CAST(cohort.standard_concept_id AS int64)
  AND cohort.phenotype_definition_number = 6
  AND cohort.standard_code_set = {code_set_group}
GROUP BY co.person_id, cohort.standard_code_set
HAVING 
  COUNT(DISTINCT co.condition_concept_id) >= 1
)

SELECT * FROM
  (SELECT person_id, code_set, 'ADHD_CASE_TYPE1' AS cohort_type
    FROM (
    (SELECT person_id, code_set FROM age_criteria_1
      INTERSECT DISTINCT 
     SELECT person_id, code_set FROM dx_case_inclusion_criteria_1
      INTERSECT DISTINCT 
     SELECT person_id, code_set FROM rx_case_inclusion_criteria_1)
      EXCEPT DISTINCT
     SELECT person_id, code_set FROM dx_case_exclusion_criteria_1)
   GROUP BY person_id, code_set, cohort_type)

  UNION ALL

  (SELECT person_id, code_set, 'ADHD_CASE_TYPE2' AS cohort_type
    FROM (
    (SELECT person_id, code_set FROM age_criteria_1
      INTERSECT DISTINCT 
    SELECT person_id, code_set FROM dx_case_inclusion_criteria_2)
      EXCEPT DISTINCT
    SELECT person_id, code_set FROM dx_case_exclusion_criteria_1)
  GROUP BY person_id, code_set, cohort_type)
  
  UNION ALL 
  
  (SELECT p.person_id, {code_set_group} AS code_set, 'ADHD_CONTROL' AS cohort_type
    FROM {database}.person p
    WHERE p.person_id NOT IN (
      SELECT person_id FROM rx_control_exclusion_criteria_1
        UNION DISTINCT
      SELECT person_id FROM dx_control_exclusion_criteria_1
        UNION DISTINCT
      SELECT person_id FROM dx_control_exclusion_criteria_2)
    AND p.person_id IN (
      SELECT person_id FROM age_criteria_2
        INTERSECT DISTINCT
      SELECT person_id FROM visit_criteria_1)
  GROUP BY p.person_id, code_set, cohort_type)
;

This query can can also be accessed via a GitHub Gist here