-
Notifications
You must be signed in to change notification settings - Fork 0
ADHD
Tiffany J. Callahan edited this page Jul 19, 2021
·
44 revisions
-
eMERGE Documentation
- 📄 ADHD algorithm.docx (Downloaded: 03/14/19)
- Code Set
- GitHub Issue #21
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
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
)
- Ambulatory visit (
- In-person visits (
- 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
)
- Ambulatory visit (
- In-person visits (
- 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 | --- |
- 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
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