return: text lang: plpgsql parameters: p0: type: bigint name: i_import_id p1: type: bigint name: i_mat2a_import_id src: | DECLARE BEGIN RAISE NOTICE '%' , 'Identification des imports'; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cp_imports') THEN DROP TABLE IF EXISTS w_cp_imports; CREATE TEMP TABLE w_cp_imports (import_id bigint, mat2a_import_id bigint, mat2a_annee numeric, mat2a_mois numeric); END IF; TRUNCATE w_cp_imports; INSERT INTO w_cp_imports SELECT MAX(p_imports.oid) AS import_id, (MAX(Array[p_imports.oid, p_imports.mat2a_import_id]))[2] AS mat2a_import_id, MAX(mat2a_annee) AS mat2a_annee, MAX(mat2a_mois) AS mat2a_mois FROM pmsi.p_imports JOIN pmsi.p_mat2a_import ON p_imports.mat2a_import_id = p_mat2a_import.oid WHERE date_fin BETWEEN '20140101' AND date(now()) AND mat2a_import_id <> 0 AND etat = 'G' AND p_imports.oid IN (SELECT import_id FROM pmsi.p_rss WHERE etat = '') AND (i_import_id = -1 OR p_imports.oid = i_import_id) AND (i_mat2a_import_id = -1 OR p_imports.mat2a_import_id = i_mat2a_import_id) HAVING MAX(p_imports.oid) IS NOT NULL; --DROP TABLE IF EXISTS temp.w_cp_imports; CREATE TABLE temp.w_cp_imports AS SELECT * FROM w_cp_imports; --drop table if exists temp.w_cp_cti_fact2a; CREATE Table temp.w_cp_cti_fact2a as select * from w_cp_cti_fact2a; -- Import à traiter ? IF NOT EXISTS (SELECT * FROM w_cp_imports LIMIT 1) THEN return 'Pas d''import à traiter'; END IF; RAISE NOTICE '%' , 'Initialisations'; UPDATE pmsi.p_mat2a_data SET data_mat2a[1] = 'CG F Majoration consultation suivi de grossesse Férié' WHERE data_mat2a[1] ILIKE '%CG Consultation suivi de grossesse Férié%'; UPDATE pmsi.p_mat2a_data SET data_mat2a[1] = 'CG N Majoration consultation suivi de grossesse Nuit' WHERE data_mat2a[1] ILIKE '%CG Consultation suivi de grossesse Nuit%'; -- Numéro de table dans la page 2.Q.HPNPC où apparaissent les prestations non prises en compte IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_seq_hpnpc') THEN DROP TABLE IF EXISTS w_seq_hpnpc; CREATE TEMP TABLE w_seq_hpnpc ( import_id bigint, mat2a_import_id bigint, mat2a_annee numeric, seq_hpnpc bigint ); END IF; TRUNCATE w_seq_hpnpc; INSERT INTO w_seq_hpnpc SELECT w_cp_imports.import_id, w_cp_imports.mat2a_import_id, w_cp_imports.mat2a_annee, MAX(table_sequence) as table_sequence FROM pmsi.p_mat2a_data JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE 1=1 AND file_code = 'T2QHPNPC' AND line_type = 'T' AND array_to_string(data_mat2a,',') like '%non prises en compte%' OR array_to_string(data_mat2a,',')like '%Lettres clé non valorisées%' GROUP BY 1,2,3; -- Réaffectation des prestations non valorisées d'après le tableau mat2a IF 1 <> 1 THEN RAISE NOTICE '%' , 'Prestations non valorisees'; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cp_non_valorises') THEN DROP TABLE IF EXISTS w_cp_non_valorises; CREATE TEMP TABLE w_cp_non_valorises (rss_id bigint, prestation_id bigint); CREATE INDEX i_w_cp_non_valorises_1 ON w_cp_non_valorises USING btree (rss_id); CREATE INDEX i_w_cp_non_valorises_2 ON w_cp_non_valorises USING btree (prestation_id); END IF; TRUNCATE w_cp_non_valorises; INSERT INTO w_cp_non_valorises SELECT rss_id, prestation_id FROM pmsi.p_rss JOIN pmsi.p_rsf_detail ON p_rsf_detail.rss_id = p_rss.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id WHERE en_cours = '0' AND 1<>1 AND est_ligne_rss = '1' AND prestation_id = ANY ( array( SELECT t_prestations.oid FROM pmsi.p_mat2a_data JOIN pmsi.t_prestations ON t_prestations.code = split_part(data_mat2a[1],' ',1) JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_seq_hpnpc ON w_seq_hpnpc.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T2QHPNPC' AND table_sequence = w_seq_hpnpc.seq_hpnpc AND line_type IN ('D') GROUP BY 1 )::bigint[]) GROUP BY 1,2 ; -- Les prestations APC, APV, APY, AVY et APU ne sont valorisées qu'à partir d'octobre 2017 -- Il faut donc partiellement les prendre en compte dans le tableau 'T2QHPNPC' WITH w_to_delete AS ( SELECT rss_id, prestation_id FROM pmsi.p_rsf_detail JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id WHERE 1=1 AND t_prestations.code IN ('APC','APV','APY','AVY','APU') AND p_rsf_detail.date_debut >= '20171001'::date ) DELETE FROM w_cp_non_valorises USING w_to_delete WHERE 1=1 AND w_cp_non_valorises.rss_id = w_to_delete.rss_id AND w_cp_non_valorises.prestation_id = w_to_delete.prestation_id; INSERT INTO pmsi.p_rsf_detail_non_valorise( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum, montant_supplement_nf, sejour_remboursable_rum, pec_fj_id, base_remboursement_sauf_transition, base_remboursement_rum_sauf_transition, regle_id) SELECT finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, p_rsf_detail.prestation_id, p_rsf_detail.rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum, montant_supplement_nf, sejour_remboursable_rum, pec_fj_id, base_remboursement_sauf_transition, base_remboursement_rum_sauf_transition, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM pmsi.p_rsf_detail JOIN w_cp_non_valorises ON w_cp_non_valorises.rss_id = p_rsf_detail.rss_id AND w_cp_non_valorises.prestation_id = p_rsf_detail.prestation_id AND est_ligne_rss = '1' LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '09'::text; DELETE FROM pmsi.p_rsf_detail USING w_cp_non_valorises WHERE w_cp_non_valorises.rss_id = p_rsf_detail.rss_id AND w_cp_non_valorises.prestation_id = p_rsf_detail.prestation_id; UPDATE pmsi.p_rsf_total SET base_remboursement = COALESCE(subview.base_remboursement,0), t2a_facture = COALESCE(subview.t2a_facture,0), dmi_facture = COALESCE(subview.dmi_facture,0), phc_facture = COALESCE(subview.phc_facture,0), forfait_facture = COALESCE(subview.forfait_facture,0), nb_exh = COALESCE(subview.nb_exh,0), ca_exh = COALESCE(subview.ca_exh,0), nb_exb = COALESCE(subview.nb_exb,0), ca_exb = COALESCE(subview.ca_exb,0), nb_ghs =COALESCE( subview.nb_ghs,0), ca_ghs = COALESCE(subview.ca_ghs,0), nb_ghsmin = COALESCE(subview.nb_ghsmin,0) FROM pmsi.p_rss LEFT JOIN ( SELECT rss_id, SUM(p_rsf_detail.base_remboursement) as base_remboursement, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S1%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as t2a_facture, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S2%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as dmi_facture, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S3%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as phc_facture, SUM(CASE WHEN t_prestations.code = 'EXH' THEN p_rsf_detail.nombre ELSE 0 END) as nb_exh, SUM(CASE WHEN t_prestations.code = 'EXH' THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_exh, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 AND t_ghs.code NOT IN (9606,9616) THEN p_rsf_detail.nombre ELSE 0 END) as nb_exb, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 AND t_ghs.code NOT IN (9606,9616) THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_exb, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 AND t_ghs.code IN (9606,9616) THEN p_rsf_detail.nombre ELSE 0 END) as nb_ghsmin, SUM(CASE WHEN t_prestations.code = 'GHS' THEN p_rsf_detail.nombre ELSE 0 END) as nb_ghs, SUM(CASE WHEN t_prestations.code = 'GHS' THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_ghs, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S13%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as forfait_facture FROM pmsi.p_rsf_detail JOIN pmsi.t_prestations ON p_rsf_detail.prestation_id = t_prestations.oid JOIN pmsi.t_ghs ON t_ghs.oid = p_rsf_detail.ghs_id WHERE p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.rss_id IN (SELECT rss_id FROM w_cp_non_valorises) GROUP BY rss_id) subview ON p_rss.oid = subview.rss_id WHERE p_rsf_total.rss_id = p_rss.oid AND p_rsf_total.rss_id IN (SELECT rss_id FROM w_cp_non_valorises); UPDATE pmsi.p_rss SET base_remboursement = p_rsf_total.base_remboursement, sejour_facture = p_rsf_total.sejour_facture, honoraires_factures = p_rsf_total.honoraires_factures, t2a_facture = p_rsf_total.t2a_facture, dmi_facture = p_rsf_total.dmi_facture, phc_facture = p_rsf_total.phc_facture, ca_ghs_theorique = p_rsf_total.ca_ghs_theorique, nb_ghs = p_rsf_total.nb_ghs, ca_ghs = p_rsf_total.ca_ghs, nb_exb = p_rsf_total.nb_exb, ca_exb = p_rsf_total.ca_exb, nb_exh = p_rsf_total.nb_exh, ca_exh = p_rsf_total.ca_exh, nb_ghsmin = p_rsf_total.nb_ghsmin, forfait_facture = p_rsf_total.forfait_facture FROM pmsi.p_rsf_total WHERE p_rss.oid = p_rsf_total.rss_id AND p_rss.oid IN (SELECT rss_id FROM w_cp_non_valorises); END IF; RAISE NOTICE '%' , 'Cumuls CTI. Sejours T2A'; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cp_cti_sejt2a') THEN DROP TABLE IF EXISTS w_cp_cti_sejt2a; CREATE TEMP TABLE w_cp_cti_sejt2a ( import_id bigint, mat2a_import_id bigint, cti_transmis numeric, cti_transmis_2 numeric, cti_cmd_90 numeric, cti_non_am numeric, cti_non_am_2 numeric, cti_valorises numeric, cti_valorises_2 numeric, cti_inter_etablissement numeric, cti_inter_etablissement_nv numeric, cti_ghs_9999 numeric, cti_ivg numeric, cti_rsa_seances numeric, cti_seances numeric, cti_ds_0 numeric ); END IF; TRUNCATE w_cp_cti_sejt2a; /* Modifs de CLA le 06-11-2015 : . Visiblement, pour les GHM de préparation aux irradiations (24Z04Z,28Z08Z,28Z09Z,28Z19Z,28Z20Z,28Z21Z,28Z22Z), OVALIDE ne compte qu'une séance par RSS même si nb_seances > 1 . Pour le décompte des séjours 0 nuit, il faut exclure les séjours de la CMD 90 Modif CLA le 18-03-2016 : . Visiblement, depuis mars 2015, le décompte des prestations inter-établissements ne concerne pas que les séjours non traités. A partir de cette date, on compte les PIE à partir des séjours ME=0 et MS=0, peu importe leurs traitements ePMSI */ INSERT INTO w_cp_cti_sejt2a SELECT p_rss.import_id, mat2a_import_id, count(*) AS cti_transmis, SUM(CASE WHEN t_ghm_c.cmd_code <> '28' THEN 1 ELSE nb_seances END) AS cti_transmis_2, SUM(CASE WHEN t_ghm_c.cmd_code = '90' THEN 1 ELSE 0 END) AS cti_cmd_90, count(CASE WHEN traitement_epmsi IN ('24','31') THEN p_rss.oid ELSE NULL END) AS cti_non_am, SUM(CASE WHEN traitement_epmsi IN ('24','31') THEN CASE WHEN t_ghm_c.cmd_code <> '28' THEN 1 ELSE nb_seances END ELSE 0 END) AS cti_non_am, count(CASE WHEN traitement_epmsi = '30' THEN p_rss.oid ELSE NULL END) AS cti_valorises, SUM(CASE WHEN traitement_epmsi = '30' THEN CASE WHEN t_ghm_c.cmd_code <> '28' THEN 1 ELSE nb_seances END ELSE NULL END) AS cti_valorises_2, count(CASE WHEN (p_rss.date_sortie >= '20150301' OR traitement_epmsi = '12') AND traitement_epmsi <> '31' AND (mode_entree = '0' AND mode_sortie = '0') THEN p_rss.oid ELSE NULL END) AS cti_inter_etablissement, count(CASE WHEN traitement_epmsi = '12' THEN p_rss.oid ELSE NULL END) AS cti_inter_etablissement_nv, count(CASE WHEN traitement_epmsi IN ('13','32') OR (t_ghm_c.code LIKE ANY (ARRAY['14Z08Z', '09Z02%']::text[]) AND traitement_epmsi = '26') THEN p_rss.oid ELSE NULL END) AS cti_ghs_9999, count(CASE WHEN t_ghm_c.code IN ('14Z08Z') THEN p_rss.oid ELSE NULL END) AS cti_ivg, SUM(CASE WHEN t_ghm_c.cmd_code = '28' THEN 1 ELSE 0 END) AS cti_rsa_seances, SUM(CASE WHEN t_ghm_c.code IN ('24Z04Z','28Z08Z','28Z09Z','28Z19Z','28Z20Z','28Z21Z','28Z22Z') THEN 1 WHEN t_ghm_c.cmd_code = '28' THEN nb_seances ELSE 0 END) AS cti_seances, SUM(CASE WHEN t_ghm_c.cmd_code NOT IN ('28', '90') AND duree_sejour = 0 THEN 1 ELSE 0 END) AS cti_ds_0 FROM pmsi.p_rss JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id JOIN pmsi.t_ghm_c ON ghm_id = t_ghm_c.oid WHERE en_cours = '0' AND ghm_id <> 0 GROUP BY 1,2; -- 2014 UPDATE pmsi.p_mat2a_data SET data_cti[2] = CASE WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours transmis%' THEN cti_transmis_2 WHEN file_code = 'T1D2RTP' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Nb de RSA transmis%' THEN cti_transmis WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%séjours en CM 90%' THEN cti_cmd_90 WHEN file_code = 'T1D2RTP' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Nb de RSA en CMD 90%' THEN cti_cmd_90 WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours en prestation inter-établissement%' THEN cti_inter_etablissement_nv WHEN file_code = 'T1D2RTP' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Nb de RSA prestation inter-établissement%' THEN cti_inter_etablissement_nv WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours en GHS 9999%' THEN cti_ghs_9999 WHEN file_code = 'T1D2RTP' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Nb de RSA en GHS 9999%' THEN cti_ghs_9999 WHEN file_code = 'T1D2RTP' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Nb de RSA séances%' THEN cti_rsa_seances WHEN file_code = 'T1D2RTP' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Nb de séances%' THEN cti_seances WHEN file_code = 'T1D2RTP' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Nb de RSA DS=0%' THEN cti_ds_0 WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours non facturable à l''AM hors PO%' THEN cti_non_am_2 WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours valorisés%' THEN cti_valorises_2 WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours d''IVG%' THEN cti_ivg ELSE NULL END FROM w_cp_cti_sejt2a WHERE w_cp_cti_sejt2a.mat2a_import_id = p_mat2a_data.mat2a_import_id AND (file_code = 'T1V5SYNTS' AND table_sequence = 1 OR file_code = 'T1D2RTP' AND table_sequence = 1 ) AND line_type = 'D'; -- 2012 UPDATE pmsi.p_mat2a_data SET data_cti[2] = CASE WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours transmis%' THEN cti_transmis_2 WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%séjours en CM 90%' THEN cti_cmd_90 WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours en prestation inter-établissement%' THEN cti_inter_etablissement_nv WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours en GHS 9999%' THEN cti_ghs_9999 WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours non facturable à l''AM hors PO%' THEN cti_non_am_2 WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours valorisés%' THEN cti_valorises_2 WHEN file_code = 'T1V5SYNTS' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Séjours d''IVG%' THEN cti_ivg ELSE NULL END FROM w_cp_cti_sejt2a WHERE w_cp_cti_sejt2a.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V5SYNTS' AND table_sequence = 1 AND line_type = 'D'; RAISE NOTICE '%' , 'Cumuls CTI. GHS Minoré'; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cp_ghsminor') THEN DROP TABLE IF EXISTS w_cp_ghsminor; CREATE TEMP TABLE w_cp_ghsminor ( import_id bigint, mat2a_import_id bigint, ghm_id bigint, ghs_id bigint, date_sortie date, taux_remboursement numeric, nb_ghs_minore numeric ); END IF; -- A partir de mars 2015, pour les couples GHS-GHM 9606-28Z07Z et 9616-28Z17Z, si un UCD a été facturé en SUS, une minoration de 40¤ s'applique au GHS -- modif CLA 25-05-2016, on ne conserve que les séjours Valorisés (hors valo AME) -- La minoration forfaitaire est annulée à partir du M01 2018 TRUNCATE w_cp_ghsminor; INSERT INTO w_cp_ghsminor SELECT w_cp_imports.import_id, w_cp_imports.mat2a_import_id, p_rss.ghm_id, p_rss.ghs_id, p_rss.date_sortie, p_rsf_total.taux_remboursement, count(distinct CASE WHEN p_rss.mois_sortie >= 201503 AND p_rss_ucd.rss_id is distinct from null THEN p_rss.no_rss ELSE null END) as nb_ghs_minore FROM pmsi.p_rss JOIN pmsi.p_rsf_total on p_rsf_total.rss_id = p_rss.oid JOIN pmsi.t_ghs ON t_ghs.oid = p_rss.ghs_id JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id LEFT JOIN pmsi.p_rss_ucd ON p_rss_ucd.rss_id = p_rss.oid WHERE 1=1 AND ((t_ghs.code = 9606 AND t_ghm.code = '28Z07Z') OR (t_ghs.code = 9616 AND t_ghm.code = '28Z17Z')) AND p_rss.en_cours = '0' AND p_rss.mois_sortie < 201801 AND p_rss.ghm_id <> 0 -- AND p_rss.traitement_epmsi IN ('30','31','32') AND p_rss.traitement_epmsi = '30' GROUP BY 1,2,3,4,5,6; RAISE NOTICE '%' , 'Cumuls CTI. Facturation T2A'; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cp_cti_fact2a') THEN DROP TABLE IF EXISTS w_cp_cti_fact2a; CREATE TEMP TABLE w_cp_cti_fact2a ( import_id bigint, mat2a_import_id bigint, ghm_id bigint, ghm_code text, ghs_id bigint, ghs_code text, date_sortie date, prestation_code text, pec_amo_ame text, cti_nb_ghs_minore numeric, taux_remboursement numeric, traitement_epmsi text, cti_nombre numeric, cti_base_remboursement numeric, cti_base_remboursement_sauf_transition numeric, cti_montant_remboursable numeric ); END IF; TRUNCATE w_cp_cti_fact2a; INSERT INTO w_cp_cti_fact2a SELECT p_rss.import_id, mat2a_import_id, p_rss.ghm_id AS ghm_id, ''::text AS ghm_code, p_rss.ghs_id, '0'::text AS ghs_code, p_rss.date_sortie, t_prestations.code AS prestation_code, CASE WHEN traitement_epmsi NOT IN ('31','32','33') THEN 'AMO' WHEN traitement_epmsi IN ('31') THEN 'AME' WHEN traitement_epmsi IN ('32') THEN 'IVG' WHEN traitement_epmsi IN ('33') THEN 'SU' ELSE '' END AS pec_amo_ame, 0::numeric as cti_nb_ghs_minore, p_rsf_detail.taux_remboursement, p_rss.traitement_epmsi, SUM(CASE WHEN t_prestations.code = 'GHS' THEN 0 ELSE round(p_rsf_detail.nombre * p_rsf_detail.coefficient, 2) END) AS cti_nombre, SUM(CASE WHEN t_prestations.code = 'GHS' AND (nb_exb > 0 OR nb_ghsmin > 0) THEN round(p_rsf_detail.prix_unitaire * p_rsf_detail.nombre * p_rsf_detail.coefficient_mco, 2) ELSE p_rsf_detail.base_remboursement END) AS cti_base_remboursement, SUM(CASE WHEN t_prestations.code = 'GHS' AND (nb_exb > 0 OR nb_ghsmin > 0) THEN round(base.Cti_division(p_rsf_detail.base_remboursement_sauf_transition , p_rsf_detail.coefficient), 2) ELSE p_rsf_detail.base_remboursement_sauf_transition END) AS cti_base_remboursement_sauf_transition, SUM(CASE WHEN t_prestations.code = 'GHS' AND (nb_exb > 0 OR nb_ghsmin > 0) AND p_rsf_detail.taux_remboursement <> 100 THEN round(p_rsf_detail.prix_unitaire * p_rsf_detail.nombre * p_rsf_detail.coefficient_mco * p_rsf_detail.taux_remboursement / 100, 2) WHEN t_prestations.code = 'GHS' AND (nb_exb > 0 OR nb_ghsmin > 0) AND p_rsf_detail.taux_remboursement = 100 THEN round(p_rsf_detail.prix_unitaire * p_rsf_detail.nombre * p_rsf_detail.coefficient_mco, 2) - p_rsf_detail.base_remboursement + p_rsf_detail.sejour_remboursable ELSE p_rsf_detail.sejour_remboursable END) AS cti_montant_remboursable FROM pmsi.p_rss JOIN pmsi.p_rsf_detail ON p_rsf_detail.rss_id = p_rss.oid JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id JOIN base.t_finess ON p_rss.finess = t_finess.code WHERE en_cours = '0' AND ghm_id <> 0 AND ( traitement_epmsi IN ('30','31','32','33') OR t_prestations.code LIKE 'TDE%' OR t_prestations.code LIKE 'TSE%' ) AND est_ligne_rss = '1' GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; INSERT INTO w_cp_cti_fact2a SELECT p_rss.import_id, mat2a_import_id, p_rss.ghm_id AS ghm_id, ''::text AS ghm_code, p_rss.ghs_id, '0'::text AS ghs_code, p_rss.date_sortie, CASE WHEN rehosp_meme_ghm = '0' THEN 'EXB' ELSE 'EXBR' END AS prestation_code, CASE WHEN traitement_epmsi NOT IN ('31') THEN 'AMO' ELSE 'AME' END AS pec_amo_ame, 0::numeric as cti_nb_ghs_minore, p_rsf_detail.taux_remboursement, p_rss.traitement_epmsi, 0 AS cti_nombre, SUM(p_rsf_detail.base_remboursement- round(p_rsf_detail.prix_unitaire * p_rsf_detail.nombre * p_rsf_detail.coefficient_mco, 2) ) AS cti_base_remboursement, SUM(CASE WHEN t_prestations.code = 'GHS' AND (nb_exb > 0 OR nb_ghsmin > 0) THEN p_rsf_detail.base_remboursement_sauf_transition-round(base.Cti_division(p_rsf_detail.base_remboursement_sauf_transition , p_rsf_detail.coefficient), 2) ELSE p_rsf_detail.base_remboursement_sauf_transition END) AS cti_base_remboursement_sauf_transition, SUM(p_rsf_detail.sejour_remboursable - CASE WHEN t_prestations.code = 'GHS' AND nb_exb > 0 AND p_rsf_detail.taux_remboursement <> 100 THEN round(p_rsf_detail.prix_unitaire * p_rsf_detail.nombre * p_rsf_detail.coefficient_mco * p_rsf_detail.taux_remboursement / 100, 2) WHEN t_prestations.code = 'GHS' AND nb_exb > 0 AND p_rsf_detail.taux_remboursement = 100 THEN round(p_rsf_detail.prix_unitaire * p_rsf_detail.nombre * p_rsf_detail.coefficient_mco, 2) - p_rsf_detail.base_remboursement + p_rsf_detail.sejour_remboursable ELSE 0 END) AS cti_montant_remboursable FROM pmsi.p_rss JOIN pmsi.p_rsf_detail ON p_rsf_detail.rss_id = p_rss.oid JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id JOIN base.t_finess ON p_rss.finess = t_finess.code WHERE en_cours = '0' AND ghm_id <> 0 AND traitement_epmsi IN ('30','31') AND est_ligne_rss = '1' AND t_prestations.code = 'GHS' AND nb_exb > 0 GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; UPDATE w_cp_cti_fact2a SET ghm_code = t_ghm.code FROM pmsi.t_ghm WHERE ghm_id = t_ghm.oid; UPDATE w_cp_cti_fact2a SET ghs_code = CASE WHEN t_ghs.code::text = '9618' THEN 'D11'::text WHEN t_ghs.code::text = '9604' THEN 'D24'::text ELSE t_ghs.code::text END FROM pmsi.t_ghs WHERE ghs_id = t_ghs.oid; UPDATE w_cp_cti_fact2a SET cti_nb_ghs_minore = w_cp_ghsminor.nb_ghs_minore FROM w_cp_ghsminor WHERE 1=1 AND w_cp_ghsminor.import_id = w_cp_cti_fact2a.import_id AND w_cp_ghsminor.mat2a_import_id = w_cp_cti_fact2a.mat2a_import_id AND w_cp_ghsminor.ghm_id = w_cp_cti_fact2a.ghm_id AND w_cp_ghsminor.ghs_id = w_cp_cti_fact2a.ghs_id AND w_cp_ghsminor.date_sortie = w_cp_cti_fact2a.date_sortie AND w_cp_ghsminor.taux_remboursement = w_cp_cti_fact2a.taux_remboursement AND w_cp_ghsminor.nb_ghs_minore > 0; --drop table if exists temp.w_cp_cti_fact2a; CREATE Table temp.w_cp_cti_fact2a as select * from w_cp_cti_fact2a; -- 2014 Tableau T1V1RAV (lignes et total) UPDATE pmsi.p_mat2a_data SET data_cti[4] = '0', data_cti[5] = '0', data_cti[6] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V1RAV' AND table_sequence = 1 AND line_type IN ('D', 'F') AND ( data_mat2a[1] ILIKE '%Valorisation des GHS%' OR data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec minoration forfaitaire liste en sus%' OR data_mat2a[1] ILIKE '%Valorisation journées extrême haut%' OR data_mat2a[1] ILIKE '%Valorisation actes GHS 9615 en Hospit%' OR data_mat2a[1] ILIKE '%Valorisation suppléments radiothérapie pédiatrique%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR data_mat2a[1] ILIKE '%Valorisation des actes de caissons hyperbares en sus%' OR data_mat2a[1] ILIKE '%Valorisation suppléments antepartum%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de néonat sans SI%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de néonat avec SI%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de réanimation néonat%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de surveillance continue validés%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de soins intensifs validés%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de réanimation%' AND data_mat2a[1] NOT ILIKE '%néonat%'OR data_mat2a[1] ILIKE '%Valorisation actes RDTH en Hospit%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de réa pédiatrique%' OR data_mat2a[1] ILIKE '%Valorisation prélévements d''organe%' OR data_mat2a[1] ILIKE '%Valorisation suppléments pour pose de défibrillateur%' OR data_mat2a[1] ILIKE '%Total valorisation%' ); UPDATE pmsi.p_mat2a_data SET data_cti[4] = cti_base_remboursement_sauf_transition, data_cti[5] = cti_base_remboursement, data_cti[6] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_base_remboursement_sauf_transition) AS cti_base_remboursement_sauf_transition, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE pec_amo_ame ='AMO' AND file_code = 'T1V1RAV' AND table_sequence = 1 AND (w_cp_cti_fact2a.prestation_code IN ('GHS','EXB','EXBR','EXH','ANT','APHE','NN1','NN2','NN3','RAP','SRC','LIM_SRC','STF','REA','DIP','D09','D17','D18','D19','OHB','REP','SDC') OR w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' OR w_cp_cti_fact2a.prestation_code LIKE 'PO%') AND ( w_cp_cti_fact2a.prestation_code = 'GHS' AND data_mat2a[1] ILIKE '%Valorisation des GHS%' OR w_cp_cti_fact2a.prestation_code = 'EXB' AND data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR w_cp_cti_fact2a.prestation_code = 'EXBR' AND data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%' OR w_cp_cti_fact2a.prestation_code = 'EXH' AND data_mat2a[1] ILIKE '%Valorisation journées extrême haut%' OR w_cp_cti_fact2a.prestation_code = 'DIP' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'D09' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'D17' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'D18' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'D19' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'OHB' AND data_mat2a[1] ILIKE '%Valorisation des actes de caissons hyperbares en sus%' OR w_cp_cti_fact2a.prestation_code = 'ANT' AND data_mat2a[1] ILIKE '%Valorisation suppléments antepartum%' OR w_cp_cti_fact2a.prestation_code = 'APHE' AND data_mat2a[1] ILIKE '%Valorisation actes GHS 9615 en Hospit%' OR w_cp_cti_fact2a.prestation_code = 'NN1' AND data_mat2a[1] ILIKE '%Valorisation suppléments de néonat sans SI%' OR w_cp_cti_fact2a.prestation_code = 'NN2' AND data_mat2a[1] ILIKE '%Valorisation suppléments de néonat avec SI%' OR w_cp_cti_fact2a.prestation_code = 'NN3' AND data_mat2a[1] ILIKE '%Valorisation suppléments de réanimation néonat%' OR w_cp_cti_fact2a.prestation_code = 'RAP' AND data_mat2a[1] ILIKE '%Valorisation suppléments radiothérapie pédiatrique%' OR w_cp_cti_fact2a.prestation_code IN ('SRC', 'LIM_SRC') AND data_mat2a[1] ILIKE '%Valorisation suppléments de surveillance continue validés%' OR w_cp_cti_fact2a.prestation_code = 'STF' AND data_mat2a[1] ILIKE '%Valorisation suppléments de soins intensifs validés%' OR w_cp_cti_fact2a.prestation_code = 'REP' AND data_mat2a[1] ILIKE '%Valorisation suppléments de réa pédiatrique%' OR w_cp_cti_fact2a.prestation_code = 'REA' AND data_mat2a[1] ILIKE '%Valorisation suppléments de réanimation%' AND data_mat2a[1] NOT ILIKE '%néonat%'OR w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' AND data_mat2a[1] ILIKE '%Valorisation actes RDTH en Hospit%' OR w_cp_cti_fact2a.prestation_code LIKE 'PO%' AND data_mat2a[1] ILIKE '%Valorisation prélévements d''organe%' OR w_cp_cti_fact2a.prestation_code = 'SDC' AND data_mat2a[1] ILIKE '%Valorisation suppléments pour pose de défibrillateur%' OR data_mat2a[1] ILIKE '%Total valorisation%' ) GROUP BY 1) subview WHERE file_code = 'T1V1RAV' AND p_mat2a_data.oid = subview.oid; -- Ajustement EXB (base remboursement entre EXB et GHS si somme identique) UPDATE pmsi.p_mat2a_data SET data_cti[4] = CASE WHEN data_mat2a[1] ILIKE '%Valorisation des GHS%' THEN base.cti_to_number(data_mat2a[4]) - ecart_base_remboursement_sauf_transition WHEN data_mat2a[1] ILIKE '%Valorisation extrême bas%' THEN base.cti_to_number(data_mat2a[4]) WHEN data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%' THEN base.cti_to_number(data_mat2a[4]) ELSE base.cti_to_number(data_cti[4]) END, data_cti[5] = CASE WHEN data_mat2a[1] ILIKE '%Valorisation des GHS%' THEN base.cti_to_number(data_mat2a[5]) - ecart_base_remboursement WHEN data_mat2a[1] ILIKE '%Valorisation extrême bas%' THEN base.cti_to_number(data_mat2a[5]) WHEN data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%' THEN base.cti_to_number(data_mat2a[5]) ELSE base.cti_to_number(data_cti[5]) END FROM ( SELECT p_mat2a_data.mat2a_import_id, SUM(base.cti_to_number(data_mat2a[4])) AS mat2a_base_remboursement_sauf_transition, SUM(base.cti_to_number(data_cti[4])) AS cti_base_remboursement_sauf_transition, SUM(base.cti_to_number(data_mat2a[4])) - SUM(base.cti_to_number(data_cti[4])) AS ecart_base_remboursement_sauf_transition, SUM(base.cti_to_number(data_mat2a[5])) AS mat2a_base_remboursement, SUM(base.cti_to_number(data_cti[5])) AS cti_base_remboursement, SUM(base.cti_to_number(data_mat2a[5])) - SUM(base.cti_to_number(data_cti[5])) AS ecart_base_remboursement FROM pmsi.p_mat2a_data JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T1V1RAV' AND (data_mat2a[1] ILIKE '%Valorisation des GHS%' OR data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%') GROUP BY 1 HAVING ABS(SUM(base.cti_to_number(data_mat2a[4])) - SUM(base.cti_to_number(data_cti[4]))) < 0.05 AND ABS(SUM(base.cti_to_number(data_mat2a[5])) - SUM(base.cti_to_number(data_cti[5]))) < 0.05 ) subview WHERE subview.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V1RAV' AND (data_mat2a[1] ILIKE '%Valorisation des GHS%' OR data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%'); -- Ajustement EXB (ventilation remboursement entre EXB et GHS si somme identique) UPDATE pmsi.p_mat2a_data SET data_cti[6] = CASE WHEN data_mat2a[1] ILIKE '%Valorisation des GHS%' THEN base.cti_to_number(data_mat2a[6]) - ecart WHEN data_mat2a[1] ILIKE '%Valorisation extrême bas%' THEN base.cti_to_number(data_mat2a[6]) WHEN data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%' THEN base.cti_to_number(data_mat2a[6]) ELSE base.cti_to_number(data_cti[6]) END FROM ( SELECT p_mat2a_data.mat2a_import_id, SUM(base.cti_to_number(data_mat2a[6])) AS mat2a_remb, SUM(base.cti_to_number(data_cti[6])) AS cti_remb, SUM(base.cti_to_number(data_mat2a[6])) - SUM(base.cti_to_number(data_cti[6])) AS ecart FROM pmsi.p_mat2a_data JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T1V1RAV' AND (data_mat2a[1] ILIKE '%Valorisation des GHS%' OR data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%') GROUP BY 1 HAVING ABS(SUM(base.cti_to_number(data_mat2a[4])) - SUM(base.cti_to_number(data_cti[4]))) < 0.05 AND ABS(SUM(base.cti_to_number(data_mat2a[5])) - SUM(base.cti_to_number(data_cti[5]))) < 0.05 AND ABS(SUM(base.cti_to_number(data_mat2a[6])) - SUM(base.cti_to_number(data_cti[6]))) < 1 ) subview WHERE subview.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V1RAV' AND (data_mat2a[1] ILIKE '%Valorisation des GHS%' OR data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%'); -- 2015 Minoration forfaire GHS liste en SUS WITH w_sub as ( SELECT p_mat2a_data.oid, w_cp_imports.mat2a_annee, extract('month' from w_cp_cti_fact2a.date_sortie) as mois_sortie, SUM(cti_nb_ghs_minore) * -40 AS cti_base_remboursement_sauf_transition, SUM(cti_nb_ghs_minore) * -40 * CASE WHEN w_cp_imports.mat2a_annee * 100 + extract('month' from w_cp_cti_fact2a.date_sortie) >= 201603 THEN 0.9950 ELSE 0.9965 END AS cti_base_remboursement, SUM(cti_nb_ghs_minore * base.cti_division(taux_remboursement, 100)) * -40 * CASE WHEN w_cp_imports.mat2a_annee * 100 + extract('month' from w_cp_cti_fact2a.date_sortie) >= 201603 THEN 0.9950 ELSE 0.9965 END AS cti_montant_remboursable FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE 1=1 AND w_cp_imports.mat2a_annee >= 2015 AND w_cp_imports.mat2a_annee < 2018 AND pec_amo_ame ='AMO' AND file_code = 'T1V1RAV' AND table_sequence = 1 AND w_cp_cti_fact2a.prestation_code = 'GHS' AND w_cp_cti_fact2a.cti_nb_ghs_minore >= 1 AND ( data_mat2a[1] ILIKE '%Valorisation séjours avec minoration forfaitaire liste en sus%' OR data_mat2a[1] ILIKE '%Valorisation des GHS%' OR data_mat2a[1] ILIKE '%Total valorisation%' ) GROUP BY p_mat2a_data.oid, w_cp_imports.mat2a_annee, extract('month' from w_cp_cti_fact2a.date_sortie) ) UPDATE pmsi.p_mat2a_data SET data_cti[4] = CASE WHEN data_mat2a[1] ILIKE '%Valorisation séjours avec minoration forfaitaire liste en sus%' THEN subview.cti_base_remboursement_sauf_transition --WHEN data_mat2a[1] ILIKE '%Valorisation des GHS%' THEN base.cti_to_number(data_cti[4]) + subview.cti_base_remboursement_sauf_transition WHEN mat2a_annee < 2018 AND data_mat2a[1] ILIKE '%Total valorisation%' THEN base.cti_to_number(data_cti[4]) + cti_base_remboursement_sauf_transition ELSE base.cti_to_number(data_cti[4]) --WHEN data_mat2a[1] ILIKE '%Total valorisation%' THEN base.cti_to_number(data_cti[4]) + cti_base_remboursement_sauf_transition END, data_cti[5] = CASE WHEN data_mat2a[1] ILIKE '%Valorisation séjours avec minoration forfaitaire liste en sus%' THEN subview.cti_base_remboursement --WHEN data_mat2a[1] ILIKE '%Valorisation des GHS%' THEN base.cti_to_number(data_cti[5]) + subview.cti_base_remboursement WHEN mat2a_annee < 2018 AND data_mat2a[1] ILIKE '%Total valorisation%' THEN base.cti_to_number(data_cti[5]) + subview.cti_base_remboursement ELSE base.cti_to_number(data_cti[5]) --WHEN data_mat2a[1] ILIKE '%Total valorisation%' THEN base.cti_to_number(data_cti[5]) + cti_base_remboursement --ELSE cti_base_remboursement END, data_cti[6] = CASE WHEN data_mat2a[1] ILIKE '%Valorisation séjours avec minoration forfaitaire liste en sus%' THEN subview.cti_montant_remboursable WHEN data_mat2a[1] ILIKE '%Valorisation des GHS%' THEN base.cti_to_number(data_cti[6]) + subview.cti_montant_remboursable WHEN mat2a_annee < 2018 AND data_mat2a[1] ILIKE '%Total valorisation%' THEN base.cti_to_number(data_cti[6]) + subview.cti_montant_remboursable ELSE base.cti_to_number(data_cti[6]) --WHEN data_mat2a[1] ILIKE '%Total valorisation%' THEN base.cti_to_number(data_cti[6]) + cti_montant_remboursable --ELSE cti_montant_remboursable END FROM ( SELECT w_sub.oid, w_sub.mat2a_annee, SUM(w_sub.cti_base_remboursement_sauf_transition) as cti_base_remboursement_sauf_transition, SUM(w_sub.cti_base_remboursement) as cti_base_remboursement, SUM(w_sub.cti_montant_remboursable) as cti_montant_remboursable FROM w_sub GROUP BY w_sub.oid, w_sub.mat2a_annee ) subview WHERE p_mat2a_data.file_code = 'T1V1RAV' AND p_mat2a_data.oid = subview.oid; -- Nouvelle colonne GHS UCD en 2021 -- 2021 Tableau T1V1CMV (lignes et total) UPDATE pmsi.p_mat2a_data SET data_cti = null FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND w_cp_imports.mat2a_annee >= 2021 AND file_code = 'T1V1CMV' AND table_sequence = 1 AND line_type IN ('D', 'F') ; UPDATE pmsi.p_mat2a_data SET data_cti[7] = '0', data_cti[8] = '0', data_cti[10] = '0', data_cti[11] = '0', data_cti[12] = '0', data_cti[13] = '0', data_cti[14] = '0', data_cti[15] = '0', data_cti[16] = '0', data_cti[17] = '0', data_cti[18] = '0', data_cti[19] = '0', data_cti[20] = '0', data_cti[21] = '0', data_cti[22] = '0', data_cti[23] = '0', data_cti[24] = '0', data_cti[25] = '0', data_cti[26] = '0', data_cti[27] = '0', data_cti[28] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND w_cp_imports.mat2a_annee >= 2021 AND file_code = 'T1V1CMV' AND table_sequence = 1 AND line_type IN ('D', 'F'); UPDATE pmsi.p_mat2a_data SET data_cti[7] = cti_base_remboursement_ghs - CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_ghsminor ELSE 0 END, data_cti[8] = cti_base_remboursement_exb, data_cti[10] = cti_base_remboursement_exbr, data_cti[11] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_ghsminor ELSE cti_base_remboursement_exh END, data_cti[12] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_exh ELSE null END, data_cti[13] = CASE WHEN subview.mat2a_annee < 2018 THEN null ELSE cti_base_remboursement_irre END, data_cti[14] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_irre ELSE cti_base_remboursement_rap END, data_cti[15] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_rap ELSE cti_base_remboursement_ant END, data_cti[16] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_ant ELSE cti_base_remboursement_rea END, data_cti[17] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_rea ELSE cti_base_remboursement_rep END, data_cti[18] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_rep ELSE cti_base_remboursement_stf END, data_cti[19] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_stf ELSE cti_base_remboursement_src END, data_cti[20] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_src ELSE cti_base_remboursement_dia END, data_cti[21] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_dia ELSE cti_base_remboursement_nn1 END, data_cti[22] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_nn1 ELSE cti_base_remboursement_nn2 END, data_cti[23] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_nn2 ELSE cti_base_remboursement_nn3 END, data_cti[24] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_nn3 ELSE cti_base_remboursement_po END, data_cti[25] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_po ELSE cti_base_remboursement_ohb END, data_cti[26] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_ohb ELSE cti_base_remboursement_aphe END, data_cti[27] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_aphe ELSE cti_base_remboursement_sdc END, data_cti[28] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_sdc ELSE null END FROM ( SELECT p_mat2a_data.oid, MAX(w_cp_imports.mat2a_annee) AS mat2a_annee, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'GHS' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_ghs, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXB' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_exb, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXBR' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_exbr, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'GHS' THEN cti_nb_ghs_minore ELSE NULL END) * -40 AS cti_base_remboursement_ghsminor, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXH' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_exh, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'ANT' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_ant, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code IN ('DIP', 'D09', 'D17', 'D18', 'D19') THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_dia, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'SRC' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_src, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'STF' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_stf, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'REA' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_rea, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'REP' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_rep, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'RAP' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_rap, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN1' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_nn1, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN2' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_nn2, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN3' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_nn3, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'OHB' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_ohb, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'SDC' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_sdc, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_irre, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code LIKE 'APHE%' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_aphe, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code IN ('PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA') THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_po FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = w_cp_cti_fact2a.mat2a_import_id WHERE pec_amo_ame ='AMO' AND file_code = 'T1V1CMV' AND table_sequence = 1 AND (w_cp_cti_fact2a.prestation_code IN ('GHS','EXB','EXBR','EXH','ANT','APHE','NN1','NN2','NN3','RAP','SRC','STF','REA','DIP','D09','D17','D18','D19','OHB','SDC') OR w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' OR w_cp_cti_fact2a.prestation_code LIKE 'PO%') AND ( line_type = 'D' AND data_mat2a[1] ILIKE ghs_code AND data_mat2a[3] ILIKE ghm_code || '%' OR line_type = 'F' ) AND w_cp_imports.mat2a_annee >= 2021 GROUP BY 1) subview WHERE file_code = 'T1V1CMV' AND p_mat2a_data.oid = subview.oid; -- 2015 Tableau T1V1CMV (lignes et total) UPDATE pmsi.p_mat2a_data SET data_cti[6] = '0', data_cti[7] = '0', data_cti[9] = '0', data_cti[10] = '0', data_cti[11] = '0', data_cti[13] = '0', data_cti[14] = '0', data_cti[15] = '0', data_cti[16] = '0', data_cti[17] = '0', data_cti[18] = '0', data_cti[19] = '0', data_cti[20] = '0', data_cti[21] = '0', data_cti[22] = '0', data_cti[23] = '0', data_cti[24] = '0', data_cti[25] = '0', data_cti[26] = '0', data_cti[27] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND w_cp_imports.mat2a_annee BETWEEN 2015 AND 2020 AND file_code = 'T1V1CMV' AND table_sequence = 1 AND line_type IN ('D', 'F'); /* le montant GHS du tableau OVALIDE (data_mat2a[6]) ne comprend pas la minoration forfaitaire, il faut donc la rajouter au montant GHS CTI (data_cti[6]) qui en tient déjà compte Attention, à partir de M01 2018, la minoration forfaitaire n'apparait plus dans le tableau */ UPDATE pmsi.p_mat2a_data SET data_cti[6] = cti_base_remboursement_ghs - CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_ghsminor ELSE 0 END, data_cti[7] = cti_base_remboursement_exb, data_cti[9] = cti_base_remboursement_exbr, data_cti[10] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_ghsminor ELSE cti_base_remboursement_exh END, data_cti[11] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_exh ELSE null END, data_cti[12] = CASE WHEN subview.mat2a_annee < 2018 THEN null ELSE cti_base_remboursement_irre END, data_cti[13] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_irre ELSE cti_base_remboursement_rap END, data_cti[14] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_rap ELSE cti_base_remboursement_ant END, data_cti[15] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_ant ELSE cti_base_remboursement_rea END, data_cti[16] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_rea ELSE cti_base_remboursement_rep END, data_cti[17] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_rep ELSE cti_base_remboursement_stf END, data_cti[18] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_stf ELSE cti_base_remboursement_src END, data_cti[19] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_src ELSE cti_base_remboursement_dia END, data_cti[20] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_dia ELSE cti_base_remboursement_nn1 END, data_cti[21] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_nn1 ELSE cti_base_remboursement_nn2 END, data_cti[22] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_nn2 ELSE cti_base_remboursement_nn3 END, data_cti[23] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_nn3 ELSE cti_base_remboursement_po END, data_cti[24] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_po ELSE cti_base_remboursement_ohb END, data_cti[25] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_ohb ELSE cti_base_remboursement_aphe END, data_cti[26] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_aphe ELSE cti_base_remboursement_sdc END, data_cti[27] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_base_remboursement_sdc ELSE null END FROM ( SELECT p_mat2a_data.oid, MAX(w_cp_imports.mat2a_annee) AS mat2a_annee, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'GHS' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_ghs, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXB' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_exb, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXBR' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_exbr, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'GHS' THEN cti_nb_ghs_minore ELSE NULL END) * -40 AS cti_base_remboursement_ghsminor, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXH' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_exh, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'ANT' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_ant, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code IN ('DIP', 'D09', 'D17', 'D18', 'D19') THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_dia, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'SRC' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_src, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'STF' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_stf, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'REA' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_rea, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'REP' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_rep, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'RAP' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_rap, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN1' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_nn1, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN2' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_nn2, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN3' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_nn3, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'OHB' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_ohb, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'SDC' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_sdc, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_irre, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code LIKE 'APHE%' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_aphe, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code IN ('PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA') THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_po FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = w_cp_cti_fact2a.mat2a_import_id WHERE pec_amo_ame ='AMO' AND file_code = 'T1V1CMV' AND table_sequence = 1 AND (w_cp_cti_fact2a.prestation_code IN ('GHS','EXB','EXBR','EXH','ANT','APHE','NN1','NN2','NN3','RAP','SRC','STF','REA','DIP','D09','D17','D18','D19','OHB','SDC') OR w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' OR w_cp_cti_fact2a.prestation_code LIKE 'PO%') AND ( line_type = 'D' AND data_mat2a[1] ILIKE ghs_code AND data_mat2a[2] ILIKE ghm_code || '%' OR line_type = 'F' ) AND w_cp_imports.mat2a_annee BETWEEN 2015 AND 2020 GROUP BY 1) subview WHERE file_code = 'T1V1CMV' AND p_mat2a_data.oid = subview.oid; -- 2014 Tableau T1V1CMV (lignes et total) UPDATE pmsi.p_mat2a_data SET data_cti[6] = '0', data_cti[7] = '0', data_cti[9] = '0', data_cti[10] = '0', data_cti[12] = '0', data_cti[13] = '0', data_cti[14] = '0', data_cti[15] = '0', data_cti[16] = '0', data_cti[17] = '0', data_cti[18] = '0', data_cti[19] = '0', data_cti[20] = '0', data_cti[21] = '0', data_cti[22] = '0', data_cti[23] = '0', data_cti[24] = '0', data_cti[25] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND w_cp_imports.mat2a_annee < 2015 AND file_code = 'T1V1CMV' AND table_sequence = 1 AND line_type IN ('D', 'F'); UPDATE pmsi.p_mat2a_data SET data_cti[6] = cti_base_remboursement_ghs, data_cti[7] = cti_base_remboursement_exb, data_cti[9] = cti_base_remboursement_exbr, data_cti[10] = cti_base_remboursement_exh, data_cti[12] = cti_base_remboursement_irre, data_cti[13] = cti_base_remboursement_rap, data_cti[14] = cti_base_remboursement_ant, data_cti[15] = cti_base_remboursement_rea, data_cti[16] = cti_base_remboursement_rep, data_cti[17] = cti_base_remboursement_stf, data_cti[18] = cti_base_remboursement_src, data_cti[19] = cti_base_remboursement_dia, data_cti[20] = cti_base_remboursement_nn1, data_cti[21] = cti_base_remboursement_nn2, data_cti[22] = cti_base_remboursement_nn3, data_cti[23] = cti_base_remboursement_po, data_cti[24] = cti_base_remboursement_ohb, data_cti[25] = cti_base_remboursement_aphe FROM ( SELECT p_mat2a_data.oid, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'GHS' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_ghs, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXB' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_exb, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXBR' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_exbr, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXH' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_exh, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'ANT' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_ant, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code IN ('DIP', 'D09', 'D17', 'D18', 'D19') THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_dia, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'SRC' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_src, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'STF' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_stf, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'REA' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_rea, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'REP' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_rep, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'RAP' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_rap, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN1' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_nn1, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN2' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_nn2, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN3' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_nn3, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'OHB' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_ohb, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_irre, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code LIKE 'APHE%' THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_aphe, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code IN ('PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA') THEN cti_base_remboursement_sauf_transition ELSE 0 END) AS cti_base_remboursement_po FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = w_cp_cti_fact2a.mat2a_import_id WHERE pec_amo_ame ='AMO' AND file_code = 'T1V1CMV' AND table_sequence = 1 AND (w_cp_cti_fact2a.prestation_code IN ('GHS','EXB','EXBR','EXH','ANT','APHE','NN1','NN2','NN3','RAP','SRC','STF','REA','DIP','D09','D17','D18','D19','OHB','SDC') OR w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' OR w_cp_cti_fact2a.prestation_code LIKE 'PO%') AND ( line_type = 'D' AND data_mat2a[1] ILIKE ghs_code AND data_mat2a[2] ILIKE ghm_code || '%' OR line_type = 'F' ) AND w_cp_imports.mat2a_annee < 2015 GROUP BY 1) subview WHERE file_code = 'T1V1CMV' AND p_mat2a_data.oid = subview.oid; -- Reventilation EXB UPDATE pmsi.p_mat2a_data SET data_cti[6] = base.cti_to_number(data_mat2a[6]) + (base.cti_to_number(data_mat2a[6]) + base.cti_to_number(data_mat2a[7]) + base.cti_to_number(data_mat2a[9]) - base.cti_to_number(data_cti[6]) - base.cti_to_number(data_cti[7]) - base.cti_to_number(data_cti[9])), data_cti[7] = data_mat2a[7], data_cti[9] = data_mat2a[9] FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND w_cp_imports.mat2a_annee < 2015 AND file_code = 'T1V1CMV' AND table_sequence = 1 AND line_type IN ('D', 'F') AND ABS(base.cti_to_number(data_mat2a[6]) - base.cti_to_number(data_cti[6])) <= 0.05 AND ABS(base.cti_to_number(data_mat2a[6]) + base.cti_to_number(data_mat2a[7]) + base.cti_to_number(data_mat2a[9]) - base.cti_to_number(data_cti[6]) - base.cti_to_number(data_cti[7]) - base.cti_to_number(data_cti[9])) <= 0.05 AND (base.cti_to_number(data_cti[7]) <> base.cti_to_number(data_mat2a[7]) OR base.cti_to_number(data_cti[9]) <> base.cti_to_number(data_mat2a[9])); -- Cas de séjours avec EXB ET GHS Minoré. Si total EXB+GHS minoré OK UPDATE pmsi.p_mat2a_data SET data_cti[8] = data_mat2a[8], data_cti[10] = base.cti_to_number(data_cti[8]) + base.cti_to_number(data_cti[10]) - base.cti_to_number(data_mat2a[8]) FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND w_cp_imports.mat2a_annee >= 2023 AND file_code = 'T1V1CMV' AND table_sequence = 1 AND line_type IN ('D', 'F') AND base.cti_to_number(data_mat2a[8]) <> 0 AND base.cti_to_number(data_mat2a[10]) <> 0 AND ( base.cti_to_number(data_mat2a[8]) <> base.cti_to_number(data_cti[8]) OR base.cti_to_number(data_mat2a[10]) <> base.cti_to_number(data_cti[10]) ) AND ABS( base.cti_to_number(data_mat2a[8]) + base.cti_to_number(data_mat2a[10]) - base.cti_to_number(data_cti[8]) - base.cti_to_number(data_cti[10]) ) < 1 ; -- Tableau T1V1CP (OQN) UPDATE pmsi.p_mat2a_data SET data_cti[4] = 0 FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V1CP' AND table_sequence = 1 AND ( line_type = 'D' OR line_type = 'F' AND data_mat2a[1] ILIKE 'lib' ); UPDATE pmsi.p_mat2a_data SET data_cti[4] = cti_base_remboursement FROM ( SELECT p_mat2a_data.oid, SUM(cti_base_remboursement_sauf_transition) AS cti_base_remboursement FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE pec_amo_ame ='AMO' AND file_code = 'T1V1CP' AND table_sequence = 1 AND ( line_type = 'D' AND data_mat2a[1] ILIKE prestation_code OR line_type = 'D' AND data_mat2a[1] LIKE 'GHS' AND prestation_code = 'EXB' OR line_type = 'F' AND data_mat2a[1] ILIKE 'lib' ) GROUP BY 1) subview WHERE file_code = 'T1V1CP' AND p_mat2a_data.oid = subview.oid; -- Tableau T1V1CMG (OQN : lignes et total) UPDATE pmsi.p_mat2a_data SET data_cti[4] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V1CMG' AND table_sequence = 2 AND line_type IN ('D', 'F'); UPDATE pmsi.p_mat2a_data SET data_cti[4] = cti_base_remboursement FROM ( SELECT p_mat2a_data.oid, SUM(cti_base_remboursement_sauf_transition) AS cti_base_remboursement FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE pec_amo_ame ='AMO' AND file_code = 'T1V1CMG' AND table_sequence = 2 AND ( line_type = 'D' AND data_mat2a[1] ILIKE substr(ghm_code,1,5) || '%' OR line_type = 'F' ) GROUP BY 1) subview WHERE file_code = 'T1V1CMG' AND p_mat2a_data.oid = subview.oid; -- 2014 Tableau T1V4RAME (AME) (4 = synthèse) UPDATE pmsi.p_mat2a_data SET data_cti[2] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V4RAME' AND table_sequence = 4 AND line_type IN ('D', 'F') AND ( data_mat2a[1] ILIKE '%Valorisation des GHS%' OR data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec minoration forfaitaire%' OR data_mat2a[1] ILIKE '%Valorisation journées extrême haut%' OR data_mat2a[1] ILIKE '%Valorisation actes GHS 9615 en Hospit%' OR data_mat2a[1] ILIKE '%Valorisation suppléments radiothérapie pédiatrique%' OR data_mat2a[1] ILIKE '%Valorisation suppléments antepartum%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de réa pédiatrique%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de néonat sans SI%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de néonat avec SI%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de réanimation néonat%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de surveillance continue%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de soins intensifs%' OR data_mat2a[1] ILIKE '%Valorisation suppléments de réanimation%' AND data_mat2a[1] NOT ILIKE '%néonat%'OR data_mat2a[1] ILIKE '%Valorisation actes RDTH en Hospit%' OR data_mat2a[1] ILIKE '%Valorisation des actes de caissons hyperbares%' OR data_mat2a[1] ILIKE '%Total valorisation%' ); UPDATE pmsi.p_mat2a_data SET data_cti[2] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_base_remboursement_sauf_transition) AS cti_base_remboursement_sauf_transition, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE pec_amo_ame ='AME' AND file_code = 'T1V4RAME' AND table_sequence = 4 AND (w_cp_cti_fact2a.prestation_code IN ('GHS','EXB','EXBR','EXH','ANT','APHE','NN1','NN2','NN3','RAP','SRC','STF','REA','DIP','D09','D17','D18','D19','OHB','REP') OR w_cp_cti_fact2a.prestation_code LIKE 'IRRE%') AND ( w_cp_cti_fact2a.prestation_code = 'GHS' AND data_mat2a[1] ILIKE '%Valorisation des GHS%' OR w_cp_cti_fact2a.prestation_code = 'EXB' AND data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR w_cp_cti_fact2a.prestation_code = 'EXBR' AND data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%' OR w_cp_cti_fact2a.prestation_code = 'EXH' AND data_mat2a[1] ILIKE '%Valorisation journées extrême haut%' OR w_cp_cti_fact2a.prestation_code = 'DIP' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'D09' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'D17' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'D18' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'D19' AND data_mat2a[1] ILIKE '%Valorisation suppléments de dialyse%' OR w_cp_cti_fact2a.prestation_code = 'OHB' AND data_mat2a[1] ILIKE '%Valorisation des actes de caissons hyperbares%' OR w_cp_cti_fact2a.prestation_code = 'ANT' AND data_mat2a[1] ILIKE '%Valorisation suppléments antepartum%' OR w_cp_cti_fact2a.prestation_code = 'NN1' AND data_mat2a[1] ILIKE '%Valorisation suppléments de néonat sans SI%' OR w_cp_cti_fact2a.prestation_code = 'NN2' AND data_mat2a[1] ILIKE '%Valorisation suppléments de néonat avec SI%' OR w_cp_cti_fact2a.prestation_code = 'NN3' AND data_mat2a[1] ILIKE '%Valorisation suppléments de réanimation néonat%' OR w_cp_cti_fact2a.prestation_code = 'RAP' AND data_mat2a[1] ILIKE '%Valorisation suppléments radiothérapie pédiatrique%' OR w_cp_cti_fact2a.prestation_code = 'SRC' AND data_mat2a[1] ILIKE '%Valorisation suppléments de surveillance continue%' OR w_cp_cti_fact2a.prestation_code = 'STF' AND data_mat2a[1] ILIKE '%Valorisation suppléments de soins intensifs%' OR w_cp_cti_fact2a.prestation_code = 'REP' AND data_mat2a[1] ILIKE '%Valorisation suppléments de réa pédiatrique%' OR w_cp_cti_fact2a.prestation_code = 'REA' AND data_mat2a[1] ILIKE '%Valorisation suppléments de réanimation%' AND data_mat2a[1] NOT ILIKE '%néonat%'OR w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' AND data_mat2a[1] ILIKE '%Valorisation actes RDTH en Hospit%' OR data_mat2a[1] ILIKE '%Total valorisation%' ) GROUP BY 1) subview WHERE file_code = 'T1V4RAME' AND p_mat2a_data.oid = subview.oid; -- Ajustement EXB AME (ventilation remboursement entre EXB et GHS si somme identique) UPDATE pmsi.p_mat2a_data SET data_cti[2] = CASE WHEN data_mat2a[1] ILIKE '%Valorisation des GHS%' THEN base.cti_to_number(data_mat2a[2]) - ecart WHEN data_mat2a[1] ILIKE '%Valorisation extrême bas%' THEN base.cti_to_number(data_mat2a[2]) WHEN data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%' THEN base.cti_to_number(data_mat2a[2]) ELSE base.cti_to_number(data_cti[2]) END FROM ( SELECT p_mat2a_data.mat2a_import_id, SUM(base.cti_to_number(data_mat2a[2])) AS mat2a_val, SUM(base.cti_to_number(data_cti[2])) AS cti_val, SUM(base.cti_to_number(data_mat2a[2])) - SUM(base.cti_to_number(data_cti[2])) AS ecart FROM pmsi.p_mat2a_data JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T1V4RAME' AND table_sequence = 4 AND (data_mat2a[1] ILIKE '%Valorisation des GHS%' OR data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%') GROUP BY 1 HAVING ABS(SUM(base.cti_to_number(data_mat2a[2])) - SUM(base.cti_to_number(data_cti[2]))) < 0.05 ) subview WHERE subview.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V4RAME' AND table_sequence = 4 AND (data_mat2a[1] ILIKE '%Valorisation des GHS%' OR data_mat2a[1] ILIKE '%Valorisation extrême bas%' OR data_mat2a[1] ILIKE '%Valorisation séjours avec rehosp dans même GHM%'); -- Tableau T1V4RAME (AME) (2 = total et detail par GHS GHM) UPDATE pmsi.p_mat2a_data SET data_cti[6] = '0', data_cti[7] = '0', data_cti[8] = '0', --data_cti[9] = '0', data_cti[10] = '0', data_cti[11] = '0', data_cti[12] = '0', data_cti[13] = '0', data_cti[14] = '0', data_cti[15] = '0', data_cti[16] = '0', -- data_cti[17] = '0', data_cti[18] = '0', data_cti[19] = '0', data_cti[20] = '0', data_cti[21] = '0' --data_cti[22] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V4RAME' AND table_sequence = 2 AND line_type IN ('D', 'F'); /* Attention, depuis 2018, la minoration forfaitaire n'apparait plus dans les tableaux */ UPDATE pmsi.p_mat2a_data SET data_cti[6] = cti_montant_remboursable_ghs, data_cti[7] = cti_montant_remboursable_exb, data_cti[8] = cti_montant_remboursable_exbr, data_cti[9] = CASE WHEN subview.mat2a_annee < 2018 THEN null ELSE cti_montant_remboursable_exh END, data_cti[10] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_exh ELSE cti_montant_remboursable_irre END, data_cti[11] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_irre ELSE cti_montant_remboursable_rap END, data_cti[12] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_rap ELSE cti_montant_remboursable_rea END, data_cti[13] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_rea ELSE cti_montant_remboursable_rep END, data_cti[14] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_rep ELSE cti_montant_remboursable_stf END, data_cti[15] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_stf ELSE cti_montant_remboursable_src END, data_cti[16] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_src ELSE null END, data_cti[17] = CASE WHEN subview.mat2a_annee < 2018 THEN null ELSE cti_montant_remboursable_nn1 END, data_cti[18] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_nn1 ELSE cti_montant_remboursable_nn2 END, data_cti[19] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_nn2 ELSE cti_montant_remboursable_nn3 END, data_cti[20] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_nn3 ELSE cti_montant_remboursable_ant END, data_cti[21] = CASE WHEN subview.mat2a_annee < 2018 THEN cti_montant_remboursable_ant ELSE null END --data_cti[22] = cti_montant_remboursable_oxh FROM ( SELECT p_mat2a_data.oid, MAX(w_cp_imports.mat2a_annee) AS mat2a_annee, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'GHS' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_ghs, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXB' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_exb, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXBR' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_exbr, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'EXH' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_exh, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'ANT' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_ant, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'RAP' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_rap, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'REA' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_rea, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'REP' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_rep, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'SRC' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_src, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'STF' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_stf, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN1' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_nn1, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN2' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_nn2, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code = 'NN3' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_nn3, SUM(CASE WHEN w_cp_cti_fact2a.prestation_code LIKE 'IRRE%' THEN cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable_irre FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = w_cp_cti_fact2a.mat2a_import_id WHERE pec_amo_ame ='AME' AND file_code = 'T1V4RAME' AND table_sequence = 2 AND (w_cp_cti_fact2a.prestation_code IN ('GHS','EXB','EXBR','EXH','ANT','NN1','NN2','NN3','REA','SRC','STF','RAP','REA') OR w_cp_cti_fact2a.prestation_code LIKE 'IRRE%') AND ( line_type = 'D' AND data_mat2a[1] ILIKE ghs_code AND data_mat2a[2] ILIKE ghm_code || '%' OR line_type = 'F' ) GROUP BY 1) subview WHERE file_code = 'T1V4RAME' AND p_mat2a_data.oid = subview.oid; -- reventilation EXB UPDATE pmsi.p_mat2a_data SET data_cti[7] = data_mat2a[7], data_cti[8] = data_mat2a[8], data_cti[6] = base.cti_to_number(data_mat2a[6]) + (base.cti_to_number(data_mat2a[6]) + base.cti_to_number(data_mat2a[7]) + base.cti_to_number(data_mat2a[8]) - base.cti_to_number(data_cti[6]) - base.cti_to_number(data_cti[7]) - base.cti_to_number(data_cti[8])) WHERE file_code = 'T1V4RAME' AND table_sequence = 2 AND line_type IN ('D', 'F') AND ABS(base.cti_to_number(data_mat2a[6]) - base.cti_to_number(data_cti[6])) > 0.05 AND ABS(base.cti_to_number(data_mat2a[6]) + base.cti_to_number(data_mat2a[7]) + base.cti_to_number(data_mat2a[8]) - base.cti_to_number(data_cti[6]) - base.cti_to_number(data_cti[7]) - base.cti_to_number(data_cti[8])) <= 0.05; -- 2015 Minoration forfaitaire GHS liste en SUS UPDATE pmsi.p_mat2a_data SET data_cti[9] = cti_base_remboursement_sauf_transition FROM ( SELECT p_mat2a_data.oid, SUM(cti_nb_ghs_minore) * -40 AS cti_base_remboursement_sauf_transition FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE 1=1 AND w_cp_imports.mat2a_annee >= 2015 AND pec_amo_ame ='AME' AND file_code = 'T1V4RAME' AND table_sequence = 2 AND w_cp_cti_fact2a.prestation_code = 'GHS' AND w_cp_cti_fact2a.cti_nb_ghs_minore >= 1 AND ( line_type = 'D' AND data_mat2a[1] ILIKE ghs_code AND data_mat2a[2] ILIKE ghm_code || '%' OR line_type = 'F' ) GROUP BY 1) subview WHERE file_code = 'T1V4RAME' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. IVG'; -- 2014 : T1V1VIVG UPDATE pmsi.p_mat2a_data SET data_cti[2] = '0', data_cti[3] = '0', data_cti[4] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V1VIVG' AND table_sequence = 1 AND line_type IN ('D', 'F'); /* Modif CLA du 12/11/2015 Filtre sur les prestations d'IVG uniquement (chapitre 1.V.1.IVG du guide de lecture OVALIDE DGF 2015) pour ne pas remonter les autres prestations des séjours valorisés IVG. Cas avec un séjour ou des prestations PHH et EMI étaient également présentes dans le décompte CTI à tort */ UPDATE pmsi.p_mat2a_data SET data_cti[2] = cti_nombre, data_cti[3] = cti_base_remboursement, data_cti[4] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_base_remboursement_sauf_transition) AS cti_base_remboursement_sauf_transition, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE pec_amo_ame='IVG' AND file_code = 'T1V1VIVG' AND table_sequence = 1 AND w_cp_cti_fact2a.prestation_code IN ('AMD', 'IMD', 'APD', 'IPD', 'AMF') AND (line_type = 'D' AND data_mat2a[1] ILIKE prestation_code || '%' OR line_type = 'F') GROUP BY 1 ) subview WHERE file_code = 'T1V1VIVG' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. UCD'; DROP TABLE IF EXISTS w_cp_cti_facucd_transmis; CREATE TEMP TABLE w_cp_cti_facucd_transmis AS SELECT p_rss.import_id, mat2a_import_id, ucd_id, t_ucd.code AS ucd_code, p_rss_ucd.indication, w_cp_imports.mat2a_annee, w_cp_imports.mat2a_mois, SUM(nombre) AS nombre_transmis, SUM(CASE WHEN traitement_epmsi NOT IN ('30') OR t_ucd.code IN ('9261110','9261104') AND non_pris_en_compte = '1' THEN nombre ELSE 0 END) AS nombre_non_valorise_1, SUM(CASE WHEN traitement_epmsi IN ('30') AND t_ucd.code NOT IN ('9261110','9261104') AND non_pris_en_compte = '1' THEN nombre ELSE 0 END) AS nombre_non_valorise_2, 0::numeric AS nombre_non_valorise_3, SUM(CASE WHEN traitement_epmsi IN ('30') AND non_pris_en_compte <> '1' THEN nombre ELSE 0 END) AS nombre_valorise FROM pmsi.p_rss_ucd JOIN pmsi.p_rss ON rss_id = p_rss.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id JOIN pmsi.t_ucd ON ucd_id = t_ucd.oid LEFT JOIN pmsi.t_type_ucd ON t_type_ucd.oid = p_rss_ucd.type_ucd_id WHERE en_cours = '0' AND ghm_id <> 0 AND (t_type_ucd.code = 'SUS' OR t_type_ucd.code = 'ATU' AND t_ucd.code IN ('9261110','9261104') ) GROUP BY 1,2,3,4,5,6,7 ; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cp_cti_facucd') THEN DROP TABLE IF EXISTS w_cp_cti_facucd; CREATE TEMP TABLE w_cp_cti_facucd ( import_id bigint, mat2a_import_id bigint, ucd_id bigint, ucd_code text, indication text, pec_amo_ame text, mat2a_annee numeric, mat2a_mois numeric, nombre numeric, montant_facture numeric(13,2), montant_tr numeric(13,2), montant_t2a_accorde numeric(13,2) ); END IF; TRUNCATE w_cp_cti_facucd; INSERT INTO w_cp_cti_facucd SELECT p_rss.import_id, mat2a_import_id, ucd_id, t_ucd.code AS ucd_code, p_rss_ucd.indication, CASE WHEN traitement_epmsi IN ('30') THEN 'AMO' WHEN traitement_epmsi IN ('31') THEN 'AME' WHEN traitement_epmsi IN ('32') THEN 'IVG' ELSE 'SU' END AS pec_amo_ame, w_cp_imports.mat2a_annee, w_cp_imports.mat2a_mois, round(SUM(CASE WHEN p_rss_ucd.non_pris_en_compte <> '1' AND montant_facture <> 0 THEN nombre ELSE 0 END),2) AS nombre, round(SUM(CASE WHEN p_rss_ucd.non_pris_en_compte <> '1' AND montant_facture <> 0 THEN montant_facture ELSE 0 END),2) AS montant_facture, round(SUM(CASE WHEN p_rss_ucd.non_pris_en_compte <> '1' AND montant_facture <> 0 THEN montant_tr ELSE 0 END),2) AS montant_tr, round(SUM(CASE WHEN p_rss_ucd.non_pris_en_compte <> '1' AND montant_facture <> 0 THEN montant_t2a_accorde ELSE 0 END),2) AS montant_t2a_accorde FROM pmsi.p_rss_ucd JOIN pmsi.p_rss ON rss_id = p_rss.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id JOIN pmsi.t_ucd ON ucd_id = t_ucd.oid LEFT JOIN pmsi.t_type_ucd ON t_type_ucd.oid = p_rss_ucd.type_ucd_id WHERE en_cours = '0' AND (t_type_ucd.code = 'SUS' OR t_type_ucd.code = 'ATU' AND t_ucd.code IN ('9261104','9261110') AND non_pris_en_compte = '0') AND montant_tr <> 0 AND ghm_id <> 0 AND traitement_epmsi IN ('30','31','32','33') GROUP BY 1,2,3,4,5,6,7,8; -- 2015 : T1V2VMED -- Transmis UPDATE pmsi.p_mat2a_data SET data_cti[5] = '0', data_cti[6] = '0', data_cti[7] = '0', data_cti[10] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND w_cp_imports.mat2a_annee >= 2019 AND file_code = 'T1V2VMED' AND table_sequence = 1 AND line_type IN ('D', 'F') ; UPDATE pmsi.p_mat2a_data SET data_cti[5] = nombre_transmis, data_cti[6] = nombre_non_valorise_1, data_cti[7] = CASE WHEN nombre_non_valorise_2 >= base.cti_to_number(data_mat2a[9]) THEN nombre_non_valorise_2 - base.cti_to_number(data_mat2a[9]) ELSE nombre_non_valorise_2 END, data_cti[9] = CASE WHEN nombre_non_valorise_2 >= base.cti_to_number(data_mat2a[9]) THEN base.cti_to_number(data_mat2a[9]) ELSE 0 END, data_cti[10] = nombre_valorise FROM ( SELECT p_mat2a_data.oid, SUM(nombre_transmis) AS nombre_transmis, SUM(nombre_non_valorise_1) AS nombre_non_valorise_1, SUM(nombre_non_valorise_2) AS nombre_non_valorise_2, SUM(nombre_non_valorise_3) AS nombre_non_valorise_3, SUM(nombre_valorise) AS nombre_valorise FROM w_cp_cti_facucd_transmis JOIN pmsi.p_mat2a_data ON w_cp_cti_facucd_transmis.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T1V2VMED' AND table_sequence = 1 AND w_cp_cti_facucd_transmis.mat2a_annee >= 2019 AND (line_type = 'D' AND data_mat2a[2] = ucd_code OR line_type = 'F') AND (line_type = 'D' AND data_mat2a[3] = indication OR line_type = 'F') GROUP BY 1 ) subview WHERE file_code = 'T1V2VMED' AND p_mat2a_data.oid = subview.oid ; -- Valorise UPDATE pmsi.p_mat2a_data SET data_cti[4] = '0', data_cti[5] = '0', data_cti[6] = '0', data_cti[7] = '0', data_cti[8] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND w_cp_imports.mat2a_annee >= 2015 AND file_code = 'T1V2VMED' AND table_sequence = 2 AND line_type IN ('D', 'F'); -- Concaténation du code et du texte dans le champ de code -- A partir de M03 2018, nouvelle colonne "indicatrion" entre le code et le libelle UPDATE pmsi.p_mat2a_data SET data_mat2a[2] = trim(split_part(data_mat2a[2]::text,' ',1))|| ' - '::text || CASE WHEN w_cp_imports.mat2a_annee >= 2018 THEN data_mat2a[4]::text ELSE data_mat2a[3]::text END FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V2VMED' AND table_sequence = 2 AND line_type = 'D'; UPDATE pmsi.p_mat2a_data SET data_cti[3] = CASE WHEN subview.mat2a_annee >= 2018 THEN indication ELSE null END, data_cti[4] = CASE WHEN subview.mat2a_annee >= 2018 THEN null ELSE nombre END, data_cti[5] = CASE WHEN subview.mat2a_annee >= 2018 THEN nombre ELSE montant_facture END, data_cti[6] = CASE WHEN subview.mat2a_annee >= 2018 THEN montant_facture ELSE montant_tr END, data_cti[7] = CASE WHEN subview.mat2a_annee >= 2018 THEN montant_tr ELSE montant_t2a_accorde END, data_cti[8] = CASE WHEN subview.mat2a_annee >= 2018 THEN montant_t2a_accorde ELSE montant_t2a_accorde - montant_facture END, data_cti[9] = CASE WHEN subview.mat2a_annee >= 2018 THEN montant_t2a_accorde - montant_facture ELSE null END FROM ( SELECT p_mat2a_data.oid, CASE WHEN line_type = 'F' THEN '' ELSE w_cp_cti_facucd.indication END as indication, SUM(nombre) AS nombre, SUM(montant_facture) AS montant_facture, SUM(montant_tr) AS montant_tr, SUM(montant_t2a_accorde) AS montant_t2a_accorde, MAX(w_cp_imports.mat2a_annee) AS mat2a_annee FROM w_cp_cti_facucd JOIN pmsi.p_mat2a_data ON w_cp_cti_facucd.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE (pec_amo_ame='AMO' OR pec_amo_ame = 'IVG') AND w_cp_cti_facucd.mat2a_annee >= 2015 AND file_code = 'T1V2VMED' AND table_sequence = 2 AND (line_type = 'D' AND substr(data_mat2a[2], 1, 7) || CASE WHEN w_cp_imports.mat2a_annee >= 2018 THEN data_mat2a[3] ELSE '' END ILIKE ucd_code || indication OR line_type = 'F') GROUP BY 1,2 ) subview WHERE file_code = 'T1V2VMED' AND p_mat2a_data.oid = subview.oid; -- 2014 : T1V2VMED UPDATE pmsi.p_mat2a_data SET data_cti[3] = '0', data_cti[4] = '0', data_cti[5] = '0', data_cti[6] = '0', data_cti[7] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND w_cp_imports.mat2a_annee < 2015 AND file_code = 'T1V2VMED' AND table_sequence = 2 AND line_type IN ('D', 'F'); UPDATE pmsi.p_mat2a_data SET data_cti[3] = nombre, data_cti[4] = montant_facture, data_cti[5] = montant_tr, data_cti[6] = montant_t2a_accorde, data_cti[7] = montant_t2a_accorde - montant_facture FROM ( SELECT p_mat2a_data.oid, SUM(nombre) AS nombre, SUM(montant_facture) AS montant_facture, SUM(montant_tr) AS montant_tr, SUM(montant_t2a_accorde) AS montant_t2a_accorde FROM w_cp_cti_facucd JOIN pmsi.p_mat2a_data ON w_cp_cti_facucd.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE pec_amo_ame='AMO' AND w_cp_cti_facucd.mat2a_annee < 2015 AND file_code = 'T1V2VMED' AND table_sequence = 2 AND (line_type = 'D' AND data_mat2a[1] ILIKE ucd_code || '%' OR line_type = 'F') GROUP BY 1 ) subview WHERE file_code = 'T1V2VMED' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. LPP'; DROP TABLE IF EXISTS w_cp_cti_faclpp_transmis; CREATE TEMP TABLE w_cp_cti_faclpp_transmis AS SELECT p_rss.import_id, mat2a_import_id, lpp_id, t_lpp.code AS lpp_code, SUM(nombre) AS nombre_transmis, SUM(CASE WHEN traitement_epmsi NOT IN ('30') THEN nombre ELSE 0 END) AS nombre_non_valorise_1, SUM(CASE WHEN traitement_epmsi IN ('30') AND non_pris_en_compte = '1' AND prix_unitaire <> 0 THEN nombre ELSE 0 END) AS nombre_non_valorise_2, SUM(CASE WHEN traitement_epmsi IN ('30') AND non_pris_en_compte = '1' AND prix_unitaire = 0 THEN nombre ELSE 0 END) AS nombre_non_valorise_3, SUM(CASE WHEN traitement_epmsi IN ('30') AND non_pris_en_compte <> '1' THEN nombre ELSE 0 END) AS nombre_valorise FROM pmsi.p_rss_lpp JOIN pmsi.p_rss ON rss_id = p_rss.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id JOIN pmsi.t_lpp ON lpp_id = t_lpp.oid WHERE en_cours = '0' AND ghm_id > 0 GROUP BY 1,2,3,4 ; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cp_cti_faclpp') THEN DROP TABLE IF EXISTS w_cp_cti_faclpp; CREATE TEMP TABLE w_cp_cti_faclpp ( import_id bigint, mat2a_import_id bigint, lpp_id bigint, lpp_code text, pec_amo_ame text, nombre numeric, montant_facture numeric(13,2), montant_tr numeric(13,2), montant_t2a_accorde numeric(13,2) ); END IF; TRUNCATE w_cp_cti_faclpp; INSERT INTO w_cp_cti_faclpp SELECT p_rss.import_id, mat2a_import_id, lpp_id, t_lpp.code, CASE WHEN traitement_epmsi IN ('30') THEN 'AMO' ELSE 'AME' END AS pec_amo_ame, SUM(CASE WHEN p_rss_lpp.non_pris_en_compte <> '1' AND montant_facture <> 0 THEN nombre ELSE 0 END) AS nombre, round(SUM(CASE WHEN p_rss_lpp.non_pris_en_compte <> '1' AND montant_facture <> 0 THEN montant_facture ELSE 0 END),2) AS montant_facture, round(SUM(CASE WHEN p_rss_lpp.non_pris_en_compte <> '1' AND montant_facture <> 0 THEN montant_tr ELSE 0 END),2) AS montant_tr, round(SUM(CASE WHEN p_rss_lpp.non_pris_en_compte <> '1' AND montant_facture <> 0 THEN montant_t2a_accorde ELSE 0 END),2) AS montant_t2a_accorde FROM pmsi.p_rss_lpp JOIN pmsi.p_rss ON rss_id = p_rss.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id JOIN pmsi.t_lpp ON lpp_id = t_lpp.oid WHERE en_cours = '0' AND p_rss.ghm_id > 0 AND traitement_epmsi IN ('30','31') GROUP BY 1,2,3,4,5; -- 2014 : T1V3VDMI -- Transmission UPDATE pmsi.p_mat2a_data SET data_cti[3] = '0', data_cti[4] = '0', data_cti[5] = '0', data_cti[6] = '0', data_cti[7] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V3VDMI' AND table_sequence = 1 AND line_type IN ('D'); UPDATE pmsi.p_mat2a_data SET data_cti[3] = nombre_transmis, data_cti[4] = nombre_non_valorise_1, data_cti[5] = nombre_non_valorise_2, data_cti[6] = nombre_non_valorise_3, data_cti[7] = nombre_valorise FROM ( SELECT p_mat2a_data.oid, SUM(nombre_transmis) AS nombre_transmis, SUM(nombre_non_valorise_1) AS nombre_non_valorise_1, SUM(nombre_non_valorise_2) AS nombre_non_valorise_2, SUM(nombre_non_valorise_3) AS nombre_non_valorise_3, SUM(nombre_valorise) AS nombre_valorise FROM w_cp_cti_faclpp_transmis JOIN pmsi.p_mat2a_data ON w_cp_cti_faclpp_transmis.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T1V3VDMI' AND table_sequence = 1 AND line_type = 'D' AND data_mat2a[1] ILIKE lpp_code || '%' GROUP BY 1 ) subview WHERE file_code = 'T1V3VDMI' AND p_mat2a_data.oid = subview.oid ; -- Valorisation UPDATE pmsi.p_mat2a_data SET data_cti[3] = '0', data_cti[4] = '0', data_cti[5] = '0', data_cti[6] = '0', data_cti[7] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V3VDMI' AND table_sequence = 2 AND line_type IN ('D', 'F'); UPDATE pmsi.p_mat2a_data SET data_cti[3] = nombre, data_cti[4] = montant_facture, data_cti[5] = montant_tr, data_cti[6] = montant_t2a_accorde, data_cti[7] = montant_t2a_accorde - montant_facture FROM ( SELECT p_mat2a_data.oid, SUM(nombre) AS nombre, SUM(montant_facture) AS montant_facture, SUM(montant_tr) AS montant_tr, SUM(montant_t2a_accorde) AS montant_t2a_accorde FROM w_cp_cti_faclpp JOIN pmsi.p_mat2a_data ON w_cp_cti_faclpp.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE pec_amo_ame='AMO' AND file_code = 'T1V3VDMI' AND table_sequence = 2 AND (line_type = 'D' AND data_mat2a[1] ILIKE lpp_code || '%' OR line_type = 'F') GROUP BY 1 ) subview WHERE file_code = 'T1V3VDMI' AND p_mat2a_data.oid = subview.oid; -- A partir de 2015, la partie des UCD dans le tableau T1V4MDAME a une colonne UCD13, on la vire -- pour n'avoir que 7 colonnes au final UPDATE pmsi.p_mat2a_data SET data_mat2a = data_mat2a[2:array_length(data_mat2a, 1)] --FROM w_cp_imports WHERE 1=1 --AND w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND line_type IN ('D','F','H') AND array_length(data_mat2a,1) = 8 AND p_mat2a_data.mat2a_import_id::text || file_code::text || table_sequence::text IN ( SELECT p_mat2a_data.mat2a_import_id::text || file_code::text || table_sequence::text FROM pmsi.p_mat2a_data JOIN w_cp_imports ON w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE 1=1 AND data_mat2a[2] ilike '%molécules onéreuses%' AND line_type = 'T' and file_code = 'T1V4MDAME' AND w_cp_imports.mat2a_annee >= 2015 ); UPDATE pmsi.p_mat2a_data SET data_cti[3] = NULL, data_cti[4] = NULL, data_cti[5] = '0', data_cti[6] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V4MDAME' AND line_type IN ('D', 'F') AND table_sequence IN (1,2); UPDATE pmsi.p_mat2a_data SET data_cti[5] = nombre, data_cti[6] = montant_facture FROM ( SELECT p_mat2a_data.oid, SUM(nombre) AS nombre, SUM(montant_facture) AS montant_facture FROM w_cp_cti_faclpp JOIN pmsi.p_mat2a_data ON w_cp_cti_faclpp.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE pec_amo_ame='AME' AND file_code = 'T1V4MDAME' AND table_sequence = 2 AND (line_type = 'D' AND data_mat2a[1] ILIKE lpp_code || '%' OR line_type = 'F') GROUP BY 1 UNION ALL SELECT p_mat2a_data.oid, SUM(nombre) AS nombre, SUM(montant_facture) AS montant_facture FROM w_cp_cti_facucd JOIN pmsi.p_mat2a_data ON w_cp_cti_facucd.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE pec_amo_ame='AME' AND file_code = 'T1V4MDAME' AND table_sequence = 1 AND (line_type = 'D' AND data_mat2a[2] = ucd_code OR line_type = 'F') AND (line_type = 'D' AND data_mat2a[3] = indication OR line_type = 'F') GROUP BY 1 ) subview WHERE file_code = 'T1V4MDAME' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. Prise en charge T2A'; -- Forfait journalier UPDATE pmsi.p_mat2a_data SET data_cti[3] = 0 FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND p_mat2a_data.file_code = 'T1V1TXR' AND p_mat2a_data.table_sequence = 2; UPDATE pmsi.p_mat2a_data SET data_cti[3] = subview.effectif FROM (SELECT mat2a_import_id, CASE WHEN p_rss.date_entree - p_rss.date_naissance <= 30 THEN 'Y' WHEN t_ghm.code IN ('28Z08Z', '28Z09Z', '28Z11Z', '28Z12Z', '28Z13Z', '28Z18Z', '28Z19Z', '28Z20Z', '28Z21Z', '28Z22Z', '28Z23Z', '28Z24Z', '28Z25Z') THEN 'Y' WHEN p_rss.oid IN (SELECT rss_id FROM pmsi.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA') ) THEN 'Y' WHEN t_pec.code IN ('2') THEN 'Z' WHEN duree_sejour = 0 THEN 'X' WHEN w_cp_imports.mat2a_annee < 2015 AND t_ghm.code LIKE '15%' THEN 'X' WHEN t_ghm.code LIKE '28%' THEN 'X' WHEN t_ghm.code in ('23K02Z' , '14Z08Z') THEN 'X' ELSE t_pec_fj.code END AS pec_fj, CASE WHEN p_rss.date_entree - p_rss.date_naissance <= 30 THEN 'E' WHEN t_ghm.code IN ('28Z08Z', '28Z09Z', '28Z11Z', '28Z12Z', '28Z13Z', '28Z18Z', '28Z19Z', '28Z20Z', '28Z21Z', '28Z22Z', '28Z23Z', '28Z24Z', '28Z25Z') THEN 'X' WHEN p_rss.oid IN (SELECT rss_id FROM pmsi.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA') ) THEN 'X' WHEN t_pec.code IN ('2') THEN 'A' WHEN duree_sejour = 0 THEN 'X' WHEN w_cp_imports.mat2a_annee < 2015 AND t_ghm.code LIKE '15%' THEN 'X' WHEN t_ghm.code LIKE '28%' THEN 'X' WHEN t_ghm.code in ('23K02Z' , '14Z08Z') THEN 'X' WHEN t_pec_fj.code = 'X' THEN 'X' WHEN t_pec_fj.code = 'L' AND mat2a_annee >= 2016 THEN 'A' WHEN t_pec_fj.code = 'L' AND mat2a_annee < 2016 THEN 'E' WHEN t_pec_fj.code = 'R' THEN 'E' WHEN w_cp_imports.mat2a_annee < 2015 AND p_vidhosp.nature_pec IN ('13','30','41') THEN 'E' WHEN w_cp_imports.mat2a_annee > 2014 AND p_vidhosp.nature_pec IN ('13','41') THEN 'E' WHEN t_pec_fj.code = 'A' THEN 'A' ELSE '' END AS pec_reel_fj, count(*) AS effectif FROM pmsi.p_rss JOIN pmsi.p_rsf_total ON p_rsf_total.rss_id = p_rss.oid JOIN base.t_pec ON code_pec_id = t_pec.oid JOIN base.t_pec_fj ON code_pec_fj_id = t_pec_fj.oid JOIN pmsi.p_vidhosp ON p_vidhosp.rss_id = p_rss.oid JOIN pmsi.t_ghm on ghm_id = t_ghm.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id WHERE en_cours = '0' AND ghm_id <> 0 AND traitement_epmsi IN ('30') GROUP BY 1,2,3 ORDER BY 1,2,3) subview WHERE subview.mat2a_import_id = p_mat2a_data.mat2a_import_id AND p_mat2a_data.file_code = 'T1V1TXR' AND p_mat2a_data.table_sequence = 2 AND ( data_mat2a[1] LIKE 'A:%' AND pec_fj = 'A' OR data_mat2a[1] LIKE 'L:%' AND pec_fj = 'L' OR data_mat2a[1] LIKE 'R:%' AND pec_fj = 'R' OR data_mat2a[1] LIKE '%FJ non applicable%' AND pec_fj = 'X' OR data_mat2a[1] LIKE '%Nouveaux-nés%' AND pec_fj = 'Y' OR data_mat2a[1] LIKE '%Séjours en attente%' AND pec_fj = 'Z' ) AND ( data_mat2a[2] ILIKE '%FJ à la charge de l''assuré%' AND pec_reel_fj = 'A' OR data_mat2a[2] ILIKE '%exonération du FJ%' AND pec_reel_fj = 'E' OR data_mat2a[2] ILIKE '%FJ non applicable%' AND pec_reel_fj = 'X' ); -- Taux de prise en charge UPDATE pmsi.p_mat2a_data SET data_cti[3] = subview.effectif FROM ( SELECT mat2a_import_id, to_char(p_rsf_total.taux_remboursement,'FM990') || '%' || CASE WHEN p_rss.date_entree - p_rss.date_naissance <= 30 THEN ' forcé (*)' WHEN t_ghm.code IN ('28Z08Z', '28Z09Z', '28Z11Z', '28Z12Z', '28Z13Z', '28Z18Z', '28Z19Z', '28Z20Z', '28Z21Z', '28Z22Z', '28Z23Z', '28Z24Z', '28Z25Z') THEN ' forcé (*)' WHEN p_rss.oid IN (SELECT rss_id FROM pmsi.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA') ) THEN ' forcé (*)' ELSE CASE WHEN p_rsf_total.code_pec IN ('2') THEN ' en attente de taux' ELSE '' END END AS taux, CASE WHEN montant_tm <> 0 THEN 'montant TM numérique' else 'montant TM non numérique ou à 0' END AS montant_tm, count(*) AS effectif, MAX(p_rss.oid) FROM pmsi.p_rss JOIN pmsi.p_rsf_total ON p_rsf_total.rss_id = p_rss.oid JOIN pmsi.p_vidhosp ON p_vidhosp.rss_id = p_rss.oid JOIN pmsi.t_ghm on ghm_id = t_ghm.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id WHERE en_cours = '0' AND ghm_id <> 0 AND traitement_epmsi IN ('30') GROUP BY 1,2,3 ORDER BY 1,2,3 ) subview WHERE subview.mat2a_import_id = p_mat2a_data.mat2a_import_id AND p_mat2a_data.file_code = 'T1V1TXR' AND p_mat2a_data.table_sequence = 3 AND data_mat2a[1] = subview.taux AND data_mat2a[2] = subview.montant_tm; RAISE NOTICE '%' , 'Transports 2020'; UPDATE pmsi.p_mat2a_data SET data_cti[5] = 0, data_cti[6] = 0 FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND p_mat2a_data.file_code = 'T11TRANS' AND p_mat2a_data.line_type = 'D' AND mat2a_annee <= 2020; UPDATE pmsi.p_mat2a_data SET data_cti[5] = cti_nombre, data_cti[6] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(w_cp_cti_fact2a.cti_nombre) AS cti_nombre, SUM(w_cp_cti_fact2a.cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN pmsi.p_mat2a_import ON p_mat2a_data.mat2a_import_id = p_mat2a_import.oid WHERE file_code = 'T11TRANS' AND table_sequence = 1 AND p_mat2a_import.mat2a_annee <= 2020 AND line_type = 'D' AND data_mat2a[1] ILIKE prestation_code GROUP BY 1) subview WHERE file_code = 'T11TRANS' AND p_mat2a_data.oid = subview.oid; UPDATE pmsi.p_mat2a_data SET data_cti[5] = NULL, data_cti[6] = NULL FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND p_mat2a_data.file_code = 'T11TRANS' AND p_mat2a_data.line_type = 'D' AND mat2a_annee <= 2020; RAISE NOTICE '%' , 'Transports 2021'; DROP TABLE IF EXISTS w_transports_2021; CREATE TEMP TABLE w_transports_2021 AS SELECT w_cp_imports.mat2a_import_id, t_prestations.code AS prestation_code, to_char(date_part('month',date_debut),'FM00') AS mois, count(*) AS cti_nombre, SUM(p_rsf_detail.base_remboursement) AS cti_base_remboursement FROM pmsi.p_rss JOIN pmsi.p_rsf_detail ON p_rsf_detail.rss_id = p_rss.oid JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id JOIN base.t_finess ON p_rss.finess = t_finess.code WHERE en_cours = '0' AND mat2a_annee >= 2021 AND ghm_id <> 0 AND t_prestations.code IN ('TDE', 'TDE1', 'TDE2', 'TDE3', 'TDE4', 'TDE5', 'TSE', 'TSE6', 'TSE7', 'TSE8', 'TSE9' ) AND est_ligne_rss = '1' GROUP BY 1,2,3 ; UPDATE pmsi.p_mat2a_data SET data_cti[7] = 0, data_cti[8] = 0, data_mat2a[1] = CASE WHEN data_mat2a[1] = 'TDE' OR data_mat2a[1] = 'TSE' THEN data_mat2a[1] || substr(data_mat2a[3],2,1) ELSE data_mat2a[1] END, data_mat2a[2] = CASE WHEN data_mat2a[1] LIKE 'TDE%' THEN 'Transport définitif ' || data_mat2a[3] WHEN data_mat2a[1] LIKE 'TSE%' THEN 'Transport provisoire ' || data_mat2a[3] ELSE data_mat2a[2] END FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND p_mat2a_data.file_code = 'T11TRANS' AND p_mat2a_data.line_type = 'D' AND mat2a_annee >= 2021; UPDATE pmsi.p_mat2a_data SET data_cti[7] = cti_nombre, data_cti[8] = cti_base_remboursement FROM w_transports_2021 WHERE file_code = 'T11TRANS' AND p_mat2a_data.mat2a_import_id = w_transports_2021.mat2a_import_id AND data_mat2a[1] = w_transports_2021.prestation_code AND data_mat2a[4] = w_transports_2021.mois ; UPDATE pmsi.p_mat2a_data SET data_cti[7] = cti_nombre, data_cti[8] = cti_base_remboursement FROM (SELECT mat2a_import_id, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement FROM w_transports_2021 GROUP BY 1) w_transports_2021 WHERE file_code = 'T11TRANS' AND p_mat2a_data.mat2a_import_id = w_transports_2021.mat2a_import_id AND p_mat2a_data.line_type = 'F' ; UPDATE pmsi.p_mat2a_data SET data_cti[3] = 0, data_cti[4] = 0, data_cti[6] = 0, data_cti[7] = 0 FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND p_mat2a_data.file_code = 'T1V1TRANS' AND table_sequence = 1 AND p_mat2a_data.line_type IN ('D','F') AND mat2a_annee >= 2021; UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_nombre_valorise, data_cti[6] = cti_base_remboursement_valorise, data_cti[7] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(w_cp_cti_fact2a.cti_nombre) AS cti_nombre, SUM(CASE WHEN traitement_epmsi = '30' THEN w_cp_cti_fact2a.cti_nombre ELSE 0 END) AS cti_nombre_valorise, SUM(CASE WHEN traitement_epmsi = '30' THEN w_cp_cti_fact2a.cti_base_remboursement ELSE 0 END) AS cti_base_remboursement_valorise, SUM(CASE WHEN traitement_epmsi = '30' THEN w_cp_cti_fact2a.cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN pmsi.p_mat2a_import ON p_mat2a_data.mat2a_import_id = p_mat2a_import.oid WHERE file_code = 'T1V1TRANS' AND table_sequence = 1 AND p_mat2a_import.mat2a_annee >= 2021 AND line_type = 'D' AND substr(data_mat2a[1],1,3) || substr(data_mat2a[2],2,1) ILIKE prestation_code GROUP BY 1) subview WHERE file_code = 'T1V1TRANS' AND p_mat2a_data.oid = subview.oid; UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_nombre_valorise, data_cti[6] = cti_base_remboursement_valorise, data_cti[7] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(w_cp_cti_fact2a.cti_nombre) AS cti_nombre, SUM(CASE WHEN traitement_epmsi = '30' THEN w_cp_cti_fact2a.cti_nombre ELSE 0 END) AS cti_nombre_valorise, SUM(CASE WHEN traitement_epmsi = '30' THEN w_cp_cti_fact2a.cti_base_remboursement ELSE 0 END) AS cti_base_remboursement_valorise, SUM(CASE WHEN traitement_epmsi = '30' THEN w_cp_cti_fact2a.cti_montant_remboursable ELSE 0 END) AS cti_montant_remboursable FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN pmsi.p_mat2a_import ON p_mat2a_data.mat2a_import_id = p_mat2a_import.oid WHERE file_code = 'T1V1TRANS' AND table_sequence = 1 AND p_mat2a_import.mat2a_annee >= 2021 AND prestation_code IN ('TDE1', 'TDE2', 'TDE3', 'TDE4', 'TDE5', 'TSE6', 'TSE7', 'TSE8', 'TSE9') AND line_type = 'F' GROUP BY 1) subview WHERE file_code = 'T1V1TRANS' AND p_mat2a_data.oid = subview.oid; -- Transports - SU UPDATE pmsi.p_mat2a_data SET data_cti[3] = 0, data_cti[4] = 0 FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND p_mat2a_data.file_code = 'T1V1TRANS' AND table_sequence = 2 AND p_mat2a_data.line_type IN ('D','F') AND mat2a_annee >= 2021; UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(w_cp_cti_fact2a.cti_nombre) AS cti_nombre, SUM(w_cp_cti_fact2a.cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN pmsi.p_mat2a_import ON p_mat2a_data.mat2a_import_id = p_mat2a_import.oid WHERE file_code = 'T1V1TRANS' AND table_sequence = 2 AND p_mat2a_import.mat2a_annee >= 2021 AND traitement_epmsi = '33' AND line_type = 'D' AND substr(data_mat2a[1],1,3) || substr(data_mat2a[2],2,1) ILIKE prestation_code GROUP BY 1) subview WHERE file_code = 'T1V1TRANS' AND p_mat2a_data.oid = subview.oid; UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(w_cp_cti_fact2a.cti_nombre) AS cti_nombre, SUM(w_cp_cti_fact2a.cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_fact2a JOIN pmsi.p_mat2a_data ON w_cp_cti_fact2a.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN pmsi.p_mat2a_import ON p_mat2a_data.mat2a_import_id = p_mat2a_import.oid WHERE file_code = 'T1V1TRANS' AND table_sequence = 2 AND p_mat2a_import.mat2a_annee >= 2021 AND traitement_epmsi = '33' AND prestation_code IN ('TDE1', 'TDE2', 'TDE3', 'TDE4', 'TDE5', 'TSE6', 'TSE7', 'TSE8', 'TSE9') AND line_type = 'F' GROUP BY 1) subview WHERE file_code = 'T1V1TRANS' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL.'; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cp_cti_facrsf') THEN DROP TABLE IF EXISTS w_cp_cti_facrsf; CREATE TEMP TABLE w_cp_cti_facrsf ( import_id bigint, mat2a_import_id bigint, mat2a_annee numeric, dmt text, type_ligne text, prestation_chapitre text, prestation_code text, prestation_id bigint, code_pec text, prix_unitaire numeric, cti_nombre numeric(13,2), cti_base_remboursement numeric(13,2), cti_base_remboursement_sauf_transition numeric(13,2), cti_montant_remboursable numeric(13,2), cti_montant_remboursable_fides numeric(13,2), cti_montant_remboursable_nonfides numeric(13,2), est_valorise integer ); END IF; TRUNCATE w_cp_cti_facrsf; -- Valorisé INSERT INTO w_cp_cti_facrsf SELECT p_rss.import_id, mat2a_import_id, mat2a_annee, dmt, p_rsf_detail.type AS type_ligne, ''::text AS prestation_chapitre, t_prestations.code AS prestation_code, prestation_id, CASE WHEN traitement_epmsi = '30' THEN '1' ELSE '0' END AS code_pec, prix_unitaire, SUM(p_rsf_detail.nombre * p_rsf_detail.coefficient) AS cti_nombre, SUM(p_rsf_detail.base_remboursement) AS cti_base_remboursement, SUM(p_rsf_detail.base_remboursement_sauf_transition) AS cti_base_remboursement_sauf_transition, SUM(p_rsf_detail.sejour_remboursable) AS cti_montant_remboursable, SUM(CASE WHEN p_rsf_detail.fides_detail = 1 THEN p_rsf_detail.sejour_remboursable ELSE 0 END) AS cti_montant_remboursable_fides, SUM(CASE WHEN p_rsf_detail.fides_detail <> 1 THEN p_rsf_detail.sejour_remboursable ELSE 0 END) AS cti_montant_remboursable_nonfides, 1 as est_valorise FROM pmsi.p_rss JOIN pmsi.p_rsf_detail ON p_rsf_detail.rss_id = p_rss.oid JOIN pmsi.p_rsf_total ON p_rsf_total.rss_id = p_rss.oid JOIN base.t_motif_non_facturation ON motif_non_facturation_id = t_motif_non_facturation.oid JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id WHERE en_cours = '0' AND ghm_id = 0 AND est_ligne_rss = '1' GROUP BY 1,2,3,4,5,6,7,8,9,10; -- Non Valorisé (on ignore les hors période) INSERT INTO w_cp_cti_facrsf SELECT p_rss.import_id, mat2a_import_id, mat2a_annee, dmt, p_rsf_detail.type AS type_ligne, ''::text AS prestation_chapitre, t_prestations.code AS prestation_code, prestation_id, '0' AS code_pec, prix_unitaire, SUM(p_rsf_detail.nombre * p_rsf_detail.coefficient) AS cti_nombre, SUM(p_rsf_detail.base_remboursement) AS cti_base_remboursement, SUM(p_rsf_detail.base_remboursement_sauf_transition) AS cti_base_remboursement_sauf_transition, SUM(p_rsf_detail.sejour_remboursable) AS cti_montant_remboursable, 0 as cti_montant_remboursable_fides, 0 as cti_montant_remboursable_nonfides, 0 as est_valorise FROM pmsi.p_rss JOIN pmsi.p_rsf_detail_non_valorise p_rsf_detail ON p_rsf_detail.rss_id = p_rss.oid JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.oid = p_rsf_detail.regle_id JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid JOIN w_cp_imports ON w_cp_imports.import_id = p_rss.import_id WHERE en_cours = '0' AND ghm_id = 0 AND est_ligne_rss = '1' AND (t_regles_non_valorisation.code != '16' OR t_regles_non_valorisation.code = '16' AND t_prestations.code IN ('APU', 'APC', 'APV', 'APY', 'AVY') AND mat2a_annee = 2017) GROUP BY 1,2,3,4,5,6,7,8,9,10; -- Association chapitre UPDATE w_cp_cti_facrsf SET prestation_chapitre = 'T2VVATU' WHERE prestation_code = 'ATU'; UPDATE w_cp_cti_facrsf SET prestation_chapitre = 'T2VVFFM' WHERE prestation_code = 'FFM'; UPDATE w_cp_cti_facrsf SET prestation_chapitre = 'T2VVDME' WHERE prestation_code IN ('APE','PII','AP2'); UPDATE w_cp_cti_facrsf SET prestation_chapitre = 'INNOVATION' WHERE prestation_code IN ('I01','I02','I03','I04','I05','I14','I15'); UPDATE w_cp_cti_facrsf SET prestation_chapitre = 'T2VVDME', prestation_code = 'DMI' WHERE prestation_id IN (SELECT prestation_defaut_id FROM pmsi.t_lpp) ; UPDATE w_cp_cti_facrsf SET prestation_chapitre = 'URGENCE' WHERE prestation_code IN (SELECT split_part(data_mat2a[1],' ',1) AS prestation_code FROM pmsi.p_mat2a_data WHERE file_code IN ('T2VVFU') AND line_type = 'D' GROUP BY 1); UPDATE w_cp_cti_facrsf SET prestation_chapitre = file_code FROM ( SELECT w_cp_cti_facrsf.prestation_code, file_code, est_valorise FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code IN ('T2VVNGAP','T2VVCCAM','T2VVFTN','T2VVSE') AND table_sequence = 1 AND line_type = 'D' AND ( data_mat2a[1] || ' ' ILIKE prestation_code || ' %' OR (1=1 AND split_part(data_mat2a[1], ' ', 1) = split_part(prestation_code, ' ', 1) AND data_mat2a[1] LIKE ANY (ARRAY['% Férié', '% Nuit']) AND prestation_code LIKE ANY (ARRAY['% F', '% N']) ) OR data_mat2a[1] ILIKE '%participation assur%' AND data_mat2a[1] ILIKE '%18 euros%' AND prestation_code = 'PAE' OR data_mat2a[1] ILIKE '%ticket mod%' AND data_mat2a[1] ILIKE '%rateur forfaitaire%' AND prestation_code = 'PAT' ) AND prestation_chapitre = '' AND est_valorise = 1 GROUP BY 1,2,3 ORDER BY 1,2 ) subview WHERE w_cp_cti_facrsf.prestation_code = subview.prestation_code AND w_cp_cti_facrsf.est_valorise = subview.est_valorise; -- Chapitre non pris en compte WITH subview AS ( SELECT w_cp_cti_facrsf.prestation_code, file_code, est_valorise FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_seq_hpnpc ON w_cp_cti_facrsf.mat2a_import_id = w_seq_hpnpc.mat2a_import_id WHERE file_code IN ('T2QHPNPC') AND table_sequence = w_seq_hpnpc.seq_hpnpc AND line_type = 'D' AND (prestation_code ILIKE data_mat2a[1] OR prestation_code like '%**%') AND prestation_chapitre = '' AND est_valorise = 0 GROUP BY 1,2,3 ORDER BY 1,2 ) UPDATE w_cp_cti_facrsf SET prestation_chapitre = subview.file_code FROM subview WHERE w_cp_cti_facrsf.prestation_code = subview.prestation_code AND w_cp_cti_facrsf.est_valorise = subview.est_valorise; RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL. ATU.'; -- 2014 T2VVATU UPDATE pmsi.p_mat2a_data SET data_cti[3] = '0', data_cti[4] = '0', data_cti[5] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2VVATU' AND table_sequence = 1 AND line_type IN ('F'); UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_base_remboursement, data_cti[5] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T2VVATU' AND table_sequence = 1 AND line_type = 'F' AND prestation_code = 'ATU' AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VVATU' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL. FFM.'; -- 2014 T2VVFFM UPDATE pmsi.p_mat2a_data SET data_cti[3] = '0', data_cti[4] = '0', data_cti[5] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2VVFFM' AND table_sequence = 1 AND line_type IN ('F'); UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_base_remboursement, data_cti[5] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T2VVFFM' AND table_sequence = 1 AND line_type = 'F' AND prestation_code = 'FFM' AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VVFFM' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL. FTN-FTR.'; -- 2014 T2VVFTN UPDATE pmsi.p_mat2a_data SET data_cti[4] = '0', data_cti[5] = '0', data_cti[6] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2VVFTN' AND table_sequence = 1 AND line_type IN ('D', 'F'); UPDATE pmsi.p_mat2a_data SET data_cti[4] = cti_nombre, data_cti[5] = cti_base_remboursement, data_cti[6] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T2VVFTN' AND table_sequence = 1 AND (line_type = 'D' AND data_mat2a[1] ILIKE prestation_code || '%' AND data_mat2a[2] ILIKE dmt || '%' AND dmt <> '' AND data_mat2a[3] = prix_unitaire OR line_type = 'D' AND data_mat2a[1] ILIKE prestation_code || '%' AND data_mat2a[2] ILIKE 'Non renseignée' AND dmt = '' AND data_mat2a[3] = prix_unitaire OR line_type = 'F') AND prestation_chapitre = 'T2VVFTN' AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VVFTN' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL. SEH.'; -- 2014 : T2VVSE UPDATE pmsi.p_mat2a_data SET data_cti[3] = '0', data_cti[4] = '0', data_cti[5] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2VVSE' AND table_sequence = 1 AND line_type IN ('F'); UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_base_remboursement, data_cti[5] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T2VVSE' AND table_sequence = 1 AND line_type = 'F' AND prestation_chapitre = 'T2VVSE' AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VVSE' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL. CCAM.'; -- 2014 : T2VVCCAM UPDATE pmsi.p_mat2a_data SET data_cti[2] = '0', data_cti[3] = '0', data_cti[4] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2VVCCAM' AND table_sequence = 1 AND line_type IN ('D', 'F'); UPDATE pmsi.p_mat2a_data SET data_cti[2] = cti_nombre, data_cti[3] = cti_base_remboursement, data_cti[4] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T2VVCCAM' AND table_sequence = 1 AND (line_type = 'D' AND data_mat2a[1] ILIKE prestation_code || '%' OR line_type = 'F') AND prestation_chapitre = 'T2VVCCAM' AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VVCCAM' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL. NGAP.'; -- 2014 : T2VVNGAP UPDATE pmsi.p_mat2a_data SET data_cti[3] = '0', data_cti[4] = '0', data_cti[5] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2VVNGAP' AND table_sequence = 1 AND line_type IN ('D', 'F'); UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_base_remboursement, data_cti[5] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(CASE WHEN prestation_code <> 'PAT' AND prestation_code <> 'PAE' THEN cti_nombre ELSE 0 - cti_nombre END) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T2VVNGAP' AND table_sequence = 1 AND ( line_type = 'D' AND trim(substr(data_mat2a[1],1,5)) ILIKE prestation_code AND abs(base.cti_to_number(data_mat2a[2])) = prix_unitaire OR line_type = 'D' AND ( data_mat2a[1] ILIKE '%Participation assur%' AND data_mat2a[1] ILIKE '%18 euros%' OR data_mat2a[1] ILIKE '%ticket mod%' AND data_mat2a[1] ILIKE '%rateur forfaitaire%' ) AND abs(base.cti_to_number(data_mat2a[2])) = prix_unitaire AND prestation_code = 'PAT' OR line_type = 'F' ) AND prestation_chapitre = 'T2VVNGAP' AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VVNGAP' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL. APE/DMI.'; -- Numéro de table dans la page 2.V.VDME où apparaissent les prestations APE/AP2 externes IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_seq_vdme') THEN DROP TABLE IF EXISTS w_seq_vdme; CREATE TEMP TABLE w_seq_vdme (code_vdme text, seq_vdme bigint); END IF; TRUNCATE w_seq_vdme; INSERT INTO w_seq_vdme (code_vdme, seq_vdme) ( SELECT 'AP2', table_sequence FROM pmsi.p_mat2a_data WHERE 1=1 AND file_code = 'T2VVDME' AND line_type = 'T' AND data_mat2a[2] like '%Valorisation des prestations AP2%' UNION SELECT 'APE', table_sequence FROM pmsi.p_mat2a_data WHERE 1=1 AND file_code = 'T2VVDME' AND line_type = 'T' AND data_mat2a[1] like '%Valorisation des prestations APE (DM)%' ) ; -- 2014 T2VVDME UPDATE pmsi.p_mat2a_data SET data_cti[3] = '0', data_cti[4] = '0', data_cti[5] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2VVDME' AND table_sequence = ANY (ARRAY(SELECT seq_vdme FROM w_seq_vdme)::bigint[]) AND line_type IN ('F'); UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_base_remboursement, data_cti[5] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id, w_seq_vdme WHERE file_code = 'T2VVDME' AND w_seq_vdme.code_vdme = 'APE' AND table_sequence = w_seq_vdme.seq_vdme AND line_type = 'F' AND prestation_code = 'APE' AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VVDME' AND p_mat2a_data.oid = subview.oid; UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_base_remboursement, data_cti[5] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id, w_seq_vdme WHERE file_code = 'T2VVDME' AND w_seq_vdme.code_vdme = 'AP2' AND table_sequence = w_seq_vdme.seq_vdme AND line_type = 'F' AND prestation_code = 'AP2' AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VVDME' AND p_mat2a_data.oid = subview.oid; RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL. Lettres cle non prises en charge.'; UPDATE pmsi.p_mat2a_data SET data_cti[2] = NULL, data_cti[3] = '0', data_cti[4] = CASE WHEN w_cp_imports.mat2a_annee >= 2020 THEN NULL ELSE '0' END, data_cti[5] = CASE WHEN w_cp_imports.mat2a_annee >= 2020 THEN NULL ELSE '0' END FROM w_cp_imports JOIN w_seq_hpnpc ON w_cp_imports.mat2a_import_id = w_seq_hpnpc.mat2a_import_id WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2QHPNPC' AND table_sequence = w_seq_hpnpc.seq_hpnpc AND line_type IN ('D', 'F'); UPDATE pmsi.p_mat2a_data SET data_cti[3] = cti_nombre, data_cti[4] = cti_base_remboursement, data_cti[5] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_nombre) AS cti_nombre, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id JOIN w_seq_hpnpc ON w_cp_cti_facrsf.mat2a_import_id = w_seq_hpnpc.mat2a_import_id WHERE file_code = 'T2QHPNPC' AND table_sequence = w_seq_hpnpc.seq_hpnpc AND (line_type = 'D' AND (prestation_code ILIKE data_mat2a[1] OR prestation_code ILIKE '%**%') AND data_mat2a[2] = prix_unitaire OR line_type = 'F') AND prestation_chapitre = 'T2QHPNPC' GROUP BY 1 ) subview WHERE file_code = 'T2QHPNPC' AND p_mat2a_data.oid = subview.oid; -- Les montants Mat2a sont faux, il ne faut pas d'erreur si nombre identique UPDATE pmsi.p_mat2a_data SET data_cti[4] = data_mat2a[4], data_cti[5] = data_mat2a[5] FROM w_seq_hpnpc WHERE w_seq_hpnpc.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2QHPNPC' AND table_sequence = w_seq_hpnpc.seq_hpnpc AND line_type IN ('D', 'F') AND round(base.cti_to_number(data_cti[3]),0) = round(base.cti_to_number(data_mat2a[3]),0); RAISE NOTICE '%' , 'Cumuls CTI. Facturation RAFAEL. Synthese'; -- 2014 : T2VRAEM UPDATE pmsi.p_mat2a_data SET data_cti[2] = '0', data_cti[3] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2VRAEM' AND table_sequence = 1 AND line_type IN ('D', 'F') AND ( data_mat2a[1] = 'ATU' OR data_mat2a[1] = 'FFM' OR data_mat2a[1] = 'FTN' OR data_mat2a[1] = 'CCAM' OR data_mat2a[1] = 'SE' OR data_mat2a[1] = 'NGAP' OR data_mat2a[1] = 'AP2' OR data_mat2a[1] = 'DMI' OR data_mat2a[1] = 'MED' OR data_mat2a[1] = 'MOP' OR data_mat2a[1] = 'INNOVATION' OR data_mat2a[1] = 'URGENCE' ); UPDATE pmsi.p_mat2a_data SET data_cti[2] = cti_base_remboursement, data_cti[3] = cti_montant_remboursable FROM ( SELECT p_mat2a_data.oid, SUM(cti_base_remboursement) AS cti_base_remboursement, SUM(cti_montant_remboursable) AS cti_montant_remboursable FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T2VRAEM' AND table_sequence = 1 AND ( prestation_chapitre = 'T2VVATU' AND data_mat2a[1] = 'ATU' OR prestation_chapitre = 'T2VVFFM' AND data_mat2a[1] = 'FFM' OR prestation_chapitre = 'T2VVFTN' AND data_mat2a[1] = 'FTN' OR prestation_chapitre = 'T2VVCCAM' AND data_mat2a[1] = 'CCAM' OR prestation_chapitre = 'T2VVSE' AND data_mat2a[1] = 'SE' OR prestation_chapitre = 'T2VVNGAP' AND data_mat2a[1] = 'NGAP' OR prestation_chapitre = 'T2VVDME' AND data_mat2a[1] = 'DMI' AND prestation_code = 'DMI' OR prestation_chapitre = 'T2VVDME' AND data_mat2a[1] = 'AP2' OR data_mat2a[1] = 'MOP' AND prestation_code = 'MOPHNG' OR prestation_chapitre = 'INNOVATION' AND data_mat2a[1] = 'INNOVATION'OR prestation_chapitre = 'URGENCE' AND data_mat2a[1] = 'URGENCE' ) AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VRAEM' AND p_mat2a_data.oid = subview.oid; -- Tableau T1V1CP (OQN) UPDATE pmsi.p_mat2a_data SET data_cti = NULL FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T1V1CP' AND table_sequence = 2 AND ( line_type = 'D' OR line_type = 'F' AND data_mat2a[1] ILIKE 'lib' ); UPDATE pmsi.p_mat2a_data SET data_cti[4] = cti_base_remboursement FROM ( SELECT p_mat2a_data.oid, SUM(w_cp_cti_facrsf.cti_base_remboursement_sauf_transition) AS cti_base_remboursement FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T1V1CP' AND table_sequence = 2 AND ( line_type = 'D' AND data_mat2a[1] ILIKE prestation_code OR line_type = 'F' AND data_mat2a[1] ILIKE 'lib' ) GROUP BY 1) subview WHERE file_code = 'T1V1CP' AND p_mat2a_data.oid = subview.oid; -- Création arrete versement DELETE FROM pmsi.p_mat2a_data USING w_cp_imports WHERE p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id AND file_code = 'VERSEMENT'; INSERT INTO pmsi.p_mat2a_data ( mat2a_import_id, file_code, table_sequence, row_sequence, line_type, data_mat2a, data_cti) SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 0, 'T', ARRAY[replace(data_mat2a[1],'1.V.1.RAV','VERSEMENT'), 'Arrété versement', data_mat2a[3]] AS data_mat2a, data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T1V1RAV' AND table_sequence = 1 AND line_type IN ('T'); INSERT INTO pmsi.p_mat2a_data ( mat2a_import_id, file_code, table_sequence, row_sequence, line_type, data_mat2a, data_cti) SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 0, 'H', ARRAY['Rubrique', 'Montant versé'] AS data_mat2a, data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T1V1RAV' AND table_sequence = 1 AND line_type IN ('H'); INSERT INTO pmsi.p_mat2a_data ( mat2a_import_id, file_code, table_sequence, row_sequence, line_type, data_mat2a, data_cti) SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 1, 'D', ARRAY['GHS y compris suppléments',data_mat2a[6]] AS data_mat2a, ARRAY[NULL::text,data_cti[6]] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T1V1RAV' AND table_sequence = 1 AND data_mat2a[1] ILIKE '%Total valorisation%' UNION SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 2, 'D', ARRAY['FFM',data_mat2a[3]] AS data_mat2a, ARRAY[NULL::text,data_cti[3]] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T2VRAEM' AND table_sequence = 1 AND line_type = 'D' AND data_mat2a[1] = 'FFM' UNION SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 3, 'D', ARRAY['IVG',data_mat2a[4]] AS data_mat2a, ARRAY[NULL::text,data_cti[4]] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T1V1VIVG' AND table_sequence = 1 AND line_type = 'F' UNION SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 4, 'D', ARRAY['Actes et consultations externes',SUM(base.cti_to_number(data_mat2a[3]))::text] AS data_mat2a, ARRAY[NULL::text,SUM(base.cti_to_number(data_cti[3]))::text] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T2VRAEM' AND table_sequence = 1 AND line_type = 'D' AND data_mat2a[1] <> 'SE' AND data_mat2a[1] <> 'FFM' GROUP BY 1 UNION SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 5, 'D', ARRAY['Forfait sécurité et environnement hospitalier',data_mat2a[3]] AS data_mat2a, ARRAY[NULL::text,data_cti[3]] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T2VRAEM' AND table_sequence = 1 AND line_type = 'D' AND data_mat2a[1] = 'SE' ORDER BY 1,4; INSERT INTO pmsi.p_mat2a_data ( mat2a_import_id, file_code, table_sequence, row_sequence, line_type, data_mat2a, data_cti) SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 9, 'F', ARRAY['Total Prestations d''hospitalisation',SUM(base.cti_to_number(data_mat2a[2]))::text] AS data_mat2a, ARRAY[NULL::text,SUM(base.cti_to_number(data_cti[2]))::text] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'VERSEMENT' AND table_sequence = 1 AND line_type = 'D' GROUP BY 1; INSERT INTO pmsi.p_mat2a_data ( mat2a_import_id, file_code, table_sequence, row_sequence, line_type, data_mat2a, data_cti) SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 11, 'D', ARRAY['Médicaments',data_mat2a[6]] AS data_mat2a, ARRAY[NULL::text,data_cti[6]] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T1V2VMED' AND table_sequence = 2 AND line_type = 'F' UNION SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 12, 'D', ARRAY['DMI',data_mat2a[6]] AS data_mat2a, ARRAY[NULL::text,data_cti[6]] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T1V3VDMI' AND table_sequence = 2 AND line_type = 'F' UNION SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 21, 'D', ARRAY['Activité AME',data_mat2a[2]] AS data_mat2a, ARRAY[NULL::text,data_cti[2]] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'T1V4RAME' AND table_sequence = 4 AND data_mat2a[1] ILIKE '%Total valorisation%' ORDER BY 1,4; INSERT INTO pmsi.p_mat2a_data ( mat2a_import_id, file_code, table_sequence, row_sequence, line_type, data_mat2a, data_cti) SELECT w_cp_imports.mat2a_import_id, 'VERSEMENT', 1, 99, 'F', ARRAY['Total Général',SUM(base.cti_to_number(data_mat2a[2]))::text] AS data_mat2a, ARRAY[NULL::text,SUM(base.cti_to_number(data_cti[2]))::text] AS data_cti FROM pmsi.p_mat2a_data JOIN w_cp_imports ON p_mat2a_data.mat2a_import_id = w_cp_imports.mat2a_import_id WHERE file_code = 'VERSEMENT' AND table_sequence = 1 AND line_type = 'D' GROUP BY 1; -- 2014 : T2VFIDES UPDATE pmsi.p_mat2a_data SET data_cti[4] = '0', data_cti[5] = '0' FROM w_cp_imports WHERE w_cp_imports.mat2a_import_id = p_mat2a_data.mat2a_import_id AND file_code = 'T2VFIDES' AND table_sequence = 2 AND line_type IN ('D'); UPDATE pmsi.p_mat2a_data SET data_cti[4] = cti_montant_remboursable_nonfides, data_cti[5] = cti_montant_remboursable_fides FROM ( SELECT p_mat2a_data.oid, SUM(cti_montant_remboursable_fides) AS cti_montant_remboursable_fides, SUM(cti_montant_remboursable_nonfides) AS cti_montant_remboursable_nonfides FROM w_cp_cti_facrsf JOIN pmsi.p_mat2a_data ON w_cp_cti_facrsf.mat2a_import_id = p_mat2a_data.mat2a_import_id WHERE file_code = 'T2VFIDES' AND table_sequence = 2 AND line_type IN ('D') AND ( prestation_code <> 'MOP' AND prestation_code ILIKE trim(split_part(data_mat2a[1],' ',1)) || '%' OR prestation_chapitre = 'T2VVCCAM' AND data_mat2a[1] = 'CCAM' OR prestation_chapitre = 'T2VVNGAP' AND data_mat2a[1] = 'NGAP' OR prestation_chapitre = 'T2VVFTN' AND data_mat2a[1] = 'FTN' OR prestation_code = 'MOPHNG' AND data_mat2a[1] = 'MOP' OR prestation_chapitre = 'INNOVATION' AND data_mat2a[1] = 'INNOVATION' OR prestation_chapitre = 'URGENCE' AND data_mat2a[1] = 'URGENCE' ) AND code_pec = '1' GROUP BY 1 ) subview WHERE file_code = 'T2VFIDES' AND p_mat2a_data.oid = subview.oid; -- Mise à jour des classes et listes DROP TABLE IF EXISTS w_prestations; CREATE TEMP TABLE w_prestations AS SELECT t_prestations.code, t_prestations.oid AS prestation_id, CASE file_code WHEN 'T2VVFTN'::text THEN '14' WHEN 'T2VVSE'::text THEN '16' WHEN 'T2VVCCAM'::text THEN '15' WHEN 'T2VVNGAP'::text THEN '17' WHEN 'T2VVFU'::text THEN '26' ELSE '' END AS prestation_section_code FROM pmsi.t_prestations JOIN ( SELECT file_code, CASE WHEN data_mat2a[1] ILIKE 'participation assu%' THEN 'PAE' WHEN data_mat2a[1] ILIKE 'ticket mod%' THEN 'PAT' WHEN data_mat2a[1] LIKE 'FSD %' THEN 'FSD' WHEN substr(data_mat2a[1],5,1) IN ('F','N') THEN left(data_mat2a[1],5) ELSE split_part(data_mat2a[1],' ',1) END AS prestation_code, 0::bigint AS prestation_id FROM pmsi.p_mat2a_data WHERE file_code IN ('T2VVCCAM','T2VVNGAP','T2VVFTN','T2VVSE','T2VVFU') AND line_type = 'D' GROUP BY 1,2 ORDER BY 1,2 ) subview ON t_prestations.code = subview.prestation_code ; INSERT INTO w_prestations SELECT t_prestations.code, t_prestations.oid AS prestation_id, '23' AS prestation_section_code FROM pmsi.t_prestations WHERE code = 'MOPHNG' ; DELETE FROM pmsi.t_classes_sections_elements USING ( SELECT section_id, to_id FROM w_prestations JOIN (SELECT t_classes_sections.code AS section_code, section_id, to_id FROM pmsi.t_classes JOIN pmsi.t_classes_sections ON classe_id = t_classes.oid JOIN pmsi.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code = 'CTI_RAFA_P' ) subview ON prestation_id = to_id WHERE section_code <> prestation_section_code AND prestation_section_code <> '' ) subview WHERE t_classes_sections_elements.section_id = subview.section_id AND t_classes_sections_elements.to_id = subview.to_id ; INSERT INTO pmsi.t_classes_sections_elements(section_id, to_id) SELECT t_classes_sections.oid, prestation_id FROM w_prestations JOIN pmsi.t_classes_sections ON prestation_section_code = t_classes_sections.code JOIN pmsi.t_classes ON classe_id = t_classes.oid WHERE t_classes.code = 'CTI_RAFA_P' AND (t_classes_sections.oid::text || '-' || prestation_id::text) NOT IN (SELECT section_id::text || '-' || to_id::text FROm pmsi.t_classes_sections_elements) ; RETURN 'OK'; END;