-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;

CREATE TEMP TABLE w_dbsetup AS
    SELECT 
    	CASE WHEN t_rapports.oid = 0 THEN t_rapports.oid ELSE 1 END AS oid,
    	t_rapports.code, 
    	t_rapports.texte, 
    	t_rapports.is_cti, 
    	t_rapports.is_essentiel, 
    	t_rapports.essentiel_date_level, 
    	t_rapports.colonnes_essentiel, 
    	t_rapports.entete, 
    	t_rapports.entete_2, 
    	CASE WHEN t_rapports.group_id = 0 THEN t_rapports.group_id ELSE 1 END AS group_id,
    	t_rapports.is_hide, 
    	array_to_string(
    		ARRAY[
    		COALESCE(t_indicateur_condition_1.external_code::text,''),
    		COALESCE(t_indicateur_condition_2.external_code::text,''),
    		COALESCE(t_indicateur_condition_3.external_code::text,''),
    		COALESCE(t_indicateur_condition_4.external_code::text,'')
    		]
    		,'||') AS rapport_indicateur_condition_code, 
    	t_rapports.label, 
    	array_to_string(serie_entete,'||') AS serie_entete, 
    	t_rapports.colonnes_essentiel_style
    FROM pmsi.t_rapports 
    LEFT JOIN pmsi.t_indicateur_condition t_indicateur_condition_1 ON t_rapports.rapport_indicateur_condition_id[1] = t_indicateur_condition_1.oid
    LEFT JOIN pmsi.t_indicateur_condition t_indicateur_condition_2 ON t_rapports.rapport_indicateur_condition_id[2] = t_indicateur_condition_2.oid
    LEFT JOIN pmsi.t_indicateur_condition t_indicateur_condition_3 ON t_rapports.rapport_indicateur_condition_id[3] = t_indicateur_condition_3.oid
    LEFT JOIN pmsi.t_indicateur_condition t_indicateur_condition_4 ON t_rapports.rapport_indicateur_condition_id[4] = t_indicateur_condition_4.oid
    WHERE (t_rapports.is_cti = '1' OR t_rapports.code LIKE 'CTI_%') AND
        t_rapports.code <> 'CTI_PORTFO' AND
    	t_rapports.code <> 'CTI_ESS_4'
    ORDER BY t_rapports.code
     LIMIT 0
;

-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
    oid,
    code,
    texte,
    is_cti,
    is_essentiel,
    essentiel_date_level,
    colonnes_essentiel,
    entete,
    entete_2,
    group_id,
    is_hide,
    rapport_indicateur_condition_code,
    label,
    serie_entete,
    colonnes_essentiel_style
)
VALUES
(1, 'CTI_ACTHS', 'Synthèse d''activité du champ Hors PMSI', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_ACTL', 'Suivi activité en ligne (< 2010)', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_ACTL2', 'Suivi activité en ligne', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_ACTMED', 'Analyse activité Médecin', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_ACTSEJ', 'Synthèse d''activité du champ PMSI', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_ANAP7', 'Test Hospidiag', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_ESS_1', 'PMSI Essentiels 1', '1', '1', 'M', 'ENTETE_ETENDUE|VAP101|VAP100|ECP100|TDP100|VAM112|VAM100|ECM100|TDM100|', '', '', 1, '0', '||||||', 'Essentiels PMSI', '||||||||||||||||', 'VAP101:backgroundColor=0xdddddd|VAP100:backgroundColor=0xdddddd|VAP100:fontWeight=bold|ECP100:backgroundColor=0xdddddd|TDP100:backgroundColor=0xdddddd|VAM100:fontWeight=bold|'),
(1, 'CTI_ESS_10', 'PMSI Essentiels MAT2A Privé', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||||||||||||||||', ''),
(1, 'CTI_ESS_11', 'PMSI Essentiels MAT2A Public', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||||||||||||||||', ''),
(1, 'CTI_ESS_12', 'PMSI Essentiels OVALIDE Privé', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||', ''),
(1, 'CTI_ESS_13', 'PMSI Essentiels OVALIDE Public', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||', ''),
(1, 'CTI_ESS_2', 'PMSI Essentiels 2', '1', '1', 'M', 'ENTETE_ETENDUE|VAP101|VAP100|ECP100|TDP100|NRP100MCO|NUP100MCO|', '', '', 1, '0', '||||||', 'Positionnement', '||||||||||||||||', 'VAP100:fontWeight=bold|NRP100MCO:color=0x66cc|NUP100MCO:color=0x66cc|'),
(1, 'CTI_ESS_3', 'PMSI Essentiels 3', '1', '1', 'M', 'ENTETE_ETENDUE|VAP101|VAP100|TDP100|VAP201|VAP200|TDP200|NAP200MCO|NRP200MCO|NUP200MCO|', 'Nombre', '% Ambulatoire', 1, '0', '||||||', 'Gestes marqueurs', 'Nombre||% Ambulatoire||||||||||||||', 'VAP201:backgroundColor=0xdddddd|VAP200:backgroundColor=0xdddddd|TDP200:backgroundColor=0xdddddd|NAP200MCO:color=0xff|NRP200MCO:color=0xff|NUP200MCO:color=0xff|'),
(1, 'CTI_ESS_5', 'PMSI Essentiels 5', '1', '1', 'M', 'ENTETE_ETENDUE|VAP101|VAP100|ECP100|TDP100|', '', '', 1, '0', '||||||', 'Etudes', '||||||||||||||||', ''),
(1, 'CTI_ESS_6', 'PMSI Essentiel 6 / Reporting', '1', '1', 'M', '', '', '', 1, '0', '||||||', '', '||', ''),
(1, 'CTI_GHMMOY', 'GHS Moyen', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_GM', 'Indicateurs Gestes Marqueurs établissement', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_IPA', 'Indicateurs I.P.A établissements', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_OVA_ESS_01', 'OVALIDE 1.D: Description Public', '1', '1', 'M', 'ENTETE_ETENDUE|VAP101|VAP100|ECP100|TDP100|', '', '', 1, '1', '||||||', 'OVALIDE 1.D: Description Public', '||||||||||||||||', 'VAP101:backgroundColor=0xcccccc|VAP100:backgroundColor=0xcccccc|VAP100:fontWeight=bold|ECP100:backgroundColor=0xcccccc|TDP100:backgroundColor=0xcccccc|'),
(1, 'CTI_OVA_ESS_02', 'OVALIDE 1.D: Description Privé', '1', '1', 'M', 'ENTETE_ETENDUE|VAP101|VAP100|ECP100|TDP100|VAM112|VAM100|ECM100|TDM100|', '', '', 1, '0', '||||||', 'OVALIDE 1.D: Description Privé', '||||||||||||||||', 'VAP101:backgroundColor=0xcccccc|VAP100:backgroundColor=0xcccccc|VAP100:fontWeight=bold|ECP100:backgroundColor=0xcccccc|TDP100:backgroundColor=0xcccccc|VAM100:fontWeight=bold|'),
(1, 'CTI_OVA_ESS_11', 'OVALIDE 1.V : Valorisation Privé', '1', '1', 'M', '', '', '', 1, '0', '||||||', 'OVALIDE 1.V : Valorisation Privé', '||||||||||||||||', ''),
(1, 'CTI_OVA_ESS_12', 'OVALIDE 1.V : Valorisation Séjours Public', '1', '1', 'M', 'ENTETE_ETENDUE|VAP101|VAP100|ECP100|TDP100|VAP200|VAP300|NAP100MCO|NAP200MCO|NAP300MCO|', 'Séjours', 'Montant BR', 1, '1', '||||||', 'OVALIDE 1.V : Valorisation Séjours', 'Séjours||Montant BR||Remboursé||||||||||||', 'VAP101:backgroundColor=0xeeeeee|VAP100:backgroundColor=0xeeeeee|ECP100:backgroundColor=0xeeeeee|TDP100:backgroundColor=0xeeeeee|NAP100MCO:backgroundColor=0xeeeeee|NAP200MCO:backgroundColor=0xeeeeee|NAP300MCO:backgroundColor=0xeeeeee|'),
(1, 'CTI_OVA_ESS_13', 'OVALIDE 2.V : Valorisation Externes Public', '1', '1', 'M', 'ENTETE_ETENDUE|VAP100|VAP101|ECP100|TDP100|VAP200|VAP300|VAP400|VAP500|NAP300MCO|', 'Séjours', 'BR', 1, '1', '||||||', 'OVALIDE 2.V : Valorisation Externes', 'Séjours||BR||Remboursé||OVALIDE||FIDES||||||||', 'VAP100:backgroundColor=0xeeeeee|VAP101:backgroundColor=0xeeeeee|ECP100:backgroundColor=0xeeeeee|TDP100:backgroundColor=0xeeeeee|NAP300MCO:backgroundColor=0xeeeeee|'),
(1, 'CTI_OVA_ESS_14', 'OVALIDE 3.V : Valorisation Public ( Arrété de versement )', '1', '1', 'M', 'ENTETE_ETENDUE|VAP101|VAP100|ECP100|TDP100|', '', '', 1, '1', '||||||', 'Arrété de versement', '||||||||||||||||', ''),
(1, 'CTI_PF_AGG', 'CTI Portfolio', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||', ''),
(1, 'CTI_PORTFG', 'Portfolio groupe PMSI', '1', '1', 'M', '', '', '', 1, '0', '||||||', '', '||', ''),
(1, 'CTI_REC', 'Taux de recours (Nb séjours)', '1', '1', 'M', 'ENTETE_ETENDUE|VAP102|VAP101|VAP100|', '', '', 1, '1', '||||||', 'Taux de recours (Nb séjours)', '||||||||||||||||', ''),
(1, 'CTI_RSA', 'Synthèse RSA', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_RSACA', 'Synthèse RSA - CA', '1', ' ', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_SEVER', 'Analyse niveaux de sévérités', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''),
(1, 'CTI_TEST', 'test', '0', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', '')
;

-- 3/3 : Màj de la table iCTI
ALTER TABLE w_dbsetup ADD COLUMN to_serie_entete text[];
UPDATE w_dbsetup SET to_serie_entete = string_to_array(serie_entete,'||');


ALTER TABLE w_dbsetup ADD COLUMN to_rapport_indicateur_condition_code text[];
UPDATE w_dbsetup SET to_rapport_indicateur_condition_code = string_to_array(rapport_indicateur_condition_code,'||');

ALTER TABLE w_dbsetup ADD COLUMN to_rapport_indicateur_condition_id bigint[];
UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[1] = t_indicateur_condition.oid FROM pmsi.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[1] AND to_rapport_indicateur_condition_code[1] <> '';
UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[2] = t_indicateur_condition.oid FROM pmsi.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[2] AND to_rapport_indicateur_condition_code[2] <> '';
UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[3] = t_indicateur_condition.oid FROM pmsi.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[3] AND to_rapport_indicateur_condition_code[3] <> '';
UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[4] = t_indicateur_condition.oid FROM pmsi.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[4] AND to_rapport_indicateur_condition_code[4] <> '';
UPDATE w_dbsetup SET to_rapport_indicateur_condition_id = array_remove(to_rapport_indicateur_condition_id,NULL);

UPDATE pmsi.t_rapports SET 
	texte = w_dbsetup.texte, 
	is_cti = w_dbsetup.is_cti,
	is_essentiel = w_dbsetup.is_essentiel,
	essentiel_date_level = w_dbsetup.essentiel_date_level,
	colonnes_essentiel = w_dbsetup.colonnes_essentiel,
	entete = w_dbsetup.entete,
	entete_2 = w_dbsetup.entete_2,
	group_id  = w_dbsetup.group_id,
	rapport_indicateur_condition_id = to_rapport_indicateur_condition_id,
	label  = w_dbsetup.label,
	serie_entete  = to_serie_entete,
	colonnes_essentiel_style = w_dbsetup.colonnes_essentiel_style
FROM w_dbsetup
WHERE t_rapports.code = w_dbsetup.code;


INSERT INTO pmsi.t_rapports(oid, code, texte, is_cti, is_essentiel)
SELECT oid, code, texte, is_cti, is_essentiel 
FROM w_dbsetup 
WHERE 
	oid = 0 AND
	oid NOT IN (SELECT oid FROM pmsi.t_rapports);


INSERT INTO pmsi.t_rapports(
	code, 
	texte, 
	is_cti, 
	is_essentiel, 
	essentiel_date_level, 
	colonnes_essentiel, 
	entete, 
	entete_2, 
	group_id, 
	is_hide, 
	rapport_indicateur_condition_id, 
	label, 
	serie_entete, 
	colonnes_essentiel_style
	)
SELECT 
	code, 
	texte, 
	is_cti, 
	is_essentiel, 
	essentiel_date_level, 
	colonnes_essentiel, 
	entete, 
	entete_2, 
	group_id, 
	is_hide, 
	to_rapport_indicateur_condition_id, 
	label, 
	to_serie_entete, 
	colonnes_essentiel_style
FROM w_dbsetup 
WHERE 
	oid <> 0 AND
	code NOT IN (SELECT code FROM pmsi.t_rapports);
	
-- Suppression du rapport 4
DELETE FROM pmsi.t_rapports WHERE code = 'CTI_ESS_4'