Advertisement
temaon_lieto

New check results

Apr 15th, 2024
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- NOW
  2. -- +---------------+----------------+--------------------+-----------------------+---------------------+-----------+-------------------------+----------------------------+-----------------------+-----------------------+---------------------------+------------------------------+----------------------------+------------------+--------------------------------+-----------------------------------+------------------------------+
  3. -- |legal_entity_id|diabetes_counter|hypertension_counter|prostate_cancer_counter|breast_cancer_counter|hiv_counter|colorectal_cancer_counter|visits_from_40_to_64_counter|visits_upper_65_counter|target_diabetes_counter|target_hypertension_counter|target_prostate_cancer_counter|target_breast_cancer_counter|target_hiv_counter|target_colorectal_cancer_counter|target_visits_from_40_to_64_counter|target_visits_upper_65_counter|
  4. -- +---------------+----------------+--------------------+-----------------------+---------------------+-----------+-------------------------+----------------------------+-----------------------+-----------------------+---------------------------+------------------------------+----------------------------+------------------+--------------------------------+-----------------------------------+------------------------------+
  5. -- |8185           |518             |450                 |210                    |189                  |0          |368                      |51                          |0                      |918                    |851                        |420                           |290                         |1952              |633                             |793                                |294                           |
  6. -- +---------------+----------------+--------------------+-----------------------+---------------------+-----------+-------------------------+----------------------------+-----------------------+-----------------------+---------------------------+------------------------------+----------------------------+------------------+--------------------------------+-----------------------------------+------------------------------+
  7.  
  8. WITH "items" AS (SELECT mv_stat_lvl_2_joined_items.id,
  9.                         mv_stat_lvl_2_joined_items.asserted_date,
  10.                         mv_stat_lvl_2_joined_items.code,
  11.                         mv_stat_lvl_2_joined_items.item_type,
  12.                         mv_stat_lvl_2_joined_items.status::varchar,
  13.                         mv_stat_lvl_2_joined_items.title,
  14.                         mv_stat_lvl_2_joined_items.employee_id,
  15.                         mv_stat_lvl_2_joined_items.legal_entity_id,
  16.                         mv_stat_lvl_2_joined_items.patient_id
  17.                  FROM "mv_stat_lvl_2_joined_items"
  18.                  WHERE "mv_stat_lvl_2_joined_items"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  19.                    AND "mv_stat_lvl_2_joined_items"."legal_entity_id" = 8185
  20.                    AND "mv_stat_lvl_2_joined_items"."code" IN
  21.                        ('T34006', 'T34011', 'T34013', 'T34024', 'T34001', 'T34004', 'T34005', 'T34023', 'T34025',
  22.                         'T34038', 'U67002', 'Y34011', 'Y34003', 'Х41941', 'X41973', '59300-00', '55070-00', '55076-00',
  23.                         'D36003', 'D67006', '32084-00', '32090-00', '32084-02', '32090-02', 'B33006', 'B33012',
  24.                         '14743-9')),
  25.      "main_counters" AS (SELECT COALESCE(COUNT(DISTINCT mv_stat_lvl_1_declarations.id), 0) AS counter,
  26.                                 mv_stat_lvl_1_declarations.patient_id                      AS patient_id,
  27.                                 CASE
  28.                                     WHEN (("mv_stat_lvl_1_patients"."gender" = 1 AND DATE_PART('YEAR',
  29.                                                                                                AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 999) OR
  30.                                           ("mv_stat_lvl_1_patients"."gender" = 0 AND DATE_PART('YEAR',
  31.                                                                                                AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 40 AND 999))
  32.                                         THEN
  33.                                         CASE
  34.                                             WHEN (COUNT(DISTINCT items.code) filter (WHERE "items"."code" IN
  35.                                                                                            ('T34006', 'T34011',
  36.                                                                                             'T34013', 'T34024',
  37.                                                                                             'T34001', 'T34004'))) > 0
  38.                                                 THEN 'done'
  39.                                             ELSE 'need_done'
  40.                                             END
  41.                                     ELSE
  42.                                         'no_need_done'
  43.                                     END                                                       hypertension_state,
  44.                                 CASE
  45.                                     WHEN (DATE_PART('YEAR',
  46.                                                     AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 45 AND 999)
  47.                                         THEN
  48.                                         CASE
  49.                                             WHEN (COUNT(DISTINCT items.code)
  50.                                                   filter (WHERE "items"."code" IN ('T34005', 'T34023', 'T34025', 'T34038', '14743-9'))) >
  51.                                                  0 THEN 'done'
  52.                                             ELSE 'need_done'
  53.                                             END
  54.                                     ELSE
  55.                                         'no_need_done'
  56.                                     END                                                    AS diabetes_state,
  57.                                 CASE
  58.                                     WHEN ("mv_stat_lvl_1_patients"."gender" = 0 AND (DATE_PART('YEAR',
  59.                                                                                                AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 40 AND 999))
  60.                                         THEN
  61.                                         CASE
  62.                                             WHEN (COUNT(DISTINCT items.code)
  63.                                                   filter (WHERE "items"."code" IN ('U67002', 'Y34011', 'Y34003'))) > 0
  64.                                                 THEN 'done'
  65.                                             ELSE 'need_done'
  66.                                             END
  67.                                     ELSE
  68.                                         'no_need_done'
  69.                                     END                                                    AS prostate_cancer_state,
  70.                                 CASE
  71.                                     WHEN ("mv_stat_lvl_1_patients"."gender" = 1 AND (DATE_PART('YEAR',
  72.                                                                                                AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 69))
  73.                                         THEN
  74.                                         CASE
  75.                                             WHEN (COUNT(DISTINCT items.code) filter (WHERE "items"."code" IN
  76.                                                                                            ('Х41941', 'X41973',
  77.                                                                                             '59300-00', '55070-00',
  78.                                                                                             '55076-00'))) > 0
  79.                                                 THEN 'done'
  80.                                             ELSE 'need_done'
  81.                                             END
  82.                                     ELSE
  83.                                         'no_need_done'
  84.                                     END                                                    AS breast_cancer_state,
  85.                                 CASE
  86.                                     WHEN (DATE_PART('YEAR',
  87.                                                     AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 75)
  88.                                         THEN
  89.                                         CASE
  90.                                             WHEN (COUNT(DISTINCT items.code) filter (WHERE "items"."code" IN
  91.                                                                                            ('D36003', 'D67006',
  92.                                                                                             '32084-00', '32090-00',
  93.                                                                                             '32084-02', '32090-02'))) >
  94.                                                  0 THEN 'done'
  95.                                             ELSE 'need_done'
  96.                                             END
  97.                                     ELSE
  98.                                         'no_need_done'
  99.                                     END                                                    AS colorectal_cancer_state,
  100.                                 CASE
  101.                                     WHEN (DATE_PART('YEAR',
  102.                                                     AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 14 AND 999)
  103.                                         THEN
  104.                                         CASE
  105.                                             WHEN (COUNT(DISTINCT items.code)
  106.                                                   filter (WHERE "items"."code" IN ('B33006', 'B33012'))) > 0 THEN 'done'
  107.                                             ELSE 'need_done'
  108.                                             END
  109.                                     ELSE
  110.                                         'no_need_done'
  111.                                     END                                                    AS hiv_state
  112.                          FROM "mv_stat_lvl_1_declarations"
  113.                                   JOIN mv_stat_lvl_1_patients ON mv_stat_lvl_1_patients.legal_entity_id =
  114.                                                                  mv_stat_lvl_1_declarations.legal_entity_id AND
  115.                                                                  mv_stat_lvl_1_patients.id =
  116.                                                                  mv_stat_lvl_1_declarations.patient_id
  117.                                   LEFT JOIN items
  118.                                             ON items.legal_entity_id = mv_stat_lvl_1_declarations.legal_entity_id AND
  119.                                                items.patient_id = mv_stat_lvl_1_declarations.patient_id
  120.                          WHERE "mv_stat_lvl_1_declarations"."legal_entity_id" = 8185
  121.                          GROUP BY mv_stat_lvl_1_declarations.patient_id, mv_stat_lvl_1_patients.birth_date,
  122.                                   mv_stat_lvl_1_patients.gender),
  123.      "diagnoses" AS (SELECT mv_stat_lvl_1_reception_conditions.patient_id, mv_stat_lvl_1_reception_conditions.code
  124.                      FROM "mv_stat_lvl_1_reception_conditions"
  125.                      WHERE "mv_stat_lvl_1_reception_conditions"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  126.                        AND "mv_stat_lvl_1_reception_conditions"."legal_entity_id" = 8185),
  127.      "observations" AS (SELECT mv_stat_lvl_1_ehr_observations.patient_id, mv_stat_lvl_1_ehr_observations.code
  128.                         FROM "mv_stat_lvl_1_ehr_observations"
  129.                         WHERE "mv_stat_lvl_1_ehr_observations"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  130.                           AND "mv_stat_lvl_1_ehr_observations"."legal_entity_id" = 8185
  131.                           AND "mv_stat_lvl_1_ehr_observations"."code" IN
  132.                               ('39156-5', '14743-9', '8462-4', '8480-6', '56086-2', '4548-4')),
  133.      "diagnosis_cnt" AS (SELECT diagnoses.patient_id,
  134.                                 COUNT(DISTINCT diagnoses.code)                      AS diagnoses_c1_64_counter,
  135.                                 COUNT(DISTINCT diagnoses.code)
  136.                                 filter (WHERE "diagnoses"."code" IN ('A98'))        AS diagnoses_a98_counter,
  137.                                 COUNT(DISTINCT diagnoses.code)
  138.                                 filter (WHERE "diagnoses"."code" IN ('K86', 'K87')) AS diagnoses_c1_65_counter,
  139.                                 COUNT(DISTINCT diagnoses.code)
  140.                                 filter (WHERE "diagnoses"."code" IN ('K76', 'K74')) AS diagnoses_c2_65_counter,
  141.                                 COUNT(DISTINCT diagnoses.code)
  142.                                 filter (WHERE "diagnoses"."code" IN ('T89', 'T90')) AS diagnoses_c3_65_counter
  143.                          FROM diagnoses
  144.                          GROUP BY "diagnoses"."patient_id"
  145.                          HAVING (COUNT(DISTINCT diagnoses.code) > 0)),
  146.      "observations_cnt" AS (SELECT observations.patient_id,
  147.                                    COUNT(DISTINCT observations.code) filter (WHERE "observations"."code" IN
  148.                                                                                    ('39156-5', '14743-9', '8462-4',
  149.                                                                                     '8480-6',
  150.                                                                                     '56086-2')) AS observations_c1_64_counter,
  151.                                    COUNT(DISTINCT observations.code) filter (WHERE "observations"."code" IN
  152.                                                                                    ('39156-5', '14743-9', '8462-4',
  153.                                                                                     '8480-6',
  154.                                                                                     '56086-2')) AS observations_c1_65_counter,
  155.                                    COUNT(DISTINCT observations.code) filter (WHERE "observations"."code" IN
  156.                                                                                    ('39156-5', '14743-9', '8462-4',
  157.                                                                                     '8480-6', '56086-2',
  158.                                                                                     '4548-4'))  AS observations_c2_65_counter
  159.                             FROM observations
  160.                             GROUP BY "observations"."patient_id"
  161.                             HAVING (COUNT(DISTINCT observations.code) > 0)),
  162.      "reasons_cnt" AS (SELECT mv_stat_lvl_1_ehr_reasons.patient_id,
  163.                               COUNT(DISTINCT mv_stat_lvl_1_ehr_reasons.code) AS a98_counter
  164.                        FROM "mv_stat_lvl_1_ehr_reasons"
  165.                        WHERE "mv_stat_lvl_1_ehr_reasons"."code" = 'A98'
  166.                          AND "mv_stat_lvl_1_ehr_reasons"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  167.                          AND "mv_stat_lvl_1_ehr_reasons"."legal_entity_id" = 8185
  168.                        GROUP BY "mv_stat_lvl_1_ehr_reasons"."patient_id"
  169.                        HAVING (COUNT(DISTINCT mv_stat_lvl_1_ehr_reasons.code) > 0)),
  170.      "reports_cnt" AS (SELECT mv_stat_lvl_0_ehr_diagnostic_reports.patient_id,
  171.                               COUNT(DISTINCT mv_stat_lvl_0_ehr_diagnostic_reports.code) AS counter
  172.                        FROM "mv_stat_lvl_0_ehr_diagnostic_reports"
  173.                        WHERE "mv_stat_lvl_0_ehr_diagnostic_reports"."code" IN
  174.                              ('T34001', 'T34006', 'T34024', 'T34011', 'T34013')
  175.                          AND "mv_stat_lvl_0_ehr_diagnostic_reports"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  176.                          AND "mv_stat_lvl_0_ehr_diagnostic_reports"."legal_entity_id" = 8185
  177.                        GROUP BY "mv_stat_lvl_0_ehr_diagnostic_reports"."patient_id"
  178.                        HAVING (COUNT(DISTINCT mv_stat_lvl_0_ehr_diagnostic_reports.code) > 0)),
  179.      "actions_cnt" AS (SELECT mv_stat_lvl_1_ehr_actions.patient_id,
  180.                               COUNT(DISTINCT mv_stat_lvl_1_ehr_actions.code) AS counter
  181.                        FROM "mv_stat_lvl_1_ehr_actions"
  182.                        WHERE "mv_stat_lvl_1_ehr_actions"."code" IN ('K45', 'D45', 'T45')
  183.                          AND "mv_stat_lvl_1_ehr_actions"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  184.                          AND "mv_stat_lvl_1_ehr_actions"."legal_entity_id" = 8185
  185.                        GROUP BY "mv_stat_lvl_1_ehr_actions"."patient_id"
  186.                        HAVING (COUNT(DISTINCT mv_stat_lvl_1_ehr_actions.code) > 0)),
  187.      "groups_counter" AS (SELECT mv_stat_lvl_1_patients.id AS patient_id,
  188.                                  CASE
  189.                                      WHEN (DATE_PART('YEAR',
  190.                                                      AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 40 AND 64)
  191.                                          THEN
  192.                                          CASE
  193.                                              WHEN (diagnosis_cnt.diagnoses_a98_counter > 0 OR reasons_cnt.a98_counter > 0) AND
  194.                                                   reports_cnt.counter > 0 AND
  195.                                                   observations_cnt.observations_c1_64_counter > 0 THEN 'done'
  196.                                              ELSE 'need_done'
  197.                                              END
  198.                                      ELSE 'no_need_done'
  199.                                      END                   AS visits_from_40_to_64_state,
  200.                                  CASE
  201.                                      WHEN (DATE_PART('YEAR',
  202.                                                      AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 65 AND 999)
  203.                                          THEN
  204.                                          CASE
  205.                                              WHEN (diagnosis_cnt.diagnoses_a98_counter > 0 OR reasons_cnt.a98_counter > 0) AND
  206.                                                   (((diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
  207.                                                      diagnosis_cnt.diagnoses_c2_65_counter > 0) AND
  208.                                                     observations_cnt.observations_c1_65_counter > 0) OR
  209.                                                    (diagnosis_cnt.diagnoses_c3_65_counter > 0 AND
  210.                                                     observations_cnt.observations_c2_65_counter > 0)) THEN 'done'
  211.                                              ELSE 'need_done'
  212.                                              END
  213.                                      ELSE 'no_need_done'
  214.                                      END                   AS visits_upper_65_state
  215.                           FROM "mv_stat_lvl_1_patients"
  216.                                    LEFT JOIN observations_cnt
  217.                                              ON mv_stat_lvl_1_patients.id = observations_cnt.patient_id AND
  218.                                                 (observations_cnt.observations_c1_64_counter >= 5 OR
  219.                                                  observations_cnt.observations_c1_65_counter >= 5 OR
  220.                                                  observations_cnt.observations_c2_65_counter >= 6)
  221.                                    LEFT JOIN diagnosis_cnt ON mv_stat_lvl_1_patients.id = diagnosis_cnt.patient_id AND
  222.                                                               (diagnosis_cnt.diagnoses_c1_64_counter > 0 OR
  223.                                                                diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
  224.                                                                diagnosis_cnt.diagnoses_c2_65_counter > 0 OR
  225.                                                                diagnosis_cnt.diagnoses_c3_65_counter > 0)
  226.                                    LEFT JOIN reasons_cnt ON reasons_cnt.patient_id = mv_stat_lvl_1_patients.id
  227.                                    LEFT JOIN reports_cnt ON reports_cnt.patient_id = mv_stat_lvl_1_patients.id
  228.                                    LEFT JOIN actions_cnt ON actions_cnt.patient_id = mv_stat_lvl_1_patients.id
  229.                           WHERE "mv_stat_lvl_1_patients"."legal_entity_id" = 8185
  230.                           GROUP BY mv_stat_lvl_1_patients.id, mv_stat_lvl_1_patients.age,
  231.                                    mv_stat_lvl_1_patients.birth_date, visits_from_40_to_64_state, visits_upper_65_state)
  232. SELECT mv_stat_lvl_1_declarations.legal_entity_id,
  233.        COUNT(main_counters.diabetes_state) filter (WHERE diabetes_state = 'done') as diabetes_counter,
  234.        COUNT(main_counters.hypertension_state)
  235.        filter (WHERE hypertension_state = 'done')                                 as hypertension_counter,
  236.        COUNT(main_counters.prostate_cancer_state)
  237.        filter (WHERE prostate_cancer_state = 'done')                              as prostate_cancer_counter,
  238.        COUNT(main_counters.breast_cancer_state)
  239.        filter (WHERE breast_cancer_state = 'done')                                as breast_cancer_counter,
  240.        COUNT(main_counters.hiv_state) filter (WHERE hiv_state = 'done')           as hiv_counter,
  241.        COUNT(main_counters.colorectal_cancer_state)
  242.        filter (WHERE colorectal_cancer_state = 'done')                            as colorectal_cancer_counter,
  243.        COUNT(groups_counter.visits_from_40_to_64_state)
  244.        filter (WHERE visits_from_40_to_64_state = 'done')                         as visits_from_40_to_64_counter,
  245.        COUNT(groups_counter.visits_upper_65_state)
  246.        filter (WHERE visits_upper_65_state = 'done')                              as visits_upper_65_counter,
  247.  
  248.        COUNT(main_counters.diabetes_state)
  249.        filter (WHERE diabetes_state IN ('done', 'need_done'))                     as target_diabetes_counter,
  250.        COUNT(main_counters.hypertension_state)
  251.        filter (WHERE hypertension_state IN ('done', 'need_done'))                 as target_hypertension_counter,
  252.        COUNT(main_counters.prostate_cancer_state)
  253.        filter (WHERE prostate_cancer_state IN ('done', 'need_done'))              as target_prostate_cancer_counter,
  254.        COUNT(main_counters.breast_cancer_state)
  255.        filter (WHERE breast_cancer_state IN ('done', 'need_done'))                as target_breast_cancer_counter,
  256.        COUNT(main_counters.hiv_state)
  257.        filter (WHERE hiv_state IN ('done', 'need_done'))                          as target_hiv_counter,
  258.        COUNT(main_counters.colorectal_cancer_state)
  259.        filter (WHERE colorectal_cancer_state IN ('done', 'need_done'))            as target_colorectal_cancer_counter,
  260.        COUNT(groups_counter.visits_from_40_to_64_state)
  261.        filter (WHERE visits_from_40_to_64_state IN ('done', 'need_done'))         as target_visits_from_40_to_64_counter,
  262.        COUNT(groups_counter.visits_upper_65_state)
  263.        filter (WHERE visits_upper_65_state IN ('done', 'need_done'))              as target_visits_upper_65_counter
  264. FROM "mv_stat_lvl_1_declarations"
  265.          LEFT JOIN main_counters ON mv_stat_lvl_1_declarations.patient_id = main_counters.patient_id
  266.          LEFT JOIN groups_counter ON mv_stat_lvl_1_declarations.patient_id = groups_counter.patient_id
  267. WHERE "mv_stat_lvl_1_declarations"."legal_entity_id" = 8185
  268. GROUP BY "mv_stat_lvl_1_declarations"."legal_entity_id"
  269. LIMIT 1;
  270.  
  271.  
  272. -- WAS
  273. -- +---------------+----------------+--------------------+-----------------------+---------------------+-----------+-------------------------+----------------------------+-----------------------+-----------------------+---------------------------+------------------------------+----------------------------+------------------+--------------------------------+-----------------------------------+------------------------------+
  274. -- |legal_entity_id|diabetes_counter|hypertension_counter|prostate_cancer_counter|breast_cancer_counter|hiv_counter|colorectal_cancer_counter|visits_from_40_to_64_counter|visits_upper_65_counter|target_diabetes_counter|target_hypertension_counter|target_prostate_cancer_counter|target_breast_cancer_counter|target_hiv_counter|target_colorectal_cancer_counter|target_visits_from_40_to_64_counter|target_visits_upper_65_counter|
  275. -- +---------------+----------------+--------------------+-----------------------+---------------------+-----------+-------------------------+----------------------------+-----------------------+-----------------------+---------------------------+------------------------------+----------------------------+------------------+--------------------------------+-----------------------------------+------------------------------+
  276. -- |8185           |518             |450                 |210                    |189                  |0          |368                      |51                          |0                      |918                    |851                        |420                           |290                         |1952              |633                             |793                                |294                           |
  277. -- +---------------+----------------+--------------------+-----------------------+---------------------+-----------+-------------------------+----------------------------+-----------------------+-----------------------+---------------------------+------------------------------+----------------------------+------------------+--------------------------------+-----------------------------------+------------------------------+
  278.  
  279.  
  280. WITH "items" AS (SELECT "mv_stat_lvl_0_ehr_service_requests".*
  281.                  FROM ((SELECT "mv_stat_lvl_0_ehr_service_requests".*
  282.                         FROM ((SELECT mv_stat_lvl_0_ehr_service_requests.id,
  283.                                       mv_stat_lvl_0_ehr_service_requests.asserted_date,
  284.                                       mv_stat_lvl_0_ehr_service_requests.code,
  285.                                       mv_stat_lvl_0_ehr_service_requests.item_type,
  286.                                       mv_stat_lvl_0_ehr_service_requests.status::varchar,
  287.                                       mv_stat_lvl_0_ehr_service_requests.title,
  288.                                       mv_stat_lvl_0_ehr_service_requests.employee_id,
  289.                                       mv_stat_lvl_0_ehr_service_requests.legal_entity_id,
  290.                                       mv_stat_lvl_0_ehr_service_requests.patient_id
  291.                                FROM "mv_stat_lvl_0_ehr_service_requests"
  292.                                WHERE "mv_stat_lvl_0_ehr_service_requests"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  293.                                  AND "mv_stat_lvl_0_ehr_service_requests"."legal_entity_id" = 8185
  294.                                  AND "mv_stat_lvl_0_ehr_service_requests"."code" IN
  295.                                      ('T34006', 'T34011', 'T34013', 'T34024', 'T34001', 'T34004', 'T34005', 'T34023',
  296.                                       'T34025', 'T34038', 'U67002', 'Y34011', 'Y34003', 'Х41941', 'X41973', '59300-00',
  297.                                       '55070-00', '55076-00', 'D36003', 'D67006', '32084-00', '32090-00', '32084-02',
  298.                                       '32090-02', 'B33006', 'B33012', '14743-9'))
  299.                               UNION
  300.                               (SELECT mv_stat_lvl_0_ehr_diagnostic_reports.id,
  301.                                       mv_stat_lvl_0_ehr_diagnostic_reports.asserted_date,
  302.                                       mv_stat_lvl_0_ehr_diagnostic_reports.code,
  303.                                       mv_stat_lvl_0_ehr_diagnostic_reports.item_type,
  304.                                       mv_stat_lvl_0_ehr_diagnostic_reports.status::varchar,
  305.                                       mv_stat_lvl_0_ehr_diagnostic_reports.title,
  306.                                       mv_stat_lvl_0_ehr_diagnostic_reports.employee_id,
  307.                                       mv_stat_lvl_0_ehr_diagnostic_reports.legal_entity_id,
  308.                                       mv_stat_lvl_0_ehr_diagnostic_reports.patient_id
  309.                                FROM "mv_stat_lvl_0_ehr_diagnostic_reports"
  310.                                WHERE "mv_stat_lvl_0_ehr_diagnostic_reports"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  311.                                  AND "mv_stat_lvl_0_ehr_diagnostic_reports"."legal_entity_id" = 8185
  312.                                  AND "mv_stat_lvl_0_ehr_diagnostic_reports"."code" IN
  313.                                      ('T34006', 'T34011', 'T34013', 'T34024', 'T34001', 'T34004', 'T34005', 'T34023',
  314.                                       'T34025', 'T34038', 'U67002', 'Y34011', 'Y34003', 'Х41941', 'X41973', '59300-00',
  315.                                       '55070-00', '55076-00', 'D36003', 'D67006', '32084-00', '32090-00', '32084-02',
  316.                                       '32090-02', 'B33006', 'B33012', '14743-9'))) "mv_stat_lvl_0_ehr_service_requests")
  317.                        UNION
  318.                        (SELECT mv_stat_lvl_1_ehr_observations.id,
  319.                                mv_stat_lvl_1_ehr_observations.asserted_date,
  320.                                mv_stat_lvl_1_ehr_observations.code,
  321.                                1                as item_type,
  322.                                'final'::varchar as status,
  323.                                mv_stat_lvl_1_ehr_observations.title,
  324.                                mv_stat_lvl_1_ehr_observations.employee_id,
  325.                                mv_stat_lvl_1_ehr_observations.legal_entity_id,
  326.                                mv_stat_lvl_1_ehr_observations.patient_id
  327.                         FROM "mv_stat_lvl_1_ehr_observations"
  328.                         WHERE "mv_stat_lvl_1_ehr_observations"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  329.                           AND "mv_stat_lvl_1_ehr_observations"."legal_entity_id" = 8185
  330.                           AND "mv_stat_lvl_1_ehr_observations"."code" IN
  331.                               ('T34006', 'T34011', 'T34013', 'T34024', 'T34001', 'T34004', 'T34005', 'T34023', 'T34025',
  332.                                'T34038', 'U67002', 'Y34011', 'Y34003', 'Х41941', 'X41973', '59300-00', '55070-00',
  333.                                '55076-00', 'D36003', 'D67006', '32084-00', '32090-00', '32084-02', '32090-02', 'B33006',
  334.                                'B33012', '14743-9'))) "mv_stat_lvl_0_ehr_service_requests"),
  335.      "main_counters" AS (SELECT COALESCE(COUNT(DISTINCT mv_stat_lvl_1_declarations.id), 0) AS counter,
  336.                                 mv_stat_lvl_1_declarations.patient_id                      AS patient_id,
  337.                                 CASE
  338.                                     WHEN (("mv_stat_lvl_1_patients"."gender" = 1 AND DATE_PART('YEAR',
  339.                                                                                                AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 999) OR
  340.                                           ("mv_stat_lvl_1_patients"."gender" = 0 AND DATE_PART('YEAR',
  341.                                                                                                AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 40 AND 999))
  342.                                         THEN
  343.                                         CASE
  344.                                             WHEN (COUNT(DISTINCT items.code) filter (WHERE "items"."code" IN
  345.                                                                                            ('T34006', 'T34011',
  346.                                                                                             'T34013', 'T34024',
  347.                                                                                             'T34001', 'T34004'))) > 0
  348.                                                 THEN 'done'
  349.                                             ELSE 'need_done'
  350.                                             END
  351.                                     ELSE
  352.                                         'no_need_done'
  353.                                     END                                                       hypertension_state,
  354.                                 CASE
  355.                                     WHEN (DATE_PART('YEAR',
  356.                                                     AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 45 AND 999)
  357.                                         THEN
  358.                                         CASE
  359.                                             WHEN (COUNT(DISTINCT items.code)
  360.                                                   filter (WHERE "items"."code" IN ('T34005', 'T34023', 'T34025', 'T34038', '14743-9'))) >
  361.                                                  0 THEN 'done'
  362.                                             ELSE 'need_done'
  363.                                             END
  364.                                     ELSE
  365.                                         'no_need_done'
  366.                                     END                                                    AS diabetes_state,
  367.                                 CASE
  368.                                     WHEN ("mv_stat_lvl_1_patients"."gender" = 0 AND (DATE_PART('YEAR',
  369.                                                                                                AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 40 AND 999))
  370.                                         THEN
  371.                                         CASE
  372.                                             WHEN (COUNT(DISTINCT items.code)
  373.                                                   filter (WHERE "items"."code" IN ('U67002', 'Y34011', 'Y34003'))) > 0
  374.                                                 THEN 'done'
  375.                                             ELSE 'need_done'
  376.                                             END
  377.                                     ELSE
  378.                                         'no_need_done'
  379.                                     END                                                    AS prostate_cancer_state,
  380.                                 CASE
  381.                                     WHEN ("mv_stat_lvl_1_patients"."gender" = 1 AND (DATE_PART('YEAR',
  382.                                                                                                AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 69))
  383.                                         THEN
  384.                                         CASE
  385.                                             WHEN (COUNT(DISTINCT items.code) filter (WHERE "items"."code" IN
  386.                                                                                            ('Х41941', 'X41973',
  387.                                                                                             '59300-00', '55070-00',
  388.                                                                                             '55076-00'))) > 0
  389.                                                 THEN 'done'
  390.                                             ELSE 'need_done'
  391.                                             END
  392.                                     ELSE
  393.                                         'no_need_done'
  394.                                     END                                                    AS breast_cancer_state,
  395.                                 CASE
  396.                                     WHEN (DATE_PART('YEAR',
  397.                                                     AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 50 AND 75)
  398.                                         THEN
  399.                                         CASE
  400.                                             WHEN (COUNT(DISTINCT items.code) filter (WHERE "items"."code" IN
  401.                                                                                            ('D36003', 'D67006',
  402.                                                                                             '32084-00', '32090-00',
  403.                                                                                             '32084-02', '32090-02'))) >
  404.                                                  0 THEN 'done'
  405.                                             ELSE 'need_done'
  406.                                             END
  407.                                     ELSE
  408.                                         'no_need_done'
  409.                                     END                                                    AS colorectal_cancer_state,
  410.                                 CASE
  411.                                     WHEN (DATE_PART('YEAR',
  412.                                                     AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 14 AND 999)
  413.                                         THEN
  414.                                         CASE
  415.                                             WHEN (COUNT(DISTINCT items.code)
  416.                                                   filter (WHERE "items"."code" IN ('B33006', 'B33012'))) > 0 THEN 'done'
  417.                                             ELSE 'need_done'
  418.                                             END
  419.                                     ELSE
  420.                                         'no_need_done'
  421.                                     END                                                    AS hiv_state
  422.                          FROM "mv_stat_lvl_1_declarations"
  423.                                   JOIN mv_stat_lvl_1_patients ON mv_stat_lvl_1_patients.legal_entity_id =
  424.                                                                  mv_stat_lvl_1_declarations.legal_entity_id AND
  425.                                                                  mv_stat_lvl_1_patients.id =
  426.                                                                  mv_stat_lvl_1_declarations.patient_id
  427.                                   LEFT JOIN items
  428.                                             ON items.legal_entity_id = mv_stat_lvl_1_declarations.legal_entity_id AND
  429.                                                items.patient_id = mv_stat_lvl_1_declarations.patient_id
  430.                          WHERE "mv_stat_lvl_1_declarations"."legal_entity_id" = 8185
  431.                          GROUP BY mv_stat_lvl_1_declarations.patient_id, mv_stat_lvl_1_patients.birth_date,
  432.                                   mv_stat_lvl_1_patients.gender),
  433.      "diagnoses" AS (SELECT mv_stat_lvl_1_reception_conditions.patient_id, mv_stat_lvl_1_reception_conditions.code
  434.                      FROM "mv_stat_lvl_1_reception_conditions"
  435.                      WHERE "mv_stat_lvl_1_reception_conditions"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  436.                        AND "mv_stat_lvl_1_reception_conditions"."legal_entity_id" = 8185),
  437.      "observations" AS (SELECT mv_stat_lvl_1_ehr_observations.patient_id, mv_stat_lvl_1_ehr_observations.code
  438.                         FROM "mv_stat_lvl_1_ehr_observations"
  439.                         WHERE "mv_stat_lvl_1_ehr_observations"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  440.                           AND "mv_stat_lvl_1_ehr_observations"."legal_entity_id" = 8185
  441.                           AND "mv_stat_lvl_1_ehr_observations"."code" IN
  442.                               ('39156-5', '14743-9', '8462-4', '8480-6', '56086-2', '4548-4')),
  443.      "diagnosis_cnt" AS (SELECT diagnoses.patient_id,
  444.                                 COUNT(DISTINCT diagnoses.code)                      AS diagnoses_c1_64_counter,
  445.                                 COUNT(DISTINCT diagnoses.code)
  446.                                 filter (WHERE "diagnoses"."code" IN ('A98'))        AS diagnoses_a98_counter,
  447.                                 COUNT(DISTINCT diagnoses.code)
  448.                                 filter (WHERE "diagnoses"."code" IN ('K86', 'K87')) AS diagnoses_c1_65_counter,
  449.                                 COUNT(DISTINCT diagnoses.code)
  450.                                 filter (WHERE "diagnoses"."code" IN ('K76', 'K74')) AS diagnoses_c2_65_counter,
  451.                                 COUNT(DISTINCT diagnoses.code)
  452.                                 filter (WHERE "diagnoses"."code" IN ('T89', 'T90')) AS diagnoses_c3_65_counter
  453.                          FROM diagnoses
  454.                          GROUP BY "diagnoses"."patient_id"
  455.                          HAVING (COUNT(DISTINCT diagnoses.code) > 0)),
  456.      "observations_cnt" AS (SELECT observations.patient_id,
  457.                                    COUNT(DISTINCT observations.code) filter (WHERE "observations"."code" IN
  458.                                                                                    ('39156-5', '14743-9', '8462-4',
  459.                                                                                     '8480-6',
  460.                                                                                     '56086-2')) AS observations_c1_64_counter,
  461.                                    COUNT(DISTINCT observations.code) filter (WHERE "observations"."code" IN
  462.                                                                                    ('39156-5', '14743-9', '8462-4',
  463.                                                                                     '8480-6',
  464.                                                                                     '56086-2')) AS observations_c1_65_counter,
  465.                                    COUNT(DISTINCT observations.code) filter (WHERE "observations"."code" IN
  466.                                                                                    ('39156-5', '14743-9', '8462-4',
  467.                                                                                     '8480-6', '56086-2',
  468.                                                                                     '4548-4'))  AS observations_c2_65_counter
  469.                             FROM observations
  470.                             GROUP BY "observations"."patient_id"
  471.                             HAVING (COUNT(DISTINCT observations.code) > 0)),
  472.      "reasons_cnt" AS (SELECT mv_stat_lvl_1_ehr_reasons.patient_id,
  473.                               COUNT(DISTINCT mv_stat_lvl_1_ehr_reasons.code) AS a98_counter
  474.                        FROM "mv_stat_lvl_1_ehr_reasons"
  475.                        WHERE "mv_stat_lvl_1_ehr_reasons"."code" = 'A98'
  476.                          AND "mv_stat_lvl_1_ehr_reasons"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  477.                          AND "mv_stat_lvl_1_ehr_reasons"."legal_entity_id" = 8185
  478.                        GROUP BY "mv_stat_lvl_1_ehr_reasons"."patient_id"
  479.                        HAVING (COUNT(DISTINCT mv_stat_lvl_1_ehr_reasons.code) > 0)),
  480.      "reports_cnt" AS (SELECT mv_stat_lvl_0_ehr_diagnostic_reports.patient_id,
  481.                               COUNT(DISTINCT mv_stat_lvl_0_ehr_diagnostic_reports.code) AS counter
  482.                        FROM "mv_stat_lvl_0_ehr_diagnostic_reports"
  483.                        WHERE "mv_stat_lvl_0_ehr_diagnostic_reports"."code" IN
  484.                              ('T34001', 'T34006', 'T34024', 'T34011', 'T34013')
  485.                          AND "mv_stat_lvl_0_ehr_diagnostic_reports"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  486.                          AND "mv_stat_lvl_0_ehr_diagnostic_reports"."legal_entity_id" = 8185
  487.                        GROUP BY "mv_stat_lvl_0_ehr_diagnostic_reports"."patient_id"
  488.                        HAVING (COUNT(DISTINCT mv_stat_lvl_0_ehr_diagnostic_reports.code) > 0)),
  489.      "actions_cnt" AS (SELECT mv_stat_lvl_1_ehr_actions.patient_id,
  490.                               COUNT(DISTINCT mv_stat_lvl_1_ehr_actions.code) AS counter
  491.                        FROM "mv_stat_lvl_1_ehr_actions"
  492.                        WHERE "mv_stat_lvl_1_ehr_actions"."code" IN ('K45', 'D45', 'T45')
  493.                          AND "mv_stat_lvl_1_ehr_actions"."asserted_date" BETWEEN '2024-01-01 00:00:00' AND '2024-04-11 23:59:59.999999'
  494.                          AND "mv_stat_lvl_1_ehr_actions"."legal_entity_id" = 8185
  495.                        GROUP BY "mv_stat_lvl_1_ehr_actions"."patient_id"
  496.                        HAVING (COUNT(DISTINCT mv_stat_lvl_1_ehr_actions.code) > 0)),
  497.      "groups_counter" AS (SELECT mv_stat_lvl_1_patients.id AS patient_id,
  498.                                  CASE
  499.                                      WHEN (DATE_PART('YEAR',
  500.                                                      AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 40 AND 64)
  501.                                          THEN
  502.                                          CASE
  503.                                              WHEN (diagnosis_cnt.diagnoses_a98_counter > 0 OR reasons_cnt.a98_counter > 0) AND
  504.                                                   reports_cnt.counter > 0 AND
  505.                                                   observations_cnt.observations_c1_64_counter > 0 THEN 'done'
  506.                                              ELSE 'need_done'
  507.                                              END
  508.                                      ELSE 'no_need_done'
  509.                                      END                   AS visits_from_40_to_64_state,
  510.                                  CASE
  511.                                      WHEN (DATE_PART('YEAR',
  512.                                                      AGE('2024-04-11 23:59:59.999999', mv_stat_lvl_1_patients.birth_date)) BETWEEN 65 AND 999)
  513.                                          THEN
  514.                                          CASE
  515.                                              WHEN (diagnosis_cnt.diagnoses_a98_counter > 0 OR reasons_cnt.a98_counter > 0) AND
  516.                                                   (((diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
  517.                                                      diagnosis_cnt.diagnoses_c2_65_counter > 0) AND
  518.                                                     observations_cnt.observations_c1_65_counter > 0) OR
  519.                                                    (diagnosis_cnt.diagnoses_c3_65_counter > 0 AND
  520.                                                     observations_cnt.observations_c2_65_counter > 0)) THEN 'done'
  521.                                              ELSE 'need_done'
  522.                                              END
  523.                                      ELSE 'no_need_done'
  524.                                      END                   AS visits_upper_65_state
  525.                           FROM "mv_stat_lvl_1_patients"
  526.                                    LEFT JOIN observations_cnt
  527.                                              ON mv_stat_lvl_1_patients.id = observations_cnt.patient_id AND
  528.                                                 (observations_cnt.observations_c1_64_counter >= 5 OR
  529.                                                  observations_cnt.observations_c1_65_counter >= 5 OR
  530.                                                  observations_cnt.observations_c2_65_counter >= 6)
  531.                                    LEFT JOIN diagnosis_cnt ON mv_stat_lvl_1_patients.id = diagnosis_cnt.patient_id AND
  532.                                                               (diagnosis_cnt.diagnoses_c1_64_counter > 0 OR
  533.                                                                diagnosis_cnt.diagnoses_c1_65_counter > 0 OR
  534.                                                                diagnosis_cnt.diagnoses_c2_65_counter > 0 OR
  535.                                                                diagnosis_cnt.diagnoses_c3_65_counter > 0)
  536.                                    LEFT JOIN reasons_cnt ON reasons_cnt.patient_id = mv_stat_lvl_1_patients.id
  537.                                    LEFT JOIN reports_cnt ON reports_cnt.patient_id = mv_stat_lvl_1_patients.id
  538.                                    LEFT JOIN actions_cnt ON actions_cnt.patient_id = mv_stat_lvl_1_patients.id
  539.                           WHERE "mv_stat_lvl_1_patients"."legal_entity_id" = 8185
  540.                           GROUP BY mv_stat_lvl_1_patients.id, mv_stat_lvl_1_patients.age,
  541.                                    mv_stat_lvl_1_patients.birth_date, visits_from_40_to_64_state, visits_upper_65_state)
  542. SELECT mv_stat_lvl_1_declarations.legal_entity_id,
  543.        COUNT(main_counters.diabetes_state) filter (WHERE diabetes_state = 'done') as diabetes_counter,
  544.        COUNT(main_counters.hypertension_state)
  545.        filter (WHERE hypertension_state = 'done')                                 as hypertension_counter,
  546.        COUNT(main_counters.prostate_cancer_state)
  547.        filter (WHERE prostate_cancer_state = 'done')                              as prostate_cancer_counter,
  548.        COUNT(main_counters.breast_cancer_state)
  549.        filter (WHERE breast_cancer_state = 'done')                                as breast_cancer_counter,
  550.        COUNT(main_counters.hiv_state) filter (WHERE hiv_state = 'done')           as hiv_counter,
  551.        COUNT(main_counters.colorectal_cancer_state)
  552.        filter (WHERE colorectal_cancer_state = 'done')                            as colorectal_cancer_counter,
  553.        COUNT(groups_counter.visits_from_40_to_64_state)
  554.        filter (WHERE visits_from_40_to_64_state = 'done')                         as visits_from_40_to_64_counter,
  555.        COUNT(groups_counter.visits_upper_65_state)
  556.        filter (WHERE visits_upper_65_state = 'done')                              as visits_upper_65_counter,
  557.  
  558.        COUNT(main_counters.diabetes_state)
  559.        filter (WHERE diabetes_state IN ('done', 'need_done'))                     as target_diabetes_counter,
  560.        COUNT(main_counters.hypertension_state)
  561.        filter (WHERE hypertension_state IN ('done', 'need_done'))                 as target_hypertension_counter,
  562.        COUNT(main_counters.prostate_cancer_state)
  563.        filter (WHERE prostate_cancer_state IN ('done', 'need_done'))              as target_prostate_cancer_counter,
  564.        COUNT(main_counters.breast_cancer_state)
  565.        filter (WHERE breast_cancer_state IN ('done', 'need_done'))                as target_breast_cancer_counter,
  566.        COUNT(main_counters.hiv_state)
  567.        filter (WHERE hiv_state IN ('done', 'need_done'))                          as target_hiv_counter,
  568.        COUNT(main_counters.colorectal_cancer_state)
  569.        filter (WHERE colorectal_cancer_state IN ('done', 'need_done'))            as target_colorectal_cancer_counter,
  570.        COUNT(groups_counter.visits_from_40_to_64_state)
  571.        filter (WHERE visits_from_40_to_64_state IN ('done', 'need_done'))         as target_visits_from_40_to_64_counter,
  572.        COUNT(groups_counter.visits_upper_65_state)
  573.        filter (WHERE visits_upper_65_state IN ('done', 'need_done'))              as target_visits_upper_65_counter
  574. FROM "mv_stat_lvl_1_declarations"
  575.          LEFT JOIN main_counters ON mv_stat_lvl_1_declarations.patient_id = main_counters.patient_id
  576.          LEFT JOIN groups_counter ON mv_stat_lvl_1_declarations.patient_id = groups_counter.patient_id
  577. WHERE "mv_stat_lvl_1_declarations"."legal_entity_id" = 8185
  578. GROUP BY "mv_stat_lvl_1_declarations"."legal_entity_id"
  579. LIMIT 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement