return: text lang: plpgsql src: | DECLARE result TEXT; BEGIN DROP TABLE IF EXISTS w_finess_mco_date ; CREATE TEMP TABLE w_finess_mco_date AS SELECT p_rss.finess, CASE WHEN SUBSTR (date_sortie ,6, 2 )::int > 02 THEN SUBSTR (date_sortie ,1 ,4 ) ELSE (SUBSTR (date_sortie ,1 ,4 )::int - 1 )::text END || '-03-01' as date_ref , coefficient_mco, count(*) AS nb FROM pmsi.p_rsf_detail JOIN pmsi.p_rss ON rss_id = p_rss.oid ANd p_rss.en_cours = '0' JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id AND t_prestations.code = 'GHS' GROUP BY 1,2,3 ; DROP TABLE IF EXISTS w_finess_mco ; CREATE TEMP TABLE w_finess_mco AS SELECT finess, date_ref, (MAX(Array[to_char(nb,'FM000000000000'),coefficient_mco::text]))[2]::numeric AS coefficient_mco FROM w_finess_mco_date GROUP BY 1,2 ORDER BY 3 ; DROP TABLE IF EXISTS w_val_encours; CREATE TEMP TABLE w_val_encours AS SELECT p_rss.finess, p_rss.oid AS rss_id, no_rss, no_sejour_administratif, date_entree, date_sortie, date_sortie - date_entree AS duree_sejour, en_cours_etat, ghs_id, t_ghs.code AS ghs_code, p_rss.ghm_id, t_ghm.code AS ghm_code, CASE WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_1 AND p_rss.date_sortie <= t_ghs.date_fin_prive_1 THEN t_ghs.tarif_ghs_prive_1 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_2 AND p_rss.date_sortie <= t_ghs.date_fin_prive_2 THEN t_ghs.tarif_ghs_prive_2 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_3 AND p_rss.date_sortie <= t_ghs.date_fin_prive_3 THEN t_ghs.tarif_ghs_prive_3 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_4 AND p_rss.date_sortie <= t_ghs.date_fin_prive_4 THEN t_ghs.tarif_ghs_prive_4 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_5 AND p_rss.date_sortie <= t_ghs.date_fin_prive_5 THEN t_ghs.tarif_ghs_prive_5 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_6 AND p_rss.date_sortie <= t_ghs.date_fin_prive_6 THEN t_ghs.tarif_ghs_prive_6 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_7 AND p_rss.date_sortie <= t_ghs.date_fin_prive_7 THEN t_ghs.tarif_ghs_prive_7 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_8 AND p_rss.date_sortie <= t_ghs.date_fin_prive_8 THEN t_ghs.tarif_ghs_prive_8 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_9 AND p_rss.date_sortie <= t_ghs.date_fin_prive_9 THEN t_ghs.tarif_ghs_prive_9 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END AS tarif_ghs, CASE WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_1 AND p_rss.date_sortie <= t_ghs.date_fin_prive_1 THEN t_ghs.borne_haute_prive_1 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_2 AND p_rss.date_sortie <= t_ghs.date_fin_prive_2 THEN t_ghs.borne_haute_prive_2 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_3 AND p_rss.date_sortie <= t_ghs.date_fin_prive_3 THEN t_ghs.borne_haute_prive_3 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_4 AND p_rss.date_sortie <= t_ghs.date_fin_prive_4 THEN t_ghs.borne_haute_prive_4 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_5 AND p_rss.date_sortie <= t_ghs.date_fin_prive_5 THEN t_ghs.borne_haute_prive_5 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_6 AND p_rss.date_sortie <= t_ghs.date_fin_prive_6 THEN t_ghs.borne_haute_prive_6 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_7 AND p_rss.date_sortie <= t_ghs.date_fin_prive_7 THEN t_ghs.borne_haute_prive_7 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_8 AND p_rss.date_sortie <= t_ghs.date_fin_prive_8 THEN t_ghs.borne_haute_prive_8 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_9 AND p_rss.date_sortie <= t_ghs.date_fin_prive_9 THEN t_ghs.borne_haute_prive_9 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.borne_haute_public_1 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.borne_haute_public_2 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.borne_haute_public_3 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.borne_haute_public_4 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.borne_haute_public_5 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.borne_haute_public_6 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.borne_haute_public_7 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.borne_haute_public_8 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.borne_haute_public_9 ELSE 0::numeric END AS borne_haute, CASE WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_1 AND p_rss.date_sortie <= t_ghs.date_fin_prive_1 THEN t_ghs.tarif_exh_prive_1 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_2 AND p_rss.date_sortie <= t_ghs.date_fin_prive_2 THEN t_ghs.tarif_exh_prive_2 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_3 AND p_rss.date_sortie <= t_ghs.date_fin_prive_3 THEN t_ghs.tarif_exh_prive_3 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_4 AND p_rss.date_sortie <= t_ghs.date_fin_prive_4 THEN t_ghs.tarif_exh_prive_4 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_5 AND p_rss.date_sortie <= t_ghs.date_fin_prive_5 THEN t_ghs.tarif_exh_prive_5 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_6 AND p_rss.date_sortie <= t_ghs.date_fin_prive_6 THEN t_ghs.tarif_exh_prive_6 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_7 AND p_rss.date_sortie <= t_ghs.date_fin_prive_7 THEN t_ghs.tarif_exh_prive_7 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_8 AND p_rss.date_sortie <= t_ghs.date_fin_prive_8 THEN t_ghs.tarif_exh_prive_8 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_9 AND p_rss.date_sortie <= t_ghs.date_fin_prive_9 THEN t_ghs.tarif_exh_prive_9 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_exh_public_1 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_exh_public_2 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_exh_public_3 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_exh_public_4 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_exh_public_5 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_exh_public_6 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_exh_public_7 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_exh_public_8 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_exh_public_9 ELSE 0::numeric END AS tarif_exh, CASE WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_1 AND p_rss.date_sortie <= t_ghs.date_fin_prive_1 THEN t_ghs.borne_basse_prive_1 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_2 AND p_rss.date_sortie <= t_ghs.date_fin_prive_2 THEN t_ghs.borne_basse_prive_2 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_3 AND p_rss.date_sortie <= t_ghs.date_fin_prive_3 THEN t_ghs.borne_basse_prive_3 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_4 AND p_rss.date_sortie <= t_ghs.date_fin_prive_4 THEN t_ghs.borne_basse_prive_4 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_5 AND p_rss.date_sortie <= t_ghs.date_fin_prive_5 THEN t_ghs.borne_basse_prive_5 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_6 AND p_rss.date_sortie <= t_ghs.date_fin_prive_6 THEN t_ghs.borne_basse_prive_6 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_7 AND p_rss.date_sortie <= t_ghs.date_fin_prive_7 THEN t_ghs.borne_basse_prive_7 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_8 AND p_rss.date_sortie <= t_ghs.date_fin_prive_8 THEN t_ghs.borne_basse_prive_8 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_9 AND p_rss.date_sortie <= t_ghs.date_fin_prive_9 THEN t_ghs.borne_basse_prive_9 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.borne_basse_public_1 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.borne_basse_public_2 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.borne_basse_public_3 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.borne_basse_public_4 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.borne_basse_public_5 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.borne_basse_public_6 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.borne_basse_public_7 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.borne_basse_public_8 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.borne_basse_public_9 ELSE 0::numeric END AS borne_basse, CASE WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_1 AND p_rss.date_sortie <= t_ghs.date_fin_prive_1 THEN t_ghs.tarif_exb_prive_1 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_2 AND p_rss.date_sortie <= t_ghs.date_fin_prive_2 THEN t_ghs.tarif_exb_prive_2 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_3 AND p_rss.date_sortie <= t_ghs.date_fin_prive_3 THEN t_ghs.tarif_exb_prive_3 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_4 AND p_rss.date_sortie <= t_ghs.date_fin_prive_4 THEN t_ghs.tarif_exb_prive_4 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_5 AND p_rss.date_sortie <= t_ghs.date_fin_prive_5 THEN t_ghs.tarif_exb_prive_5 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_6 AND p_rss.date_sortie <= t_ghs.date_fin_prive_6 THEN t_ghs.tarif_exb_prive_6 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_7 AND p_rss.date_sortie <= t_ghs.date_fin_prive_7 THEN t_ghs.tarif_exb_prive_7 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_8 AND p_rss.date_sortie <= t_ghs.date_fin_prive_8 THEN t_ghs.tarif_exb_prive_8 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_9 AND p_rss.date_sortie <= t_ghs.date_fin_prive_9 THEN t_ghs.tarif_exb_prive_9 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_exb_public_1 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_exb_public_2 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_exb_public_3 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_exb_public_4 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_exb_public_5 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_exb_public_6 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_exb_public_7 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_exb_public_8 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_exb_public_9 ELSE 0::numeric END AS tarif_exb, CASE WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_1 AND p_rss.date_sortie <= t_ghs.date_fin_prive_1 THEN t_ghs.forfait_exb_prive_1 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_2 AND p_rss.date_sortie <= t_ghs.date_fin_prive_2 THEN t_ghs.forfait_exb_prive_2 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_3 AND p_rss.date_sortie <= t_ghs.date_fin_prive_3 THEN t_ghs.forfait_exb_prive_3 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_4 AND p_rss.date_sortie <= t_ghs.date_fin_prive_4 THEN t_ghs.forfait_exb_prive_4 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_5 AND p_rss.date_sortie <= t_ghs.date_fin_prive_5 THEN t_ghs.forfait_exb_prive_5 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_6 AND p_rss.date_sortie <= t_ghs.date_fin_prive_6 THEN t_ghs.forfait_exb_prive_6 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_7 AND p_rss.date_sortie <= t_ghs.date_fin_prive_7 THEN t_ghs.forfait_exb_prive_7 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_8 AND p_rss.date_sortie <= t_ghs.date_fin_prive_8 THEN t_ghs.forfait_exb_prive_8 WHEN type_etablissement = '1' AND p_rss.date_sortie >= t_ghs.date_debut_prive_9 AND p_rss.date_sortie <= t_ghs.date_fin_prive_9 THEN t_ghs.forfait_exb_prive_9 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.forfait_exb_public_1 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.forfait_exb_public_2 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.forfait_exb_public_3 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.forfait_exb_public_4 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.forfait_exb_public_5 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.forfait_exb_public_6 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.forfait_exb_public_7 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.forfait_exb_public_8 WHEN type_etablissement <> '1' AND p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.forfait_exb_public_9 ELSE 0::numeric END AS forfait_exb, 0::numeric AS base_remboursement_ghs, 0::numeric AS nombre_exh, 0::numeric AS base_remboursement_exh, 0::numeric AS nombre_exb, COALESCE(w_finess_mco.coefficient_mco, 0) AS coefficient_mco, 1::numeric AS coefficient_exb FROM pmsi.p_rss JOIN pmsi.t_ghs ON ghs_id = t_ghs.oid JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid JOIN base.t_finess ON p_rss.finess = t_finess.code LEFT JOIN w_finess_mco ON p_rss.finess = w_finess_mco.finess AND (CASE WHEN SUBSTR (date_sortie ,6, 2 )::int > 02 THEN SUBSTR (date_sortie ,1 ,4 ) ELSE (SUBSTR (date_sortie ,1 ,4 )::int - 1 )::text END || '-03-01' ) = w_finess_mco.date_ref WHERE en_cours = '1' AND -- on peut avoir une base de remboursement <> 0 si des DMI ou des PHC sont présents sur le dossier en_cours -- base_remboursement = 0 AND ca_ghs + ca_ghs_theorique = 0 AND ghs_id <> 0 AND t_ghs.code <> 9999 AND p_rss.oid != ALL( ARRAY(SELECT distinct p_rsf_detail.rss_id FROM pmsi.p_rsf_detail join pmsi.t_prestations on t_prestations.oid = p_rsf_detail.prestation_id WHERE t_prestations.code like any (array['GHS', 'I0%']) GROUP BY p_rsf_detail.rss_id order by 1)::bigint[]); UPDATE w_val_encours SET coefficient_mco = v_coefficient_mco.coefficient_mco_calcul FROM base.v_coefficient_mco WHERE 1=1 AND coefficient_mco = 0 AND v_coefficient_mco.finess = w_val_encours.finess AND w_val_encours.date_sortie BETWEEN v_coefficient_mco.date_debut AND v_coefficient_mco.date_fin ; UPDATE w_val_encours SET base_remboursement_ghs = round(tarif_ghs*coefficient_mco,2), nombre_exh = CASE WHEN borne_haute <> 0 and duree_sejour > borne_haute THEN duree_sejour - borne_haute ELSE 0 END, nombre_exb = CASE WHEN borne_basse <> 0 and duree_sejour < borne_basse THEN borne_basse - duree_sejour ELSE 0 END; UPDATE w_val_encours SET base_remboursement_exh = round(tarif_exh*nombre_exh*coefficient_mco,2) WHERE nombre_exh > 0; UPDATE w_val_encours SET base_remboursement_ghs = base_remboursement_ghs - CASE WHEN forfait_exb > 0 THEN round(forfait_exb * coefficient_mco,2) ELSE round(nombre_exb * tarif_exb * coefficient_mco,2) END, coefficient_exb = base.cti_division( base_remboursement_ghs - CASE WHEN forfait_exb > 0 THEN round(forfait_exb * coefficient_mco,2) ELSE round(nombre_exb * tarif_exb * coefficient_mco,2) END, base_remboursement_ghs) WHERE nombre_exb > 0; INSERT INTO pmsi.p_rsf_detail( finess, rss_id, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT finess, rss_id, no_rss, 'V' AS nature, '' AS mt, '' AS dmt, date_entree AS date_debut, date_sortie AS date_fin, 1 AS nombre, coefficient_exb AS coefficient, tarif_ghs AS prix_unitaire, base_remboursement_ghs AS base_remboursement, 100 AS taux_remboursement, base_remboursement_ghs AS sejour_facture, base_remboursement_ghs AS sejour_remboursable, 0 AS compteur, '' AS ligne_t2a, '' AS pec_fj, coefficient_mco, 0 AS sejour_remboursable_2, ghs_id, 0 AS sejour_rembourse_noemie, '' AS nature_noemie, COALESCE(t_prestations.oid, 0) AS prestation_id, 'B' AS type, 0 AS coefficient_geo, '1' AS est_ligne_rss, '0' AS est_ligne_rum, 1 AS no_rum, 0 AS unite_medicale_id, 0 AS base_remboursement_rum FROM w_val_encours JOIN pmsi.t_prestations ON t_prestations.code = 'GHS'; INSERT INTO pmsi.p_rsf_detail( finess, rss_id, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT finess, rss_id, no_rss, 'V' AS nature, '' AS mt, '' AS dmt, date_entree AS date_debut, date_sortie AS date_fin, nombre_exh AS nombre, 1 AS coefficient, tarif_exh AS prix_unitaire, base_remboursement_exh AS base_remboursement, 100 AS taux_remboursement, base_remboursement_exh AS sejour_facture, base_remboursement_exh AS sejour_remboursable, 0 AS compteur, '' AS ligne_t2a, '' AS pec_fj, coefficient_mco, 0 AS sejour_remboursable_2, ghs_id, 0 AS sejour_rembourse_noemie, '' AS nature_noemie, COALESCE(t_prestations.oid, 0) AS prestation_id, 'B' AS type, 0 AS coefficient_geo, '1' AS est_ligne_rss, '0' AS est_ligne_rum, 1 AS no_rum, 0 AS unite_medicale_id, 0 AS base_remboursement_rum FROM w_val_encours JOIN pmsi.t_prestations ON t_prestations.code = 'EXH' WHERE nombre_exh > 0; UPDATE pmsi.p_rsf_total SET base_remboursement = COALESCE(subview.base_remboursement,0), t2a_facture = COALESCE(subview.t2a_facture,0), dmi_facture = COALESCE(subview.dmi_facture,0), phc_facture = COALESCE(subview.phc_facture,0), forfait_facture = COALESCE(subview.forfait_facture,0), nb_exh = COALESCE(subview.nb_exh,0), ca_exh = COALESCE(subview.ca_exh,0), nb_exb = COALESCE(subview.nb_exb,0), ca_exb = COALESCE(subview.ca_exb,0), nb_ghs = COALESCE(subview.nb_ghs,0), ca_ghs = COALESCE(subview.ca_ghs,0), nb_ghsmin = COALESCE(subview.nb_ghsmin,0) FROM pmsi.p_rss LEFT JOIN ( SELECT rss_id, SUM(p_rsf_detail.base_remboursement) as base_remboursement, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S1%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as t2a_facture, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S2%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as dmi_facture, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S3%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as phc_facture, SUM(CASE WHEN t_prestations.code = 'EXH' THEN p_rsf_detail.nombre ELSE 0 END) as nb_exh, SUM(CASE WHEN t_prestations.code = 'EXH' THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_exh, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 AND t_ghs.code NOT IN (9606, 9616) THEN p_rsf_detail.nombre ELSE 0 END) as nb_exb, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 AND t_ghs.code NOT IN (9606, 9616) THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_exb, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 AND t_ghs.code IN (9606, 9616) THEN p_rsf_detail.nombre ELSE 0 END) as nb_ghsmin, SUM(CASE WHEN t_prestations.code = 'GHS' THEN p_rsf_detail.nombre ELSE 0 END) as nb_ghs, SUM(CASE WHEN t_prestations.code = 'GHS' THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_ghs, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S13%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as forfait_facture FROM pmsi.p_rsf_detail JOIN pmsi.t_prestations ON p_rsf_detail.prestation_id = t_prestations.oid JOIN pmsi.t_ghs ON t_ghs.oid = p_rsf_detail.ghs_id WHERE p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.rss_id IN (SELECT rss_id FROM w_val_encours) GROUP BY rss_id) subview ON p_rss.oid = subview.rss_id WHERE p_rsf_total.rss_id = p_rss.oid AND p_rsf_total.rss_id IN (SELECT rss_id FROM w_val_encours); UPDATE pmsi.p_rss SET base_remboursement = p_rsf_total.base_remboursement, sejour_facture = p_rsf_total.sejour_facture, honoraires_factures = p_rsf_total.honoraires_factures, t2a_facture = p_rsf_total.t2a_facture, dmi_facture = p_rsf_total.dmi_facture, phc_facture = p_rsf_total.phc_facture, ca_ghs_theorique = p_rsf_total.ca_ghs_theorique, nb_ghs = p_rsf_total.nb_ghs, ca_ghs = p_rsf_total.ca_ghs, nb_exb = p_rsf_total.nb_exb, ca_exb = p_rsf_total.ca_exb, nb_exh = p_rsf_total.nb_exh, ca_exh = p_rsf_total.ca_exh, nb_ghsmin = p_rsf_total.nb_ghsmin, forfait_facture = p_rsf_total.forfait_facture FROM pmsi.p_rsf_total WHERE p_rss.oid = p_rsf_total.rss_id AND p_rss.oid IN (SELECT rss_id FROM w_val_encours) ; RETURN 'OK'; END;