Skip to content

Sickle Cell Disease

Tiffany J. Callahan edited this page Jul 19, 2021 · 23 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 criteria and the named query chunks

Cohort Criteria

Cohort Criteria

Case Criteria:

  • dx_case_inclusion_criteria_1: Presence of codes for sickle cell disease in the problem list, medical history, as a primary diagnosis at encounter, non-primary diagnosis at encounter, or as a discharge diagnosis (ICD9 codes - criteria # 1)
    • Outpatient (visit_concept_id = 9202)
    • Emergency Room - Hospital (visit_concept_id = 9203)
    • Inpatient Hospital (place_of_service_concept_id = 9201)
  • visit_inclusion_criteria_1: Two outpatient visits at least 30 days apart or one hospitalization in the electronic medical record
    • Hospitalization Visit Codes:
      • Emergency Room - Hospital (visit_concept_id = 9203)
      • Inpatient Hospital (place_of_service_concept_id = 9201)
    • Outpatient Visit Code:
      • Outpatient (visit_concept_id = 9202)
  • dx_case_exclusion_criteria_1: NOT greater presence of sickle cell trait diagnoses than qualifying sickle cell disease diagnoses (ICD9 codes - criteria # 2)

Control Criteria:

  • No control group defined


Cohort Logic Table

COHORT CHUNK LOGICAL OPERATOR
CASE dx_case_inclusion_criteria_1 AND
CASE visit_inclusion_criteria_1 AND
CASE dx_case_exclusion_criteria_1 ---

Covariates

  • No specified covariates

SQL Query

WITH dx_case_inclusion_criteria_1 AS (
  SELECT co.person_id, cohort.standard_code_set AS code_set 
  FROM 
    CHCO_DeID_Oct2018.condition_occurrence co,
    CHCO_DeID_Oct2018.SICKLECELLDISEASE_COHORT_VARS cohort
  WHERE 
    co.condition_concept_id = CAST(cohort.standard_concept_id AS int64) 
    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
),

visit_inclusion_criteria_1 AS (
  SELECT person_id FROM 
  
    -- identify patients with at least 2 outpatient visits at least 30 days apart
    (SELECT v1.person_id
    FROM 
      CHCO_DeID_Oct2018.visit_occurrence v1,
      CHCO_DeID_Oct2018.visit_occurrence v2
    WHERE 
      v1.person_id = v2.person_id
      AND v1.visit_concept_id in (9202)
      AND v2.visit_concept_id in (9202)
      AND v1.visit_start_datetime < v2.visit_start_datetime
      AND DATETIME_DIFF(DATETIME(v2.visit_start_datetime), DATETIME(v1.visit_start_datetime), DAY) >= 30
      GROUP BY v1.person_id, v1.visit_start_datetime, v2.visit_start_datetime
    ORDER BY
      v1.visit_start_datetime, v2.visit_start_datetime)
  
  UNION ALL
  
    -- identify patients with at least 1 hospitalization
    (SELECT person_id FROM 
        CHCO_DeID_Oct2018.visit_occurrence
      WHERE 
        visit_concept_id in (9201, 9203)
      GROUP BY
        person_id, visit_occurrence_id
      HAVING
        COUNT(DISTINCT visit_occurrence_id) >= 1)
),

dx_case_exclusion_criteria_1 AS (
  SELECT v.person_id, cohort.standard_code_set AS code_set
  FROM 
    CHCO_DeID_Oct2018.visit_occurrence v,
    CHCO_DeID_Oct2018.care_site c, 
    CHCO_DeID_Oct2018.condition_occurrence co, 
    CHCO_DeID_Oct2018.SICKLECELLDISEASE_COHORT_VARS cohort 
  JOIN
    (SELECT DISTINCT v.person_id, COUNT(DISTINCT co.condition_concept_id) AS trait_count, cohort.standard_code_set AS code_set
     FROM 
      CHCO_DeID_Oct2018.visit_occurrence v,
      CHCO_DeID_Oct2018.care_site c, 
      CHCO_DeID_Oct2018.condition_occurrence co, 
      CHCO_DeID_Oct2018.SICKLECELLDISEASE_COHORT_VARS cohort 
     WHERE co.visit_occurrence_id = v.visit_occurrence_id 
      AND co.condition_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 
      v.person_id, code_set) b
    ON v.person_id = b.person_id
   WHERE co.visit_occurrence_id = v.visit_occurrence_id 
    AND co.condition_concept_id = CAST(cohort.standard_concept_id AS int64) 
    AND cohort.phenotype_definition_number = 1 
  GROUP BY 
    v.person_id, code_set, b.trait_count
  HAVING
    COUNT(DISTINCT co.condition_concept_id) > b.trait_count
)
  
SELECT person_id, code_set, 'SICKLECELLDISEASE_CASE' AS cohort_type FROM (
  SELECT person_id, code_set FROM dx_case_inclusion_criteria_1
   WHERE person_id IN (SELECT person_id FROM visit_inclusion_criteria_1)
  EXCEPT DISTINCT
  SELECT person_id, code_set FROM dx_case_exclusion_criteria_1)
;

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