|
|
return: text
|
|
|
lang: plpgsql
|
|
|
parameters:
|
|
|
p0:
|
|
|
type: bigint
|
|
|
name: i_enquete_id
|
|
|
p1:
|
|
|
type: bigint
|
|
|
name: i_fiche5_rss_id
|
|
|
src: |
|
|
|
DECLARE
|
|
|
result TEXT;
|
|
|
fg_dir TEXT;
|
|
|
fg_exe TEXT;
|
|
|
BEGIN
|
|
|
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
scenar1_rum_um_code = CASE WHEN scenar1_rule = '' OR scenar1_rule = 'OKAM' OR scenar1_rum_um_code IS NULL THEN initial_rum_um_code ELSE scenar1_rum_um_code END,
|
|
|
scenar1_rum_dp_code = CASE WHEN scenar1_rule = '' OR scenar1_rule = 'OKAM' OR scenar1_rum_dp_code IS NULL THEN initial_rum_dp_code ELSE scenar1_rum_dp_code END,
|
|
|
scenar1_rum_dr_code = CASE WHEN scenar1_rule = '' OR scenar1_rule = 'OKAM' OR scenar1_rum_dr_code IS NULL THEN initial_rum_dr_code ELSE scenar1_rum_dr_code END,
|
|
|
scenar1_rum_da_code = CASE WHEN scenar1_rule = '' OR scenar1_rule = 'OKAM' OR scenar1_rum_da_code IS NULL THEN initial_rum_da_code ELSE scenar1_rum_da_code END,
|
|
|
scenar1_rum_ccam_code = CASE WHEN scenar1_rule = '' OR scenar1_rule = 'OKAM' OR scenar1_rum_ccam_code IS NULL THEN initial_rum_ccam_code ELSE scenar1_rum_ccam_code END,
|
|
|
scenar2_rum_um_code = CASE WHEN scenar2_rule = '' OR scenar2_rule = 'OKAM' OR scenar2_rum_um_code IS NULL THEN initial_rum_um_code ELSE scenar2_rum_um_code END,
|
|
|
scenar2_rum_dp_code = CASE WHEN scenar2_rule = '' OR scenar2_rule = 'OKAM' OR scenar2_rum_dp_code IS NULL THEN initial_rum_dp_code ELSE scenar2_rum_dp_code END,
|
|
|
scenar2_rum_dr_code = CASE WHEN scenar2_rule = '' OR scenar2_rule = 'OKAM' OR scenar2_rum_dr_code IS NULL THEN initial_rum_dr_code ELSE scenar2_rum_dr_code END,
|
|
|
scenar2_rum_da_code = CASE WHEN scenar2_rule = '' OR scenar2_rule = 'OKAM' OR scenar2_rum_da_code IS NULL THEN initial_rum_da_code ELSE scenar2_rum_da_code END,
|
|
|
scenar2_rum_ccam_code = CASE WHEN scenar2_rule = '' OR scenar2_rule = 'OKAM' OR scenar2_rum_ccam_code IS NULL THEN initial_rum_ccam_code ELSE scenar2_rum_ccam_code END,
|
|
|
control_rum_um_code = CASE WHEN control_rule = '' OR control_rule = 'OKAM' OR control_rum_um_code IS NULL THEN initial_rum_um_code ELSE control_rum_um_code END,
|
|
|
control_rum_dp_code = CASE WHEN control_rule = '' OR control_rule = 'OKAM' OR control_rum_dp_code IS NULL THEN initial_rum_dp_code ELSE control_rum_dp_code END,
|
|
|
control_rum_dr_code = CASE WHEN control_rule = '' OR control_rule = 'OKAM' OR control_rum_dr_code IS NULL THEN initial_rum_dr_code ELSE control_rum_dr_code END,
|
|
|
control_rum_da_code = CASE WHEN control_rule = '' OR control_rule = 'OKAM' OR control_rum_da_code IS NULL THEN initial_rum_da_code ELSE control_rum_da_code END,
|
|
|
control_rum_ccam_code = CASE WHEN control_rule = '' OR control_rule = 'OKAM' OR control_rum_ccam_code IS NULL THEN initial_rum_ccam_code ELSE control_rum_ccam_code END,
|
|
|
retenu_rum_um_code = CASE WHEN retenu_rule = '' OR retenu_rule = 'OKAM' OR retenu_rum_um_code IS NULL THEN initial_rum_um_code ELSE retenu_rum_um_code END,
|
|
|
retenu_rum_dp_code = CASE WHEN retenu_rule = '' OR retenu_rule = 'OKAM' OR retenu_rum_dp_code IS NULL THEN initial_rum_dp_code ELSE retenu_rum_dp_code END,
|
|
|
retenu_rum_dr_code = CASE WHEN retenu_rule = '' OR retenu_rule = 'OKAM' OR retenu_rum_dr_code IS NULL THEN initial_rum_dr_code ELSE retenu_rum_dr_code END,
|
|
|
retenu_rum_da_code = CASE WHEN retenu_rule = '' OR retenu_rule = 'OKAM' OR retenu_rum_da_code IS NULL THEN initial_rum_da_code ELSE retenu_rum_da_code END,
|
|
|
retenu_rum_ccam_code = CASE WHEN retenu_rule = '' OR retenu_rule = 'OKAM' OR retenu_rum_ccam_code IS NULL THEN initial_rum_ccam_code ELSE retenu_rum_ccam_code END
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS w_fiche5_rss;
|
|
|
CREATE TEMP TABLE w_fiche5_rss AS
|
|
|
SELECT *
|
|
|
FROM pmsi.p_fiche5_rss
|
|
|
WHERE (
|
|
|
p_fiche5_rss.enquete_id = i_enquete_id OR
|
|
|
p_fiche5_rss.oid = i_fiche5_rss_id
|
|
|
)
|
|
|
;
|
|
|
|
|
|
fg_dir = (SELECT MAX(t_fiche5_enquete.fg_dir) FROM pmsi.t_fiche5_enquete WHERE t_fiche5_enquete.oid IN (SELECT enquete_id FROM w_fiche5_rss))
|
|
|
;
|
|
|
|
|
|
fg_exe = 'fg1718';
|
|
|
IF fg_dir LIKE '%2017' THEN
|
|
|
fg_exe = 'fg1617';
|
|
|
END IF;
|
|
|
IF fg_dir LIKE '%2019' THEN
|
|
|
fg_exe = 'fg1819';
|
|
|
END IF;
|
|
|
|
|
|
|
|
|
-- UM
|
|
|
EXECUTE
|
|
|
'COPY
|
|
|
(
|
|
|
SELECT initial_um_in[i]
|
|
|
FROM pmsi.t_fiche5_enquete
|
|
|
JOIN generate_series(1,500) AS i ON initial_um_in[i] <> ''''
|
|
|
WHERE t_fiche5_enquete.oid IN (SELECT enquete_id FROM w_fiche5_rss)
|
|
|
)
|
|
|
TO '''||fg_dir||'/files/FICHE5_GRP.FICUM''
|
|
|
'
|
|
|
;
|
|
|
|
|
|
-- RUM à grouper
|
|
|
DROP TABLE IF EXISTS w_fiche5_IN;
|
|
|
CREATE TEMP TABLE w_fiche5_IN AS
|
|
|
SELECT p_fiche5_rss.oid AS fiche5_rss_id,
|
|
|
'I' AS scenario, i,
|
|
|
'GHS'::text AS rule,
|
|
|
substr(initial_rum_in[i],16,9) || '0' || substr(initial_rum_in[i],11,2) || to_char(p_fiche5_rss.oid,'FM0000000000')||'0000000010' || substr(initial_rum_in[i],48) AS data,
|
|
|
initial_rum_um_code[i] AS um,
|
|
|
initial_rum_dp_code[i] AS dp,
|
|
|
initial_rum_dr_code[i] AS dr,
|
|
|
initial_rum_da_code[i] AS da,
|
|
|
initial_rum_ccam_code[i] AS ccam,
|
|
|
''::text AS ccam_new
|
|
|
FROM w_fiche5_rss p_fiche5_rss
|
|
|
JOIN generate_series (1 , 10) AS i ON initial_rum_in[i] <> ''
|
|
|
UNION
|
|
|
SELECT p_fiche5_rss.oid AS fiche5_rss_id,
|
|
|
'1' AS scenario, i,
|
|
|
scenar1_rule AS rule,
|
|
|
substr(initial_rum_in[i],16,9) || '0' || substr(initial_rum_in[i],11,2) || to_char(p_fiche5_rss.oid,'FM0000000000')||'0000000011' || substr(initial_rum_in[i],48) AS data,
|
|
|
scenar1_rum_um_code[i] AS um,
|
|
|
scenar1_rum_dp_code[i] AS dp,
|
|
|
scenar1_rum_dr_code[i] AS dr,
|
|
|
scenar1_rum_da_code[i] AS da,
|
|
|
scenar1_rum_ccam_code[i] AS ccam,
|
|
|
''::text AS ccam_new
|
|
|
FROM w_fiche5_rss p_fiche5_rss
|
|
|
JOIN generate_series (1 , 10) AS i ON initial_rum_in[i] <> ''
|
|
|
UNION
|
|
|
SELECT p_fiche5_rss.oid AS fiche5_rss_id,
|
|
|
'2' AS scenario, i,
|
|
|
scenar2_rule AS rule,
|
|
|
substr(initial_rum_in[i],16,9) || '0' || substr(initial_rum_in[i],11,2) || to_char(p_fiche5_rss.oid,'FM0000000000')||'0000000012' || substr(initial_rum_in[i],48) AS data,
|
|
|
scenar2_rum_um_code[i] AS um,
|
|
|
scenar2_rum_dp_code[i] AS dp,
|
|
|
scenar2_rum_dr_code[i] AS dr,
|
|
|
scenar2_rum_da_code[i] AS da,
|
|
|
scenar2_rum_ccam_code[i] AS ccam,
|
|
|
''::text AS ccam_new
|
|
|
FROM w_fiche5_rss p_fiche5_rss
|
|
|
JOIN generate_series (1 , 10) AS i ON initial_rum_in[i] <> ''
|
|
|
UNION
|
|
|
SELECT p_fiche5_rss.oid AS fiche5_rss_id,
|
|
|
'C' AS scenario, i,
|
|
|
control_rule AS rule,
|
|
|
substr(initial_rum_in[i],16,9) || '0' || substr(initial_rum_in[i],11,2) || to_char(p_fiche5_rss.oid,'FM0000000000')||'0000000015' || substr(initial_rum_in[i],48) AS data,
|
|
|
control_rum_um_code[i] AS um,
|
|
|
control_rum_dp_code[i] AS dp,
|
|
|
control_rum_dr_code[i] AS dr,
|
|
|
control_rum_da_code[i] AS da,
|
|
|
control_rum_ccam_code[i] AS ccam,
|
|
|
''::text AS ccam_new
|
|
|
FROM w_fiche5_rss p_fiche5_rss
|
|
|
JOIN generate_series (1 , 10) AS i ON initial_rum_in[i] <> ''
|
|
|
UNION
|
|
|
SELECT p_fiche5_rss.oid AS fiche5_rss_id,
|
|
|
'R' AS scenario, i,
|
|
|
retenu_rule AS rule,
|
|
|
substr(initial_rum_in[i],16,9) || '0' || substr(initial_rum_in[i],11,2) || to_char(p_fiche5_rss.oid,'FM0000000000')||'0000000019' || substr(initial_rum_in[i],48) AS data,
|
|
|
retenu_rum_um_code[i] AS um,
|
|
|
retenu_rum_dp_code[i] AS dp,
|
|
|
retenu_rum_dr_code[i] AS dr,
|
|
|
retenu_rum_da_code[i] AS da,
|
|
|
retenu_rum_ccam_code[i] AS ccam,
|
|
|
''::text AS ccam_new
|
|
|
FROM w_fiche5_rss p_fiche5_rss
|
|
|
JOIN generate_series (1 , 10) AS i ON initial_rum_in[i] <> ''
|
|
|
;
|
|
|
|
|
|
|
|
|
UPDATE w_fiche5_IN
|
|
|
SET data = overlay(data placing rpad(um, 4, ' ') from 72 for 4)
|
|
|
;
|
|
|
UPDATE w_fiche5_IN
|
|
|
SET data = overlay(data placing rpad(dp, 8, ' ') from 126 for 8)
|
|
|
;
|
|
|
UPDATE w_fiche5_IN
|
|
|
SET data = overlay(data placing rpad(dr, 8, ' ') from 134 for 8)
|
|
|
;
|
|
|
|
|
|
-- Remplacement DA
|
|
|
|
|
|
UPDATE w_fiche5_IN
|
|
|
SET da = subview.da
|
|
|
FROM
|
|
|
(
|
|
|
SELECT fiche5_rss_id, scenario, i, array_to_string(base.cti_array_accum(rpad(trim((string_to_array(da,','))[dai]),8,' ')),'') AS da
|
|
|
FROM w_fiche5_IN
|
|
|
JOIN generate_series(1,100) AS dai ON trim((string_to_array(da,','))[dai]) <> ''
|
|
|
GROUP BY 1,2,3
|
|
|
ORDER BY 1,2,3
|
|
|
) subview
|
|
|
WHERE w_fiche5_IN.scenario = subview.scenario AND
|
|
|
w_fiche5_IN.fiche5_rss_id = subview.fiche5_rss_id AND
|
|
|
w_fiche5_IN.i = subview.i
|
|
|
;
|
|
|
|
|
|
UPDATE w_fiche5_IN
|
|
|
SET data = overlay(data placing rpad(dr, 8, ' ') from 134 for 8)
|
|
|
;
|
|
|
|
|
|
UPDATE w_fiche5_IN
|
|
|
SET data = overlay(
|
|
|
overlay(
|
|
|
data
|
|
|
placing
|
|
|
da
|
|
|
from 178 for (base.Cti_to_number(substr(data,119,2))::integer*8+base.Cti_to_number(substr(data,121,2))::integer*8)
|
|
|
)
|
|
|
placing
|
|
|
to_char(length(da)/8, 'FM00') || '00'
|
|
|
from 119 for 4
|
|
|
)
|
|
|
WHERE w_fiche5_IN.scenario <> 'I'
|
|
|
;
|
|
|
|
|
|
-- Remplacement CCAM
|
|
|
UPDATE w_fiche5_IN
|
|
|
SET ccam_new = subview.ccam
|
|
|
FROM
|
|
|
(
|
|
|
SELECT fiche5_rss_id, scenario, i, array_to_string(base.cti_array_accum(buff_acte),'') AS ccam
|
|
|
FROM
|
|
|
(
|
|
|
SELECT fiche5_rss_id, scenario, i, buff_acte AS buff_acte
|
|
|
FROM
|
|
|
(
|
|
|
SELECT
|
|
|
fiche5_rss_id, scenario, i, substr(buff_actes,((c-1)*29)+1,29) AS buff_acte, ccam
|
|
|
FROM
|
|
|
(
|
|
|
SELECT fiche5_rss_id, scenario, i, ccam, base.cti_to_number(substr(data,123,3))::integer AS nb_actes,
|
|
|
substr(data,
|
|
|
178+
|
|
|
base.cti_to_number(substr(data,119,2))::integer*8+
|
|
|
base.cti_to_number(substr(data,121,2))::integer*8) AS buff_actes
|
|
|
FROM w_fiche5_IN
|
|
|
) subview
|
|
|
JOIN generate_series(1,nb_actes) c ON 1=1
|
|
|
) subview
|
|
|
WHERE ccam ILIKE '%'||substr(buff_acte,9,7)||'%'
|
|
|
UNION
|
|
|
SELECT fiche5_rss_id, scenario, i,
|
|
|
rpad(
|
|
|
substr(data,78,8)||
|
|
|
rpad(trim((string_to_array(ccam,','))[ccami]),7,' ')||
|
|
|
' 01 0001'
|
|
|
,29,' ')
|
|
|
FROM w_fiche5_IN
|
|
|
JOIN generate_series(1,100) AS ccami ON
|
|
|
trim((string_to_array(ccam,','))[ccami]) <> '' AND
|
|
|
data NOT ILIKE '%'||trim((string_to_array(ccam,','))[ccami])||'%'
|
|
|
) subview
|
|
|
GROUP BY 1,2,3
|
|
|
|
|
|
ORDER BY 1,2,3,4
|
|
|
) subview
|
|
|
WHERE w_fiche5_IN.scenario = subview.scenario AND
|
|
|
w_fiche5_IN.fiche5_rss_id = subview.fiche5_rss_id AND
|
|
|
w_fiche5_IN.i = subview.i
|
|
|
;
|
|
|
|
|
|
|
|
|
UPDATE w_fiche5_IN
|
|
|
SET data = overlay(
|
|
|
overlay(
|
|
|
data
|
|
|
placing
|
|
|
ccam_new
|
|
|
from (178+base.cti_to_number(substr(data,119,2))::integer*8+base.cti_to_number(substr(data,121,2))::integer*8) for base.Cti_to_number(substr(data,123,3))::integer*29
|
|
|
)
|
|
|
placing
|
|
|
to_char(length(ccam_new)/29, 'FM000')
|
|
|
from 123 for 3
|
|
|
)
|
|
|
WHERE w_fiche5_IN.scenario <> 'I'
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EXECUTE '
|
|
|
COPY
|
|
|
(
|
|
|
SELECT data
|
|
|
FROM w_fiche5_IN
|
|
|
WHERE rule = ''GHS''
|
|
|
ORDER BY fiche5_rss_id, scenario, i
|
|
|
)
|
|
|
TO '''||fg_dir||'/files/FICHE5_GRP''
|
|
|
';
|
|
|
|
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS w_EXEC
|
|
|
;
|
|
|
CREATE TEMP TABLE w_EXEC (result text)
|
|
|
;
|
|
|
TRUNCATE w_EXEC
|
|
|
;
|
|
|
EXECUTE '
|
|
|
COPY w_EXEC (result) FROM PROGRAM ''"'||fg_dir||'/pgm/fg/BIN/'||fg_exe||'.exe" '||fg_dir||'/files/FICHE5_GRP '||fg_dir||'/pgm/fg/TABLES/ 2 '||fg_dir||'/files/FICHE5_GRP.FICUM '||fg_dir||'/temp'';
|
|
|
';
|
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS w_fiche5_GRP
|
|
|
;
|
|
|
CREATE TEMP TABLE w_fiche5_GRP (data text, fiche5_rss_id bigint DEFAULT 0, ghm_code text DEFAULT '', ghm_id bigint DEFAULT 0, scenario text DEFAULT '')
|
|
|
;
|
|
|
EXECUTE '
|
|
|
COPY w_fiche5_GRP(data) FROM '''||fg_dir||'/temp/FICHE5_GRP.grp''
|
|
|
';
|
|
|
|
|
|
UPDATE w_fiche5_GRP SET
|
|
|
fiche5_rss_id = base.cti_to_number(substr(data,28,10)),
|
|
|
ghm_code = trim(substr(data,3,6)),
|
|
|
scenario = CASE substr(data,46,2) WHEN '10' THEN 'I' WHEN '11' THEN '1' WHEN '12' THEN '2' WHEN '15' THEN 'C' WHEN '19' THEN 'R' ELSE '' END
|
|
|
;
|
|
|
|
|
|
|
|
|
UPDATE w_fiche5_GRP SET
|
|
|
ghm_id = t_ghm.oid
|
|
|
FROM pmsi.t_ghm
|
|
|
WHERE ghm_code = t_ghm.code
|
|
|
;
|
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS w_fiche5_RDS
|
|
|
;
|
|
|
CREATE TEMP TABLE w_fiche5_RDS (data text,
|
|
|
format text DEFAULT '',
|
|
|
fiche5_rss_id bigint DEFAULT 0,
|
|
|
ghm_code text DEFAULT '',
|
|
|
ghm_id bigint DEFAULT 0,
|
|
|
ghs_code text DEFAULT '',
|
|
|
ghs_id bigint DEFAULT 0,
|
|
|
dp_code text DEFAULT '',
|
|
|
dp_id bigint DEFAULT 0,
|
|
|
nb_exh numeric DEFAULT 0,
|
|
|
is_exb text DEFAULT '1',
|
|
|
nb_exb numeric DEFAULT 0,
|
|
|
scenario text DEFAULT '')
|
|
|
;
|
|
|
EXECUTE '
|
|
|
COPY w_fiche5_RDS(data) FROM '''||fg_dir||'/temp/FICHE5_GRP.rds''
|
|
|
';
|
|
|
|
|
|
UPDATE w_fiche5_RDS SET
|
|
|
fiche5_rss_id = base.cti_to_number(substr(data,1,10)),
|
|
|
format = trim(substr(data,33,3)),
|
|
|
ghm_code = trim(substr(data,38,6)),
|
|
|
ghs_code = trim(substr(data,94,4)),
|
|
|
dp_code = trim(substr(data,210,6)),
|
|
|
nb_exh = base.cti_to_number(substr(data,98,4)),
|
|
|
is_exb = trim(substr(data,102,1)),
|
|
|
nb_exb = base.cti_to_number(substr(data,103,5)),
|
|
|
scenario = CASE substr(data,19,2) WHEN '10' THEN 'I' WHEN '11' THEN '1' WHEN '12' THEN '2' WHEN '15' THEN 'C' WHEN '19' THEN 'R' ELSE '' END
|
|
|
;
|
|
|
|
|
|
|
|
|
UPDATE w_fiche5_RDS SET
|
|
|
ghs_id = t_ghs.oid
|
|
|
FROM pmsi.t_ghs
|
|
|
WHERE ghs_code = to_char(t_ghs.code,'FM0000') OR
|
|
|
ghs_code = t_ghs.code_text
|
|
|
;
|
|
|
UPDATE w_fiche5_RDS SET
|
|
|
dp_id = t_diagnostics.oid
|
|
|
FROM pmsi.t_diagnostics
|
|
|
WHERE dp_code = t_diagnostics.code
|
|
|
;
|
|
|
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
initial_ghm_code = CASE WHEN subview.initial_ghm_code <> '' THEN subview.initial_ghm_code ELSE p_fiche5_rss.initial_ghm_code END,
|
|
|
scenar1_ghm_code = CASE WHEN subview.scenar1_ghm_code <> '' THEN subview.scenar1_ghm_code ELSE p_fiche5_rss.scenar1_ghm_code END,
|
|
|
scenar2_ghm_code = CASE WHEN subview.scenar2_ghm_code <> '' THEN subview.scenar2_ghm_code ELSE p_fiche5_rss.scenar2_ghm_code END,
|
|
|
control_ghm_code = CASE WHEN subview.control_ghm_code <> '' THEN subview.control_ghm_code ELSE p_fiche5_rss.control_ghm_code END,
|
|
|
retenu_ghm_code = CASE WHEN subview.retenu_ghm_code <> '' THEN subview.retenu_ghm_code ELSE p_fiche5_rss.retenu_ghm_code END,
|
|
|
initial_ghm_id = CASE WHEN subview.initial_ghm_code <> '' THEN subview.initial_ghm_id ELSE p_fiche5_rss.initial_ghm_id END,
|
|
|
scenar1_ghm_id = CASE WHEN subview.scenar1_ghm_code <> '' THEN subview.scenar1_ghm_id ELSE p_fiche5_rss.scenar1_ghm_id END,
|
|
|
scenar2_ghm_id = CASE WHEN subview.scenar2_ghm_code <> '' THEN subview.scenar2_ghm_id ELSE p_fiche5_rss.scenar2_ghm_id END,
|
|
|
control_ghm_id = CASE WHEN subview.control_ghm_code <> '' THEN subview.control_ghm_id ELSE p_fiche5_rss.control_ghm_id END,
|
|
|
retenu_ghm_id = CASE WHEN subview.retenu_ghm_code <> '' THEN subview.retenu_ghm_id ELSE p_fiche5_rss.retenu_ghm_id END
|
|
|
FROM
|
|
|
(
|
|
|
SELECT fiche5_rss_id,
|
|
|
MAX(CASE WHEN scenario = 'I' THEN ghm_code ELSE '' END) AS initial_ghm_code,
|
|
|
MAX(CASE WHEN scenario = '1' THEN ghm_code ELSE '' END) AS scenar1_ghm_code,
|
|
|
MAX(CASE WHEN scenario = '2' THEN ghm_code ELSE '' END) AS scenar2_ghm_code,
|
|
|
MAX(CASE WHEN scenario = 'C' THEN ghm_code ELSE '' END) AS control_ghm_code,
|
|
|
MAX(CASE WHEN scenario = 'R' THEN ghm_code ELSE '' END) AS retenu_ghm_code,
|
|
|
MAX(CASE WHEN scenario = 'I' THEN ghm_id ELSE 0 END) AS initial_ghm_id,
|
|
|
MAX(CASE WHEN scenario = '1' THEN ghm_id ELSE 0 END) AS scenar1_ghm_id,
|
|
|
MAX(CASE WHEN scenario = '2' THEN ghm_id ELSE 0 END) AS scenar2_ghm_id,
|
|
|
MAX(CASE WHEN scenario = 'C' THEN ghm_id ELSE 0 END) AS control_ghm_id,
|
|
|
MAX(CASE WHEN scenario = 'R' THEN ghm_id ELSE 0 END) AS retenu_ghm_id
|
|
|
FROM w_fiche5_GRP
|
|
|
GROUP BY 1
|
|
|
) subview
|
|
|
WHERE p_fiche5_rss.oid = subview.fiche5_rss_id
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
initial_dp_code = CASE WHEN subview.initial_dp_code <> '' THEN subview.initial_dp_code ELSE p_fiche5_rss.initial_dp_code END,
|
|
|
scenar1_dp_code = CASE WHEN subview.scenar1_dp_code <> '' THEN subview.scenar1_dp_code ELSE p_fiche5_rss.scenar1_dp_code END,
|
|
|
scenar2_dp_code = CASE WHEN subview.scenar2_dp_code <> '' THEN subview.scenar2_dp_code ELSE p_fiche5_rss.scenar2_dp_code END,
|
|
|
control_dp_code = CASE WHEN subview.control_dp_code <> '' THEN subview.control_dp_code ELSE p_fiche5_rss.control_dp_code END,
|
|
|
retenu_dp_code = CASE WHEN subview.retenu_dp_code <> '' THEN subview.retenu_dp_code ELSE p_fiche5_rss.retenu_dp_code END,
|
|
|
initial_dp_id = CASE WHEN subview.initial_dp_code <> '' THEN subview.initial_dp_id ELSE p_fiche5_rss.initial_dp_id END,
|
|
|
scenar1_dp_id = CASE WHEN subview.scenar1_dp_code <> '' THEN subview.scenar1_dp_id ELSE p_fiche5_rss.scenar1_dp_id END,
|
|
|
scenar2_dp_id = CASE WHEN subview.scenar2_dp_code <> '' THEN subview.scenar2_dp_id ELSE p_fiche5_rss.scenar2_dp_id END,
|
|
|
control_dp_id = CASE WHEN subview.control_dp_code <> '' THEN subview.control_dp_id ELSE p_fiche5_rss.control_dp_id END,
|
|
|
retenu_dp_id = CASE WHEN subview.retenu_dp_code <> '' THEN subview.retenu_dp_id ELSE p_fiche5_rss.retenu_dp_id END,
|
|
|
initial_ghs_code = CASE WHEN subview.initial_ghs_code <> '' THEN subview.initial_ghs_code ELSE p_fiche5_rss.initial_ghs_code END,
|
|
|
scenar1_ghs_code = CASE WHEN subview.scenar1_ghs_code <> '' THEN subview.scenar1_ghs_code ELSE p_fiche5_rss.scenar1_ghs_code END,
|
|
|
scenar2_ghs_code = CASE WHEN subview.scenar2_ghs_code <> '' THEN subview.scenar2_ghs_code ELSE p_fiche5_rss.scenar2_ghs_code END,
|
|
|
control_ghs_code = CASE WHEN subview.control_ghs_code <> '' THEN subview.control_ghs_code ELSE p_fiche5_rss.control_ghs_code END,
|
|
|
retenu_ghs_code = CASE WHEN subview.retenu_ghs_code <> '' THEN subview.retenu_ghs_code ELSE p_fiche5_rss.retenu_ghs_code END,
|
|
|
initial_ghs_id = CASE WHEN subview.initial_ghs_code <> '' THEN subview.initial_ghs_id ELSE p_fiche5_rss.initial_ghs_id END,
|
|
|
scenar1_ghs_id = CASE WHEN subview.scenar1_ghs_code <> '' THEN subview.scenar1_ghs_id ELSE p_fiche5_rss.scenar1_ghs_id END,
|
|
|
scenar2_ghs_id = CASE WHEN subview.scenar2_ghs_code <> '' THEN subview.scenar2_ghs_id ELSE p_fiche5_rss.scenar2_ghs_id END,
|
|
|
control_ghs_id = CASE WHEN subview.control_ghs_code <> '' THEN subview.control_ghs_id ELSE p_fiche5_rss.control_ghs_id END,
|
|
|
retenu_ghs_id = CASE WHEN subview.retenu_ghs_code <> '' THEN subview.retenu_ghs_id ELSE p_fiche5_rss.retenu_ghs_id END,
|
|
|
initial_nb_exh = CASE WHEN subview.initial_nb_exh <> 0 THEN subview.initial_nb_exh ELSE p_fiche5_rss.initial_nb_exh END,
|
|
|
scenar1_nb_exh = CASE WHEN subview.scenar1_nb_exh <> 0 THEN subview.scenar1_nb_exh ELSE p_fiche5_rss.scenar1_nb_exh END,
|
|
|
scenar2_nb_exh = CASE WHEN subview.scenar2_nb_exh <> 0 THEN subview.scenar2_nb_exh ELSE p_fiche5_rss.scenar2_nb_exh END,
|
|
|
control_nb_exh = CASE WHEN subview.control_nb_exh <> 0 THEN subview.control_nb_exh ELSE p_fiche5_rss.control_nb_exh END,
|
|
|
retenu_nb_exh = CASE WHEN subview.retenu_nb_exh <> 0 THEN subview.retenu_nb_exh ELSE p_fiche5_rss.retenu_nb_exh END,
|
|
|
initial_nb_exb = CASE WHEN subview.initial_nb_exb <> 0 THEN subview.initial_nb_exb ELSE p_fiche5_rss.initial_nb_exb END,
|
|
|
scenar1_nb_exb = CASE WHEN subview.scenar1_nb_exb <> 0 THEN subview.scenar1_nb_exb ELSE p_fiche5_rss.scenar1_nb_exb END,
|
|
|
scenar2_nb_exb = CASE WHEN subview.scenar2_nb_exb <> 0 THEN subview.scenar2_nb_exb ELSE p_fiche5_rss.scenar2_nb_exb END,
|
|
|
control_nb_exb = CASE WHEN subview.control_nb_exb <> 0 THEN subview.control_nb_exb ELSE p_fiche5_rss.control_nb_exb END,
|
|
|
retenu_nb_exb = CASE WHEN subview.retenu_nb_exb <> 0 THEN subview.retenu_nb_exb ELSE p_fiche5_rss.retenu_nb_exb END
|
|
|
FROM
|
|
|
(
|
|
|
SELECT fiche5_rss_id,
|
|
|
MAX(CASE WHEN scenario = 'I' THEN dp_code ELSE '' END) AS initial_dp_code,
|
|
|
MAX(CASE WHEN scenario = '1' THEN dp_code ELSE '' END) AS scenar1_dp_code,
|
|
|
MAX(CASE WHEN scenario = '2' THEN dp_code ELSE '' END) AS scenar2_dp_code,
|
|
|
MAX(CASE WHEN scenario = 'C' THEN dp_code ELSE '' END) AS control_dp_code,
|
|
|
MAX(CASE WHEN scenario = 'R' THEN dp_code ELSE '' END) AS retenu_dp_code,
|
|
|
MAX(CASE WHEN scenario = 'I' THEN dp_id ELSE 0 END) AS initial_dp_id,
|
|
|
MAX(CASE WHEN scenario = '1' THEN dp_id ELSE 0 END) AS scenar1_dp_id,
|
|
|
MAX(CASE WHEN scenario = '2' THEN dp_id ELSE 0 END) AS scenar2_dp_id,
|
|
|
MAX(CASE WHEN scenario = 'C' THEN dp_id ELSE 0 END) AS control_dp_id,
|
|
|
MAX(CASE WHEN scenario = 'R' THEN dp_id ELSE 0 END) AS retenu_dp_id,
|
|
|
MAX(CASE WHEN scenario = 'I' THEN ghs_code ELSE '' END) AS initial_ghs_code,
|
|
|
MAX(CASE WHEN scenario = '1' THEN ghs_code ELSE '' END) AS scenar1_ghs_code,
|
|
|
MAX(CASE WHEN scenario = '2' THEN ghs_code ELSE '' END) AS scenar2_ghs_code,
|
|
|
MAX(CASE WHEN scenario = 'C' THEN ghs_code ELSE '' END) AS control_ghs_code,
|
|
|
MAX(CASE WHEN scenario = 'R' THEN ghs_code ELSE '' END) AS retenu_ghs_code,
|
|
|
MAX(CASE WHEN scenario = 'I' THEN ghs_id ELSE 0 END) AS initial_ghs_id,
|
|
|
MAX(CASE WHEN scenario = '1' THEN ghs_id ELSE 0 END) AS scenar1_ghs_id,
|
|
|
MAX(CASE WHEN scenario = '2' THEN ghs_id ELSE 0 END) AS scenar2_ghs_id,
|
|
|
MAX(CASE WHEN scenario = 'C' THEN ghs_id ELSE 0 END) AS control_ghs_id,
|
|
|
MAX(CASE WHEN scenario = 'R' THEN ghs_id ELSE 0 END) AS retenu_ghs_id,
|
|
|
MAX(CASE WHEN scenario = 'I' THEN nb_exh ELSE 0 END) AS initial_nb_exh,
|
|
|
MAX(CASE WHEN scenario = '1' THEN nb_exh ELSE 0 END) AS scenar1_nb_exh,
|
|
|
MAX(CASE WHEN scenario = '2' THEN nb_exh ELSE 0 END) AS scenar2_nb_exh,
|
|
|
MAX(CASE WHEN scenario = 'C' THEN nb_exh ELSE 0 END) AS control_nb_exh,
|
|
|
MAX(CASE WHEN scenario = 'R' THEN nb_exh ELSE 0 END) AS retenu_nb_exh,
|
|
|
MAX(CASE WHEN scenario = 'I' THEN nb_exb ELSE 0 END) AS initial_nb_exb,
|
|
|
MAX(CASE WHEN scenario = '1' THEN nb_exb ELSE 0 END) AS scenar1_nb_exb,
|
|
|
MAX(CASE WHEN scenario = '2' THEN nb_exb ELSE 0 END) AS scenar2_nb_exb,
|
|
|
MAX(CASE WHEN scenario = 'C' THEN nb_exb ELSE 0 END) AS control_nb_exb,
|
|
|
MAX(CASE WHEN scenario = 'R' THEN nb_exb ELSE 0 END) AS retenu_nb_exb
|
|
|
FROM w_fiche5_RDS
|
|
|
GROUP BY 1
|
|
|
) subview
|
|
|
WHERE p_fiche5_rss.oid = fiche5_rss_id
|
|
|
;
|
|
|
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
scenar1_ghm_code = CASE
|
|
|
WHEN scenar1_rule = 'GHS' THEN p_fiche5_rss.scenar1_ghm_code
|
|
|
ELSE scenar1_rule END
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
scenar1_ghm_code = CASE
|
|
|
WHEN scenar1_rule = 'GHS' OR scenar1_rule LIKE 'CF%' THEN p_fiche5_rss.scenar1_ghm_code
|
|
|
ELSE scenar1_rule END,
|
|
|
scenar1_ghm_id = CASE
|
|
|
WHEN scenar1_rule = 'GHS' OR scenar1_rule LIKE 'CF%' THEN p_fiche5_rss.scenar1_ghm_id
|
|
|
ELSE 0 END,
|
|
|
scenar2_ghm_code = CASE
|
|
|
WHEN scenar2_rule = 'GHS' OR scenar2_rule LIKE 'CF%' THEN p_fiche5_rss.scenar2_ghm_code
|
|
|
ELSE scenar2_rule END,
|
|
|
scenar2_ghm_id = CASE
|
|
|
WHEN scenar2_rule = 'GHS' OR scenar2_rule LIKE 'CF%' THEN p_fiche5_rss.scenar2_ghm_id
|
|
|
ELSE 0 END,
|
|
|
control_ghm_code = CASE
|
|
|
WHEN control_rule = 'GHS' OR control_rule LIKE 'CF%' THEN p_fiche5_rss.control_ghm_code
|
|
|
ELSE control_rule END,
|
|
|
control_ghm_id = CASE
|
|
|
WHEN control_rule = 'GHS' OR control_rule LIKE 'CF%' THEN p_fiche5_rss.control_ghm_id
|
|
|
ELSE 0 END,
|
|
|
retenu_ghm_code = CASE
|
|
|
WHEN retenu_rule = 'GHS' OR retenu_rule LIKE 'CF%' THEN p_fiche5_rss.retenu_ghm_code
|
|
|
ELSE retenu_rule END,
|
|
|
retenu_ghm_id = CASE
|
|
|
WHEN retenu_rule = 'GHS' OR retenu_rule LIKE 'CF%' THEN p_fiche5_rss.retenu_ghm_id
|
|
|
ELSE 0 END
|
|
|
;
|
|
|
|
|
|
|
|
|
-- Valorisation
|
|
|
DROP TABLE IF EXISTS w_ghs;
|
|
|
CREATE TEMP TABLE w_ghs
|
|
|
(
|
|
|
oid bigint,
|
|
|
type_tarif text,
|
|
|
index_tarif integer,
|
|
|
date_debut_tarif date,
|
|
|
date_fin_tarif date,
|
|
|
tarif_ghs numeric,
|
|
|
borne_basse numeric,
|
|
|
borne_haute numeric,
|
|
|
tarif_exh numeric,
|
|
|
forfait_exb numeric,
|
|
|
tarif_exb numeric
|
|
|
)
|
|
|
;
|
|
|
|
|
|
PERFORM base.cti_execute('
|
|
|
INSERT INTO w_ghs
|
|
|
SELECT
|
|
|
oid,
|
|
|
'''||type_tarif||'''::text AS type_tarif,
|
|
|
'||i||'::numeric AS index_tarif,
|
|
|
date_debut_'||type_tarif_field||'_'||i||',
|
|
|
date_fin_'||type_tarif_field||'_'||i||',
|
|
|
tarif_ghs_'||type_tarif_field||'_'||i||',
|
|
|
borne_basse_'||type_tarif_field||'_'||i||',
|
|
|
borne_haute_'||type_tarif_field||'_'||i||',
|
|
|
tarif_exh_'||type_tarif_field||'_'||i||',
|
|
|
forfait_exb_'||type_tarif_field||'_'||i||',
|
|
|
tarif_exb_'||type_tarif_field||'_'||i||'
|
|
|
FROM pmsi.t_ghs
|
|
|
WHERE date_debut_'||type_tarif_field||'_'||i||' <> ''20991231'' AND
|
|
|
date_fin_'||type_tarif_field||'_'||i||' >= ''20170131''
|
|
|
',1)
|
|
|
FROM
|
|
|
(
|
|
|
SELECT '1' AS type_tarif, 'public'::text AS type_tarif_field
|
|
|
UNION
|
|
|
SELECT '2' AS type_tarif, 'prive'::text AS type_tarif_field
|
|
|
) subview1,
|
|
|
(
|
|
|
SELECT generate_series(1,9) AS i
|
|
|
) subview2
|
|
|
;
|
|
|
|
|
|
|
|
|
PERFORM base.cti_execute('
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
'||scenar||'_ghs_montant_total = round(w_ghs.tarif_ghs * coefficient_mco,2),
|
|
|
'||scenar||'_exh_montant_total = round(
|
|
|
CASE
|
|
|
WHEN duree_sejour + CASE WHEN mode_sortie IN (''9'') THEN 1 ELSE 0 END > borne_haute AND borne_haute > 0
|
|
|
THEN tarif_exh * (duree_sejour + CASE WHEN mode_sortie IN (''9'') THEN 1 ELSE 0 END - borne_haute) * coefficient_mco
|
|
|
ELSE 0 END
|
|
|
,2),
|
|
|
'||scenar||'_exb_montant_total = round(
|
|
|
0 - CASE
|
|
|
WHEN borne_basse = 0 OR duree_sejour + CASE WHEN mode_sortie IN (''9'') THEN 1 ELSE 0 END >= borne_basse OR mode_sortie = ''9'' THEN 0
|
|
|
WHEN forfait_exb > 0 THEN forfait_exb * coefficient_mco
|
|
|
WHEN forfait_exb = 0 AND tarif_exb > 0 AND duree_sejour = 0 THEN (tarif_ghs * coefficient_mco) - (tarif_exb / 2 * coefficient_mco)
|
|
|
WHEN forfait_exb = 0 AND tarif_exb > 0 AND duree_sejour > 0 THEN (tarif_exb * (borne_basse-duree_sejour)) * coefficient_mco
|
|
|
ELSE 0 END
|
|
|
,2)
|
|
|
FROM w_ghs
|
|
|
WHERE p_fiche5_rss.'||scenar||'_ghs_id = w_ghs.oid AND
|
|
|
p_fiche5_rss.type_tarif = w_ghs.type_tarif AND
|
|
|
p_fiche5_rss.date_sortie BETWEEN w_ghs.date_debut_tarif AND w_ghs.date_fin_tarif
|
|
|
',1)
|
|
|
FROM
|
|
|
(
|
|
|
SELECT 'initial'::text AS scenar
|
|
|
UNION
|
|
|
SELECT 'scenar1'::text AS scenar
|
|
|
UNION
|
|
|
SELECT 'scenar2'::text AS scenar
|
|
|
UNION
|
|
|
SELECT 'control'::text AS scenar
|
|
|
UNION
|
|
|
SELECT 'retenu'::text AS scenar
|
|
|
) subview
|
|
|
;
|
|
|
|
|
|
-- Facturation externe
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
scenar1_ghs_montant_total = t_prestation_tarif.tarif,
|
|
|
scenar1_exh_montant_total = 0,
|
|
|
scenar1_exb_montant_total = 0
|
|
|
FROM pmsi.t_prestations
|
|
|
JOIN pmsi.t_prestation_tarif ON prestation_id = t_prestations.oid
|
|
|
WHERE scenar1_rule <> 'GHS' AND scenar1_rule <> '' AND
|
|
|
t_prestations.code = scenar1_rule AND
|
|
|
p_fiche5_rss.date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND
|
|
|
type_ets = '2'
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
scenar1_ghs_montant_total = 0,
|
|
|
scenar1_exh_montant_total = 0,
|
|
|
scenar1_exb_montant_total = 0
|
|
|
FROM pmsi.t_prestations
|
|
|
JOIN pmsi.t_prestation_tarif ON prestation_id = t_prestations.oid
|
|
|
WHERE scenar1_rule = 'EXT'
|
|
|
;
|
|
|
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
scenar2_ghs_montant_total = t_prestation_tarif.tarif,
|
|
|
scenar2_exh_montant_total = 0,
|
|
|
scenar2_exb_montant_total = 0
|
|
|
FROM pmsi.t_prestations
|
|
|
JOIN pmsi.t_prestation_tarif ON prestation_id = t_prestations.oid
|
|
|
WHERE scenar2_rule <> 'GHS' AND scenar2_rule <> '' AND
|
|
|
t_prestations.code = scenar2_rule AND
|
|
|
p_fiche5_rss.date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND
|
|
|
type_ets = '2'
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
scenar2_ghs_montant_total = 0,
|
|
|
scenar2_exh_montant_total = 0,
|
|
|
scenar2_exb_montant_total = 0
|
|
|
FROM pmsi.t_prestations
|
|
|
JOIN pmsi.t_prestation_tarif ON prestation_id = t_prestations.oid
|
|
|
WHERE scenar2_rule = 'EXT'
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
control_ghs_montant_total = t_prestation_tarif.tarif,
|
|
|
control_exh_montant_total = 0,
|
|
|
control_exb_montant_total = 0
|
|
|
FROM pmsi.t_prestations
|
|
|
JOIN pmsi.t_prestation_tarif ON prestation_id = t_prestations.oid
|
|
|
WHERE control_rule <> 'GHS' AND control_rule <> '' AND
|
|
|
t_prestations.code = control_rule AND
|
|
|
p_fiche5_rss.date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND
|
|
|
type_ets = '2'
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
control_ghs_montant_total = 0,
|
|
|
control_exh_montant_total = 0,
|
|
|
control_exb_montant_total = 0
|
|
|
FROM pmsi.t_prestations
|
|
|
JOIN pmsi.t_prestation_tarif ON prestation_id = t_prestations.oid
|
|
|
WHERE control_rule = 'EXT'
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
retenu_ghs_montant_total = t_prestation_tarif.tarif,
|
|
|
retenu_exh_montant_total = 0,
|
|
|
retenu_exb_montant_total = 0
|
|
|
FROM pmsi.t_prestations
|
|
|
JOIN pmsi.t_prestation_tarif ON prestation_id = t_prestations.oid
|
|
|
WHERE retenu_rule <> 'GHS' AND retenu_rule <> '' AND
|
|
|
t_prestations.code = retenu_rule AND
|
|
|
p_fiche5_rss.date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND
|
|
|
type_ets = '2'
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
retenu_ghs_montant_total = 0,
|
|
|
retenu_exh_montant_total = 0,
|
|
|
retenu_exb_montant_total = 0
|
|
|
FROM pmsi.t_prestations
|
|
|
JOIN pmsi.t_prestation_tarif ON prestation_id = t_prestations.oid
|
|
|
WHERE retenu_rule = 'EXT'
|
|
|
;
|
|
|
|
|
|
-- Recopie selon CF
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
scenar1_rum_um_code = initial_rum_um_code,
|
|
|
scenar1_rum_dp_code = initial_rum_dp_code,
|
|
|
scenar1_rum_dr_code = initial_rum_dr_code,
|
|
|
scenar1_rum_da_code = initial_rum_da_code,
|
|
|
scenar1_ghs_id = initial_ghs_id,
|
|
|
scenar1_ghs_code = initial_ghs_code,
|
|
|
scenar1_ghm_id = initial_ghm_id,
|
|
|
scenar1_ghm_code = initial_ghm_code,
|
|
|
scenar1_ghs_tarif = initial_ghs_tarif,
|
|
|
scenar1_ghs_montant_total = initial_ghs_montant_total,
|
|
|
scenar1_exb_montant_total = initial_exb_montant_total,
|
|
|
scenar1_exh_montant_total = initial_exh_montant_total,
|
|
|
scenar1_ghs_montant_amo = initial_ghs_montant_amo,
|
|
|
scenar1_exb_montant_amo = initial_exb_montant_amo,
|
|
|
scenar1_exh_montant_amo = initial_exh_montant_amo
|
|
|
WHERE scenar1_rule = '' OR scenar1_rule IS NULL
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
scenar2_rum_um_code = scenar1_rum_um_code,
|
|
|
scenar2_rum_dp_code = scenar1_rum_dp_code,
|
|
|
scenar2_rum_dr_code = scenar1_rum_dr_code,
|
|
|
scenar2_rum_da_code = scenar1_rum_da_code,
|
|
|
scenar2_ghs_id = scenar1_ghs_id,
|
|
|
scenar2_ghs_code = scenar1_ghs_code,
|
|
|
scenar2_ghm_id = scenar1_ghm_id,
|
|
|
scenar2_ghm_code = scenar1_ghm_code,
|
|
|
scenar2_ghs_tarif = scenar1_ghs_tarif,
|
|
|
scenar2_ghs_montant_total = scenar1_ghs_montant_total,
|
|
|
scenar2_exb_montant_total = scenar1_exb_montant_total,
|
|
|
scenar2_exh_montant_total = scenar1_exh_montant_total,
|
|
|
scenar2_ghs_montant_amo = scenar1_ghs_montant_amo,
|
|
|
scenar2_exb_montant_amo = scenar1_exb_montant_amo,
|
|
|
scenar2_exh_montant_amo = scenar1_exh_montant_amo
|
|
|
WHERE scenar2_rule = 'CFSC1' OR
|
|
|
scenar2_rule = '' OR
|
|
|
scenar2_rule IS NULL
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
control_rum_um_code = initial_rum_um_code,
|
|
|
control_rum_dp_code = initial_rum_dp_code,
|
|
|
control_rum_dr_code = initial_rum_dr_code,
|
|
|
control_rum_da_code = initial_rum_da_code,
|
|
|
control_ghs_id = initial_ghs_id,
|
|
|
control_ghs_code = initial_ghs_code,
|
|
|
control_ghm_id = initial_ghm_id,
|
|
|
control_ghm_code = initial_ghm_code,
|
|
|
control_ghs_tarif = initial_ghs_tarif,
|
|
|
control_ghs_montant_total = initial_ghs_montant_total,
|
|
|
control_exb_montant_total = initial_exb_montant_total,
|
|
|
control_exh_montant_total = initial_exh_montant_total,
|
|
|
control_ghs_montant_amo = initial_ghs_montant_amo,
|
|
|
control_exb_montant_amo = initial_exb_montant_amo,
|
|
|
control_exh_montant_amo = initial_exh_montant_amo
|
|
|
WHERE control_rule = 'OKAM' OR
|
|
|
control_rule IS NULL OR
|
|
|
control_rule = ''
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
control_rum_um_code = scenar1_rum_um_code,
|
|
|
control_rum_dp_code = scenar1_rum_dp_code,
|
|
|
control_rum_dr_code = scenar1_rum_dr_code,
|
|
|
control_rum_da_code = scenar1_rum_da_code,
|
|
|
control_ghs_id = scenar1_ghs_id,
|
|
|
control_ghs_code = scenar1_ghs_code,
|
|
|
control_ghm_id = scenar1_ghm_id,
|
|
|
control_ghm_code = scenar1_ghm_code,
|
|
|
control_ghs_tarif = scenar1_ghs_tarif,
|
|
|
control_ghs_montant_total = scenar1_ghs_montant_total,
|
|
|
control_exb_montant_total = scenar1_exb_montant_total,
|
|
|
control_exh_montant_total = scenar1_exh_montant_total,
|
|
|
control_ghs_montant_amo = scenar1_ghs_montant_amo,
|
|
|
control_exb_montant_amo = scenar1_exb_montant_amo,
|
|
|
control_exh_montant_amo = scenar1_exh_montant_amo
|
|
|
WHERE control_rule = 'CFSC1'
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
control_rum_um_code = scenar2_rum_um_code,
|
|
|
control_rum_dp_code = scenar2_rum_dp_code,
|
|
|
control_rum_dr_code = scenar2_rum_dr_code,
|
|
|
control_rum_da_code = scenar2_rum_da_code,
|
|
|
control_ghs_id = scenar2_ghs_id,
|
|
|
control_ghs_code = scenar2_ghs_code,
|
|
|
control_ghm_id = scenar2_ghm_id,
|
|
|
control_ghm_code = scenar2_ghm_code,
|
|
|
control_ghs_tarif = scenar2_ghs_tarif,
|
|
|
control_ghs_montant_total = scenar2_ghs_montant_total,
|
|
|
control_exb_montant_total = scenar2_exb_montant_total,
|
|
|
control_exh_montant_total = scenar2_exh_montant_total,
|
|
|
control_ghs_montant_amo = scenar2_ghs_montant_amo,
|
|
|
control_exb_montant_amo = scenar2_exb_montant_amo,
|
|
|
control_exh_montant_amo = scenar2_exh_montant_amo
|
|
|
WHERE control_rule = 'CFSC2'
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
retenu_rum_um_code = initial_rum_um_code,
|
|
|
retenu_rum_dp_code = initial_rum_dp_code,
|
|
|
retenu_rum_dr_code = initial_rum_dr_code,
|
|
|
retenu_rum_da_code = initial_rum_da_code,
|
|
|
retenu_ghs_id = initial_ghs_id,
|
|
|
retenu_ghs_code = initial_ghs_code,
|
|
|
retenu_ghm_id = initial_ghm_id,
|
|
|
retenu_ghm_code = initial_ghm_code,
|
|
|
retenu_ghs_tarif = initial_ghs_tarif,
|
|
|
retenu_ghs_montant_total = initial_ghs_montant_total,
|
|
|
retenu_exb_montant_total = initial_exb_montant_total,
|
|
|
retenu_exh_montant_total = initial_exh_montant_total,
|
|
|
retenu_ghs_montant_amo = initial_ghs_montant_amo,
|
|
|
retenu_exb_montant_amo = initial_exb_montant_amo,
|
|
|
retenu_exh_montant_amo = initial_exh_montant_amo
|
|
|
WHERE retenu_rule = 'OKAM' OR
|
|
|
retenu_rule = '' OR
|
|
|
retenu_rule IS NULL
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
retenu_rum_um_code = scenar1_rum_um_code,
|
|
|
retenu_rum_dp_code = scenar1_rum_dp_code,
|
|
|
retenu_rum_dr_code = scenar1_rum_dr_code,
|
|
|
retenu_rum_da_code = scenar1_rum_da_code,
|
|
|
retenu_ghs_id = scenar1_ghs_id,
|
|
|
retenu_ghs_code = scenar1_ghs_code,
|
|
|
retenu_ghm_id = scenar1_ghm_id,
|
|
|
retenu_ghm_code = scenar1_ghm_code,
|
|
|
retenu_ghs_tarif = scenar1_ghs_tarif,
|
|
|
retenu_ghs_montant_total = scenar1_ghs_montant_total,
|
|
|
retenu_exb_montant_total = scenar1_exb_montant_total,
|
|
|
retenu_exh_montant_total = scenar1_exh_montant_total,
|
|
|
retenu_ghs_montant_amo = scenar1_ghs_montant_amo,
|
|
|
retenu_exb_montant_amo = scenar1_exb_montant_amo,
|
|
|
retenu_exh_montant_amo = scenar1_exh_montant_amo
|
|
|
WHERE retenu_rule = 'CFSC1'
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
retenu_rum_um_code = scenar2_rum_um_code,
|
|
|
retenu_rum_dp_code = scenar2_rum_dp_code,
|
|
|
retenu_rum_dr_code = scenar2_rum_dr_code,
|
|
|
retenu_rum_da_code = scenar2_rum_da_code,
|
|
|
retenu_ghs_id = scenar2_ghs_id,
|
|
|
retenu_ghs_code = scenar2_ghs_code,
|
|
|
retenu_ghm_id = scenar2_ghm_id,
|
|
|
retenu_ghm_code = scenar2_ghm_code,
|
|
|
retenu_ghs_tarif = scenar2_ghs_tarif,
|
|
|
retenu_ghs_montant_total = scenar2_ghs_montant_total,
|
|
|
retenu_exb_montant_total = scenar2_exb_montant_total,
|
|
|
retenu_exh_montant_total = scenar2_exh_montant_total,
|
|
|
retenu_ghs_montant_amo = scenar2_ghs_montant_amo,
|
|
|
retenu_exb_montant_amo = scenar2_exb_montant_amo,
|
|
|
retenu_exh_montant_amo = scenar2_exh_montant_amo
|
|
|
WHERE retenu_rule = 'CFSC2'
|
|
|
;
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
retenu_rum_um_code = control_rum_um_code,
|
|
|
retenu_rum_dp_code = control_rum_dp_code,
|
|
|
retenu_rum_dr_code = control_rum_dr_code,
|
|
|
retenu_rum_da_code = control_rum_da_code,
|
|
|
retenu_ghs_id = control_ghs_id,
|
|
|
retenu_ghs_code = control_ghs_code,
|
|
|
retenu_ghm_id = control_ghm_id,
|
|
|
retenu_ghm_code = control_ghm_code,
|
|
|
retenu_ghs_tarif = control_ghs_tarif,
|
|
|
retenu_ghs_montant_total = control_ghs_montant_total,
|
|
|
retenu_exb_montant_total = control_exb_montant_total,
|
|
|
retenu_exh_montant_total = control_exh_montant_total,
|
|
|
retenu_ghs_montant_amo = control_ghs_montant_amo,
|
|
|
retenu_exb_montant_amo = control_exb_montant_amo,
|
|
|
retenu_exh_montant_amo = control_exh_montant_amo
|
|
|
WHERE retenu_rule = 'CFCTL'
|
|
|
;
|
|
|
|
|
|
|
|
|
-- SI séjour pas facturé à AMO, retenir montant groupage initial comme montant facturé
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
facture_ghs_id = initial_ghs_id,
|
|
|
facture_ghs_code = initial_ghs_code,
|
|
|
facture_ghs_tarif = initial_ghs_tarif,
|
|
|
facture_ghs_montant_total = initial_ghs_montant_total,
|
|
|
facture_exb_montant_total = initial_exb_montant_total,
|
|
|
facture_exh_montant_total = initial_exh_montant_total,
|
|
|
facture_nb_exh = initial_nb_exh,
|
|
|
facture_nb_exb = initial_nb_exb
|
|
|
WHERE facture_ghs_montant_total = 0 AND
|
|
|
facture_ghm_code = initial_ghm_code
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 'OK'
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RETURN 'OK';
|
|
|
END;
|