|
|
return: text
|
|
|
lang: plpgsql
|
|
|
src: |
|
|
|
DECLARE
|
|
|
|
|
|
|
|
|
result TEXT;
|
|
|
BEGIN
|
|
|
|
|
|
-- récupérer les dossiers MCO
|
|
|
DROP TABLE IF EXISTS w_rsf_detail;
|
|
|
CREATE TEMP TABLE w_rsf_detail AS
|
|
|
|
|
|
SELECT rss_id , p_rsf_detail.no_rss,
|
|
|
p_rsf_detail.finess ,
|
|
|
p_rss.date_sortie,
|
|
|
p_rsf_detail.ghs_id ,
|
|
|
sum(p_rsf_detail.base_remboursement) as w_base_remboursement
|
|
|
FROM pmsi.p_rsf_detail
|
|
|
JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id
|
|
|
WHERE 1=1
|
|
|
AND p_rsf_detail.ghs_id > 0
|
|
|
AND p_rsf_detail.base_remboursement <> 18
|
|
|
GROUP BY 1,2,3,4,5
|
|
|
;
|
|
|
|
|
|
ALTER TABLE w_rsf_detail ADD COLUMN w_ca_ghs_sans_coefficient numeric (13,2) DEFAULT 0;
|
|
|
|
|
|
|
|
|
-- CA_GHS brut
|
|
|
|
|
|
UPDATE w_rsf_detail
|
|
|
SET w_ca_ghs_sans_coefficient =
|
|
|
CASE WHEN t_finess.type_etablissement = ANY (ARRAY['2'::text, '3'::text]) THEN
|
|
|
CASE
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_public_1 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_public_2 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_public_3 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_public_4 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_public_5 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_public_6 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_public_7 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_public_8 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_public_9 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9
|
|
|
ELSE 0::numeric
|
|
|
END
|
|
|
ELSE CASE
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_prive_1 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_prive_1 THEN t_ghs.tarif_ghs_prive_1
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_prive_2 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_prive_2 THEN t_ghs.tarif_ghs_prive_2
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_prive_3 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_prive_3 THEN t_ghs.tarif_ghs_prive_3
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_prive_4 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_prive_4 THEN t_ghs.tarif_ghs_prive_4
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_prive_5 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_prive_5 THEN t_ghs.tarif_ghs_prive_5
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_prive_6 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_prive_6 THEN t_ghs.tarif_ghs_prive_6
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_prive_7 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_prive_7 THEN t_ghs.tarif_ghs_prive_7
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_prive_8 AND w_rsf_detail.date_sortie <= t_ghs.date_fin_prive_8 THEN t_ghs.tarif_ghs_prive_8
|
|
|
WHEN w_rsf_detail.date_sortie >= t_ghs.date_debut_prive_9 AND w_rsf_detail.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.oid = w_rsf_detail.ghs_id
|
|
|
AND w_rsf_detail.finess = t_finess.code
|
|
|
AND ghs_id <> 0
|
|
|
;
|
|
|
|
|
|
DROP TABLE IF EXISTS w_rsf_total;
|
|
|
CREATE TEMP TABLE w_rsf_total AS
|
|
|
|
|
|
SELECT rss_id ,
|
|
|
no_rss ,
|
|
|
sum (w_base_remboursement),
|
|
|
sum(w_ca_ghs_sans_coefficient) as w_ca_ghs_sans_coefficient
|
|
|
FROM w_rsf_detail
|
|
|
GROUP BY 1,2;
|
|
|
|
|
|
UPDATE pmsi.p_rsf_total
|
|
|
SET ca_ghs_sans_coefficient = w_rsf_total.w_ca_ghs_sans_coefficient
|
|
|
FROM w_rsf_total
|
|
|
WHERE p_rsf_total.rss_id = w_rsf_total.rss_id
|
|
|
AND ca_ghs_sans_coefficient IS DISTINCT FROM w_rsf_total.w_ca_ghs_sans_coefficient;
|
|
|
|
|
|
|
|
|
|
|
|
RETURN 'OK';
|
|
|
END;
|