Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --B_DIAG
- WITH cte AS (
- SELECT
- case_id,code,value,COALESCE(region_data -> 'diag_rn','1') AS diag_rn,close_date
- FROM tmp_onko t
- WHERE code IN ('OnkoGist','OnkoMark','OnkoDtDiag','OnkoRslt','OnkoGistNoRslt','OnkoMarkNoRslt')
- ), sv AS (
- SELECT DISTINCT
- case_id,'1' AS diag_tip, n.id_mrf::text AS diag_code,c.value AS diag_rslt,
- (SELECT value FROM cte t WHERE t.case_id = c.case_id AND t.code = 'OnkoDtDiag' AND t.diag_rn = c.diag_rn ORDER BY 1 LIMIT 1) AS diag_date,
- (SELECT value FROM cte t WHERE t.case_id = c.case_id AND t.code = 'OnkoRslt' AND t.diag_rn = c.diag_rn AND t.value = '1' LIMIT 1) AS rec_rslt
- FROM cte c
- JOIN LATERAL (SELECT n.id_mrf FROM billing.n008 n WHERE c.value::integer = n.id_r_m AND c.close_date <@ daterange(n.datebeg, n.dateend,'[]') LIMIT 1) AS n ON TRUE
- WHERE c.code = 'OnkoGist'
- UNION ALL
- SELECT DISTINCT
- case_id,'2' AS diag_tip, n.id_igh::text AS diag_code,c.value AS diag_rslt,
- (SELECT value FROM cte t WHERE t.case_id = c.case_id AND t.code = 'OnkoDtDiag' AND t.diag_rn = c.diag_rn ORDER BY 1 LIMIT 1) AS diag_date,
- (SELECT value FROM cte t WHERE t.case_id = c.case_id AND t.code = 'OnkoRslt' AND t.diag_rn = c.diag_rn AND t.value = '1' LIMIT 1) AS rec_rslt
- FROM cte c
- JOIN LATERAL (SELECT n.id_igh FROM billing.n011 n WHERE c.value::integer = n.id_r_i AND c.close_date <@ daterange(n.datebeg, n.dateend,'[]') LIMIT 1) AS n ON TRUE
- WHERE c.code = 'OnkoMark'
- UNION ALL
- SELECT DISTINCT
- case_id,'1' AS diag_tip, value AS diag_code,null AS diag_rslt,
- (SELECT value FROM cte t WHERE t.case_id = c.case_id AND t.code = 'OnkoDtDiag' AND t.diag_rn = c.diag_rn ORDER BY 1 LIMIT 1) AS diag_date,
- (SELECT value FROM cte t WHERE t.case_id = c.case_id AND t.code = 'OnkoRslt' AND t.diag_rn = c.diag_rn AND t.value = '1' LIMIT 1) AS rec_rslt
- FROM cte c
- WHERE c.code = 'OnkoGistNoRslt'
- UNION ALL
- SELECT DISTINCT
- case_id,'2' AS diag_tip, value AS diag_code,null AS diag_rslt,
- (SELECT value FROM cte t WHERE t.case_id = c.case_id AND t.code = 'OnkoDtDiag' AND t.diag_rn = c.diag_rn ORDER BY 1 LIMIT 1) AS diag_date,
- (SELECT value FROM cte t WHERE t.case_id = c.case_id AND t.code = 'OnkoRslt' AND t.diag_rn = c.diag_rn AND t.value = '1' LIMIT 1) AS rec_rslt
- FROM cte c
- WHERE c.code = 'OnkoMarkNoRslt'
- UNION ALL
- SELECT DISTINCT
- case_id,null AS diag_tip,null AS diag_code,null AS diag_rslt,c.value AS diag_date,null AS rec_rslt
- FROM cte c
- WHERE c.code = 'OnkoDtDiag'
- AND NOT EXISTS (SELECT 1 FROM cte t WHERE t.case_id = c.case_id AND t.diag_rn = c.diag_rn AND t.code IN ('OnkoGist','OnkoMark','OnkoGistNoRslt','OnkoMarkNoRslt'))
- ), t AS (
- SELECT case_id,(array_to_json(array_agg(row_to_json(d)::jsonb - 'case_id')))::jsonb AS b_diag FROM (
- SELECT
- case_id,diag_tip,diag_code,diag_date,rec_rslt,diag_rslt
- FROM sv
- )d
- GROUP BY 1
- )
- UPDATE tmp_hstore h
- SET
- napr_jsonb = coalesce(napr_jsonb, jsonb_build_object()) || jsonb_build_object('b_diag',t.b_diag)
- FROM t
- WHERE h.case_id = t.case_id
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement