Advertisement
temaon_lieto

PATIENTS SQL with status filter

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