Advertisement
Guest User

LPU

a guest
Oct 15th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 15.70 KB | None | 0 0
  1.     SELECT pat.id_lpu_fk,
  2.            lpu.st_bol_name,
  3.            otd.kodotd,
  4.            COALESCE(pm.otd_num,0) AS otd_num,
  5.            otd.naimotd || COALESCE(' № ' || CAST(pm.otd_num AS VARCHAR(2)), '')
  6.                          AS NAIMOTD,
  7.            pat.numcard,
  8.            RIGHT(EXTRACT(YEAR FROM pat.dt_receipt),2) || RIGHT('000' ||
  9.              COALESCE(pm.sprotd_id_fk,''),3) || RIGHT('00000' ||
  10.              COALESCE(pat.numcard,''),5) AS NUM_CARD,
  11.            peo.lname || ' ' || peo.fname || COALESCE(' ' || peo.mname, '')
  12.                          AS FIO,
  13.            pm.diagnos    AS DIAGNOS,
  14.            CASE                                -- BDC 20.02.2019
  15.              WHEN n18.id_reas = 0 THEN 'Перв'  -- BDC 20.02.2019
  16.              WHEN n18.id_reas = 1 THEN 'Рецид' -- BDC 20.02.2019
  17.              WHEN n18.id_reas = 2 THEN 'Прогр' -- BDC 20.02.2019
  18.              WHEN n18.id_reas = 3 THEN 'Динам' -- BDC 20.02.2019
  19.              WHEN n18.id_reas = 4 THEN 'Дисп'  -- BDC 20.02.2019
  20.              WHEN n18.id_reas = 5 THEN 'Диагн' -- BDC 20.02.2019
  21.              WHEN n18.id_reas = 6 THEN 'Симпт' -- BDC 20.02.2019
  22.              ELSE n18.reas_name
  23.            END           AS DS1_T,
  24.            n03.kod_t     AS T,
  25.            n04.kod_n     AS N,
  26.            n05.kod_m     AS M,
  27.            n02.kod_st    AS KOD_ST,
  28.            CASE
  29.              WHEN pm.sprpaiment_id_fk = 1 THEN 'ОМС'
  30.              WHEN pm.sprpaiment_id_fk = 9 THEN 'ВМП ОМС'
  31.              ELSE '???'
  32.            END           AS OPL,
  33.            pm.ksg_select AS KSG,
  34.            -- "первая" услуга
  35.            (SELECT FIRST 1 srv_id
  36.               FROM
  37.                 (SELECT
  38.                        su.srv_id_fk  AS srv_id,
  39.                        su.cl_oper    AS cl
  40.                   FROM wt_surgical_operation su
  41.                   JOIN wt_patient_move      pm1 ON pm1.wt_patient_move_id = su.wt_pm_id_fk
  42.                   JOIN wt_patient          pat1 ON pat1.wt_patient_id     = pm1.wt_patient_id_fk
  43.                  WHERE su.wt_pm_id_fk = pm.wt_patient_move_id
  44.                    AND pat1.payment IN (1,9)                                         -- только ОМС или ВМП по ОМС
  45.                    AND pm1.cl_otd > 0                                                -- только оплачиваемый случай
  46.                    AND ((su.srv_id_fk IS NOT NULL) AND (su.srv_id_fk <> ''))         -- только с мед услугой для операции
  47.                    AND ((pat1.payment = 9) OR (su.cl_oper > 0))                      -- только оплачиваемая операция (ОМС)
  48.                 UNION ALL
  49.                 SELECT
  50.                        sr.srv_id_fk  AS srv_id,
  51.                        sr.cl_srv     AS cl
  52.                   FROM wt_srv sr
  53.                   JOIN wt_patient_move      pm2 ON pm2.wt_patient_move_id = sr.wt_pm_id_fk
  54.                   JOIN wt_patient          pat2 ON pat2.wt_patient_id     = pm2.wt_patient_id_fk
  55.                  WHERE sr.wt_pm_id_fk = pm.wt_patient_move_id
  56.                    AND pat2.payment IN (1,9)                                         -- только ОМС или ВМП по ОМС
  57.                    AND pm2.cl_otd > 0                                                -- только оплачиваемый случай
  58.                    AND ((pat2.payment = 9) OR (sr.cl_srv > 0))                       -- только оплачиваемая операция (ОМС)
  59.                  ORDER BY 2
  60.                 )
  61.            )             AS SRV_ID,
  62.            -- доп критерии
  63.          --COALESCE(                                                            -- BDC 20.02.2019
  64.          --(SELECT FIRST 1 SUBSTRING(dt.data_value_kod FROM 1 FOR 2) ||         -- BDC 20.02.2019
  65.          --        '=' || SUBSTRING(dt.data_value_kod FROM 3 FOR 99) || ';'     -- BDC 20.02.2019
  66.          --   FROM dt_spr dt                                                    -- BDC 20.02.2019
  67.          --  WHERE dt.def_set_data_id_fk IN (87,88,89)                          -- BDC 20.02.2019
  68.          --    AND dt.data_value_kod IS NOT NULL                                -- BDC 20.02.2019
  69.          --    AND dt.wt_patient_id_fk      = pat.wt_patient_id                 -- BDC 20.02.2019
  70.          --    AND dt.wt_patient_move_id_fk = pm.wt_patient_move_id), '') ||    -- BDC 20.02.2019
  71.            (SELECT ADD_CR FROM list_cr(pm.wt_patient_move_id)) ||               -- BDC 20.02.2019
  72.            COALESCE(
  73.            (SELECT FIRST 1 'EKO=' || CAST(srv.eko AS CHAR(1)) || ';'
  74.              FROM wt_srv srv
  75.             WHERE srv.wt_pm_id_fk = pm.wt_patient_move_id
  76.               AND srv.srv_id_fk = 'A11.20.017'), '') -- ЭКО
  77.                          AS ADD_CR,
  78.            COALESCE(sch.mnn,'') ||                                                      -- BDC 20.02.2010
  79.            COALESCE(                                                                    -- BDC 20.02.2010
  80.            (SELECT FIRST 1                                                              -- BDC 20.02.2010
  81.                    mnn.mnn                                                              -- BDC 20.02.2010
  82.               FROM wt_srv sr                                                            -- BDC 20.02.2010
  83.               JOIN wt_patient_move pm2 ON pm2.wt_patient_move_id = sr.wt_pm_id_fk       -- BDC 20.02.2010
  84.               JOIN wt_patient     pat2 ON pat2.wt_patient_id     = pm2.wt_patient_id_fk -- BDC 20.02.2010
  85.          LEFT JOIN st_sprmnn       mnn ON mnn.kod                = sr.mnn               -- BDC 20.02.2010
  86.              WHERE sr.wt_pm_id_fk = pm.wt_patient_move_id                               -- BDC 20.02.2010
  87.                AND pat2.payment IN (1,9)                                                -- BDC 20.02.2010
  88.                AND pm2.cl_otd > 0                                                       -- BDC 20.02.2010
  89.              ORDER BY sr.cl_srv DESC),'') AS mnn,                                       -- BDC 20.02.2010
  90.            ------------------
  91.            doc.naimdoc   AS DOC, -- BDC 20.02.2019
  92.            pm.cl_otd     AS CL_OTD,
  93.            pm.kd         AS KD,     -- BDC 15.08.2019
  94.            pm.koef_07    AS KOEF_07 -- BDC 15.08.20    SELECT pat.id_lpu_fk,
  95.            lpu.st_bol_name,
  96.            otd.kodotd,
  97.            COALESCE(pm.otd_num,0) AS otd_num,
  98.            otd.naimotd || COALESCE(' № ' || CAST(pm.otd_num AS VARCHAR(2)), '')
  99.                          AS NAIMOTD,
  100.            pat.numcard,
  101.            RIGHT(EXTRACT(YEAR FROM pat.dt_receipt),2) || RIGHT('000' ||
  102.              COALESCE(pm.sprotd_id_fk,''),3) || RIGHT('00000' ||
  103.              COALESCE(pat.numcard,''),5) AS NUM_CARD,
  104.            peo.lname || ' ' || peo.fname || COALESCE(' ' || peo.mname, '')
  105.                          AS FIO,
  106.            pm.diagnos    AS DIAGNOS,
  107.            CASE                                -- BDC 20.02.2019
  108.              WHEN n18.id_reas = 0 THEN 'Перв'  -- BDC 20.02.2019
  109.              WHEN n18.id_reas = 1 THEN 'Рецид' -- BDC 20.02.2019
  110.              WHEN n18.id_reas = 2 THEN 'Прогр' -- BDC 20.02.2019
  111.              WHEN n18.id_reas = 3 THEN 'Динам' -- BDC 20.02.2019
  112.              WHEN n18.id_reas = 4 THEN 'Дисп'  -- BDC 20.02.2019
  113.              WHEN n18.id_reas = 5 THEN 'Диагн' -- BDC 20.02.2019
  114.              WHEN n18.id_reas = 6 THEN 'Симпт' -- BDC 20.02.2019
  115.              ELSE n18.reas_name
  116.            END           AS DS1_T,
  117.            n03.kod_t     AS T,
  118.            n04.kod_n     AS N,
  119.            n05.kod_m     AS M,
  120.            n02.kod_st    AS KOD_ST,
  121.            CASE
  122.              WHEN pm.sprpaiment_id_fk = 1 THEN 'ОМС'
  123.              WHEN pm.sprpaiment_id_fk = 9 THEN 'ВМП ОМС'
  124.              ELSE '???'
  125.            END           AS OPL,
  126.            pm.ksg_select AS KSG,
  127.            -- "первая" услуга
  128.            (SELECT FIRST 1 srv_id
  129.               FROM
  130.                 (SELECT
  131.                        su.srv_id_fk  AS srv_id,
  132.                        su.cl_oper    AS cl
  133.                   FROM wt_surgical_operation su
  134.                   JOIN wt_patient_move      pm1 ON pm1.wt_patient_move_id = su.wt_pm_id_fk
  135.                   JOIN wt_patient          pat1 ON pat1.wt_patient_id     = pm1.wt_patient_id_fk
  136.                  WHERE su.wt_pm_id_fk = pm.wt_patient_move_id
  137.                    AND pat1.payment IN (1,9)                                         -- только ОМС или ВМП по ОМС
  138.                    AND pm1.cl_otd > 0                                                -- только оплачиваемый случай
  139.                    AND ((su.srv_id_fk IS NOT NULL) AND (su.srv_id_fk <> ''))         -- только с мед услугой для операции
  140.                    AND ((pat1.payment = 9) OR (su.cl_oper > 0))                      -- только оплачиваемая операция (ОМС)
  141.                 UNION ALL
  142.                 SELECT
  143.                        sr.srv_id_fk  AS srv_id,
  144.                        sr.cl_srv     AS cl
  145.                   FROM wt_srv sr
  146.                   JOIN wt_patient_move      pm2 ON pm2.wt_patient_move_id = sr.wt_pm_id_fk
  147.                   JOIN wt_patient          pat2 ON pat2.wt_patient_id     = pm2.wt_patient_id_fk
  148.                  WHERE sr.wt_pm_id_fk = pm.wt_patient_move_id
  149.                    AND pat2.payment IN (1,9)                                         -- только ОМС или ВМП по ОМС
  150.                    AND pm2.cl_otd > 0                                                -- только оплачиваемый случай
  151.                    AND ((pat2.payment = 9) OR (sr.cl_srv > 0))                       -- только оплачиваемая операция (ОМС)
  152.                  ORDER BY 2
  153.                 )
  154.            )             AS SRV_ID,
  155.            -- доп критерии
  156.          --COALESCE(                                                            -- BDC 20.02.2019
  157.          --(SELECT FIRST 1 SUBSTRING(dt.data_value_kod FROM 1 FOR 2) ||         -- BDC 20.02.2019
  158.          --        '=' || SUBSTRING(dt.data_value_kod FROM 3 FOR 99) || ';'     -- BDC 20.02.2019
  159.          --   FROM dt_spr dt                                                    -- BDC 20.02.2019
  160.          --  WHERE dt.def_set_data_id_fk IN (87,88,89)                          -- BDC 20.02.2019
  161.          --    AND dt.data_value_kod IS NOT NULL                                -- BDC 20.02.2019
  162.          --    AND dt.wt_patient_id_fk      = pat.wt_patient_id                 -- BDC 20.02.2019
  163.          --    AND dt.wt_patient_move_id_fk = pm.wt_patient_move_id), '') ||    -- BDC 20.02.2019
  164.            (SELECT ADD_CR FROM list_cr(pm.wt_patient_move_id)) ||               -- BDC 20.02.2019
  165.            COALESCE(
  166.            (SELECT FIRST 1 'EKO=' || CAST(srv.eko AS CHAR(1)) || ';'
  167.              FROM wt_srv srv
  168.             WHERE srv.wt_pm_id_fk = pm.wt_patient_move_id
  169.               AND srv.srv_id_fk = 'A11.20.017'), '') -- ЭКО
  170.                          AS ADD_CR,
  171.            COALESCE(sch.mnn,'') ||                                                      -- BDC 20.02.2010
  172.            COALESCE(                                                                    -- BDC 20.02.2010
  173.            (SELECT FIRST 1                                                              -- BDC 20.02.2010
  174.                    mnn.mnn                                                              -- BDC 20.02.2010
  175.               FROM wt_srv sr                                                            -- BDC 20.02.2010
  176.               JOIN wt_patient_move pm2 ON pm2.wt_patient_move_id = sr.wt_pm_id_fk       -- BDC 20.02.2010
  177.               JOIN wt_patient     pat2 ON pat2.wt_patient_id     = pm2.wt_patient_id_fk -- BDC 20.02.2010
  178.          LEFT JOIN st_sprmnn       mnn ON mnn.kod                = sr.mnn               -- BDC 20.02.2010
  179.              WHERE sr.wt_pm_id_fk = pm.wt_patient_move_id                               -- BDC 20.02.2010
  180.                AND pat2.payment IN (1,9)                                                -- BDC 20.02.2010
  181.                AND pm2.cl_otd > 0                                                       -- BDC 20.02.2010
  182.              ORDER BY sr.cl_srv DESC),'') AS mnn,                                       -- BDC 20.02.2010
  183.            ------------------
  184.            doc.naimdoc   AS DOC, -- BDC 20.02.2019
  185.            pm.cl_otd     AS CL_OTD,
  186.            pm.kd         AS KD,     -- BDC 15.08.2019
  187.            pm.koef_07    AS KOEF_07 -- BDC 15.08.2019                                                                                                                          
  188.       FROM wt_patient_move     pm
  189.       JOIN wt_patient          pat ON pat.wt_patient_id         = pm.wt_patient_id_fk
  190.       JOIN peoples_loc         peo ON peo.people_id             = pat.people_id_fk
  191.       JOIN st_bol              lpu ON lpu.kodbol                = pat.id_lpu_fk
  192.       JOIN st_sprotd           otd ON otd.kodotd                = pm.sprotd_id_fk
  193.  LEFT JOIN wt_patient_move_can can ON can.wt_patient_move_id_fk = pm.wt_patient_move_id
  194.  LEFT JOIN n003$onkt           n03 ON n03.id_t                  = can.onk_t
  195.                                   AND pat.dtextract BETWEEN n03.datebeg AND COALESCE(n03.dateend,'31.12.2099') -- BDC 20.02.2019
  196.  LEFT JOIN n004$onkn           n04 ON n04.id_n                  = can.onk_n
  197.                                   AND pat.dtextract BETWEEN n04.datebeg AND COALESCE(n04.dateend,'31.12.2099') -- BDC 20.02.2019
  198.  LEFT JOIN n005$metastasis     n05 ON n05.id_m                  = can.onk_m
  199.                                   AND pat.dtextract BETWEEN n05.datebeg AND COALESCE(n05.dateend,'31.12.2099') -- BDC 20.02.2019
  200.  LEFT JOIN n002$onkstad        n02 ON n02.id_st                 = can.stad
  201.                                   AND pat.dtextract BETWEEN n02.datebeg AND COALESCE(n02.dateend,'31.12.2099') -- BDC 20.02.2019
  202.  LEFT JOIN n018$onkreas        n18 ON n18.id_reas               = can.ds1_t                                    -- BDC 20.02.2019
  203.                                   AND pat.dtextract BETWEEN n18.datebeg AND COALESCE(n18.dateend,'31.12.2099') -- BDC 20.02.2019
  204.  LEFT JOIN st_sprdoc           doc ON doc.koddoc                = pm.sprdoc_id_fk                              -- BDC 20.02.2019
  205.                                   AND doc.id_lpu_fk             = pat.id_lpu_fk                                -- BDC 20.02.2019
  206.  LEFT JOIN st_sprscheme        sch ON sch.kod =                                                                -- BDC 20.02.2019
  207.                                (SELECT FIRST 1 dt.data_value_kod                                               -- BDC 20.02.2019
  208.                                    FROM dt_spr dt                                                              -- BDC 20.02.2019
  209.                                   WHERE dt.def_set_data_id_fk = 87 -- схема                                    -- BDC 20.02.2019
  210.                                     AND dt.data_value_kod IS NOT NULL                                          -- BDC 20.02.2019
  211.                                     AND dt.wt_patient_move_id_fk = pm.wt_patient_move_id)                      -- BDC 20.02.2019
  212.                                   AND pat.dtextract BETWEEN sch.datebeg AND COALESCE(sch.dateend,'31.12.2099') -- BDC 20.02.2019
  213.      WHERE lpu.key3 = :LPU_ID      -- включая и подчиненные
  214.        AND ((pat.dtextract IS NOT NULL) AND (pat.dtextract BETWEEN :DATE_BEG AND :DATE_END))    
  215.        AND ((:KOD = 0) OR (kodotd = :KOD))  
  216.        AND ((:NUM = 0) OR (otd_num = :NUM))                                                                                        
  217.        AND pm.sprpaiment_id_fk IN (1,9) -- ОМС или ВМП по ОМС
  218.        AND pm.cl_otd IS NOT NULL AND pm.cl_otd > 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement