Advertisement
temaon_lieto

3500 form

Jun 17th, 2025 (edited)
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.79 KB | None | 0 0
  1. WITH protocol_procedures AS (SELECT cascade_lvl03_surgical_procedures.*
  2.                              FROM cascade_lvl03_surgical_procedures
  3.                              WHERE cascade_lvl03_surgical_procedures.procedure_performed_date BETWEEN '2024-01-01 00:00:00' AND '2025-01-01 23:59:59'
  4.                                AND cascade_lvl03_surgical_procedures.legal_entity_id = 3382),
  5.      groups_mappers AS (SELECT dict_table3500service_mappers.*
  6.                         FROM dict_table3500service_mappers
  7.                         WHERE dict_table3500service_mappers.line_number != '4.7'),
  8.      main_table AS (SELECT MAX(mappers.surgery_type_title)                                                                                  AS surgery_name,
  9.                            mappers.line_number                                                                                              AS line_number,
  10.                            mappers.major                                                                                                    AS major,
  11.                            mappers.minor                                                                                                    AS minor,
  12.                            countIf(DISTINCT (sp.id), (sp.patient_id IS NOT NULL AND
  13.                                                       (mappers.line_number != '7.2' OR sp.patient_age < 1) AND
  14.                                                       ((mappers.has_icd10_codes = 0 OR dtim.code != '') AND
  15.                                                        (mappers.has_addition_icd10_codes = 0 OR dtaim.code != ''))))                        AS surgeries_count,
  16.                            countIf(DISTINCT (sp.id), (sp.patient_id IS NOT NULL AND
  17.                                                       (mappers.line_number != '7.2' OR sp.patient_age < 1) AND
  18.                                                       ((mappers.has_icd10_codes = 0 OR dtim.code != '') AND
  19.                                                        (mappers.has_addition_icd10_codes = 0 OR dtaim.code != '')) AND
  20.                                                       (CASE
  21.                                                            WHEN mappers.line_number IN ('13.2', '13.0')
  22.                                                                THEN mappers.line_number = '13.0' AND patient_age < 18
  23.                                                            WHEN mappers.line_number = '12.0' THEN FALSE
  24.                                                            ELSE patient_age < 18 END)))                                                     AS under_17_years_count,
  25.                            countIf(DISTINCT (sp.patient_id), (sp.patient_id IS NOT NULL AND
  26.                                                               (mappers.line_number != '7.2' OR sp.patient_age < 1) AND
  27.                                                               ((mappers.has_icd10_codes = 0 OR dtim.code != '') AND
  28.                                                                (mappers.has_addition_icd10_codes = 0 OR dtaim.code != '')) AND
  29.                                                               (sp.discharge_disposition_code = 'death')))                                   AS deaths_count,
  30.                            countIf(DISTINCT (sp.patient_id), (sp.patient_id IS NOT NULL AND
  31.                                                               (mappers.line_number != '7.2' OR sp.patient_age < 1) AND
  32.                                                               ((mappers.has_icd10_codes = 0 OR dtim.code != '') AND
  33.                                                                (mappers.has_addition_icd10_codes = 0 OR dtaim.code != '')) AND
  34.                                                               sp.discharge_disposition_code = 'death' AND (CASE
  35.                                                                                                                WHEN mappers.line_number IN ('13.2', '13.0')
  36.                                                                                                                    THEN mappers.line_number = '13.0' AND patient_age < 18
  37.                                                                                                                WHEN mappers.line_number = '12.0'
  38.                                                                                                                    THEN FALSE
  39.                                                                                                                ELSE patient_age < 18 END))) AS under_17_years_deaths_count,
  40.                            countIf(DISTINCT (sp.patient_id), (sp.patient_id IS NOT NULL AND
  41.                                                               (mappers.line_number != '7.2' OR sp.patient_age < 1) AND
  42.                                                               ((mappers.has_icd10_codes = 0 OR dtim.code != '') AND
  43.                                                                (mappers.has_addition_icd10_codes = 0 OR dtaim.code != '')) AND
  44.                                                               sp.is_village =
  45.                                                               1))                                                                           AS villagers_count
  46.  
  47.                     FROM groups_mappers mappers
  48.                              LEFT JOIN protocol_procedures sp ON mappers.code = sp.service_code
  49.                              LEFT JOIN dict_table3500_icd10_mappers dtim
  50.                                        ON dtim.code = sp.icd10_code AND mappers.mapper_id = dtim.mapper_id
  51.                              LEFT JOIN dict_table3500_addition_icd10_mappers dtaim
  52.                                        ON dtaim.code = sp.icd10_code AND mappers.mapper_id = dtaim.mapper_id
  53.                     GROUP BY mappers.line_number, mappers.major, mappers.minor
  54.                     ORDER BY (mappers.major, mappers.minor) ASC),
  55.      header_table AS (SELECT 'Усього операцій, у тому числі:'    AS surgery_name,
  56.                              '1.0'                               AS line_number,
  57.                              1                                   AS major,
  58.                              0                                   AS minor,
  59.                              SUM(mt.surgeries_count)             AS surgeries_count,
  60.                              SUM(mt.under_17_years_count)        AS under_17_years_count,
  61.                              SUM(mt.deaths_count)                AS deaths_count,
  62.                              SUM(mt.under_17_years_deaths_count) AS under_17_years_deaths_count,
  63.                              SUM(mt.villagers_count)             AS villagers_count
  64.                       FROM main_table mt
  65.                       WHERE mt.minor = 0)
  66. SELECT header_table.*
  67. FROM header_table
  68. UNION ALL
  69. SELECT main_table.*
  70. FROM main_table
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement