return: text
lang: plpgsql
parameters:
  p0:
    type: integer
    name: i_annee
  p1:
    type: boolean
    name: i_do_analyse
    default: 'true'
src: |
  DECLARE
    _lignes_supprimees int;
    _lignes_supprimees_total int;
  BEGIN
    -- Supprime tous les rss antèrieur à une année donnée.
    -- Supprime d'abord de la table p_rss pour ensuite supprimer tous les séjours qui sont en lien avec celle-ci
    -- Penser à faire un VACUUM FULL des tables ensuite
  
    _lignes_supprimees := 0;
    _lignes_supprimees_total := 0;
  
    IF i_annee < 2000 OR i_annee > date_part('year', CURRENT_DATE) - 1 THEN 
        RETURN 'La année doit se trouver entre le 2000 et ' || date_part('year', CURRENT_DATE) - 1;
    END IF;
  
    RAISE NOTICE 'Suppression des séjours < %', i_annee;
  
    RAISE NOTICE '%','Suppression dans la table pmsi.p_rss';
    DELETE
    FROM pmsi.p_rss
    WHERE mois_sortie < CONCAT(i_annee,00)
    ;
  
    GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT;
    RAISE NOTICE '% lignes suprimÃ©e(s)', _lignes_supprimees;
    _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees;
  
    ANALYSE pmsi.p_rss
    ;
  
    RAISE NOTICE '%','Suppression dans la table pmsi.p_chiffrier';
    DELETE
    FROM pmsi.p_chiffrier
    WHERE mois < CONCAT(i_annee,00) -- eg. 202100
    ;
  
    GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT;
    RAISE NOTICE '% lignes suprimÃ©e(s)', _lignes_supprimees;
    _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees;
  
    ANALYSE pmsi.p_chiffrier
    ;
  
    RAISE NOTICE '%','Suppression dans la table pmsi.p_ventilation_um';
    DELETE
    FROM pmsi.p_ventilation_um
    WHERE annee < i_annee
    ;
  
    GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT;
    RAISE NOTICE '% lignes suprimÃ©e(s)', _lignes_supprimees;
    _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees;
  
    ANALYSE pmsi.p_ventilation_um
    ;
  
    RETURN pmsi.cti_nettoyer_sejours(i_do_analyse, _lignes_supprimees_total);
  
  
  END;