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

CREATE TEMP TABLE w_dbsetup AS
    SELECT
    	code,
    	CASE WHEN oid = 0 THEN oid ELSE 1 END AS oid,
    	texte,
    	texte_court
    FROM pmsi.t_cmd
    ORDER BY code
     LIMIT 0
;

-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
    code,
    oid,
    texte,
    texte_court
)
VALUES
('01', 1, 'Affections du système nerveux', 'Aff.Système nerveux'),
('02', 1, 'Affections de l''oeil', 'Aff.Oeil'),
('03', 1, 'Affections des oreilles, du nez, de la gorge, de la bouche et des dents', 'Aff.O.N.G.B.D'),
('04', 1, 'Affections de l''appareil respiratoire', 'Aff.Appareil respiratoire'),
('05', 1, 'Affections de l''appareil circulatoire', 'Aff.Appareil circulatoire'),
('06', 1, 'Affections du tube digestif', 'Aff.Tube digestif'),
('07', 1, 'Affections du système hépatobiliaire et du pancréas', 'Aff.Syst.hépato.&Pancréas'),
('08', 1, 'Affections et traumatismes de l''appareil musculo-squelettique et du tissu conjonctif', 'Aff.traumato.app M.S&T.C'),
('09', 1, 'Affections de la peau, des tissus souscutanés et des seins', 'Aff.Peau Tissus S.C Seins'),
('10', 1, 'Affections endocriniennes, métaboliques et nutritionnelles', 'Aff.Endo.Métabo.Nutrition'),
('11', 1, 'Affections du rein et des voies urinaires', 'Aff.Rein & voies urinaire'),
('12', 1, 'Affections de l''appareil génital masculin', 'Aff.App.Gén.Masculin'),
('13', 1, 'Affections de l''appareil génital féminin', 'Aff.App.Gén.Féminin'),
('14', 1, 'Grossesses pathologiques, accouchements et affections du post-partum', 'Gros.Patho,Acc.&Aff.P.P'),
('15', 1, 'Nouveau-nés, prématurés et affections de la période périnatale', 'N.nés,prématurés&Aff.P.P'),
('16', 1, 'Affections du sang et des organes hématopoïétiques', 'Aff.Sang & org.hématopoï.'),
('17', 1, 'Affections myéloprolifératives et tumeurs de siège imprécis ou diffus', 'Aff.Myélo.&tumeurs S.I.'),
('18', 1, 'Maladies infectieuses et parasitaires', 'Mal.Infectieuses &parasit'),
('19', 1, 'Maladies et troubles mentaux', 'Mal. & troubles mentaux'),
('20', 1, 'Troubles mentaux organiques liés à l''absorption de drogues ou induits par celles-ci', 'T. mentaux liés abs.drog.'),
('21', 1, 'Traumatismes, allergies et empoisonnements', 'Traum.Allerg.&Empoison.'),
('22', 1, 'Brûlures', 'Brûlures'),
('23', 1, 'Facteurs influant sur l''état de santé et autres motifs de recours aux services de santé', 'Fact.influant/état santé'),
('24', 1, '@Séjours de moins de 2 jours', '@Séjours.<2j'),
('25', 1, 'Maladies dues à une infection par le VIH', 'Mal.dues à infec.VIH'),
('26', 1, 'Traumatismes multiples graves', 'Traumat.mult.graves'),
('27', 1, 'Transplantations d''organes', '@Transplant.organes'),
('28', 1, 'Séances', 'Séances'),
('77', 1, 'Forfaits innovation', 'Forfaits innovation'),
('90', 1, 'Erreurs et autres séjours inclassables', '@Erreurs&aut.séj.incl.'),
('99', 1, 'Non attribué', 'Non attribué'),
('ZZ', 1, 'Autres CMD...', 'Autres CMD'),
('**', 0, 'Hors PMSI', 'Hors PMSI')
;

-- 3/3 : Màj de la table iCTI
UPDATE pmsi.t_cmd SET 
	code = w_dbsetup.code
FROM w_dbsetup
WHERE 
	t_cmd.oid = w_dbsetup.oid 
	AND w_dbsetup.oid = 0;


UPDATE pmsi.t_cmd SET 
	texte = w_dbsetup.texte, 
	texte_court = w_dbsetup.texte_court
FROM w_dbsetup
WHERE t_cmd.code = w_dbsetup.code
AND (
	t_cmd.texte <> w_dbsetup.texte OR
	t_cmd.texte_court <> w_dbsetup.texte_court OR
	t_cmd.texte IS NULL OR
	t_cmd.texte_court IS NULL
);


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


INSERT INTO pmsi.t_cmd(
	code, 
	texte, 
	texte_court)
SELECT 
	code, 
	texte, 
	texte_court 
FROM w_dbsetup 
WHERE 
	oid <> 0 
	AND code NOT IN (SELECT code FROM pmsi.t_cmd);