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;