return: text lang: plpgsql src: | DECLARE result TEXT; nb_years_max_src NUMERIC; BEGIN ----- https://www.lespmsi.com/algorithme-de-calcul-du-supplement-rea-reanimation-en-mco/ ----- https://www.lespmsi.com/supplement-src-nouvelles-regles-de-declenchement-et-modification-de-la-liste-des-codes-cim-10/ nb_years_max_src = ( SELECT COALESCE(valeur, '2') FROM pmsi.t_divers WHERE code = 'ANN_DEBUT_RECUP_SEJ_SRC' ); RAISE NOTICE '%' , 'Parametres. Nombre d''annees a recuperer : ' || nb_years_max_src; RAISE NOTICE '%' , 'Suppression des éléments de la table p_rss_src'; TRUNCATE pmsi.p_rss_src; RAISE NOTICE '%' , 'listes utilisées par l''étude SRC'; DROP TABLE IF EXISTS w_listes_src ; CREATE TEMP TABLE w_listes_src AS SELECT liste_code, to_id FROM pmsi.v_listes_3 WHERE v_listes_3.liste_code IN ('CTI_REA25_71A', 'CTI_REA25_72A', 'CTI_SRC18_82A', 'CTI_SRC18_81D', 'CTI_SRC18_83D', 'CTI_SRC19_82A', 'CTI_SRC19_81D', 'CTI_SRC19_83D', 'CTI_SRC20_82A', 'CTI_SRC20_81D', 'CTI_SRC20_83D', 'CTI_SRC21_82A', 'CTI_SRC21_81D', 'CTI_SRC21_83D', 'CTI_SRC22_82A', 'CTI_SRC22_81D', 'CTI_SRC22_83D', 'CTI_SRC23_82A', 'CTI_SRC23_81D', 'CTI_SRC23_83D', 'CTI_SRC24_82A', 'CTI_SRC24_81D', 'CTI_SRC24_83D', 'CTI_SRC25_82A', 'CTI_SRC25_81D', 'CTI_SRC25_83D') ; ----------------------- ** RAISE NOTICE '%' , 'Création table temp_pmsi000143_rss'; --Table temp_pmsi000143_rss : -- --finess ................................ : Finess du RSS --no_rss ................................ : Numéro du RSS --oid ................................... : Id du RSS --date_sortie ........................... : Date de sortie du RSS --age ................................... : Age du patient --src_facturee_nb_rss ................... : SRC facturé (1 ou 0) --src_facturee_nb_prestations ........... : Nombre de SRC facturés --src_facturee_base_remboursement ....... : Montant des SRC facturés --src_facturable_nb_rss ................. : SRC facturable (1 ou 0) --src_facturable_nb_prestations ......... : Nombre de SRC facturables --src_facturable_base_remboursement ..... : Montant des SRC facturables --src_facturable_regle .................. : Numéro de la règle qui permet de facturer un SRC --src_facturable_regle_justificatif ..... : Texte de la règle qui permet de facturer un SRC --src_passage_nb_rss .................... : Passage dans une UM avec autorisation '03' (SRC) --src_passage_duree_sejour .............. : Nombre de jours dans l'UM avec autorisation '03' --src_passage_base_remboursement ........ : S/O --src_facturable_sans_src_ni_igs_nb_rss . : --rea_passage_nb_rss .................... : Passage dans une UM avec autorisation '01' (REA) --igs2_rum .............................. : IGS du RUM DROP TABLE IF EXISTS temp_pmsi000143_rss; CREATE TEMP TABLE temp_pmsi000143_rss( finess character(9), no_rss bigint, oid bigint, date_sortie date, age integer, src_facturee_nb_rss numeric(5) DEFAULT 0, src_facturee_nb_prestations numeric(5) DEFAULT 0, src_facturee_base_remboursement numeric(11, 2) DEFAULT 0, src_facturable_nb_rss numeric(5) DEFAULT 0, src_facturable_nb_prestations numeric(5) DEFAULT 0, src_facturable_base_remboursement numeric(11, 2) DEFAULT 0, src_facturable_regle character(1) DEFAULT '', src_facturable_regle_justificatif character varying(255) DEFAULT '', src_passage_nb_rss numeric(5) DEFAULT 0, src_passage_duree_sejour numeric(5) DEFAULT 0, src_passage_base_remboursement numeric(11, 2) DEFAULT 0, src_facturable_sans_src_ni_igs_nb_rss numeric(5) DEFAULT 0, rea_passage_nb_rss numeric(5) DEFAULT 0, igs2_rum integer DEFAULT 0 ); CREATE INDEX temp_pmsi000143_rss_i1 ON temp_pmsi000143_rss USING btree (oid); ----------------------- ** RAISE NOTICE '%' , 'Création table temp_pmsi000143_rsf_detail'; --Table temp_pmsi000143_rsf_detail : -- --date_debut ............ : Date d'entrée dans le RUM --date_fin .............. : Date de sortie du RUM --nombre ................ : Nombre de journées dans le RUM (minimum 1) --prix_unitaire ......... : Tarif unitaire du supplément juournalier --base_remboursement .... : Montant total du supplément journalier --coefficient_mco ....... : Coefficient MCO --prestation_id ......... : Identifiant de la prestation --regle ................. : Numéro de la règle d'attribution d'un supplément SRC --rss_id ................ : Identifiant du Séjour DROP TABLE IF EXISTS temp_pmsi000143_rsf_detail; CREATE TEMP TABLE temp_pmsi000143_rsf_detail ( date_debut date, date_fin date, nombre numeric(13,2) DEFAULT 1, prix_unitaire numeric(13,2) DEFAULT 0, base_remboursement numeric(13,2) DEFAULT 0, coefficient_mco numeric(5,4) DEFAULT 0, prestation_id bigint DEFAULT 0, regle character(1) DEFAULT '', rss_id bigint DEFAULT 0 ); ----------------------- ** RAISE NOTICE '%' , 'Sélection de tous les dossiers'; INSERT INTO temp_pmsi000143_rss ( finess ,no_rss ,oid ,date_sortie ,age ) SELECT finess ,no_rss ,rss_id ,date_sortie ,age FROM pmsi.v_rss_1 WHERE 1 = 1 AND ghm_id > 0 -- évite de récupérer la totalité des séjours (recup seulement N-2) AND date_sortie BETWEEN ((to_char(CURRENT_DATE, 'YYYY')::INT - nb_years_max_src)::TEXT || '0101')::DATE AND '20990228'::DATE AND duree_sejour >= 1; DELETE FROM temp_pmsi000143_rss WHERE oid IN ( SELECT rss_id FROM pmsi.v_rsf_total_1 WHERE 1 = 1 AND code_pec_code <> 1 GROUP BY rss_id ); ----------------------- ** RAISE NOTICE '%' , 'Dossiers avec supplément SRC facturé'; UPDATE temp_pmsi000143_rss SET src_facturee_nb_rss = nb_rss, src_facturee_nb_prestations = nb_prestations, src_facturee_base_remboursement = base_remboursement FROM ( SELECT rss_id, 1 as nb_rss, SUM(nombre) as nb_prestations, SUM(base_remboursement) as base_remboursement FROM pmsi.p_rsf_detail JOIN temp_pmsi000143_rss ON temp_pmsi000143_rss.oid = p_rsf_detail.rss_id JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id WHERE 1=1 AND est_ligne_rss = '1' AND t_prestations.code = 'SRC' GROUP BY rss_id ) subview WHERE subview.rss_id = temp_pmsi000143_rss.oid; ----------------------- ** RAISE NOTICE '%' , 'Dossiers passés dans une UM qui possède une autorisation SRC puis ceux avec une autorisation REA'; UPDATE temp_pmsi000143_rss SET src_passage_nb_rss = nb_rss, src_passage_duree_sejour = duree_sejour, igs2_rum = igs2 FROM ( SELECT rss_id, 1 as nb_rss, SUM(duree_sejour) as duree_sejour, MAX(igs2) AS igs2 FROM pmsi.p_rss_rum JOIN temp_pmsi000143_rss ON temp_pmsi000143_rss.oid = p_rss_rum.rss_id JOIN pmsi.t_unites_medicales ON p_rss_rum.unite_medicale_id = t_unites_medicales.oid WHERE t_unites_medicales.type_autorisation LIKE '03%' OR t_unites_medicales.type_autorisation LIKE '14%' GROUP BY rss_id ) subview WHERE subview.rss_id = temp_pmsi000143_rss.oid; UPDATE temp_pmsi000143_rss SET rea_passage_nb_rss = nb_rss FROM ( SELECT rss_id, 1 as nb_rss, SUM(duree_sejour) as duree_sejour FROM pmsi.p_rss_rum JOIN temp_pmsi000143_rss ON temp_pmsi000143_rss.oid = p_rss_rum.rss_id JOIN pmsi.t_unites_medicales ON p_rss_rum.unite_medicale_id = t_unites_medicales.oid WHERE t_unites_medicales.type_autorisation LIKE '01%' GROUP BY rss_id ) subview WHERE subview.rss_id = temp_pmsi000143_rss.oid; ----------------------- ** RAISE NOTICE '%' , 'Réinitialise les codes de supplément dans la table des RUMs'; UPDATE pmsi.p_rss_rum SET supplement_code = '' FROM temp_pmsi000143_rss WHERE p_rss_rum.rss_id = temp_pmsi000143_rss.oid AND (supplement_code IS NULL OR supplement_code = ''); ----------------------- ** RAISE NOTICE '%' , 'Suppression des tables temporaires'; DROP TABLE IF EXISTS w_rss_1_12; DROP TABLE IF EXISTS w_rss_2_12; DROP TABLE IF EXISTS w_rss_3_12; DROP TABLE IF EXISTS w_rss_3B_12; DROP TABLE IF EXISTS w_rss_4_12; ----------------------- ** RAISE NOTICE '%' , 'Dossiers avec un acte dans la liste 1 de l''annexe 7'; CREATE TEMP TABLE w_rss_1_12 AS SELECT rss_id, no_rum FROM pmsi.p_rss_actes JOIN temp_pmsi000143_rss ON p_rss_actes.rss_id = temp_pmsi000143_rss.oid JOIN w_listes_src ON w_listes_src.to_id = p_rss_actes.acte_id WHERE 1=1 AND w_listes_src.liste_code = 'CTI_REA25_71A'; ----------------------- ** RAISE NOTICE '%' , 'Dossiers avec un acte de la liste 2 de l''annexe 7 realisé au moins 3 fois'; CREATE TEMP TABLE w_rss_2_12 AS SELECT rss_id, no_rum, acte_id, count(*) FROM pmsi.p_rss_actes JOIN temp_pmsi000143_rss ON p_rss_actes.rss_id = temp_pmsi000143_rss.oid JOIN w_listes_src ON w_listes_src.to_id = p_rss_actes.acte_id WHERE 1=1 AND w_listes_src.liste_code = 'CTI_REA25_72A' GROUP BY rss_id, no_rum, acte_id HAVING count(*) >= 3; ----------------------- ** RAISE NOTICE '%' , 'RUMs dont l''association DP/acte apparait dans la liste 1 de l''annexe 8'; CREATE TEMP TABLE w_rss_3_12 AS SELECT p_rss_diagnostics.rss_id::text || '|'::text || p_rss_diagnostics.no_rum::text AS rss_rum_id, p_rss_diagnostics.rss_id as rss_id, p_rss_diagnostics.no_rum as no_rum, p_rss_diagnostics.diagnostic_id, t_diagnostics.code as diagnostic_principal_code, t_diagnostics.code as regle_justificatif FROM pmsi.p_rss_diagnostics JOIN temp_pmsi000143_rss ON p_rss_diagnostics.rss_id = temp_pmsi000143_rss.oid JOIN pmsi.t_diagnostics ON p_rss_diagnostics.diagnostic_id = t_diagnostics.oid JOIN pmsi.t_unites_medicales ON p_rss_diagnostics.unite_medicale_id = t_unites_medicales.oid JOIN w_listes_src ON w_listes_src.to_id = p_rss_diagnostics.diagnostic_id WHERE 1=1 AND ( (temp_pmsi000143_rss.date_sortie < '20190301' AND w_listes_src.liste_code = 'CTI_SRC18_81D') OR ( temp_pmsi000143_rss.date_sortie >='20190301' AND temp_pmsi000143_rss.date_sortie < '20200301' AND w_listes_src.liste_code = 'CTI_SRC19_81D') OR ( temp_pmsi000143_rss.date_sortie >='20200301' AND temp_pmsi000143_rss.date_sortie < '20210301' AND w_listes_src.liste_code = 'CTI_SRC20_81D') OR ( temp_pmsi000143_rss.date_sortie >='20210301' AND temp_pmsi000143_rss.date_sortie < '20220301' AND w_listes_src.liste_code = 'CTI_SRC21_81D') OR ( temp_pmsi000143_rss.date_sortie >='20220301' AND temp_pmsi000143_rss.date_sortie < '20230301' AND w_listes_src.liste_code = 'CTI_SRC22_81D') OR ( temp_pmsi000143_rss.date_sortie >='20230301' AND temp_pmsi000143_rss.date_sortie < '20240301' AND w_listes_src.liste_code = 'CTI_SRC23_81D') OR ( temp_pmsi000143_rss.date_sortie >='20230301' AND temp_pmsi000143_rss.date_sortie < '20250301' AND w_listes_src.liste_code = 'CTI_SRC24_81D') OR ( temp_pmsi000143_rss.date_sortie >='20250301' AND w_listes_src.liste_code = 'CTI_SRC25_81D') ) AND (type_autorisation LIKE '03%'OR type_autorisation LIKE '14%') ; CREATE INDEX w_rss_3_12_i1 ON w_rss_3_12 USING btree (rss_id); DELETE from w_rss_3_12 WHERE diagnostic_principal_code IN ('S2700', 'S2710', 'S2720', 'S2730') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code IN ('AFLB007', 'AFLB017', 'GGJB001') AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code IN ('J90', 'J91', 'J930', 'J931', 'J938', 'J939', 'S2700', 'S2710', 'S2720', 'S2730') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'GGJB001' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code = 'T754' AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'DEQP007' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code IN ('R571', 'T311', 'T321') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code IN ('ENLF001', 'EPLF002', 'EQLF002') AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code IN ('T311', 'T321') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code IN ('EQLF002', 'HSLD002') AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code IN ('R570', 'R578') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'EQLF001' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code IN ('D62', 'I850', 'I983', 'K250', 'K252', 'K254', 'K260', 'K262', 'K264', 'K920', 'K921', 'K922', 'O720', 'O721', 'O722') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'FELF011' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code IN ('J680','T202', 'T203', 'T206', 'T207') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'GELD005' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code = 'I501' AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code IN ('GLLD003', 'GLLD017') AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code IN ('I501', 'I5010', 'I5011', 'I5012', 'I5019', 'J960', 'J9600', 'J9601', 'J9609') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code IN ('GLLD003', 'GLLD015', 'GLLD017') AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3_12 WHERE diagnostic_principal_code IN ('K500', 'K501', 'K508', 'K509', 'K510', 'K512', 'K513', 'K514', 'K515', 'K518', 'K519') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3_12 w_rss_3_12_bis ON w_rss_3_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code IN ('HSLF001', 'HSLF002', 'HSLF003') AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); ----------------------- ** RAISE NOTICE '%' , 'RUMs dont l''association DP/acte apparait dans la liste 3 de l''annexe 8'; CREATE TEMP TABLE w_rss_3b_12 AS SELECT p_rss_diagnostics.rss_id::text || '|'::text || p_rss_diagnostics.no_rum::text AS rss_rum_id, p_rss_diagnostics.rss_id as rss_id, p_rss_diagnostics.no_rum as no_rum, p_rss_diagnostics.diagnostic_id, t_diagnostics.code as diagnostic_principal_code, t_diagnostics.code as regle_justificatif FROM pmsi.p_rss_diagnostics JOIN temp_pmsi000143_rss ON p_rss_diagnostics.rss_id = temp_pmsi000143_rss.oid JOIN pmsi.t_diagnostics ON p_rss_diagnostics.diagnostic_id = t_diagnostics.oid JOIN pmsi.t_unites_medicales ON p_rss_diagnostics.unite_medicale_id = t_unites_medicales.oid JOIN w_listes_src ON w_listes_src.to_id = p_rss_diagnostics.diagnostic_id WHERE 1=1 AND temp_pmsi000143_rss.age < 18 AND ( ( temp_pmsi000143_rss.date_sortie < '20190301' AND w_listes_src.liste_code = 'CTI_SRC18_83D' ) OR ( temp_pmsi000143_rss.date_sortie >='20190301' AND temp_pmsi000143_rss.date_sortie < '20200301' AND w_listes_src.liste_code = 'CTI_SRC19_83D') OR ( temp_pmsi000143_rss.date_sortie >='20200301' AND temp_pmsi000143_rss.date_sortie < '20210301' AND w_listes_src.liste_code = 'CTI_SRC20_83D') OR ( temp_pmsi000143_rss.date_sortie >='20210301' AND temp_pmsi000143_rss.date_sortie < '20220301' AND w_listes_src.liste_code = 'CTI_SRC21_83D') OR ( temp_pmsi000143_rss.date_sortie >='20220301' AND temp_pmsi000143_rss.date_sortie < '20230301' AND w_listes_src.liste_code = 'CTI_SRC22_83D') OR ( temp_pmsi000143_rss.date_sortie >='20230301' AND temp_pmsi000143_rss.date_sortie < '20240301' AND w_listes_src.liste_code = 'CTI_SRC23_83D') OR ( temp_pmsi000143_rss.date_sortie >='20240301' AND temp_pmsi000143_rss.date_sortie < '20250301' AND w_listes_src.liste_code = 'CTI_SRC24_83D') OR ( temp_pmsi000143_rss.date_sortie >='20250301' AND w_listes_src.liste_code = 'CTI_SRC25_83D') ) AND (type_autorisation LIKE '03%'OR type_autorisation LIKE '14%') ; DELETE from w_rss_3b_12 WHERE diagnostic_principal_code IN ('E743', 'K523', 'K529', 'K560', 'K904', 'K908', 'K912', 'K93828', 'Q431', 'Q432', 'Q793') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3b_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3b_12 w_rss_3b_12_bis ON w_rss_3b_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'HSLF003' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3b_12 WHERE diagnostic_principal_code IN ('J188', 'J840', 'J841','J848') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3b_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3b_12 w_rss_3b_12_bis ON w_rss_3b_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'GEQE004' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3b_12 WHERE diagnostic_principal_code = 'K560' AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3b_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3b_12 w_rss_3b_12_bis ON w_rss_3b_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'HSLF002' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3b_12 WHERE diagnostic_principal_code = 'R040' AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3b_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3b_12 w_rss_3b_12_bis ON w_rss_3b_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code IN ('GABD001', 'GASE001', 'GASE002') AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3b_12 WHERE diagnostic_principal_code IN ('J960', 'J9600', 'J9601', 'J9609') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3b_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3b_12 w_rss_3b_12_bis ON w_rss_3b_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'GLLD019' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3b_12 WHERE diagnostic_principal_code IN ('J960', 'J9600', 'J9601', 'J9609') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3b_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3b_12 w_rss_3b_12_bis ON w_rss_3b_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'GLLD019' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); DELETE from w_rss_3b_12 WHERE diagnostic_principal_code IN ('G934', 'K220', 'K224') AND rss_id != ALL(ARRAY( SELECT DISTINCT w_rss_3b_12_bis.rss_id FROM pmsi.p_rss_actes JOIN w_rss_3b_12 w_rss_3b_12_bis ON w_rss_3b_12_bis.rss_id = p_rss_actes.rss_id JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id JOIN pmsi.t_unites_medicales ON t_unites_medicales.oid = p_rss_actes.unite_medicale_id WHERE t_actes.code = 'HSLD002' AND (type_autorisation LIKE '03%' OR type_autorisation LIKE '14%') )::bigint[]); ----------------------- ** RAISE NOTICE '%' , 'RUMs avec acte dans la liste 2 de l''annexe 8'; CREATE TEMP TABLE w_rss_4_12 AS SELECT p_rss_actes.rss_id, p_rss_actes.no_rss, p_rss_actes.no_rum, p_rss_rum.date_sortie, base.cti_group_concat(DISTINCT t_actes.code) as regle_justificatif FROM pmsi.p_rss_actes JOIN pmsi.t_actes ON p_rss_actes.acte_id = t_actes.oid JOIN pmsi.p_rss_rum ON p_rss_actes.rss_id = p_rss_rum.rss_id AND p_rss_actes.no_rum = p_rss_rum.no_rum JOIN temp_pmsi000143_rss ON p_rss_actes.rss_id = temp_pmsi000143_rss.oid JOIN w_listes_src ON w_listes_src.to_id = p_rss_actes.acte_id WHERE 1=1 AND p_rss_actes.activite_ccam <> '4' AND ( ( temp_pmsi000143_rss.date_sortie < '20190301' AND w_listes_src.liste_code = 'CTI_SRC18_82A' ) OR ( temp_pmsi000143_rss.date_sortie >= '20190301' AND temp_pmsi000143_rss.date_sortie < '20200301' AND w_listes_src.liste_code = 'CTI_SRC19_82A') OR ( temp_pmsi000143_rss.date_sortie >= '20200301' AND temp_pmsi000143_rss.date_sortie < '20210301' AND w_listes_src.liste_code = 'CTI_SRC20_82A') OR ( temp_pmsi000143_rss.date_sortie >= '20210301' AND temp_pmsi000143_rss.date_sortie < '20220301' AND w_listes_src.liste_code = 'CTI_SRC21_82A') OR ( temp_pmsi000143_rss.date_sortie >= '20220301' AND temp_pmsi000143_rss.date_sortie < '20230301' AND w_listes_src.liste_code = 'CTI_SRC22_82A') OR ( temp_pmsi000143_rss.date_sortie >= '20230301' AND temp_pmsi000143_rss.date_sortie < '20240301' AND w_listes_src.liste_code = 'CTI_SRC23_82A') OR ( temp_pmsi000143_rss.date_sortie >= '20240301' AND temp_pmsi000143_rss.date_sortie < '20250301' AND w_listes_src.liste_code = 'CTI_SRC24_82A') OR ( temp_pmsi000143_rss.date_sortie >= '20250301' AND w_listes_src.liste_code = 'CTI_SRC25_82A') ) GROUP BY 1,2,3,4; ----------------------- ** RAISE NOTICE '%' , 'Positionne un supplement REA si acte dans liste 1 annexe 7 et ((IGS2 >= 15 et age >= 18) ou (age < 18) et RUM avec autorisation ''01'''; UPDATE pmsi.p_rss_rum SET supplement_code = 'REA' FROM temp_pmsi000143_rss , w_rss_1_12 WHERE temp_pmsi000143_rss.oid = p_rss_rum.rss_id AND supplement_code = '' AND ((p_rss_rum.igs2 >= 15 AND temp_pmsi000143_rss.age >= 18) OR temp_pmsi000143_rss.age < 18) AND unite_medicale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE type_autorisation LIKE '01%') AND p_rss_rum.rss_id = w_rss_1_12.rss_id AND p_rss_rum.no_rum = w_rss_1_12.no_rum; ----------------------- ** RAISE NOTICE '%' , 'Positionne un supplement REA si acte dans liste 2 annexe 7 realise 3 fois et ((IGS2 >= 15 et age >= 18) ou (age < 18) et RUM avec autorisation ''01'''; UPDATE pmsi.p_rss_rum SET supplement_code = 'REA' FROM temp_pmsi000143_rss , w_rss_2_12 WHERE temp_pmsi000143_rss.oid = p_rss_rum.rss_id AND supplement_code = '' AND ((p_rss_rum.igs2 >= 15 AND temp_pmsi000143_rss.age >= 18) OR temp_pmsi000143_rss.age < 18) AND unite_medicale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE type_autorisation LIKE '01%') AND p_rss_rum.rss_id = w_rss_2_12.rss_id AND p_rss_rum.no_rum = w_rss_2_12.no_rum; ----------------------- ** RAISE NOTICE '%' , 'Positionne un flag SRC sur les RUMS où : . l''UM possède une autorisation SRC . . l''IGS >= 7 et DP/acte dans liste 1 Annexe 8 et age >= 18 OU . DP/acte dans liste 3 Annexe 8 et age < 18'; UPDATE pmsi.p_rss_rum SET supplement_code = 'SRC2' FROM temp_pmsi000143_rss WHERE 1=1 AND temp_pmsi000143_rss.oid = p_rss_rum.rss_id AND supplement_code = '' AND ( (temp_pmsi000143_rss.age < 40 AND p_rss_rum.igs2 >= 7) OR (temp_pmsi000143_rss.age BETWEEN 40 AND 59 AND p_rss_rum.igs2 >= 14) OR (temp_pmsi000143_rss.age BETWEEN 60 AND 69 AND p_rss_rum.igs2 >= 19) OR (temp_pmsi000143_rss.age BETWEEN 70 AND 74 AND p_rss_rum.igs2 >= 22) OR (temp_pmsi000143_rss.age BETWEEN 75 AND 79 AND p_rss_rum.igs2 >= 23) OR (temp_pmsi000143_rss.age >= 80 AND p_rss_rum.igs2 >= 25) ) AND unite_medicale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE (type_autorisation LIKE '03%'OR type_autorisation LIKE '14%')) AND p_rss_rum.rss_id::text || '|'::text || p_rss_rum.no_rum::text IN (SELECT rss_rum_id FROM w_rss_3_12); UPDATE pmsi.p_rss_rum SET supplement_code = 'SRC2' FROM temp_pmsi000143_rss WHERE 1=1 AND temp_pmsi000143_rss.oid = p_rss_rum.rss_id AND supplement_code = '' AND temp_pmsi000143_rss.age < 18 AND unite_medicale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE (type_autorisation LIKE '03%'OR type_autorisation LIKE '14%')) AND p_rss_rum.rss_id::text || '|'::text || p_rss_rum.no_rum::text IN (SELECT rss_rum_id FROM w_rss_3b_12); ----------------------- ** RAISE NOTICE '%' , 'Positionne un flag SRC sur les RUMS où : . l''UM possède une autorisation SRC . l''IGS >= 15'; UPDATE pmsi.p_rss_rum SET supplement_code = 'SRC3' FROM temp_pmsi000143_rss WHERE temp_pmsi000143_rss.oid = p_rss_rum.rss_id AND supplement_code = '' AND ( (temp_pmsi000143_rss.age < 40 AND p_rss_rum.igs2 >= 15) OR (temp_pmsi000143_rss.age BETWEEN 40 AND 59 AND p_rss_rum.igs2 >= 22) OR (temp_pmsi000143_rss.age BETWEEN 60 AND 69 AND p_rss_rum.igs2 >= 27) OR (temp_pmsi000143_rss.age BETWEEN 70 AND 74 AND p_rss_rum.igs2 >= 30) OR (temp_pmsi000143_rss.age BETWEEN 75 AND 79 AND p_rss_rum.igs2 >= 31) OR (temp_pmsi000143_rss.age >= 80 AND p_rss_rum.igs2 >= 33) ) AND unite_medicale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE (type_autorisation LIKE '03%'OR type_autorisation LIKE '14%')); ----------------------- ** RAISE NOTICE '%' , 'Positionne un flag SRC sur les RUMS où : . l''UM possède une autorisation SRC . un des actes apparaît dans la liste 2 de l''annexe 8'; UPDATE pmsi.p_rss_rum SET supplement_code = 'SRC4' FROM temp_pmsi000143_rss, w_rss_4_12 WHERE temp_pmsi000143_rss.oid = p_rss_rum.rss_id AND supplement_code = '' AND unite_medicale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE (type_autorisation LIKE '03%'OR type_autorisation LIKE '14%')) AND p_rss_rum.rss_id = w_rss_4_12.rss_id AND (p_rss_rum.date_entree = w_rss_4_12.date_sortie OR p_rss_rum.no_rum = w_rss_4_12.no_rum); ----------------------- ** RAISE NOTICE 'Positionne un flag SRC sur les RUMS où : . l''UM possède une autorisation SRC . le RUM précédent a été flagué avec un supplément ''REA'' . Le séjour a une provenance ''R'' (Transfert depuis Réanimation) associé à un mode d''entrée 0 (Transfert inter-établissement) ou 7 (Transfert vers un autre établissement)'; UPDATE pmsi.p_rss_rum SET supplement_code = 'SRC5' FROM temp_pmsi000143_rss, (SELECT rss_id, no_rum FROM pmsi.p_rss_rum WHERE supplement_code LIKE 'REA%' ) subview WHERE temp_pmsi000143_rss.oid = p_rss_rum.rss_id AND supplement_code = '' AND unite_medicale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE type_autorisation LIKE '03%'OR type_autorisation LIKE '14%') AND p_rss_rum.rss_id = subview.rss_id AND p_rss_rum.no_rum = subview.no_rum + 1; UPDATE pmsi.p_rss_rum SET supplement_code = 'SRC5' FROM temp_pmsi000143_rss WHERE temp_pmsi000143_rss.oid = p_rss_rum.rss_id AND supplement_code = '' AND unite_medicale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE type_autorisation LIKE '03%'OR type_autorisation LIKE '14%') AND p_rss_rum.no_rum = 1 AND p_rss_rum.provenance = 'R' AND (p_rss_rum.mode_entree = '0' OR p_rss_rum.mode_entree = '7'); ----------------------- ** RAISE NOTICE 'Remplit la table avec tous les RUMs précédemment marqués comme facturables (SRCS, SRC3, SRC4,...)'; INSERT INTO temp_pmsi000143_rsf_detail( date_debut, date_fin, regle, nombre, prix_unitaire, base_remboursement, coefficient_mco, rss_id) SELECT p_rss_rum.date_entree, p_rss_rum.date_sortie, SUBSTR(supplement_code, 4 , 1), CASE WHEN p_rss_rum.date_sortie > p_rss_rum.date_entree THEN CASE WHEN p_rss_rum.mode_sortie <> '9' THEN p_rss_rum.date_sortie - p_rss_rum.date_entree ELSE p_rss_rum.date_sortie - p_rss_rum.date_entree + 1 END ELSE 1 END, CASE WHEN t_finess.type_etablissement = '1' THEN CASE WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_prive_1 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_prive_1 THEN t_prestations.tarif_prive_1 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_prive_2 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_prive_2 THEN t_prestations.tarif_prive_2 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_prive_3 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_prive_3 THEN t_prestations.tarif_prive_3 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_prive_4 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_prive_4 THEN t_prestations.tarif_prive_4 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_prive_5 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_prive_5 THEN t_prestations.tarif_prive_5 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_prive_6 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_prive_6 THEN t_prestations.tarif_prive_6 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_prive_7 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_prive_7 THEN t_prestations.tarif_prive_7 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_prive_8 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_prive_8 THEN t_prestations.tarif_prive_8 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_prive_9 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_prive_9 THEN t_prestations.tarif_prive_9 ELSE 0::numeric END ELSE CASE WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_public_1 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_public_1 THEN t_prestations.tarif_public_1 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_public_2 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_public_2 THEN t_prestations.tarif_public_2 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_public_3 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_public_3 THEN t_prestations.tarif_public_3 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_public_4 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_public_4 THEN t_prestations.tarif_public_4 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_public_5 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_public_5 THEN t_prestations.tarif_public_5 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_public_6 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_public_6 THEN t_prestations.tarif_public_6 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_public_7 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_public_7 THEN t_prestations.tarif_public_7 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_public_8 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_public_8 THEN t_prestations.tarif_public_8 WHEN temp_pmsi000143_rss.date_sortie >= t_prestations.date_debut_public_9 AND temp_pmsi000143_rss.date_sortie <= t_prestations.date_fin_public_9 THEN t_prestations.tarif_public_9 ELSE 0::numeric END END, 0, 1, temp_pmsi000143_rss.oid FROM pmsi.p_rss_rum JOIN temp_pmsi000143_rss ON temp_pmsi000143_rss.oid = p_rss_rum.rss_id JOIN base.t_finess ON t_finess.code = temp_pmsi000143_rss.finess ,pmsi.t_prestations WHERE 1=1 AND supplement_code <> '' AND supplement_code LIKE 'SRC%' AND t_prestations.code = 'SRC'; ----------------------- ** RAISE NOTICE ' '; UPDATE temp_pmsi000143_rsf_detail SET nombre = temp_pmsi000143_rsf_detail.nombre - 1 FROM temp_pmsi000143_rss, temp_pmsi000143_rsf_detail temp_pmsi000143_rsf_detail2 WHERE temp_pmsi000143_rsf_detail.rss_id = temp_pmsi000143_rss.oid AND temp_pmsi000143_rsf_detail.date_debut <> temp_pmsi000143_rsf_detail.date_fin AND temp_pmsi000143_rsf_detail2.rss_id = temp_pmsi000143_rss.oid AND temp_pmsi000143_rsf_detail2.date_debut = temp_pmsi000143_rsf_detail.date_debut AND temp_pmsi000143_rsf_detail2.date_fin = temp_pmsi000143_rsf_detail2.date_debut; ----------------------- ** RAISE NOTICE ' '; UPDATE temp_pmsi000143_rsf_detail SET base_remboursement = round(coefficient_mco_calcul * prix_unitaire * nombre, 2) FROM pmsi.t_prestations, temp_pmsi000143_rss JOIN base.v_coefficient_mco ON temp_pmsi000143_rss.finess = v_coefficient_mco.finess AND temp_pmsi000143_rss.date_sortie >= v_coefficient_mco.date_debut AND temp_pmsi000143_rss.date_sortie <= v_coefficient_mco.date_fin WHERE temp_pmsi000143_rsf_detail.prestation_id = t_prestations.oid AND temp_pmsi000143_rsf_detail.rss_id = temp_pmsi000143_rss.oid; ----------------------- ** RAISE NOTICE 'Ressence tous les SRC facturables à partir des règles calculées précédemment'; UPDATE temp_pmsi000143_rss SET src_facturable_nb_rss = nb_rss, src_facturable_nb_prestations = nb_prestations, src_facturable_base_remboursement = base_remboursement, src_facturable_regle = regle FROM (SELECT rss_id, 1 as nb_rss, SUM(nombre) as nb_prestations, SUM(base_remboursement) as base_remboursement, MAX(regle) as regle FROM temp_pmsi000143_rsf_detail GROUP BY rss_id) subview WHERE subview.rss_id = temp_pmsi000143_rss.oid; ----------------------- ** RAISE NOTICE ' '; UPDATE temp_pmsi000143_rss SET src_facturable_regle_justificatif = 'Passé en SRC non facturable ('::text || w_rss_3_12.regle_justificatif::text || ' éligible)'::text FROM w_rss_3_12 WHERE w_rss_3_12.rss_id = temp_pmsi000143_rss.oid AND src_facturee_nb_rss = 0 AND src_facturable_nb_rss = 0 AND src_passage_nb_rss > 0; UPDATE temp_pmsi000143_rss SET src_facturable_regle_justificatif = 'Passé en SRC non facturable ('::text || w_rss_3b_12.regle_justificatif::text || ' éligible)'::text FROM w_rss_3b_12 WHERE w_rss_3b_12.rss_id = temp_pmsi000143_rss.oid AND src_facturee_nb_rss = 0 AND src_facturable_nb_rss = 0 AND src_passage_nb_rss > 0; UPDATE temp_pmsi000143_rss SET src_facturable_regle_justificatif = 'Passé en SRC non facturable ('::text || w_rss_4_12.regle_justificatif::text || ' éligible)'::text FROM w_rss_4_12 WHERE w_rss_4_12.rss_id = temp_pmsi000143_rss.oid AND src_facturee_nb_rss = 0 AND src_facturable_nb_rss = 0 AND src_passage_nb_rss > 0; UPDATE temp_pmsi000143_rss SET src_facturable_regle_justificatif = 'Passé en SRC non facturable' WHERE src_facturee_nb_rss = 0 AND src_facturable_nb_rss = 0 AND src_passage_nb_rss > 0 AND src_facturable_regle_justificatif = ''; UPDATE temp_pmsi000143_rss SET src_facturable_regle_justificatif = 'Règle '::text || src_facturable_regle::text WHERE src_facturable_regle IN ('1', '3', '5'); UPDATE temp_pmsi000143_rss SET src_facturable_regle_justificatif = 'Règle '::text || src_facturable_regle::text || ' '::text || w_rss_3_12.regle_justificatif::text FROM w_rss_3_12 WHERE w_rss_3_12.rss_id = temp_pmsi000143_rss.oid AND src_facturable_regle = '2'; UPDATE temp_pmsi000143_rss SET src_facturable_regle_justificatif = 'Règle '::text || src_facturable_regle::text || ' '::text || w_rss_3b_12.regle_justificatif::text FROM w_rss_3b_12 WHERE w_rss_3b_12.rss_id = temp_pmsi000143_rss.oid AND src_facturable_regle = '2'; UPDATE temp_pmsi000143_rss SET src_facturable_regle_justificatif = 'Règle '::text || src_facturable_regle::text || ' '::text || w_rss_4_12.regle_justificatif::text FROM w_rss_4_12 WHERE w_rss_4_12.rss_id = temp_pmsi000143_rss.oid AND src_facturable_regle = '4'; ----------------------- ** RAISE NOTICE ' '; UPDATE temp_pmsi000143_rss SET src_facturable_sans_src_ni_igs_nb_rss = 1, src_facturable_regle_justificatif = 'Vérifier SRC ('::text || w_rss_3_12.regle_justificatif::text || ' éligible)'::text FROM w_rss_3_12 WHERE w_rss_3_12.rss_id = temp_pmsi000143_rss.oid AND src_passage_nb_rss = 0 AND rea_passage_nb_rss = 0; UPDATE temp_pmsi000143_rss SET src_facturable_sans_src_ni_igs_nb_rss = 1, src_facturable_regle_justificatif = 'Vérifier SRC ('::text || w_rss_4_12.regle_justificatif::text || ' éligible)'::text FROM w_rss_4_12 WHERE w_rss_4_12.rss_id = temp_pmsi000143_rss.oid AND src_passage_nb_rss = 0 AND rea_passage_nb_rss = 0; DELETE FROM temp_pmsi000143_rss WHERE src_facturee_nb_rss = 0 AND src_facturable_nb_rss = 0 AND src_passage_nb_rss = 0 AND src_facturable_sans_src_ni_igs_nb_rss = 0; ----------------------- ** RAISE NOTICE 'Remplissage table p_rss_src'; INSERT INTO pmsi.p_rss_src( finess, no_rss, oid, date_sortie, age, src_facturee_nb_rss, src_facturee_nb_prestations, src_facturee_base_remboursement, src_facturable_nb_rss, src_facturable_nb_prestations, src_facturable_base_remboursement, src_facturable_regle, src_facturable_regle_justificatif, src_passage_nb_rss, src_passage_duree_sejour, src_passage_base_remboursement, src_facturable_sans_src_ni_igs_nb_rss, rea_passage_nb_rss, igs2_rum) SELECT * FROM temp_pmsi000143_rss ; RETURN 'OK'; END;