Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- WITH items AS (SELECT cascade_lvl01_joined_reports.* FROM cascade_lvl01_joined_reports WHERE cascade_lvl01_joined_reports.asserted_date BETWEEN '2020-01-01 00:00:00' AND '2025-02-11 23:59:59' AND cascade_lvl01_joined_reports.legal_entity_id = 3228), main_counters AS (SELECT COALESCE(COUNT(DISTINCT cascade_lvl02_declarations.id), 0) AS counter,
- cascade_lvl02_declarations.patient_id AS patient_id,
- CASE
- WHEN ((cascade_lvl01_patients.gender = 1 AND age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) BETWEEN 50 AND 999) OR
- (cascade_lvl01_patients.gender = 0 AND age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) BETWEEN 40 AND 999))
- THEN
- CASE
- WHEN (countIf(DISTINCT items.code, items.code IN ('T34006', 'T34011', 'T34013', 'T34024', 'T34001', 'T34004'))) > 0 THEN 'done'
- ELSE 'need_done'
- END
- ELSE 'no_need_done'
- END AS hypertension_state,
- CASE
- WHEN (age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) BETWEEN 45 AND 999)
- THEN
- CASE
- WHEN (countIf(DISTINCT items.code, items.code IN ('T34005', 'T34023', 'T34025', 'T34038', '14743-9'))) > 0 THEN 'done'
- ELSE 'need_done'
- END
- ELSE 'no_need_done'
- END AS diabetes_state,
- CASE
- WHEN (cascade_lvl01_patients.gender = 0 AND age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) BETWEEN 50 AND 999)
- THEN
- CASE
- WHEN (countIf(DISTINCT items.code, items.code IN ('U67002', 'Y34011', 'Y34003'))) > 0 THEN 'done'
- ELSE 'need_done'
- END
- ELSE 'no_need_done'
- END AS prostate_cancer_state,
- CASE
- WHEN (cascade_lvl01_patients."gender" = 1 AND age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) BETWEEN 50 AND 69)
- THEN
- CASE
- WHEN (countIf(DISTINCT items.code, items.code IN ('X41941', 'X41973', '59300-00', '55070-00', '55076-00'))) > 0 THEN 'done'
- ELSE 'need_done'
- END
- ELSE 'no_need_done'
- END AS breast_cancer_state,
- CASE
- WHEN (age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) BETWEEN 50 AND 75)
- THEN
- CASE
- WHEN (countIf(DISTINCT items.code, items.code IN ('D36003', 'D67006', '32084-00', '32090-00', '32084-02', '32090-02'))) > 0
- THEN 'done'
- ELSE 'need_done'
- END
- ELSE 'no_need_done'
- END AS colorectal_cancer_state,
- CASE
- WHEN (age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) BETWEEN 14 AND 999)
- THEN
- CASE
- WHEN (countIf(DISTINCT items.code, items.code IN ('B33006', 'B33012'))) > 0
- THEN 'done'
- ELSE 'need_done'
- END
- ELSE 'no_need_done'
- END AS hiv_state
- FROM cascade_lvl02_declarations JOIN cascade_lvl01_patients ON cascade_lvl01_patients.legal_entity_id = cascade_lvl02_declarations.legal_entity_id AND cascade_lvl01_patients.id = cascade_lvl02_declarations.patient_id
- LEFT JOIN items ON items.legal_entity_id = cascade_lvl02_declarations.legal_entity_id AND items.patient_id = cascade_lvl02_declarations.patient_id WHERE cascade_lvl02_declarations.status_code = 'ACTIVE' AND cascade_lvl02_declarations.legal_entity_id = 3228 GROUP BY cascade_lvl02_declarations.patient_id, cascade_lvl01_patients.birth_date, cascade_lvl01_patients.gender), diagnoses AS (SELECT cascade_lvl00_encounter_conditions.patient_id, cascade_lvl00_encounter_conditions.code FROM cascade_lvl00_encounter_conditions WHERE cascade_lvl00_encounter_conditions.ehealth_status = 1 AND cascade_lvl00_encounter_conditions.asserted_date BETWEEN '2020-01-01 00:00:00' AND '2025-02-11 23:59:59' AND cascade_lvl00_encounter_conditions.legal_entity_id = 3228), observations AS (SELECT cascade_lvl00_observations.patient_id, cascade_lvl00_observations.code FROM cascade_lvl00_observations WHERE cascade_lvl00_observations.code IN ('39156-5', '14743-9', '8462-4', '8480-6', '56086-2', '4548-4', '14647-2') AND cascade_lvl00_observations.asserted_date BETWEEN '2020-01-01 00:00:00' AND '2025-02-11 23:59:59' AND cascade_lvl00_observations.legal_entity_id = 3228), diagnosis_cnt AS (SELECT diagnoses.patient_id,
- COUNT(DISTINCT diagnoses.code) AS diagnoses_c1_64_counter,
- countIf(DISTINCT diagnoses.code, diagnoses.code IN ('A98')) AS diagnoses_a98_counter,
- countIf(DISTINCT diagnoses.code, diagnoses.code IN ('K86', 'K87')) AS diagnoses_c1_65_counter,
- countIf(DISTINCT diagnoses.code, diagnoses.code IN ('K76', 'K74')) AS diagnoses_c2_65_counter,
- countIf(DISTINCT diagnoses.code, diagnoses.code IN ('T89', 'T90')) AS diagnoses_c3_65_counter FROM diagnoses GROUP BY diagnoses.patient_id HAVING (COUNT(DISTINCT diagnoses.code) > 0)), observations_cnt AS (SELECT observations.patient_id,
- countIf(DISTINCT observations.code, observations.code IN ('14647-2')) AS cholesterol_obs_counter,
- countIf(DISTINCT observations.code, observations.code IN ('39156-5', '14743-9', '8462-4', '8480-6', '56086-2')) AS observations_c1_64_counter,
- countIf(DISTINCT observations.code, observations.code IN ('39156-5', '14743-9', '8462-4', '8480-6', '56086-2')) AS observations_c1_65_counter,
- countIf(DISTINCT observations.code, observations.code IN ('39156-5', '14743-9', '8462-4', '8480-6', '56086-2', '4548-4')) AS observations_c2_65_counter FROM observations GROUP BY observations.patient_id HAVING (COUNT(DISTINCT observations.code) > 0)), reasons_cnt AS (SELECT cascade_lvl00_reasons.patient_id, COUNT(DISTINCT cascade_lvl00_reasons.code) AS a98_counter FROM cascade_lvl00_reasons WHERE cascade_lvl00_reasons.code = 'A98' AND cascade_lvl00_reasons.encounter_status = 1 AND cascade_lvl00_reasons.asserted_date BETWEEN '2020-01-01 00:00:00' AND '2025-02-11 23:59:59' AND cascade_lvl00_reasons.legal_entity_id = 3228 GROUP BY cascade_lvl00_reasons.patient_id HAVING (COUNT(DISTINCT cascade_lvl00_reasons.code) > 0)), reports_cnt AS (SELECT cascade_lvl00_diagnostic_reports.patient_id, COUNT(DISTINCT cascade_lvl00_diagnostic_reports.code) AS counter FROM cascade_lvl00_diagnostic_reports WHERE cascade_lvl00_diagnostic_reports.code IN ('T34001', 'T34006', 'T34024', 'T34011', 'T34013') AND cascade_lvl00_diagnostic_reports.asserted_date BETWEEN '2020-01-01 00:00:00' AND '2025-02-11 23:59:59' AND cascade_lvl00_diagnostic_reports.legal_entity_id = 3228 GROUP BY cascade_lvl00_diagnostic_reports.patient_id HAVING (COUNT(DISTINCT cascade_lvl00_diagnostic_reports.code) > 0)), actions_cnt AS (SELECT cascade_lvl00_actions.patient_id, COUNT(DISTINCT cascade_lvl00_actions.code) AS counter FROM cascade_lvl00_actions WHERE cascade_lvl00_actions.code IN ('K45', 'D45', 'T45') AND cascade_lvl00_actions.asserted_date BETWEEN '2020-01-01 00:00:00' AND '2025-02-11 23:59:59' AND cascade_lvl00_actions.legal_entity_id = 3228 GROUP BY cascade_lvl00_actions.patient_id HAVING (COUNT(DISTINCT cascade_lvl00_actions.code) > 0)), groups_counter AS (SELECT cascade_lvl01_patients.id AS patient_id,
- CASE
- WHEN (age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) BETWEEN 40 AND 64)
- THEN
- CASE
- WHEN (diagnosis_cnt.diagnoses_a98_counter > 0 OR reasons_cnt.a98_counter > 0) AND
- ((reports_cnt.counter > 0 OR observations_cnt.cholesterol_obs_counter > 0) AND
- observations_cnt.observations_c1_64_counter > 0) THEN 'done'
- ELSE 'need_done'
- END
- ELSE 'no_need_done'
- END AS visits_from_40_to_64_state,
- CASE
- WHEN (age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) BETWEEN 65 AND 999)
- THEN
- CASE
- WHEN (diagnosis_cnt.diagnoses_a98_counter > 0 OR reasons_cnt.a98_counter > 0) AND
- ((observations_cnt.cholesterol_obs_counter > 0 OR reports_cnt.counter > 0) AND
- (((diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
- diagnosis_cnt.diagnoses_c2_65_counter > 0) AND
- observations_cnt.observations_c1_65_counter > 0) OR
- (diagnosis_cnt.diagnoses_c3_65_counter > 0 AND
- observations_cnt.observations_c2_65_counter > 0))) THEN 'done'
- WHEN (diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
- diagnosis_cnt.diagnoses_c2_65_counter > 0 OR
- diagnosis_cnt.diagnoses_c3_65_counter > 0) THEN 'need_done'
- ELSE 'no_need_done'
- END
- ELSE 'no_need_done'
- END AS visits_upper_65_state FROM cascade_lvl01_patients LEFT JOIN observations_cnt ON cascade_lvl01_patients.id = observations_cnt.patient_id AND
- (observations_cnt.cholesterol_obs_counter > 0 OR
- observations_cnt.observations_c1_64_counter >= 5 OR
- observations_cnt.observations_c1_65_counter >= 5 OR
- observations_cnt.observations_c2_65_counter >= 6)
- LEFT JOIN diagnosis_cnt ON cascade_lvl01_patients.id = diagnosis_cnt.patient_id AND
- (diagnosis_cnt.diagnoses_c1_64_counter > 0 OR
- diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
- diagnosis_cnt.diagnoses_c2_65_counter > 0 OR
- diagnosis_cnt.diagnoses_c3_65_counter > 0)
- LEFT JOIN reasons_cnt ON reasons_cnt.patient_id = cascade_lvl01_patients.id
- LEFT JOIN reports_cnt ON reports_cnt.patient_id = cascade_lvl01_patients.id
- LEFT JOIN actions_cnt ON actions_cnt.patient_id = cascade_lvl01_patients.id WHERE cascade_lvl01_patients.declaration_status = 'ACTIVE' AND cascade_lvl01_patients.legal_entity_id = 3228 AND (diagnosis_cnt.diagnoses_a98_counter > 0 OR reasons_cnt.a98_counter > 0 OR actions_cnt.counter > 0 OR reports_cnt.counter > 0) GROUP BY cascade_lvl01_patients.id, cascade_lvl01_patients.age, cascade_lvl01_patients.birth_date, visits_from_40_to_64_state, visits_upper_65_state) SELECT DISTINCT cascade_lvl01_patients.id,
- cascade_lvl01_patients.full_name,
- cascade_lvl01_patients.age,
- cascade_lvl01_patients.employee_id,
- cascade_lvl01_patients.gender,
- cascade_lvl01_patients.full_name,
- cascade_lvl01_patients.birth_date,
- cascade_lvl01_patients.legal_entity_id,
- main_counters.hypertension_state,
- main_counters.diabetes_state,
- main_counters.prostate_cancer_state,
- main_counters.breast_cancer_state,
- main_counters.colorectal_cancer_state,
- main_counters.hiv_state,
- CASE WHEN nullIf(groups_counter.visits_from_40_to_64_state, '') IS NULL THEN
- CASE WHEN age('year', cascade_lvl01_patients.birth_date, toDate32('2025-02-11 23:59:59')) BETWEEN 40 AND 64 THEN 'need_done'
- ELSE 'no_need_done'
- END
- ELSE groups_counter.visits_from_40_to_64_state
- END visits_from_40_to_64_state,
- age('year', cascade_lvl01_patients.birth_date, toDate('2025-02-11 23:59:59')) as current_age,
- CASE WHEN nullIf(groups_counter.visits_upper_65_state, '') IS NULL THEN
- CASE WHEN age('year', cascade_lvl01_patients.birth_date, toDate32('2025-02-11 23:59:59')) BETWEEN 65 AND 999 AND (diagnosis_cnt.diagnoses_c1_65_counter > 0 OR diagnosis_cnt.diagnoses_c2_65_counter > 0 OR diagnosis_cnt.diagnoses_c3_65_counter > 0) THEN 'need_done'
- ELSE 'no_need_done'
- END
- ELSE groups_counter.visits_upper_65_state
- END visits_upper_65_state FROM cascade_lvl01_patients LEFT JOIN main_counters ON cascade_lvl01_patients.id = main_counters.patient_id
- LEFT JOIN groups_counter ON cascade_lvl01_patients.id = groups_counter.patient_id
- LEFT JOIN diagnosis_cnt ON cascade_lvl01_patients.id = diagnosis_cnt.patient_id WHERE cascade_lvl01_patients.declaration_status = 'ACTIVE' AND cascade_lvl01_patients.legal_entity_id = 3228 ORDER BY cascade_lvl01_patients.full_name ASC LIMIT 15 OFFSET 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement