pour déploiement auto v2 via gitlab
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

577 lines
19 KiB

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;