'[FINESS_PRINCIPAL]' AND (1!=1 OR t_finess.texte IS DISTINCT FROM e_finess.texte OR t_finess.texte_court IS DISTINCT FROM e_finess.texte_court OR t_finess.secondaire IS DISTINCT FROM '1' ) ; SELECT base.cti_copy_table ( 'dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', 'SELECT code FROM base.t_territoires_sante WHERE oid = ( SELECT territoire_sante_id FROM base.t_finess WHERE code = ''[FINESS]'')', 'temp e_ter_code' ) ; with e_territoire_sante_id as ( SELECT oid as terr_sant_id FROM base.t_territoires_sante JOIN e_ter_code ON t_territoires_sante.code = e_ter_code.code ) UPDATE base.t_finess SET territoire_sante_id = e_territoire_sante_id.terr_sant_id FROM e_finess JOIN e_territoire_sante_id ON 1=1 WHERE 1=1 AND t_finess.code = e_finess.code AND (1!=1 OR t_finess.territoire_sante_id IS DISTINCT FROM e_territoire_sante_id.terr_sant_id ) ; INSERT INTO base.t_finess_database (finess_id, dbname, dbport, dbhost) SELECT oid, '[DBNAME]', '[DBPORT]', '[DBHOST]' FROM base.t_finess WHERE 1=1 AND code = '[FINESS]' AND oid NOT IN (SELECT finess_id FROM base.t_finess_database) ; UPDATE base.t_finess_database SET dbhost = '[DBHOST]', dbname = '[DBNAME]', dbport = '[DBPORT]' FROM base.t_finess WHERE 1=1 AND finess_id = t_finess.oid AND t_finess.code = '[FINESS]' AND (1!=1 OR dbhost IS DISTINCT FROM '[DBHOST]' OR dbname IS DISTINCT FROM '[DBNAME]' OR dbport IS DISTINCT FROM '[DBPORT]' ) ; -- Détection modifications -- SELECT base.cti_copy_table ( 'dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss.en_cours, p_rss.mois_sortie, SUM( 1 + COALESCE(p_rss.base_remboursement,0) + (COALESCE(p_rss.ca_ghs,0) + COALESCE(p_rss.ca_ghs_raac,0)) * 10 + COALESCE(p_rss.ca_exh,0) * 100 + COALESCE(p_rss.ca_exb,0) * 1000 + COALESCE(p_rss.t2a_facture,0) * 10000 + COALESCE(p_rss.dmi_facture,0) * 100000 + COALESCE(p_rss.phc_facture,0) * 1000000 + COALESCE(p_rss.import_id,0) * 10000000 + CASE WHEN p_rss.medecin_rss_id <> 0 THEN 100000000 ELSE 0 END + base.cti_to_ascii(substr(t_prestations.code,1,3)) * 1000000000 + COALESCE(p_rsf_detail.sejour_remboursable * GREATEST(p_rsf_detail.no_rum,1),0) * 10000000000 + COALESCE(base.cti_to_ascii(substr(t_actes.code, 1, 1) || substr(t_actes.code, 3, 1) || substr(t_actes.code, LENGTH(t_actes.code), 1)), 0) * 100000000000 + CASE WHEN COALESCE(p_rss_cardio.rss_id,0) <> 0 THEN 1000000000000 ELSE 0 END + CASE WHEN COALESCE(p_rss_cancero.rss_id,0) <> 0 THEN 10000000000000 ELSE 0 END ) AS key FROM pmsi.p_rss LEFT JOIN pmsi.p_rsf_detail ON p_rss.oid = p_rsf_detail.rss_id AND COALESCE(fides_detail,0) = 0 LEFT JOIN pmsi.p_rss_cardio ON p_rss.oid = p_rss_cardio.rss_id LEFT JOIN pmsi.p_rss_cancero ON p_rss.oid = p_rss_cancero.rss_id AND p_rss_cancero.cdc = ''2022'' LEFT JOIN pmsi.p_rss_actes ON p_rss.oid = p_rss_actes.rss_id LEFT JOIN pmsi.t_prestations ON t_prestations.oid = p_rss.prestation_principale_id LEFT JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id WHERE 1=1 AND p_rss.etat <> ''S'' AND p_rss.no_rss <> 0 AND p_rss.mois_sortie >= [CONSO_PMSI_ANNEE_DEBUT] GROUP BY 1,2', 'temp e_checksum' ) ; DROP TABLE IF EXISTS c_checksum ; CREATE TEMP TABLE c_checksum AS SELECT p_rss.en_cours, p_rss.mois_sortie, SUM( 1 + COALESCE(p_rss.base_remboursement,0) + (COALESCE(p_rss.ca_ghs,0) + COALESCE(p_rss.ca_ghs_raac,0)) * 10 + COALESCE(p_rss.ca_exh,0) * 100 + COALESCE(p_rss.ca_exb,0) * 1000 + COALESCE(p_rss.t2a_facture,0) * 10000 + COALESCE(p_rss.dmi_facture,0) * 100000 + COALESCE(p_rss.phc_facture,0) * 1000000 + COALESCE(p_rss.import_id,0) * 10000000 + CASE WHEN p_rss.medecin_rss_id <> 0 THEN 100000000 ELSE 0 END + base.cti_to_ascii(substr(t_prestations.code,1,3)) * 1000000000 + COALESCE(p_rsf_detail.sejour_remboursable * GREATEST(p_rsf_detail.no_rum,1),0) * 10000000000 + COALESCE(base.cti_to_ascii(substr(t_actes.code, 1, 1) || substr(t_actes.code, 3, 1) || substr(t_actes.code, LENGTH(t_actes.code), 1)), 0) * 100000000000 + CASE WHEN COALESCE(p_rss_cardio.rss_id,0) <> 0 THEN 1000000000000 ELSE 0 END + CASE WHEN COALESCE(p_rss_cancero.rss_id,0) <> 0 THEN 10000000000000 ELSE 0 END ) AS key FROM pmsi.p_rss LEFT JOIN pmsi.p_rsf_detail ON p_rss.oid = p_rsf_detail.rss_id AND COALESCE(fides_detail,0) = 0 LEFT JOIN pmsi.p_rss_cardio ON p_rss.oid = p_rss_cardio.rss_id LEFT JOIN pmsi.p_rss_cancero ON p_rss.oid = p_rss_cancero.rss_id AND p_rss_cancero.cdc = '2022' LEFT JOIN pmsi.p_rss_actes ON p_rss.oid = p_rss_actes.rss_id LEFT JOIN pmsi.t_prestations ON t_prestations.oid = p_rss.prestation_principale_id LEFT JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id WHERE 1=1 AND p_rss.finess = '[FINESS]' AND p_rss.etat <> 'S' AND p_rss.no_rss <> 0 AND p_rss.mois_sortie >= [CONSO_PMSI_ANNEE_DEBUT] GROUP BY 1,2 ; INSERT INTO e_checksum SELECT c_checksum.en_cours, c_checksum.mois_sortie, NULL FROM c_checksum LEFT JOIN e_checksum ON 1=1 AND e_checksum.mois_sortie = c_checksum.mois_sortie AND e_checksum.en_cours = c_checksum.en_cours WHERE e_checksum.mois_sortie IS NULL ORDER BY c_checksum.mois_sortie; CTISELECT_PROPERTY_READ 'MOISMODIFIES', COALESCE(base.cti_group_concat(e_checksum.mois_sortie),'0') FROM e_checksum LEFT JOIN c_checksum ON 1=1 AND e_checksum.mois_sortie = c_checksum.mois_sortie AND e_checksum.en_cours = c_checksum.en_cours WHERE 1!=1 OR e_checksum.key IS DISTINCT FROM c_checksum.key OR e_checksum.mois_sortie IN ([MOISFORCES]) ; CTISELECT_PROPERTY_READ 'MOISMODIFIES_MAT2A', COALESCE(base.cti_group_concat(e_checksum.mois_sortie),'0') FROM e_checksum LEFT JOIN c_checksum ON 1=1 AND e_checksum.mois_sortie = c_checksum.mois_sortie AND e_checksum.en_cours = c_checksum.en_cours WHERE 1!=1 OR (1=1 AND e_checksum.en_cours = '0' AND e_checksum.key IS DISTINCT FROM c_checksum.key ) OR e_checksum.mois_sortie IN ([MOISFORCES]) ; CTISELECT_PROPERTY_READ 'MOISMODIFIES_ENCOURS', COALESCE(base.cti_group_concat(e_checksum.mois_sortie),'0') FROM e_checksum LEFT JOIN c_checksum ON 1=1 AND e_checksum.mois_sortie = c_checksum.mois_sortie AND e_checksum.en_cours = c_checksum.en_cours WHERE 1!=1 OR (1=1 AND e_checksum.en_cours <> '0' AND e_checksum.key IS DISTINCT FROM c_checksum.key ) OR e_checksum.mois_sortie IN ([MOISFORCES]) ; echo Mois modifiés (mat2a) : [MOISMODIFIES_MAT2A], (fil de l'eau) : [MOISMODIFIES_ENCOURS]; ]]> 0', 'temp e_cmd') ; INSERT INTO pmsi.t_cmd (code, texte, texte_court) SELECT code, texte, texte_court FROM e_cmd WHERE oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_cmd) AND oid <> 0 ; DROP TABLE IF EXISTS c_cmd ; CREATE TEMP TABLE c_cmd AS SELECT e_cmd.oid AS oid_source, coalesce(t_cmd.oid,0) AS oid FROM e_cmd LEFT JOIN pmsi.t_cmd ON e_cmd.code = t_cmd.code ; ALTER TABLE c_cmd ADD CONSTRAINT c_cmd_pkey PRIMARY KEY(oid_source) ; -- GHM5 -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte FROM pmsi.t_ghm5 WHERE oid <> 0', 'temp e_ghm5') ; INSERT INTO pmsi.t_ghm5 (code, texte) SELECT code, texte FROM e_ghm5 WHERE oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_ghm5) AND oid <> 0 ; DROP TABLE IF EXISTS c_ghm5 ; CREATE TEMP TABLE c_ghm5 AS SELECT e_ghm5.oid AS oid_source, coalesce(t_ghm5.oid,0) AS oid FROM e_ghm5 LEFT JOIN pmsi.t_ghm5 ON e_ghm5.code = t_ghm5.code ; ALTER TABLE c_ghm5 ADD CONSTRAINT c_ghm5_pkey PRIMARY KEY(oid_source) ; -- Lignes OAP -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', 'SELECT oid, code FROM pmsi.t_lignes_oap WHERE oid <> 0', 'temp e_lignes_oap') ; DROP TABLE IF EXISTS c_lignes_oap ; CREATE TEMP TABLE c_lignes_oap AS SELECT e_lignes_oap.oid AS oid_source, coalesce(t_lignes_oap.oid,0) AS oid FROM e_lignes_oap LEFT JOIN pmsi.t_lignes_oap ON e_lignes_oap.code = t_lignes_oap.code ; ALTER TABLE c_lignes_oap ADD CONSTRAINT c_lignes_oap_pkey PRIMARY KEY(oid_source) ; -- Groupes activité -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', 'SELECT * FROM pmsi.t_groupes_activite WHERE oid <> 0', 'temp e_groupes_activite') ; DROP TABLE IF EXISTS c_groupes_activite ; CREATE TEMP TABLE c_groupes_activite AS SELECT e_groupes_activite.oid AS oid_source, coalesce(t_groupes_activite.oid,0) AS oid FROM e_groupes_activite LEFT JOIN pmsi.t_groupes_activite ON e_groupes_activite.code = t_groupes_activite.code ; ALTER TABLE c_groupes_activite ADD CONSTRAINT c_groupes_activite_pkey PRIMARY KEY(oid_source) ; -- GHM -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM pmsi.t_ghm WHERE oid <> 0', 'temp e_ghm') ; INSERT INTO pmsi.t_ghm ( code, texte, mco, aso, severite, cmd_id, groupe_activite_id, ghm5_id, ligne_oap_id ) SELECT code, texte, mco, aso, severite, COALESCE(c_cmd.oid,0) AS cmd_id, COALESCE(c_groupes_activite.oid,0) AS groupe_activite_id, COALESCE(c_ghm5.oid,0) AS ghm5_id, COALESCE(c_lignes_oap.oid,0) AS ligne_oap_id FROM e_ghm LEFT JOIN c_cmd ON cmd_id = c_cmd.oid_source LEFT JOIN c_groupes_activite ON groupe_activite_id = c_groupes_activite.oid_source LEFT JOIN c_ghm5 ON ghm5_id = c_ghm5.oid_source LEFT JOIN c_lignes_oap ON ligne_oap_id = c_lignes_oap.oid_source WHERE e_ghm.oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_ghm) ; DROP TABLE IF EXISTS c_ghm ; CREATE TEMP TABLE c_ghm AS SELECT e_ghm.oid AS oid_source, coalesce(t_ghm.oid,0) AS oid FROM e_ghm LEFT JOIN pmsi.t_ghm ON e_ghm.code = t_ghm.code ; ALTER TABLE c_ghm ADD CONSTRAINT c_ghm_pkey PRIMARY KEY(oid_source) ; -- GHS -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, borne_basse, borne_haute, dms_nationale FROM pmsi.t_ghs WHERE oid <> 0', 'temp e_ghs'); INSERT INTO pmsi.t_ghs (code, texte, borne_basse, borne_haute, dms_nationale) SELECT code, texte, borne_basse, borne_haute, dms_nationale FROM e_ghs WHERE e_ghs.oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_ghs); DROP TABLE IF EXISTS c_ghs; CREATE TEMP TABLE c_ghs AS SELECT e_ghs.oid AS oid_source, coalesce(t_ghs.oid,0) AS oid FROM e_ghs LEFT JOIN pmsi.t_ghs ON e_ghs.code = t_ghs.code; ALTER TABLE c_ghs ADD CONSTRAINT c_ghs_pkey PRIMARY KEY(oid_source); -- Gestes marqueurs -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court, age_min, age_max FROM pmsi.t_gestes_marqueurs WHERE oid <> 0', 'temp e_gestes_marqueurs'); INSERT INTO pmsi.t_gestes_marqueurs (code, texte, texte_court, age_min, age_max) SELECT code, texte, texte_court, age_min, age_max FROM e_gestes_marqueurs WHERE e_gestes_marqueurs.oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_gestes_marqueurs); DROP TABLE IF EXISTS c_gestes_marqueurs; CREATE TEMP TABLE c_gestes_marqueurs AS SELECT e_gestes_marqueurs.oid AS oid_source, coalesce(t_gestes_marqueurs.oid,0) AS oid FROM e_gestes_marqueurs LEFT JOIN pmsi.t_gestes_marqueurs ON e_gestes_marqueurs.code = t_gestes_marqueurs.code; ALTER TABLE c_gestes_marqueurs ADD CONSTRAINT c_gestes_marqueurs_pkey PRIMARY KEY(oid_source); -- Regroupements CCAM -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code FROM pmsi.t_ccam_regroupements WHERE oid <> 0', 'temp e_ccam_regroupements'); DROP TABLE IF EXISTS c_ccam_regroupements; CREATE TEMP TABLE c_ccam_regroupements AS SELECT e_ccam_regroupements.oid AS oid_source, coalesce(t_ccam_regroupements.oid,0) AS oid FROM e_ccam_regroupements LEFT JOIN pmsi.t_ccam_regroupements ON e_ccam_regroupements.code = t_ccam_regroupements.code; ALTER TABLE c_ccam_regroupements ADD CONSTRAINT c_ccam_regroupements_pkey PRIMARY KEY(oid_source); -- Actes -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM pmsi.t_actes WHERE nomenclature <> ''CDAM'' AND oid <> 0', 'temp e_actes'); INSERT INTO pmsi.t_actes ( code, texte, texte_court, nomenclature, classant, ccam_regroupement_id_1, ccam_regroupement_id_4, geste_marqueur_id ) SELECT code, texte, texte_court, nomenclature, classant, COALESCE(c_ccam_regroupements_1.oid,0) AS ccam_regroupement_id_1, COALESCE(c_ccam_regroupements_4.oid,0) AS ccam_regroupement_id_4, COALESCE(c_gestes_marqueurs.oid,0) AS geste_marqueur_id FROM e_actes LEFT JOIN c_ccam_regroupements c_ccam_regroupements_1 ON ccam_regroupement_id_1 = c_ccam_regroupements_1.oid_source LEFT JOIN c_ccam_regroupements c_ccam_regroupements_4 ON ccam_regroupement_id_4 = c_ccam_regroupements_4.oid_source LEFT JOIN c_gestes_marqueurs ON geste_marqueur_id = c_gestes_marqueurs.oid_source WHERE e_actes.oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_actes); DROP TABLE IF EXISTS c_actes; CREATE TEMP TABLE c_actes AS SELECT e_actes.oid AS oid_source, coalesce(t_actes.oid,0) AS oid FROM e_actes LEFT JOIN pmsi.t_actes ON e_actes.code = t_actes.code; ALTER TABLE c_actes ADD CONSTRAINT c_actes_pkey PRIMARY KEY(oid_source); -- Prestations -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court, compteur_rsf, type_ghs, supplement FROM pmsi.t_prestations WHERE oid <> 0', 'temp e_prestations'); INSERT INTO pmsi.t_prestations (code, texte, texte_court, compteur_rsf, type_ghs, supplement) SELECT code, texte, texte_court, compteur_rsf, type_ghs, supplement FROM e_prestations WHERE e_prestations.oid <> 0 AND code <> '' AND code NOT IN (SELECT code FROM pmsi.t_prestations); DROP TABLE IF EXISTS c_prestations; CREATE TEMP TABLE c_prestations AS SELECT e_prestations.oid AS oid_source, coalesce(t_prestations.oid,0) AS oid FROM e_prestations LEFT JOIN pmsi.t_prestations ON e_prestations.code = t_prestations.code; ALTER TABLE c_prestations ADD CONSTRAINT c_prestations_pkey PRIMARY KEY(oid_source); -- Codes retour groupeur -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, type, code, texte, bloquante FROM pmsi.t_codes_retour_groupeur WHERE oid <> 0', 'temp e_codes_retour_groupeur'); INSERT INTO pmsi.t_codes_retour_groupeur (type, code, texte, bloquante) SELECT type, code, texte, bloquante FROM e_codes_retour_groupeur WHERE e_codes_retour_groupeur.oid <> 0 AND code <> '' AND type||'_'||code NOT IN (SELECT type||'_'||code FROM pmsi.t_codes_retour_groupeur); DROP TABLE IF EXISTS c_codes_retour_groupeur; CREATE TEMP TABLE c_codes_retour_groupeur AS SELECT e_codes_retour_groupeur.oid AS oid_source, coalesce(t_codes_retour_groupeur.oid,0) AS oid FROM e_codes_retour_groupeur LEFT JOIN pmsi.t_codes_retour_groupeur ON e_codes_retour_groupeur.code = t_codes_retour_groupeur.code AND e_codes_retour_groupeur.type = t_codes_retour_groupeur.type; ALTER TABLE c_codes_retour_groupeur ADD CONSTRAINT c_codes_retour_groupeur_pkey PRIMARY KEY(oid_source); -- Prise en charge du forfait journalier -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_pec_fj WHERE oid <> 0', 'temp e_pec_fj'); INSERT INTO base.t_pec_fj (code, texte, texte_court) SELECT code, texte, texte_court FROM e_pec_fj WHERE e_pec_fj.oid <> 0 AND code <> '' AND code NOT IN (SELECT code FROM base.t_pec_fj); DROP TABLE IF EXISTS c_pec_fj; CREATE TEMP TABLE c_pec_fj AS SELECT e_pec_fj.oid AS oid_source, MIN(coalesce(t_pec_fj.oid,0)) AS oid FROM e_pec_fj LEFT JOIN base.t_pec_fj ON e_pec_fj.code = t_pec_fj.code GROUP BY 1 ; ALTER TABLE c_pec_fj ADD CONSTRAINT c_pec_fj_pkey PRIMARY KEY(oid_source); -- Grands régimes -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court, code_original FROM base.t_grands_regimes WHERE oid <> 0', 'temp e_grands_regimes'); INSERT INTO base.t_grands_regimes (code, texte, texte_court, code_original) SELECT code, texte, texte_court, code_original FROM e_grands_regimes WHERE e_grands_regimes.oid <> 0 AND code <> '' AND code NOT IN (SELECT code FROM base.t_grands_regimes); DROP TABLE IF EXISTS c_grands_regimes; CREATE TEMP TABLE c_grands_regimes AS SELECT e_grands_regimes.oid AS oid_source, MIN(coalesce(t_grands_regimes.oid,0)) AS oid FROM e_grands_regimes LEFT JOIN base.t_grands_regimes ON e_grands_regimes.code = t_grands_regimes.code GROUP BY 1 ; ALTER TABLE c_grands_regimes ADD CONSTRAINT c_grands_regimes_pkey PRIMARY KEY(oid_source); -- Exonération ticket modérateur -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_exoneration_tm WHERE oid <> 0', 'temp e_exoneration_tm'); INSERT INTO base.t_exoneration_tm (code, texte, texte_court) SELECT code, texte, texte_court FROM e_exoneration_tm WHERE e_exoneration_tm.oid <> 0 AND code <> '' AND code NOT IN (SELECT code FROM base.t_exoneration_tm); DROP TABLE IF EXISTS c_exoneration_tm; CREATE TEMP TABLE c_exoneration_tm AS SELECT e_exoneration_tm.oid AS oid_source, MIN(coalesce(t_exoneration_tm.oid,0)) AS oid FROM e_exoneration_tm LEFT JOIN base.t_exoneration_tm ON e_exoneration_tm.code = t_exoneration_tm.code GROUP BY 1 ; ALTER TABLE c_exoneration_tm ADD CONSTRAINT c_exoneration_tm_pkey PRIMARY KEY(oid_source); -- Nature d'assurance -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_nature_assurance WHERE oid <> 0', 'temp e_nature_assurance'); INSERT INTO base.t_nature_assurance (code, texte, texte_court) SELECT code, texte, texte_court FROM e_nature_assurance WHERE e_nature_assurance.oid <> 0 AND code <> '' AND code NOT IN (SELECT code FROM base.t_nature_assurance WHERE code IS NOT NULL); DROP TABLE IF EXISTS c_nature_assurance; CREATE TEMP TABLE c_nature_assurance AS SELECT e_nature_assurance.oid AS oid_source, MIN(coalesce(t_nature_assurance.oid,0)) AS oid FROM e_nature_assurance LEFT JOIN base.t_nature_assurance ON e_nature_assurance.code = t_nature_assurance.code GROUP BY 1 ; ALTER TABLE c_nature_assurance ADD CONSTRAINT c_nature_assurance_pkey PRIMARY KEY(oid_source); -- Prise en charge -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_pec WHERE oid <> 0', 'temp e_pec'); INSERT INTO base.t_pec (code, texte, texte_court) SELECT code, texte, texte_court FROM e_pec WHERE e_pec.oid <> 0 AND code <> '' AND code NOT IN (SELECT code FROM base.t_pec); DROP TABLE IF EXISTS c_pec; CREATE TEMP TABLE c_pec AS SELECT e_pec.oid AS oid_source, MIN(coalesce(t_pec.oid,0)) AS oid FROM e_pec LEFT JOIN base.t_pec ON e_pec.code = t_pec.code GROUP BY 1 ; ALTER TABLE c_pec ADD CONSTRAINT c_pec_pkey PRIMARY KEY(oid_source); -- Type de contrat organisme complémentaire -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_type_contrat_oc WHERE oid <> 0', 'temp e_type_contrat_oc'); INSERT INTO base.t_type_contrat_oc (code, texte, texte_court) SELECT code, texte, texte_court FROM e_type_contrat_oc WHERE e_type_contrat_oc.oid <> 0 AND code <> '' AND code NOT IN (SELECT code FROM base.t_type_contrat_oc); DROP TABLE IF EXISTS c_type_contrat_oc; CREATE TEMP TABLE c_type_contrat_oc AS SELECT e_type_contrat_oc.oid AS oid_source, MIN(coalesce(t_type_contrat_oc.oid,0)) AS oid FROM e_type_contrat_oc LEFT JOIN base.t_type_contrat_oc ON e_type_contrat_oc.code = t_type_contrat_oc.code GROUP BY 1 ; ALTER TABLE c_type_contrat_oc ADD CONSTRAINT c_type_contrat_oc_pkey PRIMARY KEY(oid_source); -- Motif de non facturation -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_motif_non_facturation WHERE oid <> 0', 'temp e_motif_non_facturation'); INSERT INTO base.t_motif_non_facturation (code, texte, texte_court) SELECT code, texte, texte_court FROM e_motif_non_facturation WHERE e_motif_non_facturation.oid <> 0 AND code <> '' AND code NOT IN (SELECT code FROM base.t_motif_non_facturation); DROP TABLE IF EXISTS c_motif_non_facturation; CREATE TEMP TABLE c_motif_non_facturation AS SELECT e_motif_non_facturation.oid AS oid_source, MIN(coalesce(t_motif_non_facturation.oid,0)) AS oid FROM e_motif_non_facturation LEFT JOIN base.t_motif_non_facturation ON e_motif_non_facturation.code = t_motif_non_facturation.code GROUP BY 1 ; ALTER TABLE c_motif_non_facturation ADD CONSTRAINT c_motif_non_facturation_pkey PRIMARY KEY(oid_source); -- Facturation 18 euros -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_facturation_18euros WHERE oid <> 0', 'temp e_facturation_18euros'); INSERT INTO base.t_facturation_18euros (code, texte, texte_court) SELECT code, texte, texte_court FROM e_facturation_18euros WHERE e_facturation_18euros.oid <> 0 AND code <> '' AND code NOT IN (SELECT code FROM base.t_facturation_18euros); DROP TABLE IF EXISTS c_facturation_18euros; CREATE TEMP TABLE c_facturation_18euros AS SELECT e_facturation_18euros.oid AS oid_source, MIN(coalesce(t_facturation_18euros.oid,0)) AS oid FROM e_facturation_18euros LEFT JOIN base.t_facturation_18euros ON e_facturation_18euros.code = t_facturation_18euros.code GROUP BY 1 ; ALTER TABLE c_facturation_18euros ADD CONSTRAINT c_facturation_18euros_pkey PRIMARY KEY(oid_source); -- LPP -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM pmsi.t_lpp WHERE oid <> 0', 'temp e_lpp'); UPDATE pmsi.t_lpp SET texte = e_lpp.texte, texte_court = e_lpp.texte_court FROM e_lpp WHERE 1=1 AND t_lpp.oid <> 0 AND t_lpp.code = e_lpp.code AND t_lpp.texte != e_lpp.texte; INSERT INTO pmsi.t_lpp (code, texte, texte_court) SELECT code, texte, texte_court FROM e_lpp WHERE oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_lpp) AND oid <> 0; DROP TABLE IF EXISTS c_lpp; CREATE TEMP TABLE c_lpp AS SELECT e_lpp.oid AS oid_source, coalesce(t_lpp.oid,0) AS oid FROM e_lpp LEFT JOIN pmsi.t_lpp ON e_lpp.code = t_lpp.code; ALTER TABLE c_lpp ADD CONSTRAINT c_lpp_pkey PRIMARY KEY(oid_source); -- UCD -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM pmsi.t_ucd WHERE oid <> 0', 'temp e_ucd'); UPDATE pmsi.t_ucd SET texte = e_ucd.texte, texte_court = e_ucd.texte_court FROM e_ucd WHERE 1=1 AND t_ucd.oid <> 0 AND t_ucd.code = e_ucd.code AND t_ucd.texte != e_ucd.texte; INSERT INTO pmsi.t_ucd (code, texte, texte_court) SELECT code, texte, texte_court FROM e_ucd WHERE oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_ucd) AND oid <> 0; DROP TABLE IF EXISTS c_ucd; CREATE TEMP TABLE c_ucd AS SELECT e_ucd.oid AS oid_source, coalesce(t_ucd.oid,0) AS oid FROM e_ucd LEFT JOIN pmsi.t_ucd ON e_ucd.code = t_ucd.code; ALTER TABLE c_ucd ADD CONSTRAINT c_ucd_pkey PRIMARY KEY(oid_source); -- LPP DANS BASE-- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_lpp WHERE oid <> 0', 'temp base_e_lpp'); UPDATE base.t_lpp SET texte = base_e_lpp.texte, texte_court = base_e_lpp.texte_court FROM base_e_lpp WHERE 1=1 AND t_lpp.oid <> 0 AND t_lpp.code = base_e_lpp.code AND t_lpp.texte != base_e_lpp.texte; INSERT INTO base.t_lpp (code, texte, texte_court) SELECT code, texte, texte_court FROM base_e_lpp WHERE oid <> 0 AND code NOT IN (SELECT code FROM base.t_lpp) AND oid <> 0; -- UCD DANS BASE-- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_ucd WHERE oid <> 0', 'temp base_e_ucd'); UPDATE base.t_ucd SET texte = base_e_ucd.texte, texte_court = base_e_ucd.texte_court FROM base_e_ucd WHERE 1=1 AND t_ucd.oid <> 0 AND t_ucd.code = base_e_ucd.code AND t_ucd.texte != base_e_ucd.texte; INSERT INTO base.t_ucd (code, texte, texte_court) SELECT code, texte, texte_court FROM base_e_ucd WHERE oid <> 0 AND code NOT IN (SELECT code FROM base.t_ucd) AND oid <> 0; -- Types Autorisations -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT DISTINCT trim(code) as code, texte, texte_court FROM pmsi.t_types_autorisations', 'temp e_types_autorisations'); INSERT INTO pmsi.t_types_autorisations (code, texte, texte_court) SELECT code, texte, texte_court FROM e_types_autorisations WHERE 1=1 AND code IS NOT NULL AND code NOT IN (SELECT code FROM pmsi.t_types_autorisations); -- Unités médicales -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, COALESCE(trim(type_autorisation), '''') as type_autorisation, date_effet_autorisation FROM pmsi.t_unites_medicales WHERE oid <> 0', 'temp e_unites_medicales'); INSERT INTO pmsi.t_unites_medicales (code, texte, type_autorisation) SELECT e_unites_medicales.code || '_' || t_finess.oid AS code, e_unites_medicales.texte || ' (' || t_finess.code || ')', type_autorisation FROM e_unites_medicales JOIN base.t_finess ON t_finess.code = '[FINESS]' WHERE e_unites_medicales.oid <> 0 AND e_unites_medicales.code || '_' || t_finess.oid NOT IN (SELECT code FROM pmsi.t_unites_medicales) ; UPDATE pmsi.t_unites_medicales SET texte = (e_unites_medicales.texte || ' (' || t_finess.code || ')'), type_autorisation = e_unites_medicales.type_autorisation, date_effet_autorisation = e_unites_medicales.date_effet_autorisation FROM e_unites_medicales JOIN base.t_finess ON t_finess.code = '[FINESS]' WHERE e_unites_medicales.code || '_' || t_finess.oid = t_unites_medicales.code AND ( t_unites_medicales.texte IS DISTINCT FROM (e_unites_medicales.texte || ' (' || t_finess.code || ')') OR t_unites_medicales.type_autorisation IS DISTINCT FROM e_unites_medicales.type_autorisation OR t_unites_medicales.date_effet_autorisation IS DISTINCT FROM e_unites_medicales.date_effet_autorisation ); DROP TABLE IF EXISTS c_unites_medicales; CREATE TEMP TABLE c_unites_medicales AS SELECT e_unites_medicales.oid AS oid_source, coalesce(t_unites_medicales.oid,0) AS oid FROM e_unites_medicales JOIN base.t_finess ON t_finess.code = '[FINESS]' LEFT JOIN pmsi.t_unites_medicales ON e_unites_medicales.code || '_' || t_finess.oid = t_unites_medicales.code; ALTER TABLE c_unites_medicales ADD CONSTRAINT c_unites_medicales_pkey PRIMARY KEY(oid_source); -- Unités fonctionnelles -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte FROM pmsi.t_unites_fonctionnelles WHERE oid <> 0', 'temp e_unites_fonctionnelles'); INSERT INTO pmsi.t_unites_fonctionnelles (code, texte) SELECT e_unites_fonctionnelles.code || '_' || t_finess.oid AS code, e_unites_fonctionnelles.texte || ' (' || t_finess.code || ')' FROM e_unites_fonctionnelles JOIN base.t_finess ON t_finess.code = '[FINESS]' WHERE e_unites_fonctionnelles.oid <> 0 AND e_unites_fonctionnelles.code || '_' || t_finess.oid NOT IN (SELECT code FROM pmsi.t_unites_fonctionnelles) ; UPDATE pmsi.t_unites_fonctionnelles SET texte = (e_unites_fonctionnelles.texte || ' (' || t_finess.code || ')') FROM e_unites_fonctionnelles JOIN base.t_finess ON t_finess.code = '[FINESS]' WHERE e_unites_fonctionnelles.code || '_' || t_finess.oid = t_unites_fonctionnelles.code AND t_unites_fonctionnelles.texte IS DISTINCT FROM (e_unites_fonctionnelles.texte || ' (' || t_finess.code || ')'); DROP TABLE IF EXISTS c_unites_fonctionnelles; CREATE TEMP TABLE c_unites_fonctionnelles AS SELECT e_unites_fonctionnelles.oid AS oid_source, coalesce(t_unites_fonctionnelles.oid,0) AS oid FROM e_unites_fonctionnelles JOIN base.t_finess ON t_finess.code = '[FINESS]' LEFT JOIN pmsi.t_unites_fonctionnelles ON e_unites_fonctionnelles.code || '_' || t_finess.oid = t_unites_fonctionnelles.code; ALTER TABLE c_unites_fonctionnelles ADD CONSTRAINT c_unites_fonctionnelles_pkey PRIMARY KEY(oid_source); -- Modes E/S -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT trim(code) AS code, texte, texte_court FROM pmsi.t_modes_entree', 'temp e_modes_entree'); INSERT INTO pmsi.t_modes_entree (code, texte, texte_court) SELECT code, texte, texte_court FROM e_modes_entree WHERE code NOT IN (SELECT trim(code) FROM pmsi.t_modes_entree) ; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT trim(code) AS code, texte, texte_court FROM pmsi.t_modes_sortie', 'temp e_modes_sortie'); INSERT INTO pmsi.t_modes_sortie (code, texte, texte_court) SELECT code, texte, texte_court FROM e_modes_sortie WHERE code NOT IN (SELECT trim(code) FROM pmsi.t_modes_sortie) ; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT trim(code) AS code, texte, texte_court FROM pmsi.t_provenances_entree', 'temp e_provenances_entree'); INSERT INTO pmsi.t_provenances_entree (code, texte, texte_court) SELECT code, texte, texte_court FROM e_provenances_entree WHERE code NOT IN (SELECT trim(code) FROM pmsi.t_provenances_entree) ; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT trim(code) AS code, texte, texte_court FROM pmsi.t_destinations_sortie', 'temp e_destinations_sortie'); INSERT INTO pmsi.t_destinations_sortie (code, texte, texte_court) SELECT code, texte, texte_court FROM e_destinations_sortie WHERE code NOT IN (SELECT trim(code) FROM pmsi.t_destinations_sortie) ; -- Diagnostics -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, severite_fg11_code, severite_fg12_code, severite_fg13_code FROM pmsi.t_diagnostics WHERE oid <> 0', 'temp e_diagnostics'); INSERT INTO pmsi.t_diagnostics (code, texte, severite_fg11_code, severite_fg12_code, severite_fg13_code) SELECT code, texte, severite_fg11_code, severite_fg12_code, severite_fg13_code FROM e_diagnostics WHERE oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_diagnostics); DROP TABLE IF EXISTS c_diagnostics; CREATE TEMP TABLE c_diagnostics AS SELECT e_diagnostics.oid AS oid_source, coalesce(t_diagnostics.oid,0) AS oid FROM e_diagnostics LEFT JOIN pmsi.t_diagnostics ON e_diagnostics.code = t_diagnostics.code; ALTER TABLE c_diagnostics ADD CONSTRAINT c_diagnostics_pkey PRIMARY KEY(oid_source); -- Spécialités (base) -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte, texte_court FROM base.t_specialites_medecin WHERE oid <> 0', 'temp e_specialites_medecin_base'); INSERT INTO base.t_specialites_medecin (code, texte, texte_court) SELECT code, texte, texte_court FROM e_specialites_medecin_base WHERE oid <> 0 AND code NOT IN (SELECT code FROM base.t_specialites_medecin WHERE code IS NOT NULL); DROP TABLE IF EXISTS c_specialites_medecin_base; CREATE TEMP TABLE c_specialites_medecin_base AS SELECT e_specialites_medecin_base.oid AS oid_source, coalesce(t_specialites_medecin.oid,0) AS oid FROM e_specialites_medecin_base LEFT JOIN base.t_specialites_medecin ON e_specialites_medecin_base.code = t_specialites_medecin.code; ALTER TABLE c_specialites_medecin_base ADD CONSTRAINT c_specialites_medecin_base_pkey PRIMARY KEY(oid_source); -- Médecins (base) -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM base.t_medecins WHERE oid <> 0 AND code <> '''' AND oid IN (SELECT medecin_id FROM pmsi.t_medecins JOIN pmsi.p_oids ON code_table like ''medecins_%'' AND t_medecins.oid = p_oids.oid GROUP BY 1)', 'temp e_medecins_base'); INSERT INTO base.t_medecins (code, nom, prenom, numero_ordre, specialite_id) SELECT e_medecins_base.code, e_medecins_base.nom, COALESCE(e_medecins_base.prenom,''::text), e_medecins_base.numero_ordre, COALESCE(c_specialites_medecin_base.oid,0) FROM e_medecins_base LEFT JOIN c_specialites_medecin_base ON e_medecins_base.specialite_id = c_specialites_medecin_base.oid_source LEFT JOIN base.t_medecins ON e_medecins_base.nom = t_medecins.nom AND e_medecins_base.prenom = t_medecins.prenom AND e_medecins_base.numero_ordre = t_medecins.numero_ordre AND t_medecins.specialite_id = COALESCE(c_specialites_medecin_base.oid,0) WHERE e_medecins_base.oid <> 0 AND t_medecins.oid IS NULL; DROP TABLE IF EXISTS c_medecins_base; CREATE TEMP TABLE c_medecins_base AS SELECT e_medecins_base.oid AS oid_source, MIN(coalesce(t_medecins.oid,0)) AS oid FROM e_medecins_base LEFT JOIN c_specialites_medecin_base ON oid_source = e_medecins_base.specialite_id LEFT JOIN base.t_medecins ON e_medecins_base.nom = t_medecins.nom AND e_medecins_base.prenom = t_medecins.prenom AND e_medecins_base.numero_ordre = t_medecins.numero_ordre AND c_specialites_medecin_base.oid = t_medecins.specialite_id GROUP BY 1; ALTER TABLE c_medecins_base ADD CONSTRAINT c_medecins_base_pkey PRIMARY KEY(oid_source); -- Spécialités -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte FROM pmsi.t_specialites_medecin WHERE oid <> 0', 'temp e_specialites_medecin'); INSERT INTO pmsi.t_specialites_medecin (code, texte) SELECT code, texte FROM e_specialites_medecin WHERE oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_specialites_medecin); DROP TABLE IF EXISTS c_specialites_medecin; CREATE TEMP TABLE c_specialites_medecin AS SELECT e_specialites_medecin.oid AS oid_source, coalesce(t_specialites_medecin.oid,0) AS oid FROM e_specialites_medecin LEFT JOIN pmsi.t_specialites_medecin ON e_specialites_medecin.code = t_specialites_medecin.code; ALTER TABLE c_specialites_medecin ADD CONSTRAINT c_specialites_medecin_pkey PRIMARY KEY(oid_source); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code, texte FROM pmsi.t_specialites_internes_medecin WHERE oid <> 0', 'temp e_specialites_internes_medecin'); INSERT INTO pmsi.t_specialites_internes_medecin (code, texte) SELECT code, texte FROM e_specialites_internes_medecin WHERE oid <> 0 AND code NOT IN (SELECT code FROM pmsi.t_specialites_internes_medecin); DROP TABLE IF EXISTS c_specialites_internes_medecin; CREATE TEMP TABLE c_specialites_internes_medecin AS SELECT e_specialites_internes_medecin.oid AS oid_source, coalesce(t_specialites_internes_medecin.oid,0) AS oid FROM e_specialites_internes_medecin LEFT JOIN pmsi.t_specialites_internes_medecin ON e_specialites_internes_medecin.code = t_specialites_internes_medecin.code; ALTER TABLE c_specialites_internes_medecin ADD CONSTRAINT c_specialites_internes_medecin_pkey PRIMARY KEY(oid_source); -- Médecins -- DROP TABLE IF EXISTS e_medecins; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM pmsi.t_medecins WHERE oid <> 0 AND oid IN (SELECT oid FROM pmsi.p_oids WHERE code_table LIKE ''medecin_%'' GROUP BY 1)', 'temp e_medecins'); CREATE INDEX e_medecins_key ON e_medecins USING btree (temp.t_medecins_key(nom,COALESCE(prenom, ''::text))); -- correction de l'ancienne méthode (on remonte maintenant tous les médecins systématiquement) UPDATE pmsi.t_medecins SET code = e_medecins.code::text || '#'::text || upper(substr(md5(e_medecins.nom::text || COALESCE(e_medecins.prenom,''::text) || e_medecins.oid::text),1,5))::text FROM e_medecins LEFT JOIN c_specialites_medecin ON specialite_id = c_specialites_medecin.oid_source LEFT JOIN c_specialites_internes_medecin ON specialite_interne_id = c_specialites_internes_medecin.oid_source LEFT JOIN c_medecins_base ON medecin_id = c_medecins_base.oid_source WHERE temp.t_medecins_key(e_medecins.nom, COALESCE(e_medecins.prenom,''::text)) = temp.t_medecins_key(t_medecins.nom, COALESCE(t_medecins.prenom,''::text)) AND t_medecins.code = e_medecins.code AND (t_medecins.specialite_id = c_specialites_medecin.oid AND t_medecins.specialite_interne_id = c_specialites_internes_medecin.oid ) ; --maj des spécialités et references si le médecin côté consolidé n'a pas de référence auquel cas on considère que c'est surchargé dans le conso UPDATE pmsi.t_medecins SET medecin_id = c_medecins_base.oid, specialite_id = c_specialites_medecin.oid, specialite_interne_id = c_specialites_internes_medecin.oid FROM e_medecins LEFT JOIN c_medecins_base ON e_medecins.medecin_id = c_medecins_base.oid_source LEFT JOIN c_specialites_medecin ON e_medecins.specialite_id = c_specialites_medecin.oid_source LEFT JOIN c_specialites_internes_medecin ON e_medecins.specialite_interne_id = c_specialites_internes_medecin.oid_source WHERE 1=1 AND t_medecins.oid = 0 AND e_medecins.code::text || '#'::text || upper(substr(md5(e_medecins.nom::text || COALESCE(e_medecins.prenom::text,'') || e_medecins.oid::text),1,5))::text = t_medecins.code AND ( e_medecins.medecin_id <> COALESCE(c_medecins_base.oid,0) OR e_medecins.specialite_id <> c_specialites_medecin.oid OR e_medecins.specialite_interne_id <> c_specialites_internes_medecin.oid ) ; INSERT INTO pmsi.t_medecins ( code, nom, prenom, specialite_id, no_adeli, statut, medecin_reference_id, specialite_interne_id, identifiant_annuaire, medecin_id ) SELECT e_medecins.code::text || '#'::text || upper(substr(md5(nom::text || COALESCE(prenom::text, ''::text) || e_medecins.oid::text),1,5))::text, nom, COALESCE(prenom, ''::text), COALESCE(c_specialites_medecin.oid,0) AS specialite_id, no_adeli, statut, 0 AS medecin_reference_id, COALESCE(c_specialites_internes_medecin.oid,0) AS specialite_interne_id, identifiant_annuaire, COALESCE(c_medecins_base.oid,0) AS medecin_id FROM e_medecins LEFT JOIN c_specialites_medecin ON specialite_id = c_specialites_medecin.oid_source LEFT JOIN c_specialites_internes_medecin ON specialite_interne_id = c_specialites_internes_medecin.oid_source LEFT JOIN c_medecins_base ON medecin_id = c_medecins_base.oid_source WHERE e_medecins.oid <> 0 AND e_medecins.code::text || '#'::text || upper(substr(md5(nom::text || COALESCE(prenom::text, ''::text) || e_medecins.oid::text),1,5))::text NOT IN (SELECT code FROM pmsi.t_medecins) ; -- Si code unique, enlever suffixe --UPDATE pmsi.t_medecins --SET code = to_code --FROM ( -- SELECT split_part(code,'#',1) AS to_code, MAX(code) AS from_code -- FROM pmsi.t_medecins -- WHERE code like '%#%' AND -- split_part(code,'#',1) NOT IN (SELECT code FROM pmsi.t_medecins WHERE code IS NOT NULL) -- GROUP BY 1 -- HAVING count(*) = 1 --) subview --WHERE subview.from_code = t_medecins.code; DROP TABLE IF EXISTS c_medecins; CREATE TEMP TABLE c_medecins AS SELECT e_medecins.oid AS oid_source, t_medecins.oid AS oid FROM e_medecins JOIN pmsi.t_medecins ON e_medecins.code::text || '#'::text || upper(substr(md5(e_medecins.nom::text || COALESCE(e_medecins.prenom::text, ''::text) || e_medecins.oid::text),1,5))::text = t_medecins.code ; ALTER TABLE c_medecins ADD CONSTRAINT c_medecins_pkey PRIMARY KEY(oid_source); -- Codes postaux -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, code FROM base.t_codes_postaux WHERE oid <> 0', 'temp e_codes_postaux'); DROP TABLE IF EXISTS c_codes_postaux; CREATE TEMP TABLE c_codes_postaux AS SELECT e_codes_postaux.oid AS oid_source, coalesce(t_codes_postaux.oid,0) AS oid FROM e_codes_postaux LEFT JOIN base.t_codes_postaux ON e_codes_postaux.code = t_codes_postaux.code; ALTER TABLE c_codes_postaux ADD CONSTRAINT c_codes_postaux_pkey PRIMARY KEY(oid_source); ]]> '0' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ; ALTER TABLE w_rss_modifies ADD CONSTRAINT w_rss_modifies_pkey PRIMARY KEY(oid); DELETE FROM pmsi.p_identites USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_etat USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_rum USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_transferts USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_cardio USING w_rss_modifies WHERE p_rss_cardio.rss_id = w_rss_modifies.oid; DELETE FROM pmsi.p_rss_ipa USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_src USING w_rss_modifies WHERE p_rss_src.oid = w_rss_modifies.oid; DELETE FROM pmsi.p_rss_rea USING w_rss_modifies WHERE p_rss_rea.oid = w_rss_modifies.oid; DELETE FROM pmsi.p_etude_impact_cma USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_gm USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_diagnostics USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_actes USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_lpp USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_ucd USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rss_leg USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rsf_total USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_rsf_detail USING w_rss_modifies WHERE rss_id = oid; DELETE FROM pmsi.p_expert_rss_controle USING pmsi.p_rss WHERE p_rss.oid = rss_id AND p_rss.finess = '[FINESS]' ; ; DELETE FROM pmsi.p_simulation_fg2223 USING w_rss_modifies WHERE rss_id = oid ; DELETE FROM pmsi.p_simulation_fg2324 USING w_rss_modifies WHERE rss_id = oid ; DELETE FROM pmsi.p_rss_cancero USING pmsi.p_rss WHERE p_rss.oid = p_rss_cancero.rss_id AND finess = '[FINESS]'; DELETE FROM pmsi.p_rss WHERE finess = '[FINESS]' AND (p_rss.en_cours = '0' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> '0' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])); DELETE FROM pmsi.p_chiffrier WHERE finess = '[FINESS]' AND mois IN ([MOISMODIFIES]); SELECT setval('pmsi.s_rss', COALESCE(MAX(oid),0) + 1) FROM pmsi.p_rss; -- Chiffrier -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM pmsi.p_chiffrier WHERE mois IN ([MOISMODIFIES]) ', 'temp e_chiffrier' ); INSERT INTO pmsi.p_chiffrier( mois, finess, nb_rsa, ca_sejour, nb_rsa_champ_ghs, ca_sejour_champ_ghs, nb_rsa_hors_champ_ghs, ca_sejour_hors_champ_ghs, nb_rsa_en_cours_valides_champ_ghs, nb_rsa_en_cours_groupes_champ_ghs, nb_rsa_en_cours_sortis_non_groupes_champ_ghs, nb_rsa_en_cours_presents_champ_ghs, ca_sejour_en_cours_valides_champ_ghs, ca_sejour_en_cours_groupes_champ_ghs, ca_sejour_en_cours_sortis_non_groupes_champ_ghs, ca_sejour_en_cours_presents_champ_ghs) SELECT mois, '[FINESS]', SUM(nb_rsa) AS nb_rsa, SUM(ca_sejour) AS ca_sejour, SUM(nb_rsa_champ_ghs) AS nb_rsa_champ_ghs, SUM(ca_sejour_champ_ghs) AS ca_sejour_champ_ghs, SUM(nb_rsa_hors_champ_ghs) AS nb_rsa_hors_champ_ghs, SUM(ca_sejour_hors_champ_ghs) AS ca_sejour_hors_champ_ghs, SUM(nb_rsa_en_cours_valides_champ_ghs) AS nb_rsa_en_cours_valides_champ_ghs, SUM(nb_rsa_en_cours_groupes_champ_ghs) AS nb_rsa_en_cours_groupes_champ_ghs, SUM(nb_rsa_en_cours_sortis_non_groupes_champ_ghs) AS nb_rsa_en_cours_sortis_non_groupes_champ_ghs, SUM(nb_rsa_en_cours_presents_champ_ghs) AS nb_rsa_en_cours_presents_champ_ghs, SUM(ca_sejour_en_cours_valides_champ_ghs) AS ca_sejour_en_cours_valides_champ_ghs, SUM(ca_sejour_en_cours_groupes_champ_ghs) AS ca_sejour_en_cours_groupes_champ_ghs, SUM(ca_sejour_en_cours_sortis_non_groupes_champ_ghs) AS ca_sejour_en_cours_sortis_non_groupes_champ_ghs, SUM(ca_sejour_en_cours_presents_champ_ghs) AS ca_sejour_en_cours_presents_champ_ghs FROM e_chiffrier WHERE mois IN ([MOISMODIFIES]) GROUP by 1; DROP TABLE IF EXISTS e_chiffrier; -- Patients -- DROP TABLE IF EXISTS e_patients; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM pmsi.p_patients WHERE nom != '''' AND oid IN (SELECT patient_id FROM pmsi.p_rss WHERE (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS]))) ', 'temp e_patients' ); CREATE INDEX e_patients_key ON e_patients USING btree (temp.p_patients_key(e_patients.nom, e_patients.prenom, e_patients.sexe, e_patients.date_naissance)); INSERT INTO pmsi.p_patients (finess, nom, prenom, sexe, date_naissance) SELECT '[FINESS]', UPPER(e_patients.nom) as nom, UPPER(e_patients.prenom) as prenom, e_patients.sexe, e_patients.date_naissance FROM e_patients LEFT JOIN pmsi.p_patients ON temp.p_patients_key(e_patients.nom, e_patients.prenom, e_patients.sexe, e_patients.date_naissance) = temp.p_patients_key(p_patients.nom, p_patients.prenom, p_patients.sexe, p_patients.date_naissance) WHERE p_patients.oid IS NULL; DROP TABLE IF EXISTS c_patients; CREATE TEMP TABLE c_patients AS SELECT e_patients.oid AS oid_source, MAX(coalesce(p_patients.oid,0)) AS oid FROM e_patients LEFT JOIN pmsi.p_patients ON temp.p_patients_key(e_patients.nom, e_patients.prenom, e_patients.sexe, e_patients.date_naissance) = temp.p_patients_key(p_patients.nom, p_patients.prenom, p_patients.sexe, p_patients.date_naissance) GROUP BY 1; ALTER TABLE c_patients ADD CONSTRAINT c_patients_pkey PRIMARY KEY(oid_source); -- RSS -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM pmsi.p_rss WHERE (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) AND etat <> ''S'' AND p_rss.no_rss <> 0 ', 'temp e_rss' ); UPDATE e_rss SET no_rss = 0-oid WHERE no_rss = 0 ; INSERT INTO pmsi.p_rss( no_patient, finess, no_rss, version_groupage, date_naissance, sexe, date_entree, date_sortie, mode_entree, provenance, mode_sortie, destination, code_postal, poids_bebe, igs2, cma, groupe_ghm, duree_sejour, nb_rsa, age, supprime, date_import, nb_rum, secteur, no_sejour_administratif, nb_seances, ghm_fg9, ghm_id, medecin_rss_id, ghs_id, mois_sortie, diagnostic_principal_id, diagnostic_relie_id, ghm_production_id, no_rum_principal, unite_medicale_principale_id, oid, import_id, etat, acte_principal_id, code_postal_id, patient_id, prestation_principale_id, severite_fg11_simulation_code, en_cours, en_cours_etat, base_remboursement, sejour_facture, honoraires_factures, t2a_facture, dmi_facture, phc_facture, ca_ghs_theorique, nb_ghs, ca_ghs, nb_exb, ca_exb, nb_exh, ca_exh, nb_si, ca_si, nb_sur, ca_sur, nb_rea, ca_rea, nb_neonat, ca_neonat, traitement_epmsi, code_retour_groupage, comite_medical_id, rehosp_meme_ghm, from_oid, forfait_facture, age_gestationnel, date_dernieres_regles, confirmation_codage, type_machine_rdth, type_dosimetrie, numero_innovation, nombre_ivg_anterieures, annee_ivg_precedente, nombre_naissances_vivantes_anterieures, avec_anesthesie, nb_ghsmin, conversion_hp_hc_id, raac_id, rescrit_tarif_id, adm_prod_reshospi_id, contexte_pat_id, nb_intervention_id, ca_ghs_raac, np_id, passage_urgences_code ) SELECT no_patient, '[FINESS]' AS finess, no_rss, version_groupage, date_naissance, sexe, date_entree, date_sortie, mode_entree, provenance, mode_sortie, destination, code_postal, poids_bebe, igs2, cma, groupe_ghm, duree_sejour, nb_rsa, age, supprime, date_import, nb_rum, secteur, no_sejour_administratif, nb_seances, ghm_fg9, COALESCE(c_ghm_r.oid,0) AS ghm_id, COALESCE(c_medecins.oid,0) AS medecin_rss_id, COALESCE(c_ghs.oid,0) AS ghs_id, mois_sortie, COALESCE(c_diagnostics_p.oid,0) AS diagnostic_principal_id, COALESCE(c_diagnostics_r.oid,0) AS diagnostic_relie_id, COALESCE(c_ghm_p.oid,0) AS ghm_production_id, no_rum_principal, COALESCE(c_unites_medicales.oid,0) AS unite_medicale_principale_id, nextval('pmsi.s_rss'::regclass) AS oid, import_id, etat, COALESCE(c_actes.oid,0) AS acte_principal_id, COALESCE(c_codes_postaux.oid,0) AS code_postal_id, COALESCE(c_patients.oid,0) AS patient_id, COALESCE(c_prestations.oid,0) AS prestation_principale_id, severite_fg11_simulation_code, en_cours, en_cours_etat, base_remboursement, sejour_facture, honoraires_factures, t2a_facture, dmi_facture, phc_facture, ca_ghs_theorique, nb_ghs, ca_ghs, nb_exb, ca_exb, nb_exh, ca_exh, nb_si, ca_si, nb_sur, ca_sur, nb_rea, ca_rea, nb_neonat, ca_neonat, traitement_epmsi, code_retour_groupage, 0 AS comite_medical_id, rehosp_meme_ghm, e_rss.oid AS from_oid, forfait_facture, age_gestationnel, date_dernieres_regles, confirmation_codage, type_machine_rdth, type_dosimetrie, numero_innovation, nombre_ivg_anterieures, annee_ivg_precedente, nombre_naissances_vivantes_anterieures, avec_anesthesie, nb_ghsmin, conversion_hp_hc_id, raac_id, rescrit_tarif_id, adm_prod_reshospi_id, contexte_pat_id, nb_intervention_id, ca_ghs_raac, np_id, passage_urgences_code FROM e_rss LEFT JOIN c_medecins ON medecin_rss_id = c_medecins.oid_source LEFT JOIN c_ghs ON ghs_id = c_ghs.oid_source LEFT JOIN c_diagnostics c_diagnostics_p ON diagnostic_principal_id = c_diagnostics_p.oid_source LEFT JOIN c_diagnostics c_diagnostics_r ON diagnostic_relie_id = c_diagnostics_r.oid_source LEFT JOIN c_ghm c_ghm_p ON ghm_production_id = c_ghm_p.oid_source LEFT JOIN c_ghm c_ghm_r ON ghm_id = c_ghm_r.oid_source LEFT JOIN c_unites_medicales ON unite_medicale_principale_id = c_unites_medicales.oid_source LEFT JOIN c_actes ON acte_principal_id = c_actes.oid_source LEFT JOIN c_codes_postaux ON code_postal_id = c_codes_postaux.oid_source LEFT JOIN c_patients ON patient_id = c_patients.oid_source LEFT JOIN c_prestations ON prestation_principale_id = c_prestations.oid_source; DROP TABLE IF EXISTS c_rss; CREATE TEMP TABLE c_rss AS SELECT e_rss.oid AS oid_source, MAX(COALESCE(p_rss.oid,0)) AS oid FROM e_rss JOIN pmsi.p_rss ON p_rss.finess = '[FINESS]' AND e_rss.no_rss = p_rss.no_rss AND e_rss.date_sortie = p_rss.date_sortie AND e_rss.import_id = p_rss.import_id GROUP BY 1; ANALYSE c_rss; ALTER TABLE c_rss ADD CONSTRAINT c_rss_pkey PRIMARY KEY(oid_source); -- Tables utiles si l'on veut regénérer des tables entières SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT oid, no_rss, no_sejour_administratif, date_sortie, import_id FROM pmsi.p_rss WHERE etat <> ''S'' AND p_rss.no_rss <> 0 ', 'temp e_rss_all' ); ANALYSE e_rss_all; DROP TABLE IF EXISTS c_rss_all; CREATE TEMP TABLE c_rss_all AS SELECT e_rss_all.oid AS oid_source, MAX(COALESCE(p_rss.oid,0)) AS oid FROM e_rss_all JOIN pmsi.p_rss ON p_rss.finess = '[FINESS]' AND e_rss_all.no_rss = p_rss.no_rss AND e_rss_all.date_sortie = p_rss.date_sortie AND e_rss_all.import_id = p_rss.import_id GROUP BY 1; ANALYSE c_rss_all; ALTER TABLE c_rss_all ADD CONSTRAINT c_rss_all_pkey PRIMARY KEY(oid_source); -- identités -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_identites.* FROM pmsi.p_identites JOIN pmsi.p_rss ON p_identites.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_identites' ); INSERT INTO pmsi.p_identites( no_rss, nom, finess, rss_id, prenom, nom_naissance ) SELECT no_rss, nom, '[FINESS]' AS finess, COALESCE(c_rss.oid,0) AS rss_id, prenom, nom_naissance FROM e_identites JOIN c_rss ON rss_id = c_rss.oid_source; -- ETAT -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_etat.* FROM pmsi.p_rss_etat JOIN pmsi.p_rss ON p_rss_etat.rss_id = p_rss.oid AND etat <> ''S'' AND p_rss.no_rss <> 0 AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_etat' ); DELETE FROM pmsi.p_rss_etat USING e_rss_etat JOIN c_rss ON rss_id = c_rss.oid_source WHERE p_rss_etat.rss_id = c_rss.oid ; INSERT INTO pmsi.p_rss_etat( rss_id, est_groupe, est_valide, date_groupage, est_facture, date_facture) SELECT COALESCE(c_rss.oid,0) AS rss_id, est_groupe, est_valide, date_groupage, est_facture, date_facture FROM e_rss_etat JOIN c_rss ON rss_id = c_rss.oid_source GROUP BY 1,2,3,4,5,6; -- RUM -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_rum.* FROM pmsi.p_rss_rum JOIN pmsi.p_rss ON p_rss_rum.rss_id = p_rss.oid AND etat <> ''S'' AND p_rss.no_rss <> 0 AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_rum' ); INSERT INTO pmsi.p_rss_rum( finess, no_rss, no_rum, date_entree, date_sortie, mode_entree, provenance, mode_sortie, destination, duree_sejour, nb_seances, unite_medicale, diagnostic_principal_id, diagnostic_relie_id, unite_medicale_id, type_autorisation, rss_id, igs2, type_autorisation_lit_dedie, supplement_code ) SELECT '[FINESS]' AS finess, no_rss, no_rum, date_entree, date_sortie, mode_entree, provenance, mode_sortie, destination, duree_sejour, nb_seances, unite_medicale, COALESCE(c_diagnostics_p.oid,0) AS diagnostic_principal_id, COALESCE(c_diagnostics_r.oid,0) AS diagnostic_relie_id, COALESCE(c_unites_medicales.oid,0) AS unite_medicale_id, type_autorisation, COALESCE(c_rss.oid,0) AS rss_id, igs2, type_autorisation_lit_dedie, supplement_code FROM e_rss_rum JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_diagnostics c_diagnostics_p ON diagnostic_principal_id = c_diagnostics_p.oid_source LEFT JOIN c_diagnostics c_diagnostics_r ON diagnostic_relie_id = c_diagnostics_r.oid_source LEFT JOIN c_unites_medicales ON unite_medicale_id = c_unites_medicales.oid_source; -- Diagnostics -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_diagnostics.* FROM pmsi.p_rss_diagnostics JOIN pmsi.p_rss ON p_rss_diagnostics.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_diagnostics' ); INSERT INTO pmsi.p_rss_diagnostics( finess, no_rss, no_rum, diagnostic_id, type_diagnostic, type_diagnostic_rss, imprecis, unite_medicale, rss_id, unite_medicale_id ) SELECT '[FINESS]' AS finess, no_rss, no_rum, COALESCE(c_diagnostics.oid,0) AS diagnostic_id, type_diagnostic, type_diagnostic_rss, imprecis, unite_medicale, COALESCE(c_rss.oid,0) AS rss_id, COALESCE(c_unites_medicales.oid,0) AS unite_medicale_id FROM e_rss_diagnostics JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_diagnostics c_diagnostics ON diagnostic_id = c_diagnostics.oid_source LEFT JOIN c_unites_medicales ON unite_medicale_id = c_unites_medicales.oid_source; -- Actes -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_actes.* FROM pmsi.p_rss_actes JOIN pmsi.p_rss ON p_rss_actes.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_actes' ); INSERT INTO pmsi.p_rss_actes( finess, no_rss, no_rum, unite_medicale, date_acte, medecin_id, acte_id, nombre, phase_ccam, activite_ccam, extension_ccam, modificateur_ccam_1, modificateur_ccam_2, modificateur_ccam_3, modificateur_ccam_4, remboursement_excp_ccam, association_nonprevue_ccam, rss_id, unite_medicale_id, unite_fonctionnelle_id, acte_ccam_descriptif_id ) SELECT '[FINESS]' AS finess, no_rss, no_rum, unite_medicale, date_acte, COALESCE(c_medecins.oid,0) AS medecin_id, COALESCE(c_actes.oid,0) AS acte_id, nombre, phase_ccam, activite_ccam, extension_ccam, modificateur_ccam_1, modificateur_ccam_2, modificateur_ccam_3, modificateur_ccam_4, remboursement_excp_ccam, association_nonprevue_ccam, COALESCE(c_rss.oid,0) AS rss_id, COALESCE(c_unites_medicales.oid,0) AS unite_medicale_id, COALESCE(c_unites_fonctionnelles.oid,0) AS unite_fonctionnelle_id, COALESCE(c_actes_desc.oid,0) AS acte_ccam_descriptif_id FROM e_rss_actes JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_medecins ON medecin_id = c_medecins.oid_source LEFT JOIN c_actes c_actes ON acte_id = c_actes.oid_source LEFT JOIN c_actes c_actes_desc ON acte_ccam_descriptif_id = c_actes_desc.oid_source LEFT JOIN c_unites_medicales ON unite_medicale_id = c_unites_medicales.oid_source LEFT JOIN c_unites_fonctionnelles ON unite_fonctionnelle_id = c_unites_fonctionnelles.oid_source; -- LPP -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_lpp.* FROM pmsi.p_rss_lpp JOIN pmsi.p_rss ON p_rss_lpp.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_lpp' ); INSERT INTO pmsi.p_rss_lpp( finess, no_rss, rang, date_lpp, lpp_id, nombre, prix_unitaire, montant_facture, rss_id, non_pris_en_compte, prix_unitaire_tr, montant_tr, montant_t2a_accorde, montant_ecart_indemnisable ) SELECT '[FINESS]' AS finess, no_rss, rang, date_lpp, COALESCE(c_lpp.oid,0) AS lpp_id, nombre, prix_unitaire, montant_facture, COALESCE(c_rss.oid,0) AS rss_id, non_pris_en_compte, prix_unitaire_tr, montant_tr, montant_t2a_accorde, montant_ecart_indemnisable FROM e_rss_lpp JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_lpp c_lpp ON lpp_id = c_lpp.oid_source; -- Erreurs de groupage -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_leg.* FROM pmsi.p_rss_leg JOIN pmsi.p_rss ON p_rss_leg.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_leg' ); INSERT INTO pmsi.p_rss_leg( finess, no_rsa, rss_id, code_retour_id, nombre ) SELECT '[FINESS]' AS finess, no_rsa, COALESCE(c_rss.oid,0) AS rss_id, COALESCE(c_codes_retour_groupeur.oid,0) AS code_retour_id, nombre FROM e_rss_leg JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_codes_retour_groupeur c_codes_retour_groupeur ON code_retour_id = c_codes_retour_groupeur.oid_source; -- UCD -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_ucd.* FROM pmsi.p_rss_ucd JOIN pmsi.p_rss ON p_rss_ucd.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_ucd' ); INSERT INTO pmsi.p_rss_ucd( finess, no_rss, rang, date_ucd, ucd_id, nombre, coefficient_fractionnement, prix_unitaire_achat, prix_unitaire_ecart_indemnisable, montant_ecart_indemnisable, montant_facture, rss_id, non_pris_en_compte, prix_unitaire_tr, montant_tr, montant_t2a_accorde, type_ucd_id ) SELECT '[FINESS]' AS finess, no_rss, rang, date_ucd, COALESCE(c_ucd.oid,0) AS ucd_id, nombre, coefficient_fractionnement, prix_unitaire_achat, prix_unitaire_ecart_indemnisable, montant_ecart_indemnisable, montant_facture, COALESCE(c_rss.oid,0) AS rss_id, non_pris_en_compte, prix_unitaire_tr, montant_tr, montant_t2a_accorde, COALESCE(type_ucd_id, 0) FROM e_rss_ucd JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_ucd c_ucd ON ucd_id = c_ucd.oid_source; -- TRANSFERTS -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM base.t_etablissements WHERE oid IN (SELECT etablissement_provenance_id FROM pmsi.p_rss_transferts) OR oid IN (SELECT etablissement_destination_id FROM pmsi.p_rss_transferts) ', 'temp e_etablissements' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_transferts.* FROM pmsi.p_rss_transferts JOIN pmsi.p_rss ON p_rss_transferts.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_transferts' ); INSERT INTO base.t_etablissements (code, texte, texte_court) SELECT code, texte, texte_court FROM e_etablissements WHERE code NOT IN (SELECT code FROM base.t_etablissements) ; DROP TABLE IF EXISTS c_etablissements; CREATE TEMP TABLE c_etablissements AS SELECT e_etablissements.oid AS oid_source, MAX(COALESCE(t_etablissements.oid,0)) AS oid FROM e_etablissements JOIN base.t_etablissements ON t_etablissements.code = e_etablissements.code GROUP BY 1; INSERT INTO pmsi.p_rss_transferts( rss_id, etablissement_provenance_id, etablissement_destination_id ) SELECT c_rss.oid, MAX(prov.oid), MAX(dest.oid) FROM e_rss_transferts JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_etablissements prov ON etablissement_provenance_id = prov.oid_source LEFT JOIN c_etablissements dest ON etablissement_destination_id = dest.oid_source GROUP BY 1 ; -- Seuils Cancéros SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_cancero.* FROM pmsi.p_rss_cancero WHERE cdc IN (''2017'', ''2022'') ', 'temp e_rss_cancero' ); INSERT INTO pmsi.p_rss_cancero( rss_id, activite_cancero_code, activite_cancero_id, activite_cancero_texte, cancero_code, cancero_id, cancero_texte, cancero_texte_court, cdc ) SELECT c_rss_all.oid, activite_cancero_code, activite_cancero_id, activite_cancero_texte, cancero_code, cancero_id, cancero_texte, cancero_texte_court, cdc FROM e_rss_cancero JOIN c_rss_all ON rss_id = c_rss_all.oid_source ; -- Seuils cardio SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_cardio.rss_id, p_rss_cardio.acte_id, t_etude_cardio_familles_actes.code AS cardio_familles_actes_code_source, t_etude_cardio_mentions.code AS cardio_mention_code_source, t_etude_cardio_modalites.code AS cardio_modalite_code_source, t_listes.code AS liste_code_source, p_rss_cardio.cdc, p_rss_cardio.date_acte, p_rss_cardio.date_sortie, p_rss_cardio.finess, p_rss_cardio.nombre FROM pmsi.p_rss_cardio JOIN pmsi.p_rss ON p_rss_cardio.rss_id = p_rss.oid JOIN pmsi.t_etude_cardio_mentions ON t_etude_cardio_mentions.oid = p_rss_cardio.cardio_mention_id JOIN pmsi.t_etude_cardio_modalites ON t_etude_cardio_modalites.oid = p_rss_cardio.cardio_modalite_id JOIN pmsi.t_etude_cardio_familles_actes ON t_etude_cardio_familles_actes.oid = p_rss_cardio.cardio_famille_acte_id JOIN pmsi.t_listes ON t_listes.oid = p_rss_cardio.liste_id WHERE p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS]) ', 'temp e_rss_cardio' ); INSERT INTO pmsi.p_rss_cardio( rss_id, acte_id, cardio_famille_acte_id, cardio_mention_id, cardio_modalite_id, cdc, date_acte, date_sortie, finess, liste_id, nombre ) SELECT c_rss.oid, c_actes.oid AS acte_id, t_etude_cardio_familles_actes.oid AS cardio_famille_acte_id, t_etude_cardio_mentions.oid AS cardio_mention_id, t_etude_cardio_modalites.oid AS cardio_modalite_id, e.cdc, e.date_acte, e.date_sortie, e.finess, t_listes.oid AS liste_id, e.nombre FROM e_rss_cardio e JOIN c_rss ON rss_id = c_rss.oid_source JOIN c_actes ON acte_id = c_actes.oid_source JOIN pmsi.t_etude_cardio_familles_actes ON t_etude_cardio_familles_actes.code = e.cardio_familles_actes_code_source JOIN pmsi.t_etude_cardio_mentions ON t_etude_cardio_mentions.code = e.cardio_mention_code_source JOIN pmsi.t_etude_cardio_modalites ON t_etude_cardio_modalites.code = e.cardio_modalite_code_source JOIN pmsi.t_listes ON t_listes.code = e.liste_code_source ; -- Etude Gestes Marqueurs -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_gm.* FROM pmsi.p_rss_gm JOIN pmsi.p_rss ON p_rss_gm.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_gm' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', 'SELECT t_classes_sections.oid, t_classes_sections.code FROM pmsi.p_rss_gm JOIN pmsi.t_classes_sections ON p_rss_gm.gm_principal_id = t_classes_sections.oid', 'temp e_classes_gm') ; DROP TABLE IF EXISTS c_classes_gm ; CREATE TEMP TABLE c_classes_gm AS SELECT e_classes_gm.oid AS oid_source, MAX(COALESCE(t_classes_sections.oid,0)) AS oid FROM e_classes_gm LEFT JOIN pmsi.t_classes_sections ON e_classes_gm.code = t_classes_sections.code GROUP BY 1 ; INSERT INTO pmsi.p_rss_gm( rss_id, finess, gm_principal_id ) SELECT c_rss.oid, finess, c_classes_gm.oid FROM e_rss_gm JOIN c_rss ON rss_id = c_rss.oid_source JOIN c_classes_gm ON gm_principal_id = c_classes_gm.oid_source GROUP BY 1, 2, 3 ; -- Etude IPA -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_ipa.* FROM pmsi.p_rss_ipa JOIN pmsi.p_rss ON p_rss_ipa.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_ipa' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', 'SELECT oid, code FROM base.t_ipa WHERE oid <> 0', 'temp e_ipa') ; DROP TABLE IF EXISTS c_ipa ; CREATE TEMP TABLE c_ipa AS SELECT e_ipa.oid AS oid_source, coalesce(t_ipa.oid,0) AS oid FROM e_ipa LEFT JOIN base.t_ipa ON e_ipa.code = t_ipa.code ; INSERT INTO pmsi.p_rss_ipa( rss_id, est_maitre, nb_ipa, ipa_id ) SELECT c_rss.oid, est_maitre, nb_ipa, c_ipa.oid FROM e_rss_ipa JOIN c_rss ON rss_id = c_rss.oid_source JOIN c_ipa ON ipa_id = c_ipa.oid_source ; -- Etude SRC -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_src.* FROM pmsi.p_rss_src JOIN pmsi.p_rss ON p_rss_src.oid = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_src' ); INSERT INTO pmsi.p_rss_src( oid, age, date_sortie, finess, no_rss, rea_passage_nb_rss, src_facturable_base_remboursement, src_facturable_nb_prestations, src_facturable_nb_rss, src_facturable_regle, src_facturable_regle_justificatif, src_facturable_sans_src_ni_igs_nb_rss, src_facturee_base_remboursement, src_facturee_nb_prestations, src_facturee_nb_rss, src_passage_base_remboursement, src_passage_duree_sejour, src_passage_nb_rss ) SELECT c_rss.oid, age, date_sortie, finess, no_rss, rea_passage_nb_rss, src_facturable_base_remboursement, src_facturable_nb_prestations, src_facturable_nb_rss, src_facturable_regle, src_facturable_regle_justificatif, src_facturable_sans_src_ni_igs_nb_rss, src_facturee_base_remboursement, src_facturee_nb_prestations, src_facturee_nb_rss, src_passage_base_remboursement, src_passage_duree_sejour, src_passage_nb_rss FROM e_rss_src JOIN c_rss ON e_rss_src.oid = c_rss.oid_source ; -- Etude REA -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rss_rea.* FROM pmsi.p_rss_rea JOIN pmsi.p_rss ON p_rss_rea.oid = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rss_rea' ); INSERT INTO pmsi.p_rss_rea( oid, age, date_sortie, finess, no_rss, rea_passage_nb_rss, rea_facturable_base_remboursement, rea_facturable_nb_prestations, rea_facturable_nb_rss, rea_facturable_regle, rea_facturable_regle_justificatif, rea_facturable_sans_rea_ni_igs_nb_rss, rea_facturee_base_remboursement, rea_facturee_nb_prestations, rea_facturee_nb_rss, rea_passage_base_remboursement, rea_passage_duree_sejour ) SELECT c_rss.oid, age, date_sortie, finess, no_rss, rea_passage_nb_rss, rea_facturable_base_remboursement, rea_facturable_nb_prestations, rea_facturable_nb_rss, rea_facturable_regle, rea_facturable_regle_justificatif, rea_facturable_sans_rea_ni_igs_nb_rss, rea_facturee_base_remboursement, rea_facturee_nb_prestations, rea_facturee_nb_rss, rea_passage_base_remboursement, rea_passage_duree_sejour FROM e_rss_rea JOIN c_rss ON e_rss_rea.oid = c_rss.oid_source ; -- Etude IMPACT CMA -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_etude_impact_cma.* FROM pmsi.p_etude_impact_cma JOIN pmsi.p_rss ON p_etude_impact_cma.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_etude_impact_cma' ); INSERT INTO pmsi.p_etude_impact_cma( rss_id, age, ca_exh, ca_ghs_dossier, ca_ghs_theorique, ca_perte_exb, coefficient_mco, duree_sejour, ghm_age_cma, ghm_calc, ghm_dos, ghs_calc, ghs_dos, impact_cma, sev_ghm, tarif_ghs_calc ) SELECT c_rss.oid, age, ca_exh, ca_ghs_dossier, ca_ghs_theorique, ca_perte_exb, coefficient_mco, duree_sejour, ghm_age_cma, ghm_calc, ghm_dos, ghs_calc, ghs_dos, impact_cma, sev_ghm, tarif_ghs_calc FROM e_etude_impact_cma JOIN c_rss ON rss_id = c_rss.oid_source ; -- Factures -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rsf_total.* FROM pmsi.p_rsf_total JOIN pmsi.p_rss ON p_rsf_total.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rsf_total' ); INSERT INTO pmsi.p_rsf_total( finess, no_rss, code_pec, rang_beneficiaire, regime, nature_pec, justificatif_exo, no_facture, code_regularisation, base_remboursement, sejour_facture, sejour_remboursable, honoraires_factures, honoraires_remboursable, t2a_facture, dmi_facture, phc_facture, participation_assure_avant_oc, sejour_remboursable_2, honoraires_remboursable_2, montant_dmi_ghs2006, nb_si, ca_si, nb_sur, ca_sur, nb_rea, ca_rea, nb_neonat, ca_neonat, nb_exh, ca_exh, nb_exb, ca_exb, nb_ghs, ca_ghs, rss_id, ca_ghs_theorique, taux_remboursement, matricule_assure, cle_matricule_assure, forfait_facture, pat_benef_cmu, valorise_fides, no_facture_sejour_mere, regime_id, exoneration_tm_id, nature_pec_id, code_pec_id, type_contrat_oc_id, motif_non_facturation_id, code_pec_fj_id, facturation_18euros_id, code_gestion, no_organisme_complementaire, no_at_date_adc, nb_ghsmin, ca_ghs_sans_coefficient ) SELECT '[FINESS]' AS finess, no_rss, code_pec, rang_beneficiaire, regime, nature_pec, justificatif_exo, no_facture, code_regularisation, base_remboursement, sejour_facture, sejour_remboursable, honoraires_factures, honoraires_remboursable, t2a_facture, dmi_facture, phc_facture, participation_assure_avant_oc, sejour_remboursable_2, honoraires_remboursable_2, montant_dmi_ghs2006, nb_si, ca_si, nb_sur, ca_sur, nb_rea, ca_rea, nb_neonat, ca_neonat, nb_exh, ca_exh, nb_exb, ca_exb, nb_ghs, ca_ghs, COALESCE(c_rss.oid,0) AS rss_id, ca_ghs_theorique, taux_remboursement, matricule_assure, cle_matricule_assure, forfait_facture, pat_benef_cmu, valorise_fides, no_facture_sejour_mere, COALESCE(c_grands_regimes.oid, 0) AS regime_id, COALESCE(c_exoneration_tm.oid, 0) AS exoneration_tm_id, COALESCE(c_nature_assurance.oid, 0) AS nature_pec_id, COALESCE(c_pec.oid, 0) AS code_pec_id, COALESCE(c_type_contrat_oc.oid, 0) AS type_contrat_oc_id, COALESCE(c_motif_non_facturation.oid, 0) AS motif_non_facturation_id, COALESCE(c_pec_fj.oid, 0) AS code_pec_fj_id, COALESCE(c_facturation_18euros.oid, 0) AS facturation_18euros_id, code_gestion, no_organisme_complementaire, no_at_date_adc, nb_ghsmin, ca_ghs_sans_coefficient FROM e_rsf_total JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_grands_regimes ON regime_id = c_grands_regimes.oid_source LEFT JOIN c_exoneration_tm ON exoneration_tm_id = c_exoneration_tm.oid_source LEFT JOIN c_nature_assurance ON nature_pec_id = c_nature_assurance.oid_source LEFT JOIN c_pec ON code_pec_id = c_pec.oid_source LEFT JOIN c_type_contrat_oc ON type_contrat_oc_id = c_type_contrat_oc.oid_source LEFT JOIN c_motif_non_facturation ON motif_non_facturation_id = c_motif_non_facturation.oid_source LEFT JOIN c_pec_fj ON code_pec_fj_id = c_pec_fj.oid_source LEFT JOIN c_facturation_18euros ON facturation_18euros_id = c_facturation_18euros.oid_source ; -- Lignes factures -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_rsf_detail.* FROM pmsi.p_rsf_detail JOIN pmsi.p_rss ON p_rsf_detail.rss_id = p_rss.oid AND etat <> ''S'' AND (p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) OR p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS])) ', 'temp e_rsf_detail' ); INSERT INTO pmsi.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, base_remboursement_sauf_transition, 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, pec_fj_id, sejour_remboursable_rum, base_remboursement_rum_sauf_transition, date_comptable, operation_lamda, fides_detail ) SELECT '[FINESS]' AS finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, base_remboursement_sauf_transition, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, coefficient_mco, sejour_remboursable_2, COALESCE(c_ghs.oid,0) AS ghs_id, sejour_rembourse_noemie, nature_noemie, COALESCE(c_prestations.oid,0) AS prestation_id, COALESCE(c_rss.oid,0) AS rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, COALESCE(c_unites_medicales.oid,0) AS unite_medicale_id, base_remboursement_rum, montant_supplement_nf, COALESCE(c_pec_fj.oid, 0) as pec_fj_id, sejour_remboursable_rum, base_remboursement_rum_sauf_transition, date_comptable, COALESCE(operation_lamda,'0'), fides_detail FROM e_rsf_detail JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_prestations ON prestation_id = c_prestations.oid_source LEFT JOIN c_ghs ON ghs_id = c_ghs.oid_source LEFT JOIN c_unites_medicales ON unite_medicale_id = c_unites_medicales.oid_source LEFT JOIN c_pec_fj ON pec_fj_id = c_pec_fj.oid_source; -- EXPERT SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_expert_rss_controle.*, t_expert_controle.code AS expert_controle_code FROM pmsi.p_expert_rss_controle JOIN pmsi.t_expert_controle ON controle_id = t_expert_controle.oid JOIN pmsi.p_rss ON p_expert_rss_controle.rss_id = p_rss.oid ', 'temp e_expert_rss_controle' ); INSERT INTO pmsi.p_expert_rss_controle( rss_id, no_rss, date_sortie, controle_id, date_signalement, no_test_datim, nb_rss, code_groupe, code_justificatif, cumul_base, coefficient_attendu, cumul_realise, cumul_attendu, borne_alerte, etat, date_correction ) SELECT p_rss.oid AS rss_id, e_expert_rss_controle.no_rss, e_expert_rss_controle.date_sortie, t_expert_controle.oid AS controle_id, e_expert_rss_controle.date_signalement, e_expert_rss_controle.no_test_datim, e_expert_rss_controle.nb_rss, e_expert_rss_controle.code_groupe, e_expert_rss_controle.code_justificatif, e_expert_rss_controle.cumul_base, e_expert_rss_controle.coefficient_attendu, e_expert_rss_controle.cumul_realise, e_expert_rss_controle.cumul_attendu, e_expert_rss_controle.borne_alerte, e_expert_rss_controle.etat, e_expert_rss_controle.date_correction FROM e_expert_rss_controle JOIN pmsi.t_expert_controle ON expert_controle_code = t_expert_controle.code JOIN pmsi.p_rss ON e_expert_rss_controle.no_rss = p_rss.no_rss AND e_expert_rss_controle.date_sortie = p_rss.date_sortie AND p_rss.finess = '[FINESS]' ; -- Simulations -- SELECT base.cti_copy_table( 'dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_simulation_fg2223.* FROM pmsi.p_simulation_fg2223 JOIN pmsi.p_rss ON 1=1 AND p_simulation_fg2223.rss_id = p_rss.oid AND etat <> ''S'' AND (1!=1 OR (1=1 AND p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) ) OR (1=1 AND p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS]) ) ) ', 'temp e_simulation_fg2223' ) ; INSERT INTO pmsi.p_simulation_fg2223 ( finess, rss_id, ghm_fg0_id, ghs_fg0_id, ghm_fg1_id, ghs_fg1_id, annee_sortie, coefficient_mco_fg0, coefficient_mco_fg1, commentaire, erreur, est_envoye, est_regroupe, ghm_fg1_code, ghs_fg1_borne_basse, ghs_fg1_borne_haute, ghs_fg1_code, ghs_fg1_forfait_exb, ghs_fg1_tarif_exb, ghs_fg1_tarif_exh, ghs_fg1_tarif_ghs, ghs_minore_code, ghs_minore_text, montant_ant_fg0, montant_ant_fg1, montant_emi_fg0, montant_emi_fg1, montant_emi_fg1_deremboursees, montant_eti_fg0, montant_eti_fg1, montant_eti_fg1_deremboursees, montant_exb_fg0, montant_exb_fg1, montant_exh_fg0, montant_exh_fg1, montant_ghs_theorique_fg0, montant_ghs_theorique_fg1, montant_lpp_fg0, montant_lpp_fg1, montant_lpp_fg1_deremboursees, montant_nn1_fg0, montant_nn1_fg1, montant_nn2_fg0, montant_nn2_fg1, montant_nn3_fg0, montant_nn3_fg1, montant_rap_fg0, montant_rap_fg1, montant_rea_fg0, montant_rea_fg1, montant_rep_fg0, montant_rep_fg1, montant_src_fg0, montant_src_fg1, montant_stf_fg0, montant_stf_fg1, montant_ucd_fg0, montant_ucd_fg1, montant_ucd_fg1_deremboursees, nb_ant_fg0, nb_ant_fg1, nb_exb_fg1, nb_exh_fg0, nb_exh_fg1, nb_nn1_fg0, nb_nn1_fg1, nb_nn2_fg0, nb_nn2_fg1, nb_nn3_fg0, nb_nn3_fg1, nb_rap_fg0, nb_rap_fg1, nb_rea_fg0, nb_rea_fg1, nb_rep_fg0, nb_rep_fg1, nb_sej_exb_fg0, nb_sej_exb_fg1, nb_src_fg0, nb_src_fg1, nb_stf_fg0, nb_stf_fg1, nb_ucd_fg0, no_rss, tarif_ant_fg1, tarif_nn1_fg1, tarif_nn2_fg1, tarif_nn3_fg1, tarif_rap_fg1, tarif_rea_fg1, tarif_src_fg1, tarif_stf_fg1, translation, nb_sdc_fg1, tarif_sdc_fg1, nb_sdc_fg0, tarif_sdc_fg0, montant_sdc_fg1, montant_sdc_fg0, is_raac ) SELECT '[FINESS]' AS finess, COALESCE(c_rss.oid,0) AS rss_id, COALESCE(c_ghm_0.oid,0) AS ghm_fg0_id, COALESCE(c_ghs_0.oid,0) AS ghs_fg0_id, COALESCE(c_ghm_1.oid,0) AS ghm_fg1_id, COALESCE(c_ghs_1.oid,0) AS ghs_fg1_id, annee_sortie, coefficient_mco_fg0, coefficient_mco_fg1, commentaire, erreur, est_envoye, est_regroupe, ghm_fg1_code, ghs_fg1_borne_basse, ghs_fg1_borne_haute, ghs_fg1_code, ghs_fg1_forfait_exb, ghs_fg1_tarif_exb, ghs_fg1_tarif_exh, ghs_fg1_tarif_ghs, ghs_minore_code, ghs_minore_text, montant_ant_fg0, montant_ant_fg1, montant_emi_fg0, montant_emi_fg1, montant_emi_fg1_deremboursees, montant_eti_fg0, montant_eti_fg1, montant_eti_fg1_deremboursees, montant_exb_fg0, montant_exb_fg1, montant_exh_fg0, montant_exh_fg1, montant_ghs_theorique_fg0, montant_ghs_theorique_fg1, montant_lpp_fg0, montant_lpp_fg1, montant_lpp_fg1_deremboursees, montant_nn1_fg0, montant_nn1_fg1, montant_nn2_fg0, montant_nn2_fg1, montant_nn3_fg0, montant_nn3_fg1, montant_rap_fg0, montant_rap_fg1, montant_rea_fg0, montant_rea_fg1, montant_rep_fg0, montant_rep_fg1, montant_src_fg0, montant_src_fg1, montant_stf_fg0, montant_stf_fg1, montant_ucd_fg0, montant_ucd_fg1, montant_ucd_fg1_deremboursees, nb_ant_fg0, nb_ant_fg1, nb_exb_fg1, nb_exh_fg0, nb_exh_fg1, nb_nn1_fg0, nb_nn1_fg1, nb_nn2_fg0, nb_nn2_fg1, nb_nn3_fg0, nb_nn3_fg1, nb_rap_fg0, nb_rap_fg1, nb_rea_fg0, nb_rea_fg1, nb_rep_fg0, nb_rep_fg1, nb_sej_exb_fg0, nb_sej_exb_fg1, nb_src_fg0, nb_src_fg1, nb_stf_fg0, nb_stf_fg1, nb_ucd_fg0, no_rss, tarif_ant_fg1, tarif_nn1_fg1, tarif_nn2_fg1, tarif_nn3_fg1, tarif_rap_fg1, tarif_rea_fg1, tarif_src_fg1, tarif_stf_fg1, translation, nb_sdc_fg1, tarif_sdc_fg1, nb_sdc_fg0, tarif_sdc_fg0, montant_sdc_fg1, montant_sdc_fg0, is_raac FROM e_simulation_fg2223 JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_ghm c_ghm_0 ON ghm_fg0_id = c_ghm_0.oid_source LEFT JOIN c_ghs c_ghs_0 ON ghs_fg0_id = c_ghs_0.oid_source LEFT JOIN c_ghm c_ghm_1 ON ghm_fg1_id = c_ghm_1.oid_source LEFT JOIN c_ghs c_ghs_1 ON ghs_fg1_id = c_ghs_1.oid_source ; SELECT base.cti_copy_table( 'dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_simulation_fg2324.* FROM pmsi.p_simulation_fg2324 JOIN pmsi.p_rss ON 1=1 AND p_simulation_fg2324.rss_id = p_rss.oid AND etat <> ''S'' AND (1!=1 OR (1=1 AND p_rss.en_cours = ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_MAT2A]) ) OR (1=1 AND p_rss.en_cours <> ''0'' AND p_rss.mois_sortie IN ([MOISMODIFIES_ENCOURS]) ) ) ', 'temp e_simulation_fg2324' ) ; INSERT INTO pmsi.p_simulation_fg2324 ( finess, rss_id, ghm_fg0_id, ghs_fg0_id, ghm_fg1_id, ghs_fg1_id, annee_sortie, coefficient_mco_fg0, coefficient_mco_fg1, commentaire, erreur, est_envoye, est_regroupe, ghm_fg1_code, ghs_fg1_borne_basse, ghs_fg1_borne_haute, ghs_fg1_code, ghs_fg1_forfait_exb, ghs_fg1_tarif_exb, ghs_fg1_tarif_exh, ghs_fg1_tarif_ghs, ghs_minore_code, ghs_minore_text, montant_ant_fg0, montant_ant_fg1, montant_emi_fg0, montant_emi_fg1, montant_emi_fg1_deremboursees, montant_eti_fg0, montant_eti_fg1, montant_eti_fg1_deremboursees, montant_exb_fg0, montant_exb_fg1, montant_exh_fg0, montant_exh_fg1, montant_ghs_theorique_fg0, montant_ghs_theorique_fg1, montant_lpp_fg0, montant_lpp_fg1, montant_lpp_fg1_deremboursees, montant_nn1_fg0, montant_nn1_fg1, montant_nn2_fg0, montant_nn2_fg1, montant_nn3_fg0, montant_nn3_fg1, montant_rap_fg0, montant_rap_fg1, montant_rea_fg0, montant_rea_fg1, montant_rep_fg0, montant_rep_fg1, montant_src_fg0, montant_src_fg1, montant_stf_fg0, montant_stf_fg1, montant_ucd_fg0, montant_ucd_fg1, montant_ucd_fg1_deremboursees, nb_ant_fg0, nb_ant_fg1, nb_exb_fg1, nb_exh_fg0, nb_exh_fg1, nb_nn1_fg0, nb_nn1_fg1, nb_nn2_fg0, nb_nn2_fg1, nb_nn3_fg0, nb_nn3_fg1, nb_rap_fg0, nb_rap_fg1, nb_rea_fg0, nb_rea_fg1, nb_rep_fg0, nb_rep_fg1, nb_sej_exb_fg0, nb_sej_exb_fg1, nb_src_fg0, nb_src_fg1, nb_stf_fg0, nb_stf_fg1, nb_ucd_fg0, no_rss, tarif_ant_fg1, tarif_nn1_fg1, tarif_nn2_fg1, tarif_nn3_fg1, tarif_rap_fg1, tarif_rea_fg1, tarif_src_fg1, tarif_stf_fg1, translation, nb_sdc_fg1, tarif_sdc_fg1, nb_sdc_fg0, tarif_sdc_fg0, montant_sdc_fg1, montant_sdc_fg0, is_raac ) SELECT '[FINESS]' AS finess, COALESCE(c_rss.oid,0) AS rss_id, COALESCE(c_ghm_0.oid,0) AS ghm_fg0_id, COALESCE(c_ghs_0.oid,0) AS ghs_fg0_id, COALESCE(c_ghm_1.oid,0) AS ghm_fg1_id, COALESCE(c_ghs_1.oid,0) AS ghs_fg1_id, annee_sortie, coefficient_mco_fg0, coefficient_mco_fg1, commentaire, erreur, est_envoye, est_regroupe, ghm_fg1_code, ghs_fg1_borne_basse, ghs_fg1_borne_haute, ghs_fg1_code, ghs_fg1_forfait_exb, ghs_fg1_tarif_exb, ghs_fg1_tarif_exh, ghs_fg1_tarif_ghs, ghs_minore_code, ghs_minore_text, montant_ant_fg0, montant_ant_fg1, montant_emi_fg0, montant_emi_fg1, montant_emi_fg1_deremboursees, montant_eti_fg0, montant_eti_fg1, montant_eti_fg1_deremboursees, montant_exb_fg0, montant_exb_fg1, montant_exh_fg0, montant_exh_fg1, montant_ghs_theorique_fg0, montant_ghs_theorique_fg1, montant_lpp_fg0, montant_lpp_fg1, montant_lpp_fg1_deremboursees, montant_nn1_fg0, montant_nn1_fg1, montant_nn2_fg0, montant_nn2_fg1, montant_nn3_fg0, montant_nn3_fg1, montant_rap_fg0, montant_rap_fg1, montant_rea_fg0, montant_rea_fg1, montant_rep_fg0, montant_rep_fg1, montant_src_fg0, montant_src_fg1, montant_stf_fg0, montant_stf_fg1, montant_ucd_fg0, montant_ucd_fg1, montant_ucd_fg1_deremboursees, nb_ant_fg0, nb_ant_fg1, nb_exb_fg1, nb_exh_fg0, nb_exh_fg1, nb_nn1_fg0, nb_nn1_fg1, nb_nn2_fg0, nb_nn2_fg1, nb_nn3_fg0, nb_nn3_fg1, nb_rap_fg0, nb_rap_fg1, nb_rea_fg0, nb_rea_fg1, nb_rep_fg0, nb_rep_fg1, nb_sej_exb_fg0, nb_sej_exb_fg1, nb_src_fg0, nb_src_fg1, nb_stf_fg0, nb_stf_fg1, nb_ucd_fg0, no_rss, tarif_ant_fg1, tarif_nn1_fg1, tarif_nn2_fg1, tarif_nn3_fg1, tarif_rap_fg1, tarif_rea_fg1, tarif_src_fg1, tarif_stf_fg1, translation, nb_sdc_fg1, tarif_sdc_fg1, nb_sdc_fg0, tarif_sdc_fg0, montant_sdc_fg1, montant_sdc_fg0, is_raac FROM e_simulation_fg2324 JOIN c_rss ON rss_id = c_rss.oid_source LEFT JOIN c_ghm c_ghm_0 ON ghm_fg0_id = c_ghm_0.oid_source LEFT JOIN c_ghs c_ghs_0 ON ghs_fg0_id = c_ghs_0.oid_source LEFT JOIN c_ghm c_ghm_1 ON ghm_fg1_id = c_ghm_1.oid_source LEFT JOIN c_ghs c_ghs_1 ON ghs_fg1_id = c_ghs_1.oid_source ; ]]> 0 THEN 100000000 ELSE 0 END + base.cti_to_ascii(substr(t_prestations.code,1,3)) * 1000000000 + COALESCE(p_rsf_detail.sejour_remboursable * GREATEST(p_rsf_detail.no_rum,1),0) * 10000000000 + COALESCE(base.cti_to_ascii(substr(t_actes.code, 1, 1) || substr(t_actes.code, 3, 1) || substr(t_actes.code, LENGTH(t_actes.code), 1)), 0) * 100000000000 + CASE WHEN COALESCE(p_rss_cardio.rss_id,0) <> 0 THEN 1000000000000 ELSE 0 END + CASE WHEN COALESCE(p_rss_cancero.rss_id,0) <> 0 THEN 10000000000000 ELSE 0 END ) AS key FROM pmsi.p_rss LEFT JOIN pmsi.p_rsf_detail ON p_rss.oid = p_rsf_detail.rss_id AND COALESCE(fides_detail,0) = 0 LEFT JOIN pmsi.p_rss_cardio ON p_rss.oid = p_rss_cardio.rss_id LEFT JOIN pmsi.p_rss_cancero ON p_rss.oid = p_rss_cancero.rss_id AND p_rss_cancero.cdc = '2022' LEFT JOIN pmsi.p_rss_actes ON p_rss.oid = p_rss_actes.rss_id LEFT JOIN pmsi.t_prestations ON t_prestations.oid = p_rss.prestation_principale_id LEFT JOIN pmsi.t_actes ON t_actes.oid = p_rss_actes.acte_id WHERE 1=1 AND p_rss.finess = '[FINESS]' AND p_rss.etat <> 'S' AND p_rss.no_rss <> 0 AND p_rss.mois_sortie >= [CONSO_PMSI_ANNEE_DEBUT] GROUP BY 1,2 ; INSERT INTO e_checksum SELECT c_checksum.en_cours, c_checksum.mois_sortie, NULL FROM c_checksum LEFT JOIN e_checksum ON 1=1 AND e_checksum.mois_sortie = c_checksum.mois_sortie AND e_checksum.en_cours = c_checksum.en_cours WHERE e_checksum.mois_sortie IS NULL; CTISELECT_PROPERTY_READ 'MOISERRONES', COALESCE(base.cti_group_concat(e_checksum.mois_sortie),'0') FROM e_checksum LEFT JOIN c_checksum ON 1=1 AND e_checksum.mois_sortie = c_checksum.mois_sortie AND e_checksum.en_cours = c_checksum.en_cours WHERE e_checksum.key IS DISTINCT FROM c_checksum.key ; CTISELECT_PROPERTY_READ 'MOISERRONES_MAT2A', COALESCE(base.cti_group_concat(e_checksum.mois_sortie),'0') FROM e_checksum LEFT JOIN c_checksum ON 1=1 AND e_checksum.mois_sortie = c_checksum.mois_sortie AND e_checksum.en_cours = c_checksum.en_cours WHERE e_checksum.en_cours = '0' AND e_checksum.key IS DISTINCT FROM c_checksum.key ; CTISELECT_PROPERTY_READ 'MOISERRONES_ENCOURS', COALESCE(base.cti_group_concat(e_checksum.mois_sortie),'0') FROM e_checksum LEFT JOIN c_checksum ON 1=1 AND e_checksum.mois_sortie = c_checksum.mois_sortie AND e_checksum.en_cours = c_checksum.en_cours WHERE e_checksum.en_cours <> '0' AND e_checksum.key IS DISTINCT FROM c_checksum.key ; ]]> '' THEN prenom ELSE nom END)., END., $BODY$ LANGUAGE 'plpgsql' IMMUTABLE STRICT; CREATE INDEX i_medecins_key ON pmsi.t_medecins USING btree (temp.t_medecins_key(nom,prenom)); DROP FUNCTION IF EXISTS temp.p_patients_key(nom text,prenom text,sexe text,date_naissance date) CASCADE; CREATE OR REPLACE FUNCTION temp.p_patients_key(nom text, prenom text, sexe text, date_naissance date) RETURNS text AS $BODY$ DECLARE BEGIN RETURN upper(translate(COALESCE(nom,'') || COALESCE(prenom,''), ' -', '')) || '|' || COALESCE(sexe,'') || '|' || COALESCE(date_naissance,'19620418')., END., $BODY$ LANGUAGE 'plpgsql' IMMUTABLE STRICT; CREATE INDEX i_patients_key ON pmsi.p_patients USING btree (temp.p_patients_key(nom,prenom,sexe,date_naissance)); ]]> 1 ) subview WHERE p_patients.oid = subview.patient_id; DROP TABLE IF EXISTS w_patients_id CASCADE; CREATE TEMP TABLE w_patients_id AS SELECT oid as patient_id, upper(translate(p_patients.nom || p_patients.prenom, ' -', '')) || '|' || date_naissance || '|' || sexe AS key FROM pmsi.p_patients; CREATE INDEX w_patients_id1 ON w_patients_id USING btree (key); CREATE INDEX w_patients_id2 ON w_patients_id USING btree (patient_id); DROP TABLE IF EXISTS w_rss_patient; CREATE TEMP TABLE w_rss_patient AS SELECT w_rss_id.rss_id, w_patients_id.patient_id FROM w_rss_id, w_patients_id WHERE w_rss_id.key = w_patients_id.key AND w_rss_id.patient_id <> w_patients_id.patient_id; UPDATE pmsi.p_rss SET patient_id = w_rss_patient.patient_id FROM w_rss_patient WHERE w_rss_patient.rss_id = p_rss.oid AND p_rss.patient_id <> w_rss_patient.patient_id; ]]> '97' AND substr(code ,1, 2) <> '98' AND substr(code ,1, 2) NOT IN (SELECT code FROM base.t_departements ) GROUP BY 1,2,3; ]]> '' AND code_postal NOT IN (SELECT code FROM base.t_codes_postaux ) AND substr(code_postal, 1 , 2) <> '97' AND substr(code_postal, 1 , 2) <> '98' GROUP BY 1,2,3,4,5; INSERT INTO base.t_codes_postaux (code, texte, texte_court, departement_id, code_geographique_pmsi, territoire_sante_id) SELECT code_postal, code_postal, code_postal, (SELECT oid FROM base.t_departements WHERE code = substr(code_postal, 1 , 3)), substr(code_postal, 1 , 3) || '**', 0 FROM pmsi.p_rss WHERE code_postal <> '' AND code_postal NOT IN (SELECT code FROM base.t_codes_postaux ) AND substr(code_postal, 1 , 2) IN ('97', '98') GROUP BY 1,2,3,4,5; INSERT INTO base.t_codes_postaux (code, texte, texte_court, departement_id, code_geographique_pmsi, territoire_sante_id) SELECT code_postal, code_postal, code_postal, 0, '*****' , 0 FROM pmsi.p_rss WHERE code_postal NOT IN (SELECT code FROM base.t_codes_postaux ) GROUP BY 1,2,3,4,5; UPDATE pmsi.p_rss SET code_postal_id = t_codes_postaux.oid FROM base.t_codes_postaux WHERE code_postal = t_codes_postaux.code AND (code_postal_id = 0 OR code_postal_id IS NULL); ]]>