return: text lang: plpgsql parameters: p0: type: boolean name: i_do_analyse default: "true" p1: type: integer name: _lignes_supprimees_total default: "0" src: | DECLARE _message text; _lignes_supprimees int; BEGIN -- Supprime tous les rss qui ne sont plus dans la table p_rss. -- Pensez à rajouter les nouvelles tables qui sont liées à rss_id RAISE NOTICE 'Récupération des oids des séjours présent dans p_rss'; DROP TABLE IF EXISTS w_rss_id_check; CREATE TEMP TABLE w_rss_id_check AS ( SELECT oid FROM pmsi.p_rss ); ANALYSE w_rss_id_check; RAISE NOTICE 'Suppression des séjours qui ne sont plus présent dans p_rss'; _lignes_supprimees := 0; RAISE NOTICE '%','Suppression dans la table pmsi.p_imports_rss_mednom'; DELETE FROM pmsi.p_imports_rss_mednom WHERE NOT EXISTS ( SELECT 1 FROM pmsi.p_rss WHERE p_rss.medecin_rss_id = p_imports_rss_mednom.medecin_rss_id AND p_rss.no_rss = p_imports_rss_mednom.no_rss ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_imports_rss_actmed'; DELETE FROM pmsi.p_imports_rss_actmed WHERE NOT EXISTS ( SELECT 1 FROM pmsi.p_rss WHERE p_rss.no_rss = p_imports_rss_actmed.no_rss AND date_part('year',p_rss.date_sortie) = p_imports_rss_actmed.annee_sortie ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_identites'; DELETE FROM pmsi.p_identites WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_identites.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_ctl_mt2a'; DELETE FROM pmsi.p_ctl_mt2a WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_ctl_mt2a.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_etude_impact_cma'; DELETE FROM pmsi.p_etude_impact_cma WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_etude_impact_cma.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rsa'; DELETE FROM pmsi.p_rsa WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rsa.rss_id AND p_rsa.rss_id <> 0 ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rsa_rdth'; DELETE FROM pmsi.p_rsa_rdth WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rsa_rdth.rss_id AND p_rsa_rdth.rss_id <> 0 ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rsf_detail'; DELETE FROM pmsi.p_rsf_detail WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rsf_detail.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rsf_detail_h'; DELETE FROM pmsi.p_rsf_detail_h WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rsf_detail_h.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rsf_detail_non_valorise'; DELETE FROM pmsi.p_rsf_detail_non_valorise WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rsf_detail_non_valorise.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rsf_total'; DELETE FROM pmsi.p_rsf_total WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rsf_total.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_actes'; DELETE FROM pmsi.p_rss_actes WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_actes.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_cancero'; DELETE FROM pmsi.p_rss_cancero WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_cancero.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_cardio'; DELETE FROM pmsi.p_rss_cardio WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_cardio.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_diagnostics'; DELETE FROM pmsi.p_rss_diagnostics WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_diagnostics.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_etat'; DELETE FROM pmsi.p_rss_etat WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_etat.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_gm'; DELETE FROM pmsi.p_rss_gm WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_gm.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_ipa'; DELETE FROM pmsi.p_rss_ipa WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_ipa.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_leg'; DELETE FROM pmsi.p_rss_leg WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_leg.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_lpp'; DELETE FROM pmsi.p_rss_lpp WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_lpp.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_maternite'; DELETE FROM pmsi.p_rss_maternite WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_maternite.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_parametres_personnalises'; DELETE FROM pmsi.p_rss_parametres_personnalises WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_parametres_personnalises.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_rea'; DELETE FROM pmsi.p_rss_rea WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_rea.oid ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_rum'; DELETE FROM pmsi.p_rss_rum WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_rum.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_sae'; DELETE FROM pmsi.p_rss_sae WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_sae.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_src'; DELETE FROM pmsi.p_rss_src WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_src.oid ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_transferts'; DELETE FROM pmsi.p_rss_transferts WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_transferts.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss_ucd'; DELETE FROM pmsi.p_rss_ucd WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_rss_ucd.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_vidhosp'; DELETE FROM pmsi.p_vidhosp WHERE rss_id IN ( SELECT rss_id FROM pmsi.p_vidhosp LEFT JOIN w_rss_id_check ON w_rss_id_check.oid = rss_id WHERE w_rss_id_check.oid IS NULL AND rss_id <> 0 ); GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_vidhosp_crc'; DELETE FROM pmsi.p_vidhosp_crc WHERE rss_id IN ( SELECT rss_id FROM pmsi.p_vidhosp_crc LEFT JOIN w_rss_id_check ON w_rss_id_check.oid = rss_id WHERE w_rss_id_check.oid IS NULL AND rss_id <> 0 ); GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_vidhosp_dmt'; DELETE FROM pmsi.p_vidhosp_dmt WHERE rss_id IN ( SELECT rss_id FROM pmsi.p_vidhosp_dmt LEFT JOIN w_rss_id_check ON w_rss_id_check.oid = rss_id WHERE w_rss_id_check.oid IS NULL AND rss_id <> 0 ); GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_vidhosp_dmt_crc'; DELETE FROM pmsi.p_vidhosp_dmt_crc WHERE rss_id IN ( SELECT rss_id FROM pmsi.p_vidhosp_dmt_crc LEFT JOIN w_rss_id_check ON w_rss_id_check.oid = rss_id WHERE w_rss_id_check.oid IS NULL AND rss_id <> 0 ); GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; RAISE NOTICE '%','Suppression dans la table pmsi.p_impact_diagnostics'; DELETE FROM pmsi.p_impact_diagnostics WHERE NOT EXISTS ( SELECT 1 FROM w_rss_id_check WHERE w_rss_id_check.oid = p_impact_diagnostics.rss_id ) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; -- Optimisation IF i_do_analyse THEN RAISE NOTICE '%','Analyse de toutes les tables concernées par la suppresion.'; ANALYSE pmsi.p_imports_rss_mednom ; ANALYSE pmsi.p_imports_rss_actmed ; ANALYSE pmsi.p_identites ; ANALYSE pmsi.p_ctl_mt2a ; ANALYSE pmsi.p_etude_impact_cma ; ANALYSE pmsi.p_rsa ; ANALYSE pmsi.p_rsa_rdth ; ANALYSE pmsi.p_rsf_detail ; ANALYSE pmsi.p_rsf_detail_h ; ANALYSE pmsi.p_rsf_detail_non_valorise ; ANALYSE pmsi.p_rsf_total ; ANALYSE pmsi.p_rss_actes ; ANALYSE pmsi.p_rss_cancero ; ANALYSE pmsi.p_rss_diagnostics ; ANALYSE pmsi.p_rss_etat ; ANALYSE pmsi.p_rss_gm ; ANALYSE pmsi.p_rss_ipa ; ANALYSE pmsi.p_rss_leg ; ANALYSE pmsi.p_rss_lpp ; ANALYSE pmsi.p_rss_maternite ; ANALYSE pmsi.p_rss_parametres_personnalises ; ANALYSE pmsi.p_rss_rea ; ANALYSE pmsi.p_rss_rum ; ANALYSE pmsi.p_rss_sae ; ANALYSE pmsi.p_rss_src ; ANALYSE pmsi.p_rss_transferts ; ANALYSE pmsi.p_rss_ucd ; ANALYSE pmsi.p_vidhosp ; ANALYSE pmsi.p_vidhosp_crc ; ANALYSE pmsi.p_vidhosp_dmt ; ANALYSE pmsi.p_vidhosp_dmt_crc ; ANALYSE pmsi.p_impact_diagnostics ; ANALYSE pmsi.p_consolidation_translation ; END IF; RETURN _message::text; END;