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.
 
 

205 lines
8.3 KiB

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;