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

CREATE TEMP TABLE w_dbsetup AS
    SELECT 
    	CASE WHEN t_expert_controle.oid = 0 THEN t_expert_controle.oid ELSE 1 END AS controle_id,
    	t_expert_controle.code as controle_code,
    	t_expert_controle.texte as controle_texte,
    	t_expert_controle.texte_court as controle_texte_court,
    	t_expert_controle.texte_abrege as controle_texte_abrege,
    	t_expert_controle.description as controle_description,
    	t_expert_controle.is_cti as controle_is_cti,
    	t_expert_controle.etat_cible as controle_etat_cible,
    	t_prestataires.code as prestataire_code
    FROM activite.t_expert_controle
    	LEFT JOIN base.t_prestataires ON t_prestataires.oid = t_expert_controle.prestataire_id
    WHERE t_expert_controle.is_cti = '1' AND t_expert_controle.code <> ''
    ORDER BY t_expert_controle.code
     LIMIT 0
;

-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
    controle_id,
    controle_code,
    controle_texte,
    controle_texte_court,
    controle_texte_abrege,
    controle_description,
    controle_is_cti,
    controle_etat_cible,
    prestataire_code
)
VALUES
(1, 'CTI_0ETS', 'Dossiers sortis sans prestations (Aucune facture ni valorisation)', 'Dossiers sortis sans prestations (Aucune facture ni valorisation)', 'Dossiers sortis sans prestations (Aucune facture ni valorisation)', '', '1', 0, ''),
(1, 'CTI_AMB_DE_X_DS', 'Ambulatoires avec date d''entrée différente de date de sortie', 'Ambulatoires avec date d''entrée différente de date de sortie', 'Ambulatoires avec date d''entrée différente de date de sortie', '', '1', 0, ''),
(1, 'CTI_DEL_FAC_30', 'Séjours non facturés avec délai de facture supérieur à 30 jours', 'Séjours non facturés avec délai de facture supérieur à 30 jours', 'Séjours non facturés avec délai de facture supérieur à 30 jours', '', '1', 0, ''),
(1, 'CTI_DTEXP_DTFAC', 'Date d''expédion antérieure à la date de facturation', 'Date d''expédion antérieure à la date de facturation', 'Date d''expédion antérieure à la date de facturation', '', '1', 0, ''),
(1, 'CTI_DTFAC_DTSOR', 'Date de facturation antérieure à la date de sortie', 'Date de facturation antérieure à la date de sortie', 'Date de facturation antérieure à la date de sortie', '', '1', 0, ''),
(1, 'CTI_DTVEN_DTFAC', 'Date de vente antérieure à la date de facturation', 'Date de vente antérieure à la date de facturation', 'Date de vente antérieure à la date de facturation', '', '1', 0, ''),
(1, 'CTI_DUR_SUP_60', 'Dossiers MCO durée supérieur à 2 mois', 'Dossiers MCO durée supérieur à 2 mois', 'Dossiers MCO durée supérieur à 2 mois', '', '1', 0, ''),
(1, 'CTI_EXT_DE_X_DS', 'Externes avec date d''entrée différente de date de sortie', 'Externes avec date d''entrée différente de date de sortie', 'Externes avec date d''entrée différente de date de sortie', '_c_eNptkMFqwzAMhl9FeFDaU9Pl0EOTgOs6IdR1guuNsZtpNAg4SbGd0cefMwa9DCT4fiE+kDLNP3TZqAvVUMsTlzonrwQEp6daVgsXWQtU1JXMieCljrlspIaSMp6Td3SdGQ2Ba/0Z4y4hwBrRqJy8JMc0Tdmi0pqra0vZrzBunLmSf1wIhK/eBofgZwcWYZg6hFjBmT7ggGOAZA9rNo1+tsGEPgJgAD/1CzwCuhH9Bu7ohjjuVuY++QM+bnaOUovPHTDfePvPv0tg/aYqLhnfZNvluiLbtrGfvyl+AFhcWe0=', '1', 0, ''),
(1, 'CTI_LPP_INC_80', 'LPP inclus dans le GHS dont la consommation est séprieure à 80% du GHS', 'LPP inclus sup. à 80% du GHS', 'LPP inclus sup. à 80% du GHS', '', '1', 0, ''),
(1, 'CTI_LPP_NON_FAC', 'LPP en SUS non facturé', 'LPP en SUS non facturé', 'LPP en SUS non facturé', '', '1', 0, ''),
(1, 'CTI_MULTI_TYPES', 'Séjous avec plus d''un type de séjour (ambu, hospit, seances, externe)', 'Séjous avec plus d''un type de séjour (ambu, hospit, seances, externe)', 'Séjous avec plus d''un type de séjour (ambu, hospit, seances, externe)', '', '1', 0, ''),
(1, 'CTI_MVT_ETA_KO', 'Etages inappropriés', 'Etages inappropriés', 'Etages inappropriés', '_c_eNrFkMFOhDAQhl9lUq/G3XWvQIJs2ZBFIGxjjJdNA8MGU0rTFp/Xo3j2AWzJqvHg2UPTmb/NN/P/AaOPLC3r+5hBVuxowUJySyCn8S4r9r6OggriPNsXIclpylyflgWDNE5oSB5Qt1xyAsfsybWbNYGkzMs6JFfru+12m3gUY7Q+VnGyAN2PA62Lpd6QKO+NRWjRgJmfx0kbaEdpYZKLNozTCw4orQE0FnjXYWNneP16ny0/u6tFEBzEN+oi95IrpUel+9ncBCu/dhSsKnd+TEfBPwdQcQ3t3PHJXoNAaMYWf/nxvhOWnSiLT4cSBt47YwIUThberUbQOCjBmxmUI7lcHMmpbinjIS6ORvfK9qO8YPXbWSwjGj9NWv0h8M90PgEtl6i+', '1', 0, ''),
(1, 'CTI_MVT_ETA_NULL', 'Etage non renseigné', 'Etage non renseigné', 'Etage non renseigné', '_c_eNpFT1ELgjAY/CsfC3rV8jEVlk4Z2ZQ1Inob+CGGTNnWf85/kVbQw8HdcRx3sWI3VdTyTBVwkTOhErInUDGac1GuPI0boBUvRUIqVqhFF7VQUNCMJeSKttVGE7jw+yJ3IYGsrmqZkE14jKIoW6uUYvLS0OxTuCROTIofTyVOL4swoAM3P8anddCOxsOw1dPoDrPXHUKL4EbrewTztdF5mLQDi8Zh35k5DtZRaRw0C/6X0jdJb0M4', '1', 0, ''),
(1, 'CTI_MVT_SER_EXT', 'Services Externes : FSEH - SEUR et Mode de traitement 04', 'Services Externes : FSEH - SEUR et Mode de traitement 04', 'Services Externes : FSEH - SEUR et Mode de traitement 04', '', '1', 0, 'SIGEMS'),
(1, 'CTI_MVT_SER_KO', 'Incompatibilité type de séjour (ESPIC - Ex OQN) et code service', 'Incompatibilité type de séjour (ESPIC - Ex OQN) et code service', 'Incompatibilité type de séjour (ESPIC - Ex OQN) et code service', '_c_eNrFkMFqhDAQhl9lSK+lu9u9qmDduMhaFTeU0ssSdCwpMYYk7vP2WHvuAzRKl6WHnnsI/DMTvpn/Dxh9ZmlZP8YMsmJHCxaSewI5jXdZsZ91FFQQ59m+CElOU+brtCwYpHFCQ/KEpuWKEzhmL77crAkkZV7WIblZP2y322RGMUbrYxUnC9D/ONC6WPSGRLmwDqFFC3Z6G0ZjoR2Ug1EtvX4Yz9ijchbQOuBdh42b4P0yt2jOovGiRZAc5BV2GQjFtTaDNmKyd8FqPj0KVpV/V+NR8M8hVNxAO3V8dLcgEZqhxV+OZu8Jy05HWp8OJfRceGMSNI4OPp1BMNhryZsJtCf5bDzJd/1Rdob4QBojtBOD+sGaj1e5rGjmbcqZL4l/pvMNPfepnA==', '1', 0, ''),
(1, 'CTI_MVT_SER_NULL', 'Service non renseigné', 'Service non renseigné', 'Service non renseigné', '', '1', 0, ''),
(1, 'CTI_PRE_SUP_30', 'Présent depuis plus de 30 jours', 'Présent depuis plus de 30 jours', 'Présent depuis plus de 30 jours', '', '1', 0, ''),
(1, 'CTI_SEJSMR_SUPP90', 'Séjours SMR de plus de 90 jours', 'Séjours SMR de plus de 90 jours', 'Séjours SMR de plus de 90 jours', '', '1', 0, ''),
(1, 'CTI_SEJ_AMB_03', 'Ambulatoires avec Mode de Traitement Hospit complète (03)', 'Ambulatoires avec Mode de Traitement Hospit complète (03)', 'Ambulatoires avec Mode de Traitement Hospit complète (03)', '_c_eNrNU1FPgzAQ/isXTMz2NCZvE0iAwSQyWFhnjMY0HdySmlIIFH+vj+5fWJxxzhhf3UPTu971u7vv7mwS3pMoy5cegTidhylxjCsDktCbx+likF17BV4SL1LHSMKIaD3KUgKRF4SOcYdtySQzYB0/aHVqGhBkSZY7xoXpW5YVDFCEhPl65QUfgNrjNszTT9ld75/rvu2AVdteMFXzFjvQkB30EmETfTfASPBOIZSXrKm7615yte9gV8tC8VpKFEL/fYUG+0ZgC6yHpt0zwbYCx1AxrqO8YKGBoapLDYOgWsYVVigVmBaMbuqu4YrpKGxAhKKuGvGmcGxPhppde7LS58iYa/8ze+eaV/dbV2e274Lc0pNHB6b2xD/bQn4M4AwO6F8uUx3PdwXHnra4wxZlgXQYTKQnc0l5qfOHxySeBSSmm4h6S3/zdFL6GTKgy1v+uioDE747rBE9Gmgx+DpwWE/TOtx/tfcdZyxNqw==', '1', 0, ''),
(1, 'CTI_SEJ_DUR_30', 'Séjours sortis non facturés avec durée de séjour supérieure à 30 jours', 'Séjours sortis non facturés avec durée de séjour supérieure à 30 jours', 'Séjours sortis non facturés avec durée de séjour supérieure à 30 jours', '_c_eNpFjtEKwiAYhV/lxx5gK29VMNMhmY5NIrobzIsitnDzfbvdW+RG0MWBc+DjnEO8vHnlmgv3oO1JWk/RAYGR/KRttXpGauBGV5YiI5XPWTnrQXEhKbqG2HdDh6DV9xz3JQLhjGso2pVHjLFYq7yXTVtzsRVm4iwb+/OsXZ5jihP04zDDq4M+xSVAmGaY0nuJj5BigA/gEjaOFOs4I0Wd9b/Ovjb2OgQ=', '1', 2, ''),
(1, 'CTI_SEJ_DUR_NEG', 'Séjours avec date de sortie antérieure à la date d''entrée', 'Séjours avec date de sortie antérieure à la date d''entrée', 'date sortie < date_entree', '', '1', 0, ''),
(1, 'CTI_SEJ_MED_KO', 'Médecins responsables de séjours inappropriés', 'Médecins responsables de séjours inappropriés', 'Médecins responsables de séjours inappropriés', '_c_eNrFkMFOhDAQhl9lUq/G3ZUrkCCUDVkWCNsY42XTlGJquqVpy/t6tJ59AAsxazx49tBk/k77zfx/TPATKdv+mBGomgI3JEH3CGqcFVWzX+o07iCrq32ToBqXJOiybQiUWY4T9MjNQBVFcKqeg9xtEeRt3fYJutk+RFGULyhCcH/qsnwFhhcH3DdrvUNpLazjMHAL1r9Os7FAx5Ez5y28wazWzsUPnAllgwBJQV6/XBtCUa3NpI3w9i7eLAum8aYL58deGv+z1Y4aGPxIZ3cLkgObBv7LEbcOclKdj7g4H1q4UBGMSdB8dvDhDAfDL1pS5kEHUsgmkMJtWMoukBAIM0I7MalvrHl/kesItkxTznxK/mc6X6nfoLg=', '1', 0, ''),
(1, 'CTI_SEJ_MED_NULL', 'Médecin responsable de séjour non renseigné', 'Médecin responsable de séjour non renseigné', 'Médecin responsable de séjour non renseigné', '_c_eNpFj9EKwjAMRX8lVPB16h7dBnXrZDi7UYuIb9UFUWZXF/1n9xd2IviQcO5NuCSRFgedV2rLNRQyE1LHbMGgFDwr5HrkJKqBl8VaxqwUufY6r6SGnKciZnvsG2MNg11x9HI+Y5BWZaViNpmtwjBMxyithdrVPP0G+o2NUPLHiUL37hFaJKDh1r16Auf7aDxe2JIHuA8Nnq8WeiTXWTIn79mpcR0tkZ7gDPmRJbxe7BAF43VJFNS+/r8lH/HxRzY=', '1', 0, ''),
(1, 'CTI_SEJ_SER_FINESS', 'Service non associé à un établissement', 'Service non associé à un établissement', 'Service non associé à un établissement', '_c_eNpFj8FOhEAQRH+lMiZGT7srNwWSkR02KA5kmBjjbWTbZMwKSIPf61H+wmEvHjqpqnS/VMdWvdi8Mk/SotB7pW0ibgRKJfeFPqw6jWvIsjjoRJQqt8HnlbbIZaYS8Uzj0XVOoCleg91tBbKqrEwiLrb3URRlK8paZZpaZmdg2HhURp/1TqSGht+RcCIGLx/9PDKOfTeFAEzjt28J3aUber4jnjA4hmPuW7/gB3OHZXJvJ89MnxSOrpphaf27/5oJt3iYV2po2NF1vFlLp/GmDvP/cvoH089PUA==', '1', 0, ''),
(1, 'CTI_UCD_INC_80', 'UCD inclus dans GHS dont la consommation est supérieure à 80% du GHS', 'UCD Inclus sup à 80% du GHS', 'UCD Inclus sup à 80% du GHS', '', '1', 0, ''),
(1, 'CTI_UCD_NON_FACT', 'UCD en SUS non facturé', 'UCD en SUS non facturé', 'UCD en SUS non facturé', '', '1', 0, ''),
(1, 'CTI_VAL_SUP_20K', 'Dossiers valorisés > 20 000', 'Dossiers valorisés > 20 000', 'Dossiers valorisés > 20 000', '', '1', 0, '')
;

-- 3/3 : Màj de la table iCTI
UPDATE activite.t_expert_controle SET 
	texte = w_dbsetup.controle_texte, 
	texte_court = w_dbsetup.controle_texte_court, 
	texte_abrege = w_dbsetup.controle_texte_abrege, 
	description = w_dbsetup.controle_description, 
	is_cti = w_dbsetup.controle_is_cti, 
	etat_cible = w_dbsetup.controle_etat_cible,
	prestataire_id = COALESCE(t_prestataires.oid, -1)
FROM w_dbsetup
	LEFT JOIN base.t_prestataires ON t_prestataires.code = w_dbsetup.prestataire_code
WHERE t_expert_controle.code = w_dbsetup.controle_code
AND (
	t_expert_controle.texte IS DISTINCT FROM w_dbsetup.controle_texte OR
	t_expert_controle.texte_court IS DISTINCT FROM w_dbsetup.controle_texte_court OR
	t_expert_controle.texte_abrege IS DISTINCT FROM w_dbsetup.controle_texte_abrege OR
	t_expert_controle.description IS DISTINCT FROM w_dbsetup.controle_description OR
	t_expert_controle.is_cti IS DISTINCT FROM w_dbsetup.controle_is_cti OR
	t_expert_controle.etat_cible IS DISTINCT FROM w_dbsetup.controle_etat_cible OR 
	t_prestataires.code != w_dbsetup.prestataire_code 
);

UPDATE activite.t_expert_controle
SET gravite_id = 5 
WHERE gravite_id IS NULL OR gravite_id NOT IN (0,5,9);

UPDATE activite.t_expert_controle
SET is_hide = '0' 
WHERE is_hide IS NULL OR is_hide NOT IN ('0','1');

UPDATE activite.t_expert_controle
SET etat_cible = 0 
WHERE etat_cible IS NULL;

UPDATE activite.t_expert_controle
SET prestataire_id = -1 
WHERE prestataire_id IS NULL;

UPDATE activite.t_expert_controle
SET is_active = '1' 
WHERE is_active IS NULL;


INSERT INTO activite.t_expert_controle(
	code,
	texte,
	texte_court,
	texte_abrege,
	description,
	is_cti,
	gravite_id,
	is_hide,
	etat_cible,
	prestataire_id,
	is_active
	)
SELECT 
	w_dbsetup.controle_code,
	w_dbsetup.controle_texte,
	w_dbsetup.controle_texte_court,
	w_dbsetup.controle_texte_abrege,
	w_dbsetup.controle_description,
	w_dbsetup.controle_is_cti,
	5,
	'0',
	w_dbsetup.controle_etat_cible,
	COALESCE(t_prestataires.oid, -1),
	'1'
FROM w_dbsetup 
	LEFT JOIN base.t_prestataires ON t_prestataires.code = w_dbsetup.prestataire_code
WHERE 
	w_dbsetup.controle_id <> 0 
	AND w_dbsetup.controle_code NOT IN (SELECT code FROM activite.t_expert_controle WHERE code IS NOT NULL);