return: text lang: plpgsql src: | DECLARE result TEXT; BEGIN DROP TABLE IF EXISTS w_raac_impact; CREATE TEMP TABLE w_raac_impact AS SELECT finess, no_rss , date_sortie, p_rss.ghm_id as p_ghm_id, t_ghm.oid as t_ghm_id, t_ghm.code as t_ghm_code, p_rss.ghs_id as p_ghs_id, t_ghs.oid as t_ghs_id , sum(ca_ghs) as ca_ghs_avec_raac, 0 as ca_ghs_sans_raac_sans_coeff, 0::numeric as coefficient_mco, 0 as ca_ghs_sans_raac FROM pmsi.p_rss join pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid join pmsi.t_ghs on p_rss.ghs_id = t_ghs.oid where 1=1 AND raac_id > 0 AND t_ghs.ghm_id <> p_rss.ghm_id group by 1,2,3,4,5,6,7,8 order by 3; DROP TABLE IF EXISTS w_raac_sans_impact; CREATE TEMP TABLE w_raac_sans_impact AS SELECT finess, no_rss , date_sortie, p_rss.ghm_id as p_ghm_id, t_ghm.oid as t_ghm_id, t_ghm.code as t_ghm_code, p_rss.ghs_id as p_ghs_id, t_ghs.oid as t_ghs_id , sum(ca_ghs) as ca_ghs_avec_raac, 0 as ca_ghs_sans_raac_sans_coeff, 0::numeric as coefficient_mco, 0 as ca_ghs_sans_raac FROM pmsi.p_rss join pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid join pmsi.t_ghs on p_rss.ghs_id = t_ghs.oid where 1=1 AND raac_id > 0 AND t_ghs.ghm_id = p_rss.ghm_id group by 1,2,3,4,5,6,7,8 order by 3; UPDATE w_raac_impact SET ca_ghs_sans_raac = CASE WHEN t_finess.type_etablissement = ANY (ARRAY['2'::text, '3'::text]) THEN CASE WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_public_1 AND w_raac_impact.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_public_2 AND w_raac_impact.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_public_3 AND w_raac_impact.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_public_4 AND w_raac_impact.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_public_5 AND w_raac_impact.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_public_6 AND w_raac_impact.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_public_7 AND w_raac_impact.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_public_8 AND w_raac_impact.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_public_9 AND w_raac_impact.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END ELSE CASE WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_prive_1 AND w_raac_impact.date_sortie <= t_ghs.date_fin_prive_1 THEN t_ghs.tarif_ghs_prive_1 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_prive_2 AND w_raac_impact.date_sortie <= t_ghs.date_fin_prive_2 THEN t_ghs.tarif_ghs_prive_2 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_prive_3 AND w_raac_impact.date_sortie <= t_ghs.date_fin_prive_3 THEN t_ghs.tarif_ghs_prive_3 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_prive_4 AND w_raac_impact.date_sortie <= t_ghs.date_fin_prive_4 THEN t_ghs.tarif_ghs_prive_4 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_prive_5 AND w_raac_impact.date_sortie <= t_ghs.date_fin_prive_5 THEN t_ghs.tarif_ghs_prive_5 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_prive_6 AND w_raac_impact.date_sortie <= t_ghs.date_fin_prive_6 THEN t_ghs.tarif_ghs_prive_6 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_prive_7 AND w_raac_impact.date_sortie <= t_ghs.date_fin_prive_7 THEN t_ghs.tarif_ghs_prive_7 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_prive_8 AND w_raac_impact.date_sortie <= t_ghs.date_fin_prive_8 THEN t_ghs.tarif_ghs_prive_8 WHEN w_raac_impact.date_sortie >= t_ghs.date_debut_prive_9 AND w_raac_impact.date_sortie <= t_ghs.date_fin_prive_9 THEN t_ghs.tarif_ghs_prive_9 ELSE 0::numeric END END FROM pmsi.t_ghs,base.t_finess WHERE 1=1 AND t_ghs.ghm_id = w_raac_impact.p_ghm_id AND w_raac_impact.finess = t_finess.code ; UPDATE w_raac_impact SET coefficient_mco = v_rsf_detail_1.coefficient_mco FROM pmsi.v_rsf_detail_1 where w_raac_impact.no_rss = v_rsf_detail_1.no_rss AND prestation_code = 'GHS'; UPDATE pmsi.p_rss SET CA_GHS_RAAC = ca_ghs_sans_raac * w_raac_impact.coefficient_mco FROM w_raac_impact WHERE w_raac_impact.no_rss = p_rss.no_rss; UPDATE pmsi.p_rss SET CA_GHS_RAAC = ca_ghs_avec_raac FROM w_raac_sans_impact WHERE w_raac_sans_impact.no_rss = p_rss.no_rss; RETURN 'OK'; END;