return: text lang: plpgsql src: | DECLARE BEGIN DROP TABLE IF EXISTS w_indicateurs; CREATE TEMP TABLE w_indicateurs AS SELECT 'CTI_OVA_T1V1SV_NBSJTRANS'::text AS indcod, 'T1V1SV'::text AS tabcod, 1::numeric AS tabseq, 'D'::text AS lintyp, '%transmis%'::text AS lintxt, ''::text AS linoxt, 2::numeric AS valcol UNION SELECT 'CTI_OVA_T1V1SV_MTBR_TRANS', 'T1V1SV', 1, 'D', '%transmis%', '', 3 UNION SELECT 'CTI_OVA_T1V1SV_NBSJNTRAIT_AMO'::text AS indcod, 'T1V1SV'::text AS tabcod, 1::numeric AS tabseq, 'D'::text AS lintyp, '%CM 90%|%inter-établissement%|%GHS 9999%'::text AS lintxt, ''::text AS linoxt, 2::numeric AS valcol UNION SELECT 'CTI_OVA_T1V1SV_MTBR_NTRAIT_AMO'::text AS indcod, 'T1V1SV'::text AS tabcod, 1::numeric AS tabseq, 'D'::text AS lintyp, '%CM 90%|%inter-établissement%|%GHS 9999%'::text AS lintxt, ''::text AS linoxt, 3::numeric AS valcol UNION SELECT 'CTI_OVA_T1S1SV_NBSJNVALO_AMO'::text AS indcod, 'T1V1SV'::text AS tabcod, 1::numeric AS tabseq, 'D'::text AS lintyp, '%non facturable%'::text AS lintxt, ''::text AS linoxt, 2::numeric AS valcol UNION SELECT 'CTI_OVA_T1S1SV_MTBR_NVALO_AMO'::text AS indcod, 'T1V1SV'::text AS tabcod, 1::numeric AS tabseq, 'D'::text AS lintyp, '%non facturable%'::text AS lintxt, ''::text AS linoxt, 3::numeric AS valcol UNION SELECT 'CTI_OVA_T1V1SV_NBSJVALO_AMO'::text AS indcod, 'T1V1SV'::text AS tabcod, 1::numeric AS tabseq, 'D'::text AS lintyp, '%séjours valorisés%'::text AS lintxt, ''::text AS linoxt, 2::numeric AS valcol UNION SELECT 'CTI_OVA_T1S1SV_MTBR_VALO_AMO'::text AS indcod, 'T1V1SV'::text AS tabcod, 1::numeric AS tabseq, 'D'::text AS lintyp, '%séjours valorisés%'::text AS lintxt, ''::text AS linoxt, 3::numeric AS valcol UNION SELECT 'CTI_OVA_T1V1RAV_MTBR_VALO_AMO_GHS', 'T1V1RAV', 1, 'D', '%Valorisation des GHS%', '', 4 UNION SELECT 'CTI_OVA_T1V1RAV_MTRB_VALO_AMO_GHS', 'T1V1RAV', 1, 'D', '%Valorisation des GHS%', '', 6 UNION SELECT 'CTI_OVA_T1V1RAV_MTBR_VALO_AMO_EXB', 'T1V1RAV', 1, 'D', '%extrême bas%|%rehosp dans même GHM%', '', 4 UNION SELECT 'CTI_OVA_T1V1RAV_MTRB_VALO_AMO_EXB', 'T1V1RAV', 1, 'D', '%extrême bas%|%rehosp dans même GHM%', '', 6 UNION SELECT 'CTI_OVA_T1V1RAV_MTBR_VALO_AMO_EXH', 'T1V1RAV', 1, 'D', '%extrême haut%', '', 4 UNION SELECT 'CTI_OVA_T1V1RAV_MTRB_VALO_AMO_EXH', 'T1V1RAV', 1, 'D', '%extrême haut%', '', 6 UNION SELECT 'CTI_OVA_T1V1RAV_MTBR_VALO_AMO_SUP', 'T1V1RAV', 1, 'D', '', '%extrême bas%|%rehosp dans même GHM%|%extrême haut%|%Valorisation des GHS%|%Total valorisation%', 4 UNION SELECT 'CTI_OVA_T1V1RAV_MTRB_VALO_AMO_SUP', 'T1V1RAV', 1, 'D', '', '%extrême bas%|%rehosp dans même GHM%|%extrême haut%|%Valorisation des GHS%|%Total valorisation%', 6 UNION SELECT 'CTI_OVA_T1V1RAV_MTBR_VALO_AMO_GHSSUP', 'T1V1RAV', 1, 'D', '%Total valorisation%', '', 4 UNION SELECT 'CTI_OVA_T1V1RAV_MTRB_VALO_AMO_GHSSUP', 'T1V1RAV', 1, 'D', '%Total valorisation%', '', 6 UNION SELECT 'CTI_OVA_T1V2VMED_MTBR_VALO_AMO_UCDEMI', 'T1V2VMED', 2, 'F', '', '', 8 UNION SELECT 'CTI_OVA_T1V2VMED_MTRB_VALO_AMO_UCDEMI', 'T1V2VMED', 2, 'F', '', '', 8 UNION SELECT 'CTI_OVA_T1V3VDMI_MTBR_VALO_AMO_DMIETI', 'T1V3VDMI', 2, 'F', '', '', 6 UNION SELECT 'CTI_OVA_T1V3VDMI_MTRB_VALO_AMO_DMIETI', 'T1V3VDMI', 2, 'F', '', '', 6 UNION SELECT 'CTI_OVA_T1V4RAME_MTRB_VALO_AME_GHS', 'T1V4RAME', 4, 'D', '%Valorisation des GHS%', '', 2 UNION SELECT 'CTI_OVA_T1V4RAME_MTBR_VALO_AME_EXB', 'T1V4RAME', 4, 'D', '%extrême bas%', '', 2 UNION SELECT 'CTI_OVA_T1V4RAME_MTRB_VALO_AME_EXB', 'T1V4RAME', 4, 'D', '%extrême bas%', '', 2 UNION SELECT 'CTI_OVA_T1V4RAME_MTBR_VALO_AME_EXH', 'T1V4RAME', 4, 'D', '%extrême haut%', '', 2 UNION SELECT 'CTI_OVA_T1V4RAME_MTRB_VALO_AME_EXH', 'T1V4RAME', 4, 'D', '%extrême haut%', '', 2 UNION SELECT 'CTI_OVA_T1V4RAME_MTBR_VALO_AME_SUP', 'T1V4RAME', 4, 'D', '', '%extrême bas%|%extrême haut%|%Valorisation des GHS%|%Total valorisation%', 2 UNION SELECT 'CTI_OVA_T1V4RAME_MTRB_VALO_AME_SUP', 'T1V4RAME', 4, 'D', '', '%extrême bas%|%extrême haut%|%Valorisation des GHS%|%Total valorisation%', 2 UNION SELECT 'CTI_OVA_T1V4RAME_MTRB_VALO_AME_GHSSUP', 'T1V4RAME', 4, 'D', '%Total valorisation%', '', 2 UNION SELECT 'CTI_OVA_T1V4MDAME_MTBR_VALO_AME_DMIETI', 'T1V4MDAME', 2, 'F', '', '', 6 UNION SELECT 'CTI_OVA_T1V4MDAME_MTRB_VALO_AME_DMIETI', 'T1V4MDAME', 2, 'F', '', '', 6 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_CCAM', 'T2VFIDES', 2, 'D', 'CCAM', '', 4 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_CCAM', 'T2VFIDES', 2, 'D', 'CCAM', '', 5 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_NGAP', 'T2VFIDES', 2, 'D', 'NGAP', '', 4 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_NGAP', 'T2VFIDES', 2, 'D', 'NGAP', '', 5 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_FFM', 'T2VFIDES', 2, 'D', 'FFM', '', 4 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_FFM', 'T2VFIDES', 2, 'D', 'FFM', '', 5 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_SE', 'T2VFIDES', 2, 'D', 'SE', '', 4 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_SE', 'T2VFIDES', 2, 'D', 'SE', '', 5 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_AP2', 'T2VFIDES', 2, 'D', 'AP2', '', 4 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_AP2', 'T2VFIDES', 2, 'D', 'AP2', '', 5 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_MOP', 'T2VFIDES', 2, 'D', 'MOP', '', 4 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_MOP', 'T2VFIDES', 2, 'D', 'MOP', '', 5 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_FPI', 'T2VFIDES', 2, 'D', 'FPI', '', 4 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO_FPI', 'T2VFIDES', 2, 'D', 'FPI', '', 5 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO', 'T2VFIDES', 2, 'F', '', '', 4 UNION SELECT 'CTI_OVA_T2VFIDES_MTRB_VALO_AMO', 'T2VFIDES', 2, 'F', '', '', 5 ; DROP TABLE IF EXISTS w_indicateurs_ovalide; CREATE TEMP TABLE w_indicateurs_ovalide AS SELECT t_indicateurs.oid AS indicateur_id, p_calendrier_mois.date_debut AS date_reference, SUM(base.Cti_to_number(data_mat2a[valcol])) AS value FROM pmsi.p_imports JOIN (SELECT annee_rss, (MAX(ARRAY[nb,import_id]))[2] AS import_id FROM (SELECT date_part('year',date_sortie) AS annee_rss, import_id, count(*) AS nb FROM pmsi.p_rss WHERE import_id > 0 AND date_sortie >= '20180101' AND etat = '' GROUP BY 1,2 ) subview GROUP BY 1 ) subview ON p_imports.oid = import_id JOIN pmsi.p_mat2a_import ON p_imports.mat2a_import_id = p_mat2a_import.oid JOIN (SELECT mat2a_annee AS mat2a_annee_last, MAX(oid) AS import_id_last FROM pmsi.p_mat2a_import GROUP BY 1) p_mat2a_import_last ON p_mat2a_import.oid = p_mat2a_import_last.import_id_last JOIN pmsi.p_mat2a_data ON p_mat2a_data.mat2a_import_id = p_mat2a_import.oid JOIN w_indicateurs ON 1=1 JOIN pmsi.t_indicateurs ON t_indicateurs.code = indcod JOIN base.p_calendrier_mois ON (mat2a_annee * 100 + mat2a_mois) = p_calendrier_mois.mois WHERE mat2a_annee >= 2018 AND file_code = tabcod AND table_sequence = tabseq AND line_type = lintyp AND ( lintxt = '' OR data_mat2a[1] ILIKE ANY(string_to_array(lintxt,'|')) ) AND ( linoxt = '' OR data_mat2a[1] NOT ILIKE ALL(string_to_array(linoxt,'|')) ) GROUP BY 1,2 ORDER BY 1,2,3 ; DELETE FROM pmsi.p_indicateurs_cumules WHERE periode_type IN ('M_MCOOVALIDE'::text) ; INSERT INTO pmsi.p_indicateurs_cumules( date_reference, finess_id, pole_id, indicateur_id, periode_type, value, value_cum, value_cum12, value_exercice, value_trimestre, value_cum4t, indicateur_condition_id ) SELECT date_reference, 0 AS finess_id, 0 AS pole_id, indicateur_id, 'M_MCOOVALIDE'::text AS periode_type, value, value AS value_cum, 0 AS value_cum12, 0 AS value_exercice, 0 AS value_trimestre, 0 AS value_cum4t, NULL AS indicateur_condition_id FROM w_indicateurs_ovalide WHERE date_reference >= '20160101' AND value <> 0 ; RETURN 'OK'; END;