Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- WITH t AS
- (SELECT case_id, srv_rendered_id, service_id, step_id, unnest(string_to_array(str_zn,';')) as str_zn
- FROM tmp_protocol
- WHERE code='ONKO_surgery_type'
- ), w AS (
- SELECT case_id, srv_rendered_id, service_id, step_id, str_zn,
- position('Код услуги: ' in str_zn)+12 as pos_a, position('Тип хирургического лечения: ' in str_zn)-2 as pos_b FROM t
- WHERE trim(str_zn) <> ''
- ), v as (
- SELECT
- case_id, srv_rendered_id, service_id, step_id, str_zn,substring(str_zn from pos_a for pos_b - pos_a) as code_old,
- replace(substring(str_zn from pos_a for pos_b - pos_a),'.','') as code_new
- FROM w
- ), z AS (
- SELECT case_id, srv_rendered_id, service_id, step_id, replace(str_zn,code_old,code_new) as str_zn, code_old FROM v
- ), sv AS (
- SELECT case_id, srv_rendered_id, str_zn, position('.' in str_zn) as pos1, position('Тип хирургического лечения: ' in str_zn) as pos2,
- position('Противопоказание или отказ: ' in str_zn) as pos3, position('Дата противопоказания или отказа: ' in str_zn) as pos4,
- position('Код услуги: ' in str_zn) as pos5, position(',' in str_zn) as pos6,
- service_id, step_id, code_old
- FROM z
- )
- SELECT case_id, step_id, srv_rendered_id, service_id, 'OnkoProt', CASE substring(str_zn,pos3+28,1) WHEN '1' THEN '1' WHEN '2' THEN '4' END ,
- CASE WHEN pos4>0 THEN to_Date(substring(str_zn,pos4+34,10),'dd.mm.yyyy') ELSE null::date END, null
- FROM sv
- WHERE pos3>0
- UNION ALL
- SELECT case_id, step_id, srv_rendered_id, service_id, 'OnkoTip', '1'||substring(str_zn,pos2+28,pos1-pos2-28),null::date,
- CASE WHEN pos5>0 THEN hstore('onk_usl_code',code_old) ELSE null END
- FROM sv
- WHERE pos2>0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement