Advertisement
temaon_lieto

SQP_TOP_2.txt

Jun 30th, 2024
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. WITH "items" AS (SELECT mv_stat_lvl_2_joined_items.id,
  2.                         mv_stat_lvl_2_joined_items.asserted_date,
  3.                         mv_stat_lvl_2_joined_items.code,
  4.                         mv_stat_lvl_2_joined_items.item_type,
  5.                         mv_stat_lvl_2_joined_items.status::varchar,
  6.                         mv_stat_lvl_2_joined_items.title,
  7.                         mv_stat_lvl_2_joined_items.employee_id,
  8.                         mv_stat_lvl_2_joined_items.legal_entity_id,
  9.                         mv_stat_lvl_2_joined_items.patient_id
  10.                  FROM "mv_stat_lvl_2_joined_items"
  11.                  WHERE "mv_stat_lvl_2_joined_items"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-06-28 23:59:59.999999'
  12.                    AND "mv_stat_lvl_2_joined_items"."legal_entity_id" = 8558),
  13.      "main_counters" AS (SELECT COALESCE(COUNT(DISTINCT mv_stat_lvl_1_declarations.id), 0) AS counter,
  14.                                 mv_stat_lvl_1_declarations.patient_id                      AS patient_id,
  15.                                 CASE
  16.                                     WHEN (("mv_stat_lvl_1_patients"."gender" = 1 AND DATE_PART('YEAR',
  17.                                                                                                AGE('2024-06-28 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 999) OR
  18.                                           ("mv_stat_lvl_1_patients"."gender" = 0 AND DATE_PART('YEAR',
  19.                                                                                                AGE('2024-06-28 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 40 AND 999))
  20.                                         THEN
  21.                                         CASE
  22.                                             WHEN (COUNT(DISTINCT items.code) filter (WHERE "items"."code" IN
  23.                                                                                            ('T34006', 'T34011',
  24.                                                                                             'T34013', 'T34024',
  25.                                                                                             'T34001', 'T34004'))) > 0
  26.                                                 THEN 'done'
  27.                                             ELSE 'need_done'
  28.                                             END
  29.                                     ELSE
  30.                                         'no_need_done'
  31.                                     END                                                       hypertension_state,
  32.                                 CASE
  33.                                     WHEN (DATE_PART('YEAR',
  34.                                                     AGE('2024-06-28 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 45 AND 999)
  35.                                         THEN
  36.                                         CASE
  37.                                             WHEN (COUNT(DISTINCT items.code)
  38.                                                   filter (WHERE "items"."code" IN ('T34005', 'T34023', 'T34025', 'T34038', '14743-9'))) >
  39.                                                  0 THEN 'done'
  40.                                             ELSE 'need_done'
  41.                                             END
  42.                                     ELSE
  43.                                         'no_need_done'
  44.                                     END                                                    AS diabetes_state,
  45.                                 CASE
  46.                                     WHEN ("mv_stat_lvl_1_patients"."gender" = 0 AND (DATE_PART('YEAR',
  47.                                                                                                AGE('2024-06-28 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 999))
  48.                                         THEN
  49.                                         CASE
  50.                                             WHEN (COUNT(DISTINCT items.code)
  51.                                                   filter (WHERE "items"."code" IN ('U67002', 'Y34011', 'Y34003'))) > 0
  52.                                                 THEN 'done'
  53.                                             ELSE 'need_done'
  54.                                             END
  55.                                     ELSE
  56.                                         'no_need_done'
  57.                                     END                                                    AS prostate_cancer_state,
  58.                                 CASE
  59.                                     WHEN ("mv_stat_lvl_1_patients"."gender" = 1 AND (DATE_PART('YEAR',
  60.                                                                                                AGE('2024-06-28 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 69))
  61.                                         THEN
  62.                                         CASE
  63.                                             WHEN (COUNT(DISTINCT items.code) filter (WHERE "items"."code" IN
  64.                                                                                            ('Х41941', 'X41973',
  65.                                                                                             '59300-00', '55070-00',
  66.                                                                                             '55076-00'))) > 0
  67.                                                 THEN 'done'
  68.                                             ELSE 'need_done'
  69.                                             END
  70.                                     ELSE
  71.                                         'no_need_done'
  72.                                     END                                                    AS breast_cancer_state,
  73.                                 CASE
  74.                                     WHEN (DATE_PART('YEAR',
  75.                                                     AGE('2024-06-28 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 75)
  76.                                         THEN
  77.                                         CASE
  78.                                             WHEN (COUNT(DISTINCT items.code) filter (WHERE "items"."code" IN
  79.                                                                                            ('D36003', 'D67006',
  80.                                                                                             '32084-00', '32090-00',
  81.                                                                                             '32084-02', '32090-02'))) >
  82.                                                  0 THEN 'done'
  83.                                             ELSE 'need_done'
  84.                                             END
  85.                                     ELSE
  86.                                         'no_need_done'
  87.                                     END                                                    AS colorectal_cancer_state,
  88.                                 CASE
  89.                                     WHEN (DATE_PART('YEAR',
  90.                                                     AGE('2024-06-28 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 14 AND 999)
  91.                                         THEN
  92.                                         CASE
  93.                                             WHEN (COUNT(DISTINCT items.code)
  94.                                                   filter (WHERE "items"."code" IN ('B33006', 'B33012'))) > 0 THEN 'done'
  95.                                             ELSE 'need_done'
  96.                                             END
  97.                                     ELSE
  98.                                         'no_need_done'
  99.                                     END                                                    AS hiv_state
  100.                          FROM "mv_stat_lvl_1_declarations"
  101.                                   JOIN mv_stat_lvl_1_patients ON mv_stat_lvl_1_patients.legal_entity_id =
  102.                                                                  mv_stat_lvl_1_declarations.legal_entity_id AND
  103.                                                                  mv_stat_lvl_1_patients.id =
  104.                                                                  mv_stat_lvl_1_declarations.patient_id
  105.                                   LEFT JOIN items
  106.                                             ON items.legal_entity_id = mv_stat_lvl_1_declarations.legal_entity_id AND
  107.                                                items.patient_id = mv_stat_lvl_1_declarations.patient_id
  108.                          WHERE "mv_stat_lvl_1_declarations"."legal_entity_id" = 8558
  109.                          GROUP BY mv_stat_lvl_1_declarations.patient_id, mv_stat_lvl_1_patients.birth_date,
  110.                                   mv_stat_lvl_1_patients.gender),
  111.      "diagnoses" AS (SELECT mv_stat_lvl_1_reception_conditions.patient_id, mv_stat_lvl_1_reception_conditions.code
  112.                      FROM "mv_stat_lvl_1_reception_conditions"
  113.                      WHERE "mv_stat_lvl_1_reception_conditions"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-06-28 23:59:59.999999'
  114.                        AND "mv_stat_lvl_1_reception_conditions"."legal_entity_id" = 8558),
  115.      "observations" AS (SELECT mv_stat_lvl_1_ehr_observations.patient_id, mv_stat_lvl_1_ehr_observations.code
  116.                         FROM "mv_stat_lvl_1_ehr_observations"
  117.                         WHERE "mv_stat_lvl_1_ehr_observations"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-06-28 23:59:59.999999'
  118.                           AND "mv_stat_lvl_1_ehr_observations"."legal_entity_id" = 8558
  119.                           AND "mv_stat_lvl_1_ehr_observations"."code" IN
  120.                               ('39156-5', '14743-9', '8462-4', '8480-6', '56086-2', '4548-4', '14647-2')),
  121.      "diagnosis_cnt" AS (SELECT diagnoses.patient_id,
  122.                                 COUNT(DISTINCT diagnoses.code)                                                     AS diagnoses_c1_64_counter,
  123.                                 COUNT(DISTINCT diagnoses.code)
  124.                                 filter (WHERE "diagnoses"."code" IN ('A98'))                                       AS diagnoses_a98_counter,
  125.                                 COUNT(DISTINCT diagnoses.code)
  126.                                 filter (WHERE "diagnoses"."code" IN ('K86', 'K87'))                                AS diagnoses_c1_65_counter,
  127.                                 COUNT(DISTINCT diagnoses.code)
  128.                                 filter (WHERE "diagnoses"."code" IN ('K76', 'K74'))                                AS diagnoses_c2_65_counter,
  129.                                 COUNT(DISTINCT diagnoses.code)
  130.                                 filter (WHERE "diagnoses"."code" IN ('T89', 'T90'))                                AS diagnoses_c3_65_counter
  131.                          FROM diagnoses
  132.                          GROUP BY "diagnoses"."patient_id"
  133.                          HAVING (COUNT(DISTINCT diagnoses.code) > 0)),
  134.      "observations_cnt" AS (SELECT observations.patient_id,
  135.                                    COUNT(DISTINCT observations.code)
  136.                                    filter (WHERE "observations"."code" IN ('14647-2'))                              AS cholesterol_obs_counter,
  137.                                    COUNT(DISTINCT observations.code) filter (WHERE "observations"."code" IN
  138.                                                                                    ('39156-5', '14743-9', '8462-4',
  139.                                                                                     '8480-6',
  140.                                                                                     '56086-2'))                     AS observations_c1_64_counter,
  141.                                    COUNT(DISTINCT observations.code) filter (WHERE "observations"."code" IN
  142.                                                                                    ('39156-5', '14743-9', '8462-4',
  143.                                                                                     '8480-6',
  144.                                                                                     '56086-2'))                     AS observations_c1_65_counter,
  145.                                    COUNT(DISTINCT observations.code) filter (WHERE "observations"."code" IN
  146.                                                                                    ('39156-5', '14743-9', '8462-4',
  147.                                                                                     '8480-6', '56086-2',
  148.                                                                                     '4548-4'))                      AS observations_c2_65_counter
  149.                             FROM observations
  150.                             GROUP BY "observations"."patient_id"
  151.                             HAVING (COUNT(DISTINCT observations.code) > 0)),
  152.      "reasons_cnt" AS (SELECT mv_stat_lvl_1_ehr_reasons.patient_id,
  153.                               COUNT(DISTINCT mv_stat_lvl_1_ehr_reasons.code) AS a98_counter
  154.                        FROM "mv_stat_lvl_1_ehr_reasons"
  155.                        WHERE "mv_stat_lvl_1_ehr_reasons"."code" = 'A98'
  156.                          AND "mv_stat_lvl_1_ehr_reasons"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-06-28 23:59:59.999999'
  157.                          AND "mv_stat_lvl_1_ehr_reasons"."legal_entity_id" = 8558
  158.                        GROUP BY "mv_stat_lvl_1_ehr_reasons"."patient_id"
  159.                        HAVING (COUNT(DISTINCT mv_stat_lvl_1_ehr_reasons.code) > 0)),
  160.      "reports_cnt" AS (SELECT mv_stat_lvl_0_ehr_diagnostic_reports.patient_id,
  161.                               COUNT(DISTINCT mv_stat_lvl_0_ehr_diagnostic_reports.code) AS counter
  162.                        FROM "mv_stat_lvl_0_ehr_diagnostic_reports"
  163.                        WHERE "mv_stat_lvl_0_ehr_diagnostic_reports"."code" IN
  164.                              ('T34001', 'T34006', 'T34024', 'T34011', 'T34013')
  165.                          AND "mv_stat_lvl_0_ehr_diagnostic_reports"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-06-28 23:59:59.999999'
  166.                          AND "mv_stat_lvl_0_ehr_diagnostic_reports"."legal_entity_id" = 8558
  167.                        GROUP BY "mv_stat_lvl_0_ehr_diagnostic_reports"."patient_id"
  168.                        HAVING (COUNT(DISTINCT mv_stat_lvl_0_ehr_diagnostic_reports.code) > 0)),
  169.      "actions_cnt" AS (SELECT mv_stat_lvl_1_ehr_actions.patient_id,
  170.                               COUNT(DISTINCT mv_stat_lvl_1_ehr_actions.code) AS counter
  171.                        FROM "mv_stat_lvl_1_ehr_actions"
  172.                        WHERE "mv_stat_lvl_1_ehr_actions"."code" IN ('K45', 'D45', 'T45')
  173.                          AND "mv_stat_lvl_1_ehr_actions"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-06-28 23:59:59.999999'
  174.                          AND "mv_stat_lvl_1_ehr_actions"."legal_entity_id" = 8558
  175.                        GROUP BY "mv_stat_lvl_1_ehr_actions"."patient_id"
  176.                        HAVING (COUNT(DISTINCT mv_stat_lvl_1_ehr_actions.code) > 0)),
  177.      "groups_counter" AS (SELECT mv_stat_lvl_1_patients.id AS patient_id,
  178.                                  CASE
  179.                                      WHEN (DATE_PART('YEAR',
  180.                                                      AGE('2024-06-28 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 40 AND 64)
  181.                                          THEN
  182.                                          CASE
  183.                                              WHEN (diagnosis_cnt.diagnoses_a98_counter > 0 OR reasons_cnt.a98_counter > 0) AND
  184.                                                   ((reports_cnt.counter > 0 OR observations_cnt.cholesterol_obs_counter > 0) AND
  185.                                                    observations_cnt.observations_c1_64_counter > 0) THEN 'done'
  186.                                              ELSE 'need_done'
  187.                                              END
  188.                                      ELSE 'no_need_done'
  189.                                      END                   AS visits_from_40_to_64_state,
  190.                                  CASE
  191.                                      WHEN (DATE_PART('YEAR',
  192.                                                      AGE('2024-06-28 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 65 AND 999)
  193.                                          THEN
  194.                                          CASE
  195.                                              WHEN (diagnosis_cnt.diagnoses_a98_counter > 0 OR reasons_cnt.a98_counter > 0) AND
  196.                                                   ((observations_cnt.cholesterol_obs_counter > 0 OR reports_cnt.counter > 0) AND
  197.                                                    (((diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
  198.                                                       diagnosis_cnt.diagnoses_c2_65_counter > 0) AND
  199.                                                      observations_cnt.observations_c1_65_counter > 0) OR
  200.                                                     (diagnosis_cnt.diagnoses_c3_65_counter > 0 AND
  201.                                                      observations_cnt.observations_c2_65_counter > 0))) THEN 'done'
  202.                                              WHEN (diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
  203.                                                    diagnosis_cnt.diagnoses_c2_65_counter > 0 OR
  204.                                                    diagnosis_cnt.diagnoses_c3_65_counter > 0) THEN 'need_done'
  205.                                              ELSE 'no_need_done'
  206.                                              END
  207.                                      ELSE 'no_need_done'
  208.                                      END                   AS visits_upper_65_state
  209.                           FROM "mv_stat_lvl_1_patients"
  210.                                    LEFT JOIN observations_cnt
  211.                                              ON mv_stat_lvl_1_patients.id = observations_cnt.patient_id AND
  212.                                                 (observations_cnt.cholesterol_obs_counter > 0 OR
  213.                                                  observations_cnt.observations_c1_64_counter >= 5 OR
  214.                                                  observations_cnt.observations_c1_65_counter >= 5 OR
  215.                                                  observations_cnt.observations_c2_65_counter >= 6)
  216.                                    LEFT JOIN diagnosis_cnt ON mv_stat_lvl_1_patients.id = diagnosis_cnt.patient_id AND
  217.                                                               (diagnosis_cnt.diagnoses_c1_64_counter > 0 OR
  218.                                                                diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
  219.                                                                diagnosis_cnt.diagnoses_c2_65_counter > 0 OR
  220.                                                                diagnosis_cnt.diagnoses_c3_65_counter > 0)
  221.                                    LEFT JOIN reasons_cnt ON reasons_cnt.patient_id = mv_stat_lvl_1_patients.id
  222.                                    LEFT JOIN reports_cnt ON reports_cnt.patient_id = mv_stat_lvl_1_patients.id
  223.                                    LEFT JOIN actions_cnt ON actions_cnt.patient_id = mv_stat_lvl_1_patients.id
  224.                           WHERE "mv_stat_lvl_1_patients"."legal_entity_id" = 8558
  225.                           GROUP BY mv_stat_lvl_1_patients.id, mv_stat_lvl_1_patients.age,
  226.                                    mv_stat_lvl_1_patients.birth_date, visits_from_40_to_64_state, visits_upper_65_state)
  227. SELECT mv_stat_lvl_1_declarations.legal_entity_id,
  228.        COUNT(main_counters.diabetes_state) filter (WHERE diabetes_state = 'done')                                   as diabetes_counter,
  229.        COUNT(main_counters.hypertension_state)
  230.        filter (WHERE hypertension_state = 'done')                                                                   as hypertension_counter,
  231.        COUNT(main_counters.prostate_cancer_state)
  232.        filter (WHERE prostate_cancer_state = 'done')                                                                as prostate_cancer_counter,
  233.        COUNT(main_counters.breast_cancer_state)
  234.        filter (WHERE breast_cancer_state = 'done')                                                                  as breast_cancer_counter,
  235.        COUNT(main_counters.hiv_state) filter (WHERE hiv_state = 'done')                                             as hiv_counter,
  236.        COUNT(main_counters.colorectal_cancer_state)
  237.        filter (WHERE colorectal_cancer_state = 'done')                                                              as colorectal_cancer_counter,
  238.        COUNT(groups_counter.visits_from_40_to_64_state)
  239.        filter (WHERE visits_from_40_to_64_state = 'done')                                                           as visits_from_40_to_64_counter,
  240.        COUNT(groups_counter.visits_upper_65_state)
  241.        filter (WHERE visits_upper_65_state = 'done')                                                                as visits_upper_65_counter,
  242.  
  243.        COUNT(main_counters.diabetes_state)
  244.        filter (WHERE diabetes_state IN ('done', 'need_done'))                                                       as target_diabetes_counter,
  245.        COUNT(main_counters.hypertension_state)
  246.        filter (WHERE hypertension_state IN ('done', 'need_done'))                                                   as target_hypertension_counter,
  247.        COUNT(main_counters.prostate_cancer_state)
  248.        filter (WHERE prostate_cancer_state IN ('done', 'need_done'))                                                as target_prostate_cancer_counter,
  249.        COUNT(main_counters.breast_cancer_state)
  250.        filter (WHERE breast_cancer_state IN ('done', 'need_done'))                                                  as target_breast_cancer_counter,
  251.        COUNT(main_counters.hiv_state)
  252.        filter (WHERE hiv_state IN ('done', 'need_done'))                                                            as target_hiv_counter,
  253.        COUNT(main_counters.colorectal_cancer_state)
  254.        filter (WHERE colorectal_cancer_state IN ('done', 'need_done'))                                              as target_colorectal_cancer_counter,
  255.        COUNT(groups_counter.visits_from_40_to_64_state)
  256.        filter (WHERE visits_from_40_to_64_state IN ('done', 'need_done'))                                           as target_visits_from_40_to_64_counter,
  257.        COUNT(groups_counter.visits_upper_65_state)
  258.        filter (WHERE visits_upper_65_state IN ('done', 'need_done'))                                                as target_visits_upper_65_counter
  259. FROM "mv_stat_lvl_1_declarations"
  260.          LEFT JOIN main_counters ON mv_stat_lvl_1_declarations.patient_id = main_counters.patient_id
  261.          LEFT JOIN groups_counter ON mv_stat_lvl_1_declarations.patient_id = groups_counter.patient_id
  262.          LEFT JOIN diagnosis_cnt ON mv_stat_lvl_1_declarations.patient_id = diagnosis_cnt.patient_id
  263. WHERE "mv_stat_lvl_1_declarations"."legal_entity_id" = 8558
  264. GROUP BY "mv_stat_lvl_1_declarations"."legal_entity_id"
  265. LIMIT 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement