''1'' OR date_sortie >= ''[ENV_ADM_ANNEEDEBUT]0101'' ', true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' CREATE INDEX i_w_sejours_1 ON temp.w_sejours USING btree (no_sejour) ', true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' CREATE INDEX i_w_sejours_2 ON temp.w_sejours USING btree (oid) ', true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' INSERT INTO temp.w_sejours SElECT p_sejours.no_sejour, p_sejours.oid FROM activite.p_factures JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour WHERE (p_factures.code_facture <= ''0'' OR p_factures.date_vente >= ''[ENV_ADM_ANNEEDEBUT]0101'') AND NOT EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_factures.no_sejour) ', true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' INSERT INTO temp.w_sejours SELECT p_sejours.no_sejour, p_sejours.oid FROM activite.p_factures_soldes_c JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour WHERE date_comptable >= ''[ENV_ADM_ANNEEDEBUT]0101'' AND NOT EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_sejours.no_sejour) ', true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' INSERT INTO temp.w_sejours SELECT p_sejours.no_sejour, p_sejours.oid FROM activite.p_factures_soldes_h JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour WHERE date_comptable >= ''[ENV_ADM_ANNEEDEBUT]0101'' AND NOT EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_sejours.no_sejour) ' , true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' INSERT INTO temp.w_sejours SELECT p_sejours.no_sejour, p_sejours.oid FROM activite.p_factures_encours JOIN activite.p_factures ON p_factures_encours.no_facture = p_factures.no_facture JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour WHERE p_factures_encours.date_encours >= ''[ENV_ADM_ANNEEDEBUT]0101'' AND NOT EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_sejours.no_sejour) ' , true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' ANALYSE temp.w_sejours ', true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' DROP TABLE IF EXISTS temp.w_factures CASCADE ., CREATE TABLE temp.w_factures AS SELECT no_facture, p_factures.oid FROM activite.p_factures JOIN temp.w_sejours ON p_factures.no_sejour = w_sejours.no_sejour ', true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' ANALYSE temp.w_factures ', true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' CREATE INDEX i_w_factures_1 ON temp.w_factures USING btree (no_facture) ', true); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' CREATE INDEX i_w_factures_2 ON temp.w_factures USING btree (oid) ', true); -- Récupération tables sources SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.p_sejours WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_sejours.no_sejour) limit 100000000000 ', 'temp p_sejours' ); CREATE INDEX p_sejours_i1 ON p_sejours USING btree (ghs_id); CREATE INDEX p_sejours_i2 ON p_sejours USING btree (mode_traitement_id); CREATE INDEX p_sejours_i3 ON p_sejours USING btree (ghm_id); INSERT INTO activite.p_sejours( finess, no_sejour, date_entree, date_sortie, no_patient, code_sexe, age, code_sorti, code_prevu, type_sejour, date_facture, date_solde, delai_facture, delai_solde, montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, nb_factures, nb_factures_regularisation, date_expedition, delai_expedition, lieu_sortie_id, medecin_sejour_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_0_id, tiers_payant_22_id, montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, montant_facture_1_h, montant_facture_12_c, montant_facture_12_h, montant_facture_2_c, montant_facture_2_h, montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_12_c, montant_regle_12_h, montant_regle_2_c, montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, date_expedition_0, date_expedition_1, date_expedition_12, date_expedition_2, date_expedition_22, delai_expedition_0, delai_expedition_1, delai_expedition_12, delai_expedition_2, delai_expedition_22, date_solde_0, date_solde_1, date_solde_12, date_solde_2, date_solde_22, delai_solde_0, delai_solde_1, delai_solde_12, delai_solde_2, delai_solde_22, ghs_id, ghm_id, gme_id, particularite_t2a, code_postal_id, mode_traitement_id, date_groupage, delai_groupage, nb_factures_rejet, etat, code_cp_demandee, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, mode_entree, provenance, mode_sortie, destination, heure_entree, heure_sortie, code_original, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, montant_comptabilise_22_h, montant_facture_c_actes_inclus_dans_sejour, montant_facture_h_actes_inclus_dans_sejour, est_budget_global, montant_comptabilise_budget_global_c, oid, provider_id, est_sans_facturation, type_pmsi, risque_id, forme_activite_id, etat_sejour) SELECT COALESCE(w_correspondances_finess.code,'[FINESS]') AS finess, '[CPX]' || no_sejour, date_entree, date_sortie, substr(COALESCE(w_correspondances_patients.no_patient,p_sejours.no_patient),1,20) AS no_patient, code_sexe, age, code_sorti, code_prevu, type_sejour, date_facture, date_solde, delai_facture, delai_solde, montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, nb_factures, nb_factures_regularisation, date_expedition, delai_expedition, CASE WHEN lieu_sortie_id <> 0 THEN lieu_sortie_id + [IPX] ELSE 0 END AS lieu_sortie_id, CASE WHEN medecin_sejour_id <> 0 THEN medecin_sejour_id + [IPX] ELSE 0 END AS medecin_sejour_id, CASE WHEN tiers_payant_1_id <> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, montant_facture_1_h, montant_facture_12_c, montant_facture_12_h, montant_facture_2_c, montant_facture_2_h, montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_12_c, montant_regle_12_h, montant_regle_2_c, montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, date_expedition_0, date_expedition_1, date_expedition_12, date_expedition_2, date_expedition_22, delai_expedition_0, delai_expedition_1, delai_expedition_12, delai_expedition_2, delai_expedition_22, date_solde_0, date_solde_1, date_solde_12, date_solde_2, date_solde_22, delai_solde_0, delai_solde_1, delai_solde_12, delai_solde_2, delai_solde_22, COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, COALESCE(w_correspondances_ghm.oid,0) AS ghm_id, COALESCE(w_correspondances_gme.oid,0) AS gme_id, particularite_t2a, COALESCE(w_correspondances_codes_postaux.oid,0) AS code_postal_id, COALESCE(w_correspondances_modes_traitement.oid,0) AS mode_traitement_id, date_groupage, delai_groupage, nb_factures_rejet, etat, code_cp_demandee, 0 AS ghs_bebe1_id, 0 AS ghs_bebe2_id, 0 AS ghs_bebe3_id, mode_entree, provenance, mode_sortie, destination, heure_entree, heure_sortie, '[CPX]' || code_original, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, montant_comptabilise_22_h, montant_facture_c_actes_inclus_dans_sejour, montant_facture_h_actes_inclus_dans_sejour, est_budget_global, montant_comptabilise_budget_global_c, CASE WHEN p_sejours.oid <> 0 THEN p_sejours.oid + [IPX] ELSE 0 END AS oid, provider_id, COALESCE(est_sans_facturation,'0'), type_pmsi, COALESCE(w_correspondances_risque.oid, 0) AS risque_id, COALESCE(w_correspondances_forme_activite.oid, 0) AS forme_activite_id, etat_sejour FROM p_sejours LEFT JOIN w_correspondances_finess ON p_sejours.finess = w_correspondances_finess.code_source LEFT JOIN w_correspondances_patients ON p_sejours.no_patient = w_correspondances_patients.no_patient_source LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source LEFT JOIN w_correspondances_ghm ON ghm_id = w_correspondances_ghm.oid_source LEFT JOIN w_correspondances_gme ON gme_id = w_correspondances_gme.oid_source LEFT JOIN w_correspondances_modes_traitement ON mode_traitement_id = w_correspondances_modes_traitement.oid_source LEFT JOIN w_correspondances_codes_postaux ON code_postal_id = w_correspondances_codes_postaux.oid_source LEFT JOIN w_correspondances_risque ON risque_id = w_correspondances_risque.oid_source LEFT JOIN w_correspondances_forme_activite ON forme_activite_id = w_correspondances_forme_activite.oid_source ; -- recreation des lien activite / pmsi DELETE FROM activite.p_sejour_pmsi WHERE no_sejour LIKE '[CPX]%'; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM information_schema.tables WHERE table_schema = ''pmsi'' AND table_name = ''v_rsf_total_1'' ', 'temp e_has_pmsi' ); SELECT base.cti_execute(' SELECT base.cti_copy_table(''dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]'', '' SELECT * FROM activite.p_sejour_pmsi WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.oid = p_sejour_pmsi.sejour_id) limit 100000000000 '', ''temp p_sejour_pmsi'' )., CREATE INDEX p_sejour_pmsi_i1 ON p_sejour_pmsi USING btree (sejour_id)., SELECT base.cti_copy_table(''dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]'', '' SELECT * FROM pmsi.p_rss limit 100000000000 '', ''temp p_rss'' )., CREATE INDEX p_rss_i1 ON p_rss USING btree (oid)., DROP TABLE IF EXISTS w_correspondances_sejour_pmsi., CREATE TEMP TABLE w_correspondances_sejour_pmsi AS SELECT p_sejours_source.oid AS oid_source, coalesce(p_sejours.oid,0) AS oid FROM p_sejours AS p_sejours_source JOIN activite.p_sejours ON ''[CPX]'' || p_sejours_source.no_sejour = p_sejours.no_sejour., CREATE INDEX w_correspondances_sejour_pmsi_1 ON w_correspondances_sejour_pmsi USING btree (oid_source)., DROP TABLE IF EXISTS w_correspondances_p_rss., CREATE TEMP TABLE w_correspondances_p_rss AS SELECT p_rss_source.oid AS oid_source, coalesce(p_rss.oid,0) AS oid FROM p_rss AS p_rss_source JOIN pmsi.p_rss ON p_rss_source.no_rss = p_rss.no_rss AND p_rss.finess = p_rss_source.finess AND p_rss.date_sortie = p_rss_source.date_sortie., CREATE INDEX w_correspondances_p_rss1 ON w_correspondances_p_rss USING btree (oid_source)., INSERT INTO activite.p_sejour_pmsi(no_rss, no_sejour,pmsi_type,rss_id,sejour_id) SELECT p_rss.no_rss, p_sejours.no_sejour, pmsi_type, p_rss.oid, p_sejours.oid FROM p_sejour_pmsi JOIN w_correspondances_p_rss ON w_correspondances_p_rss.oid_source = p_sejour_pmsi.rss_id JOIN (SELECT oid, no_rss FROM pmsi.p_rss) p_rss ON w_correspondances_p_rss.oid = p_rss.oid JOIN w_correspondances_sejour_pmsi ON w_correspondances_sejour_pmsi.oid_source = p_sejour_pmsi.sejour_id JOIN activite.p_sejours ON w_correspondances_sejour_pmsi.oid = p_sejours.oid., UPDATE pmsi.p_rss SET no_sejour_administratif = p_sejour_pmsi.no_sejour FROM activite.p_sejour_pmsi WHERE rss_id = p_rss.oid AND no_sejour_administratif IS DISTINCT FROM no_sejour',1) WHERE EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'pmsi' AND table_name = 'v_rsf_total_1') AND EXISTS (SELECT 1 FROM e_has_pmsi WHERE table_schema = 'pmsi' AND table_name = 'v_rsf_total_1'); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.p_sejour_effet_tarif WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.oid = p_sejour_effet_tarif.sejour_id) limit 100000000000 ', 'temp p_sejour_effet_tarif' ); INSERT INTO activite.p_sejour_effet_tarif( sejour_id, no_sejour, ok_ghs_f, coefficient_c, ok_ghs_c, tarif_ghs_c, tarif_exh_c, tarif_exb_c, forfait_exb_c, borne_basse_c, borne_haute_c, tarif_ghs_bb1_c, tarif_ghs_bb2_c, tarif_ghs_bb3_c, coefficient_p, ok_ghs_p, tarif_ghs_p, tarif_exh_p, tarif_exb_p, forfait_exb_p, borne_basse_p, borne_haute_p, tarif_ghs_bb1_p, tarif_ghs_bb2_p, tarif_ghs_bb3_p, montant_ghs_f, montant_exh_f, montant_tot_f, montant_ghs_c, montant_exh_c, montant_exb_c, montant_ghs_bb1_c, montant_ghs_bb2_c, montant_ghs_bb3_c, montant_tot_c, montant_ghs_p, montant_exh_p, montant_exb_p, montant_tot_p, montant_ghs_bb1_p, montant_ghs_bb2_p, montant_ghs_bb3_p ) SELECT CASE WHEN p_sejour_effet_tarif.sejour_id <> 0 THEN p_sejour_effet_tarif.sejour_id + [IPX] ELSE 0 END sejour_id, '[CPX]' || no_sejour, ok_ghs_f, coefficient_c, ok_ghs_c, tarif_ghs_c, tarif_exh_c, tarif_exb_c, forfait_exb_c, borne_basse_c, borne_haute_c, tarif_ghs_bb1_c, tarif_ghs_bb2_c, tarif_ghs_bb3_c, coefficient_p, ok_ghs_p, tarif_ghs_p, tarif_exh_p, tarif_exb_p, forfait_exb_p, borne_basse_p, borne_haute_p, tarif_ghs_bb1_p, tarif_ghs_bb2_p, tarif_ghs_bb3_p, montant_ghs_f, montant_exh_f, montant_tot_f, montant_ghs_c, montant_exh_c, montant_exb_c, montant_ghs_bb1_c, montant_ghs_bb2_c, montant_ghs_bb3_c, montant_tot_c, montant_ghs_p, montant_exh_p, montant_exb_p, montant_tot_p, montant_ghs_bb1_p, montant_ghs_bb2_p, montant_ghs_bb3_p FROM p_sejour_effet_tarif ; -- TRANSFERTS -- SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM base.t_etablissements WHERE EXISTS (SELECT 1 FROM activite.p_sejours_transferts WHERE provenance_id = base.t_etablissements.oid) OR EXISTS (SELECT 1 FROM activite.p_sejours_transferts WHERE destination_id = base.t_etablissements.oid) ', 'temp e_etablissements' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT p_sejours_transferts.* FROM activite.p_sejours_transferts WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE oid = activite.p_sejours_transferts.sejour_id) ', 'temp e_sejours_transferts' ); INSERT INTO base.t_etablissements (code, texte, texte_court) SELECT code, texte, texte_court FROM e_etablissements WHERE NOT EXISTS (SELECT 1 FROM base.t_etablissements WHERE code = e_etablissements.code) ; 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 activite.p_sejours_transferts( sejour_id, provenance_id, destination_id ) SELECT sejour_id + [IPX], prov.oid, dest.oid FROM e_sejours_transferts LEFT JOIN c_etablissements prov ON provenance_id = prov.oid_source LEFT JOIN c_etablissements dest ON destination_id = dest.oid_source ; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.p_sejour_lieu limit 100000000000 ', 'temp i_sejour_lieu' ); INSERT INTO activite.p_sejour_lieu( sejour_id, no_sejour, lieu_id, pole_id ) SELECT CASE WHEN i_sejour_lieu.sejour_id <> 0 THEN i_sejour_lieu.sejour_id + [IPX] ELSE 0 END sejour_id, '[CPX]' || no_sejour, CASE WHEN i_sejour_lieu.lieu_id <> 0 THEN i_sejour_lieu.lieu_id + [IPX] ELSE 0 END lieu_id, COALESCE(w_correspondances_pole.oid, 0) AS pole_id FROM i_sejour_lieu LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source ; ]]> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, nb_entrees_directes, nb_sorties_directes, nb_urgences, nb_externes, nb_ambulatoires, CASE WHEN medecin_sejour_id <> 0 THEN medecin_sejour_id + [IPX] ELSE 0 END AS medecin_sejour_id, nb_jours_js_inclus, nb_seances, nb_seances_dans_taux, nb_entrees_mutation_service, nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, est_chambre_particuliere, est_chambre_particuliere_facturee, nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, jour_semaine, is_weekend, est_facture, nb_jours_d, nb_jours_f, nb_jours_12, nb_jours_prorata, nb_jours_cp_d, nb_jours_cp_f, nb_jours_cp_12, equivalent_malade_complet, nb_passage_externe, nb_deces, nb_seances_chimio, nb_seances_dialyse, nb_seances_autre, COALESCE(w_correspondances_pole.oid, 0) AS pole_id, nb_jour_sejour_sorti FROM p_mouvements_sejour LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source ; DROP TABLE IF EXISTS w_lieux; CREATE TEMP TABLE w_lieux AS SELECT CASE WHEN t_lieux.oid <> 0 THEN t_lieux.oid + [IPX] ELSE 0 END AS oid, CASE WHEN code_original_1 <> '' THEN '[TPX]' || code_original_1 ELSE '' END AS code_original_1, CASE WHEN code_original_2 <> '' THEN '[TPX]' || code_original_2 ELSE '' END AS code_original_2, CASE WHEN code_original_3 <> '' THEN '[TPX]' || code_original_3 ELSE '' END AS code_original_3, CASE WHEN code_original_4 <> '' THEN '[TPX]' || code_original_4 ELSE '' END AS code_original_4, CASE WHEN code_original_5 <> '' THEN '[TPX]' || code_original_5 ELSE '' END AS code_original_5, CASE WHEN service_facturation_id <> 0 THEN service_facturation_id + [IPX] ELSE 0 END AS service_facturation_id, CASE WHEN activite_id <> 0 THEN activite_id + [IPX] ELSE 0 END AS activite_id, CASE WHEN lit_id <> 0 THEN lit_id + [IPX] ELSE 0 END AS lit_id, CASE WHEN unite_medicale_id <> 0 THEN unite_medicale_id + [IPX] ELSE 0 END AS unite_medicale_id, CASE WHEN unite_fonctionnelle_id <> 0 THEN unite_fonctionnelle_id + [IPX] ELSE 0 END AS unite_fonctionnelle_id, CASE WHEN code_original_6 <> '' THEN '[TPX]' || code_original_6 ELSE '' END AS code_original_6, CASE WHEN code_original_7 <> '' THEN '[TPX]' || code_original_7 ELSE '' END AS code_original_7, COALESCE(w_correspondances_modes_traitement.oid,0) AS mode_traitement_id, COALESCE(gir_code_original,'') AS gir_code_original, COALESCE(gir_id,0) AS gir_id FROM t_lieux LEFT JOIN w_correspondances_modes_traitement ON mode_traitement_id = w_correspondances_modes_traitement.oid_source ; INSERT INTO activite.t_lieux( oid, code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, service_facturation_id, activite_id, lit_id, unite_medicale_id, unite_fonctionnelle_id, code_original_6, code_original_7, mode_traitement_id, gir_code_original, gir_id) SELECT oid, code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, service_facturation_id, activite_id, lit_id, unite_medicale_id, unite_fonctionnelle_id, code_original_6, code_original_7, mode_traitement_id, gir_code_original, gir_id FROM w_lieux WHERE NOT EXISTS (SELECT 1 FROM activite.t_lieux WHERE oid = CASE WHEN w_lieux.oid <> 0 THEN w_lieux.oid ELSE 0 END) ; UPDATE activite.t_lieux SET code_original_1 = w_lieux.code_original_1, code_original_2 = w_lieux.code_original_2, code_original_3 = w_lieux.code_original_3, code_original_4 = w_lieux.code_original_4, code_original_5 = w_lieux.code_original_5, service_facturation_id = w_lieux.service_facturation_id, activite_id = w_lieux.activite_id, lit_id = w_lieux.lit_id, unite_medicale_id = w_lieux.unite_medicale_id, unite_fonctionnelle_id = w_lieux.unite_fonctionnelle_id, code_original_6 = w_lieux.code_original_6, code_original_7 = w_lieux.code_original_7, mode_traitement_id = w_lieux.mode_traitement_id, gir_code_original = w_lieux.gir_code_original, gir_id = w_lieux.gir_id FROM w_lieux WHERE t_lieux.oid = w_lieux.oid AND ( t_lieux.code_original_1 != w_lieux.code_original_1 OR t_lieux.code_original_2 != w_lieux.code_original_2 OR t_lieux.code_original_3 != w_lieux.code_original_3 OR t_lieux.code_original_4 != w_lieux.code_original_4 OR t_lieux.code_original_5 != w_lieux.code_original_5 OR t_lieux.service_facturation_id != w_lieux.service_facturation_id OR t_lieux.activite_id != w_lieux.activite_id OR t_lieux.lit_id != w_lieux.lit_id OR t_lieux.unite_medicale_id != w_lieux.unite_medicale_id OR t_lieux.unite_fonctionnelle_id != w_lieux.unite_fonctionnelle_id OR t_lieux.code_original_6 != w_lieux.code_original_6 OR t_lieux.code_original_7 != w_lieux.code_original_7 OR t_lieux.mode_traitement_id != w_lieux.mode_traitement_id OR t_lieux.gir_code_original != w_lieux.gir_code_original OR t_lieux.gir_id != w_lieux.gir_id ) ; DELETE FROM activite.t_lieux WHERE oid BETWEEN [IPX] AND [IPX] + 1000000000000 AND NOT EXISTS (SELECT 1 FROM w_lieux WHERE oid = activite.t_lieux.oid) ; ]]> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, date_debut, heure_debut, 0::bigint AS salle_id, CASE WHEN medecin_chirurgien_id <> 0 THEN medecin_chirurgien_id + [IPX] ELSE 0 END AS medecin_chirurgien_id, CASE WHEN medecin_anesthesiste_id <> 0 THEN medecin_anesthesiste_id + [IPX] ELSE 0 END AS medecin_anesthesiste_id, COALESCE(w_correspondances_actes.oid,0) AS acte_id FROM p_intervention LEFT JOIN w_correspondances_actes ON acte_id = w_correspondances_actes.oid_source; ]]> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, delai_expedition_1, delai_expedition_2, delai_expedition_22, delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, montant_encours_22_c, montant_encours_h, montant_encours_0_h, montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, code_cp_demandee, date_encours, 0 AS ghs_bebe1_id, 0 AS ghs_bebe2_id, 0 AS ghs_bebe3_id, nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, montant_comptabilise_22_h, CASE WHEN no_facture_reference <> '' THEN '[CPX]' || no_facture_reference ELSE '' END AS no_facture_reference, date_solde_reference, date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, CASE WHEN no_facture_od_avoir <> '' THEN '[CPX]' || no_facture_od_avoir ELSE '' END AS no_facture_od_avoir, CASE WHEN p_factures.oid <> 0 THEN p_factures.oid + [IPX] ELSE 0 END AS oid, CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, CASE WHEN facture_reference_id <> 0 THEN facture_reference_id + [IPX] ELSE 0 END AS facture_reference_id, CASE WHEN facture_od_avoir_id <> 0 THEN facture_od_avoir_id + [IPX] ELSE 0 END AS facture_od_avoir_id, provider_id, COALESCE(w_correspondances_ghm.oid,0) AS ghm_id FROM p_factures LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source LEFT JOIN w_correspondances_ghm ON ghm_id = w_correspondances_ghm.oid_source ; ]]> 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, prix_unitaire, CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, montant_encours FROM p_factures_lignes_non_facturees_c LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source; ]]> 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, COALESCE(w_correspondances_compte.oid,0) AS compte_produit_id FROM t_rubrique_facture_c LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source LEFT JOIN w_correspondances_compte ON compte_produit_id = w_correspondances_compte.oid_source WHERE NOT EXISTS (SELECT 1 FROM activite.t_rubrique_facture_c WHERE activite.t_rubrique_facture_c.oid = (t_rubrique_facture_c.oid + [IPX])); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.p_factures_lignes_c WHERE EXISTS (SELECT 1 FROM temp.w_factures WHERE temp.w_factures.no_facture = activite.p_factures_lignes_c.no_facture) limit 100000000000 ', 'temp p_factures_lignes_c' ); CREATE INDEX p_factures_lignes_c_i1 ON p_factures_lignes_c USING btree (prestation_id); INSERT INTO activite.p_factures_lignes_c( no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, rubrique_facture_id, rubrique_facturation_id, compte_produit_id, prestation_id, lpp_id, ucd_id, montant_facture, montant_facture_0, montant_facture_1, montant_facture_2, montant_facture_22, taux_0, taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, montant_encours_22, montant_facture_actes_inclus_dans_sejour, montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, origine_facturation_id, montant_comptabilise_budget_global_1, facture_id, pole_id) SELECT '[CPX]' || no_facture AS no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, CASE WHEN rubrique_facture_id <> 0 THEN rubrique_facture_id + [IPX] ELSE 0 END AS rubrique_facture_id, CASE WHEN rubrique_facturation_id <> 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, COALESCE(w_correspondances_compte.oid,0) AS compte_produit_id, COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, COALESCE(w_correspondances_lpp.oid,0) AS lpp_id, COALESCE(w_correspondances_ucd.oid,0) AS ucd_id, montant_facture, montant_facture_0, montant_facture_1, montant_facture_2, montant_facture_22, taux_0, taux_1, taux_2, taux_22, finess, prix_unitaire, CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, nb_prestation, montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, montant_comptabilise_2, montant_comptabilise_22, CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, montant_encours_22, montant_facture_actes_inclus_dans_sejour, montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, origine_facturation_id, montant_comptabilise_budget_global_1, CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, COALESCE(w_correspondances_pole.oid, 0) AS pole_id FROM p_factures_lignes_c LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source LEFT JOIN w_correspondances_compte ON compte_produit_id = w_correspondances_compte.oid_source LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source LEFT JOIN w_correspondances_lpp ON lpp_id = w_correspondances_lpp.oid_source LEFT JOIN w_correspondances_ucd ON ucd_id = w_correspondances_ucd.oid_source ; ]]> 0 THEN rubrique_comptabilisee_id + [IPX] ELSE 0 END AS rubrique_comptabilisee_id, COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, montant_comptabilise_2, montant_comptabilise_22, montant_regle, montant_regle_0, montant_regle_1, montant_regle_2, montant_regle_22, finess, od_avoir, CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id FROM p_factures_soldes_c LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source; -- Récupération tables sources SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.p_facture_solde_tiers_c WHERE EXISTS (SELECT 1 FROM temp.w_factures WHERE temp.w_factures.no_facture = activite.p_facture_solde_tiers_c.no_facture) limit 100000000000 ', 'temp p_facture_solde_tiers_c' ); CREATE INDEX p_facture_solde_tiers_c_i1 ON p_facture_solde_tiers_c USING btree (prestation_id); INSERT INTO activite.p_facture_solde_tiers_c( facture_id, no_facture, date_comptable, rubrique_comptabilisation_id, prestation_id, tiers_payant_id, montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, montant_comptabilise_2, montant_regle, montant_regle_0, montant_regle_1, montant_regle_2, od_avoir ) SELECT CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, '[CPX]' || no_facture AS no_facture, date_comptable, CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, CASE WHEN tiers_payant_id <> 0 THEN tiers_payant_id + [IPX] ELSE 0 END AS tiers_payant_id, montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, montant_comptabilise_2, montant_regle, montant_regle_0, montant_regle_1, montant_regle_2, od_avoir FROM p_facture_solde_tiers_c LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source; ]]> 0 THEN medecin_facture_id + [IPX] ELSE 0 END AS medecin_facture_id, COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, prix_unitaire, montant_depassement, CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, COALESCE(w_correspondances_actes.oid,0) AS acte_id, phase_ccam, activite_ccam, extension_ccam, modificateur_ccam_1, modificateur_ccam_2, modificateur_ccam_3, modificateur_ccam_4, CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id FROM p_factures_lignes_non_facturees_h LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source LEFT JOIN w_correspondances_actes ON acte_id = w_correspondances_actes.oid_source; ]]> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, montant_depassement, COALESCE(w_correspondances_actes.oid,0) AS acte_id, CASE WHEN medecin_facture_id <> 0 THEN medecin_facture_id + [IPX] ELSE 0 END AS medecin_facture_id, CASE WHEN medecin_comptabilise_id <> 0 THEN medecin_comptabilise_id + [IPX] ELSE 0 END AS medecin_comptabilise_id, heure_debut, phase_ccam, activite_ccam, extension_ccam, modificateur_ccam_1, modificateur_ccam_2, modificateur_ccam_3, modificateur_ccam_4, montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, montant_encours_22, montant_facture_actes_inclus_dans_sejour, montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, CASE WHEN protocole_id <> 0 THEN protocole_id + [IPX] ELSE 0 END AS protocole_id, montant_non_facture, COALESCE(w_correspondances_pole.oid, 0) AS pole_id FROM p_factures_lignes_h LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source LEFT JOIN w_correspondances_actes ON acte_id = w_correspondances_actes.oid_source LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source ; ]]> 0 THEN medecin_comptabilise_id + [IPX] ELSE 0 END AS medecin_comptabilise_id, montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, montant_comptabilise_2, montant_comptabilise_22, montant_regle, montant_regle_0, montant_regle_1, montant_regle_2, montant_regle_22, montant_solde, montant_solde_0, montant_solde_1, montant_solde_2, montant_solde_22, finess, od_avoir, CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id FROM p_factures_soldes_h; ]]> 0 THEN p_factures_encours.oid + [IPX] ELSE 0 END AS oid, CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, '[CPX]' || no_sejour AS no_sejour, '[CPX]' || no_facture AS no_facture, CASE WHEN no_facture_reference <> '' THEN '[CPX]' || no_facture_reference ELSE '' END AS no_facture_reference, date_debut, date_fin, date_encours, code_origine, code_sorti, CASE WHEN tiers_payant_1_id <> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, 0 AS ghs_bebe1_id, 0 AS ghs_bebe2_id, 0 AS ghs_bebe3_id, code_cp_demandee, montant_encours_c, montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, montant_encours_22_c, montant_encours_h, montant_encours_0_h, montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, date_entree, heure_entree, date_sortie, heure_sortie, type_sejour, CASE WHEN lieu_sortie_id <> 0 THEN lieu_sortie_id + [IPX] ELSE 0 END AS lieu_sortie_id, date_groupage, provider_id, COALESCE(w_correspondances_ghm.oid,0) AS ghm_id FROM p_factures_encours LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source LEFT JOIN w_correspondances_ghm ON ghm_id = w_correspondances_ghm.oid_source ; -- Récupération tables sources SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.p_factures_encours_lignes_c WHERE EXISTS (SELECT 1 FROM temp.w_sejours JOIN activite.p_factures_encours ON w_sejours.no_sejour = p_factures_encours.no_sejour WHERE p_factures_encours.no_facture = activite.p_factures_encours_lignes_c.no_facture) limit 100000000000 ', 'temp p_factures_encours_lignes_c' ); CREATE INDEX p_factures_encours_lignes_c_i1 ON p_factures_encours_lignes_c USING btree (prestation_id); INSERT INTO activite.p_factures_encours_lignes_c( facture_id, no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, rubrique_facturation_id, rubrique_comptabilisation_id, compte_produit_id, prestation_id, taux_0, taux_1, taux_2, taux_22, prix_unitaire, lieu_id, nb_prestation, montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, montant_encours_22, pole_id ) SELECT CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, '[CPX]' || no_facture AS no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, CASE WHEN rubrique_facturation_id <> 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, COALESCE(w_correspondances_compte.oid,0) AS compte_produit_id, COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, taux_0, taux_1, taux_2, taux_22, prix_unitaire, CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, nb_prestation, montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, montant_encours_22, COALESCE(w_correspondances_pole.oid, 0) AS pole_id FROM p_factures_encours_lignes_c LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source LEFT JOIN w_correspondances_compte ON compte_produit_id = w_correspondances_compte.oid_source LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source; ]]> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, '[CPX]' || no_sejour AS no_sejour, date_entree, date_sortie, code_sorti, CASE WHEN facture_reference_id <> 0 THEN facture_reference_id + [IPX] ELSE 0 END AS facture_reference_id, '[CPX]' || no_facture_reference AS no_facture_reference, type_t2a, date_debut_facture, date_fin_facture, type_facture, date_groupage, retard_groupage, delai_groupage, nb_groupe, nb_non_groupe, nb_calculable, COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, 0 AS ghs_bebe1_id, 0 AS ghs_bebe2_id, 0 AS ghs_bebe3_id, CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, CASE WHEN tiers_payant_1_id <> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, code_facture, date_facture, retard_facture, delai_facture, code_vente, date_vente, nb_factures, nb_non_calcules, nb_factures_regularisation, nb_rejets, code_expedie_0, code_expedie_1, code_expedie_2, date_expedition, date_expedition_0, date_expedition_1, date_expedition_2, no_bordereau_0, no_bordereau_1, no_bordereau_2, delai_expedition, delai_expedition_0, delai_expedition_1, delai_expedition_2, nb_non_expedie, nb_non_expedie_c, nb_non_expedie_h, nb_non_expedie_0, nb_non_expedie_0_c, nb_non_expedie_0_h, nb_non_expedie_1, nb_non_expedie_1_c, nb_non_expedie_1_h, nb_non_expedie_2, nb_non_expedie_2_c, nb_non_expedie_2_h, montant_facture, montant_facture_c, montant_facture_h, montant_facture_0, montant_facture_0_c, montant_facture_0_h, montant_facture_1, montant_facture_1_c, montant_facture_1_h, montant_facture_2, montant_facture_2_c, montant_facture_2_h, montant_facture_c_actes_inclus_dans_sejour, montant_facture_h_actes_inclus_dans_sejour, montant_encours, montant_encours_c, montant_encours_h, montant_encours_0, montant_encours_0_c, montant_encours_0_h, montant_encours_1, montant_encours_1_c, montant_encours_1_h, montant_encours_2, montant_encours_2_c, montant_encours_2_h, montant_comptabilise, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0, montant_comptabilise_0_c, montant_comptabilise_0_h, montant_comptabilise_1, montant_comptabilise_1_c, montant_comptabilise_1_h, montant_comptabilise_2, montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_budget_global_c, montant_regle, montant_regle_c, montant_regle_h, montant_regle_0, montant_regle_0_c, montant_regle_0_h, montant_regle_1, montant_regle_1_c, montant_regle_1_h, montant_regle_2, montant_regle_2_c, montant_regle_2_h, date_solde, date_solde_c, date_solde_h, date_solde_0, date_solde_0_c, date_solde_0_h, date_solde_1, date_solde_1_c, date_solde_1_h, date_solde_2, date_solde_2_c, date_solde_2_h, delai_solde, delai_solde_c, delai_solde_h, delai_solde_0, delai_solde_0_c, delai_solde_0_h, delai_solde_1, delai_solde_1_c, delai_solde_1_h, delai_solde_2, delai_solde_2_c, delai_solde_2_h, nb_non_solde, nb_non_solde_c, nb_non_solde_h, nb_non_solde_0, nb_non_solde_0_c, nb_non_solde_0_h, nb_non_solde_1, nb_non_solde_1_c, nb_non_solde_1_h, nb_non_solde_2, nb_non_solde_2_c, nb_non_solde_2_h, nb_non_cloture, nb_non_cloture_c, nb_non_cloture_h, nb_non_cloture_0, nb_non_cloture_0_c, nb_non_cloture_0_h, nb_non_cloture_1, nb_non_cloture_1_c, nb_non_cloture_1_h, nb_non_cloture_2, nb_non_cloture_2_c, nb_non_cloture_2_h, COALESCE(w_correspondances_pole.oid, 0) AS pole_sortie_id FROM p_factures_reference LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source LEFT JOIN w_correspondances_pole ON pole_sortie_id = w_correspondances_pole.oid_source; -- Récupération tables sources (detail tiers) SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.p_factures_reference_tiers WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = activite.p_factures_reference_tiers.no_sejour) limit 100000000000 ', 'temp p_factures_reference_tiers' ); CREATE INDEX p_factures_reference_tiers_i1 ON p_factures_reference_tiers USING btree (ghs_id); INSERT INTO activite.p_factures_reference_tiers( sejour_id, no_sejour, date_entree, date_sortie, code_sorti, facture_reference_id, no_facture_reference, type_t2a, date_debut_facture, date_fin_facture, type_facture, date_groupage, retard_groupage, delai_groupage, nb_groupe, nb_non_groupe, nb_calculable, ghs_id, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, tiers_payant_id, code_facture, date_facture, retard_facture, delai_facture, code_vente, date_vente, nb_factures, nb_non_calcules, nb_factures_regularisation, nb_rejets, code_expedie_0, code_expedie_1, code_expedie_2, date_expedition, date_expedition_0, date_expedition_1, date_expedition_2, no_bordereau_0, no_bordereau_1, no_bordereau_2, delai_expedition, delai_expedition_0, delai_expedition_1, delai_expedition_2, nb_non_expedie, nb_non_expedie_c, nb_non_expedie_h, nb_non_expedie_0, nb_non_expedie_0_c, nb_non_expedie_0_h, nb_non_expedie_1, nb_non_expedie_1_c, nb_non_expedie_1_h, nb_non_expedie_2, nb_non_expedie_2_c, nb_non_expedie_2_h, montant_facture, montant_facture_c, montant_facture_h, montant_facture_0, montant_facture_0_c, montant_facture_0_h, montant_facture_1, montant_facture_1_c, montant_facture_1_h, montant_facture_2, montant_facture_2_c, montant_facture_2_h, montant_facture_c_actes_inclus_dans_sejour, montant_facture_h_actes_inclus_dans_sejour, montant_encours, montant_encours_c, montant_encours_h, montant_encours_0, montant_encours_0_c, montant_encours_0_h, montant_encours_1, montant_encours_1_c, montant_encours_1_h, montant_encours_2, montant_encours_2_c, montant_encours_2_h, montant_comptabilise, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0, montant_comptabilise_0_c, montant_comptabilise_0_h, montant_comptabilise_1, montant_comptabilise_1_c, montant_comptabilise_1_h, montant_comptabilise_2, montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_budget_global_c, montant_regle, montant_regle_c, montant_regle_h, montant_regle_0, montant_regle_0_c, montant_regle_0_h, montant_regle_1, montant_regle_1_c, montant_regle_1_h, montant_regle_2, montant_regle_2_c, montant_regle_2_h, date_solde, date_solde_c, date_solde_h, date_solde_0, date_solde_0_c, date_solde_0_h, date_solde_1, date_solde_1_c, date_solde_1_h, date_solde_2, date_solde_2_c, date_solde_2_h, delai_solde, delai_solde_c, delai_solde_h, delai_solde_0, delai_solde_0_c, delai_solde_0_h, delai_solde_1, delai_solde_1_c, delai_solde_1_h, delai_solde_2, delai_solde_2_c, delai_solde_2_h, nb_non_solde, nb_non_solde_c, nb_non_solde_h, nb_non_solde_0, nb_non_solde_0_c, nb_non_solde_0_h, nb_non_solde_1, nb_non_solde_1_c, nb_non_solde_1_h, nb_non_solde_2, nb_non_solde_2_c, nb_non_solde_2_h, nb_non_cloture, nb_non_cloture_c, nb_non_cloture_h, nb_non_cloture_0, nb_non_cloture_0_c, nb_non_cloture_0_h, nb_non_cloture_1, nb_non_cloture_1_c, nb_non_cloture_1_h, nb_non_cloture_2, nb_non_cloture_2_c, nb_non_cloture_2_h, pole_sortie_id ) SELECT CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, '[CPX]' || no_sejour AS no_sejour, date_entree, date_sortie, code_sorti, CASE WHEN facture_reference_id <> 0 THEN facture_reference_id + [IPX] ELSE 0 END AS facture_reference_id, '[CPX]' || no_facture_reference AS no_facture_reference, type_t2a, date_debut_facture, date_fin_facture, type_facture, date_groupage, retard_groupage, delai_groupage, nb_groupe, nb_non_groupe, nb_calculable, COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, 0 AS ghs_bebe1_id, 0 AS ghs_bebe2_id, 0 AS ghs_bebe3_id, CASE WHEN tiers_payant_id <> 0 THEN tiers_payant_id + [IPX] ELSE 0 END AS tiers_payant_id, code_facture, date_facture, retard_facture, delai_facture, code_vente, date_vente, nb_factures, nb_non_calcules, nb_factures_regularisation, nb_rejets, code_expedie_0, code_expedie_1, code_expedie_2, date_expedition, date_expedition_0, date_expedition_1, date_expedition_2, no_bordereau_0, no_bordereau_1, no_bordereau_2, delai_expedition, delai_expedition_0, delai_expedition_1, delai_expedition_2, nb_non_expedie, nb_non_expedie_c, nb_non_expedie_h, nb_non_expedie_0, nb_non_expedie_0_c, nb_non_expedie_0_h, nb_non_expedie_1, nb_non_expedie_1_c, nb_non_expedie_1_h, nb_non_expedie_2, nb_non_expedie_2_c, nb_non_expedie_2_h, montant_facture, montant_facture_c, montant_facture_h, montant_facture_0, montant_facture_0_c, montant_facture_0_h, montant_facture_1, montant_facture_1_c, montant_facture_1_h, montant_facture_2, montant_facture_2_c, montant_facture_2_h, montant_facture_c_actes_inclus_dans_sejour, montant_facture_h_actes_inclus_dans_sejour, montant_encours, montant_encours_c, montant_encours_h, montant_encours_0, montant_encours_0_c, montant_encours_0_h, montant_encours_1, montant_encours_1_c, montant_encours_1_h, montant_encours_2, montant_encours_2_c, montant_encours_2_h, montant_comptabilise, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0, montant_comptabilise_0_c, montant_comptabilise_0_h, montant_comptabilise_1, montant_comptabilise_1_c, montant_comptabilise_1_h, montant_comptabilise_2, montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_budget_global_c, montant_regle, montant_regle_c, montant_regle_h, montant_regle_0, montant_regle_0_c, montant_regle_0_h, montant_regle_1, montant_regle_1_c, montant_regle_1_h, montant_regle_2, montant_regle_2_c, montant_regle_2_h, date_solde, date_solde_c, date_solde_h, date_solde_0, date_solde_0_c, date_solde_0_h, date_solde_1, date_solde_1_c, date_solde_1_h, date_solde_2, date_solde_2_c, date_solde_2_h, delai_solde, delai_solde_c, delai_solde_h, delai_solde_0, delai_solde_0_c, delai_solde_0_h, delai_solde_1, delai_solde_1_c, delai_solde_1_h, delai_solde_2, delai_solde_2_c, delai_solde_2_h, nb_non_solde, nb_non_solde_c, nb_non_solde_h, nb_non_solde_0, nb_non_solde_0_c, nb_non_solde_0_h, nb_non_solde_1, nb_non_solde_1_c, nb_non_solde_1_h, nb_non_solde_2, nb_non_solde_2_c, nb_non_solde_2_h, nb_non_cloture, nb_non_cloture_c, nb_non_cloture_h, nb_non_cloture_0, nb_non_cloture_0_c, nb_non_cloture_0_h, nb_non_cloture_1, nb_non_cloture_1_c, nb_non_cloture_1_h, nb_non_cloture_2, nb_non_cloture_2_c, nb_non_cloture_2_h, COALESCE(w_correspondances_pole.oid, 0) AS pole_sortie_id FROM p_factures_reference_tiers LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source LEFT JOIN w_correspondances_pole ON pole_sortie_id = w_correspondances_pole.oid_source ; ]]> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id FROM p_factures_rejets LEFT JOIN w_correspondances_rejets_noemie ON rejet_id = w_correspondances_rejets_noemie.oid_source; ]]> = '[ENV_ADM_ANNEEDEBUT]0101' GROUP BY 1,2,3; --INSERT INTO activite.p_factures_comptables( -- finess, -- no_facture, -- date_comptable, -- facture_id, -- provider_id, -- montant_ventes_c, -- montant_reglements_c, -- montant_ventes_h, -- montant_reglements_h) --SELECT -- COALESCE(w_correspondances_finess.code,'[FINESS]') AS finess, -- '[CPX]' || no_facture AS no_facture, -- date_comptable, -- CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, -- provider_id, -- montant_ventes_c, -- montant_reglements_c, -- montant_ventes_h, -- montant_reglements_h --FROM p_factures_comptables --LEFT JOIN w_correspondances_finess ON p_chiffrier_comptable.finess = w_correspondances_finess.code_source --WHERE date_comptable >= '[ENV_ADM_ANNEEDEBUT]0101' --GROUP BY 1,2,3,4,5; ]]> 0 AND NOT EXISTS (SELECT 1 FROM base.t_finess WHERE code = i_finess.code) ; DROP TABLE IF EXISTS w_correspondances_finess; CREATE TEMP TABLE w_correspondances_finess AS SELECT i_finess.oid AS oid_source, i_finess.code AS code_source, t_finess.oid AS oid, t_finess.code AS code, t_finess.oid AS oid_base FROM i_finess JOIN base.t_finess ON t_finess.code = i_finess.code WHERE i_finess.oid <> 0 UNION SELECT 0, '', t_finess.oid AS oid, t_finess.code AS code, t_finess.oid AS oid_base FROM base.t_finess WHERE t_finess.code = '[FINESS]' ; UPDATE w_correspondances_finess SET oid = t_finess.oid, code = t_finess.code FROM base.t_finess WHERE t_finess.code = '[FINESS]' AND '[KEEP_FINESS]' <> '1' ; CREATE INDEX w_correspondances_finess_1 ON w_correspondances_finess USING btree (oid_source); CREATE INDEX w_correspondances_finess_2 ON w_correspondances_finess USING btree (code_source); ]]> 'RAZ' ; DELETE FROM activite.p_sejours WHERE no_sejour LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_mouvements_sejour WHERE no_sejour LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_sejour_lieu WHERE split_part(no_sejour,'_',1) = '[PX]' ; DELETE FROM activite.p_intervention WHERE sejour_id BETWEEN [IPX] AND ([IPX] + 999999999999) ; DELETE FROM activite.p_factures WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_lignes_non_facturees_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_lignes_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_lignes_non_facturees_h WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_lignes_h WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_soldes_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_facture_solde_tiers_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_soldes_h WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_encours WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_encours_lignes_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_reference WHERE no_sejour LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_reference_tiers WHERE no_sejour LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_factures_rejets WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' ; DELETE FROM activite.p_chiffrier_comptable WHERE EXISTS (SELECT 1 FROM w_correspondances_finess WHERE code_source = activite.p_chiffrier_comptable.finess) OR EXISTS (SELECT 1 FROM w_correspondances_finess WHERE code = activite.p_chiffrier_comptable.finess) ; DELETE FROM activite.p_factures_comptables WHERE EXISTS (SELECT 1 FROM w_correspondances_finess WHERE code_source = activite.p_factures_comptables.finess) OR EXISTS (SELECT 1 FROM w_correspondances_finess WHERE code = activite.p_factures_comptables.finess) ; DELETE FROM activite.p_consolidation_translation WHERE from_database ILIKE '[DBNAME]' ; ]]> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_tiers_payant WHERE t_tiers_payant.oid = w_t_tiers_payant.oid + [IPX]); SELECT activite.cti_update_schema_classes('TIERSP'); ]]> 0 AND NOT EXISTS (SELECT 1 FROM base.t_specialites_medecin WHERE code = w_t_specialites_medecin.code) AND oid <> 0; DROP TABLE IF EXISTS w_correspondances_specialites_medecin; CREATE TEMP TABLE w_correspondances_specialites_medecin AS SELECT t_specialites_medecin_source.oid AS oid_source, coalesce(t_specialites_medecin.oid,0) AS oid FROM w_t_specialites_medecin AS t_specialites_medecin_source LEFT JOIN base.t_specialites_medecin ON t_specialites_medecin_source.code = t_specialites_medecin.code; CREATE INDEX w_correspondances_specialites_medecin_1 ON w_correspondances_specialites_medecin USING btree (oid_source); INSERT INTO base.t_medecins(oid, nom, prenom, numero_ordre, specialite_id ) SELECT 0, 'Non renseigné', '', '', 0 WHERE NOT EXISTS (SELECT 1 FROM base.t_medecins WHERE oid = 0); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM base.t_medecins WHERE EXISTS (SELECT 1 FROM activite.t_medecins_administratifs WHERE medecin_id = base.t_medecins.oid) ', 'temp t_medecins' ); INSERT INTO base.t_medecins( nom, prenom, numero_ordre, code_rpps, specialite_id) SELECT t_medecins_source.nom, t_medecins_source.prenom, t_medecins_source.numero_ordre, t_medecins_source.code_rpps, COALESCE(w_correspondances_specialites_medecin.oid,0) FROM t_medecins t_medecins_source LEFT JOIN w_correspondances_specialites_medecin ON t_medecins_source.specialite_id = oid_source LEFT JOIN base.t_medecins ON ( t_medecins.nom = t_medecins_source.nom AND t_medecins.prenom = t_medecins_source.prenom AND t_medecins.numero_ordre = t_medecins_source.numero_ordre AND length(t_medecins_source.numero_ordre) = 9 ) OR ( t_medecins.nom = t_medecins_source.nom AND t_medecins.prenom = t_medecins_source.prenom AND length(t_medecins_source.numero_ordre) <> 9 AND t_medecins.specialite_id = COALESCE(w_correspondances_specialites_medecin.oid,0) ) OR ( t_medecins.nom = t_medecins_source.nom AND t_medecins.prenom = t_medecins_source.prenom AND t_medecins.code_rpps = t_medecins_source.code_rpps AND length(t_medecins_source.code_rpps) = 11 ) WHERE t_medecins_source.oid <> 0 AND t_medecins.oid IS NULL GROUP BY 1,2,3,4,5; DROP TABLE IF EXISTS w_correspondances_medecins; CREATE TEMP TABLE w_correspondances_medecins AS SELECT t_medecins_source.oid AS oid_source, (MAX(ARRAY[(CASE WHEN EXISTS (SELECT 1 FROM activite.t_medecins_administratifs WHERE medecin_id = t_medecins.oid) THEN 1 ELSE 0 END)::bigint,coalesce(t_medecins.oid,0)]))[2] AS oid FROM t_medecins AS t_medecins_source LEFT JOIN w_correspondances_specialites_medecin ON t_medecins_source.specialite_id = oid_source LEFT JOIN base.t_medecins ON ( t_medecins.nom = t_medecins_source.nom AND t_medecins.prenom = t_medecins_source.prenom AND t_medecins.numero_ordre = t_medecins_source.numero_ordre AND length(t_medecins_source.numero_ordre) = 9 ) OR ( t_medecins.nom = t_medecins_source.nom AND t_medecins.prenom = t_medecins_source.prenom AND length(t_medecins_source.numero_ordre) <> 9 AND t_medecins.specialite_id = COALESCE(w_correspondances_specialites_medecin.oid,0) ) OR ( t_medecins.nom = t_medecins_source.nom AND t_medecins.prenom = t_medecins_source.prenom AND t_medecins.code_rpps = t_medecins_source.code_rpps AND length(t_medecins_source.code_rpps) = 11 ) GROUP BY 1; CREATE INDEX w_correspondances_medecins_1 ON w_correspondances_medecins USING btree (oid_source); UPDATE base.t_medecins SET code_rpps = t_medecins_source.code_rpps FROM w_correspondances_medecins JOIN t_medecins t_medecins_source ON w_correspondances_medecins.oid_source = t_medecins_source.oid WHERE t_medecins.oid = w_correspondances_medecins.oid AND t_medecins.code_rpps = '' AND t_medecins_source.code_rpps <> '' ; INSERT INTO activite.t_specialites_medecin(oid, code, code_original, texte, texte_court) SELECT 0, '', '0', 'Non saisie', 'Non saisie' WHERE NOT EXISTS (SELECT 1 FROM activite.t_specialites_medecin WHERE oid = 0); INSERT INTO activite.t_medecins_administratifs(oid, code_original, code, nom, prenom, specialite_id, medecin_id) SELECT 0, '0', '****', 'Non renseigné', '', 0, 0 WHERE NOT EXISTS (SELECT 1 FROM activite.t_medecins_administratifs WHERE oid = 0); DROP TABLE IF EXISTS w_t_medecins_administratifs; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.t_medecins_administratifs ', 'temp w_t_medecins_administratifs' ); INSERT INTO activite.t_medecins_administratifs( oid, code, code_original, nom, prenom, specialite_id, medecin_id) SELECT w_t_medecins_administratifs.oid + [IPX], '[CPX]' || w_t_medecins_administratifs.code, w_t_medecins_administratifs.oid + [IPX] AS code_original, w_t_medecins_administratifs.nom, w_t_medecins_administratifs.prenom, COALESCE(w_correspondances_specialites_medecin.oid,0) AS specialite_id, COALESCE(w_correspondances_medecins.oid,0) AS medecin_id FROM w_t_medecins_administratifs LEFT JOIN w_correspondances_specialites_medecin ON w_t_medecins_administratifs.specialite_id = w_correspondances_specialites_medecin.oid_source LEFT JOIN w_correspondances_medecins ON w_t_medecins_administratifs.medecin_id = w_correspondances_medecins.oid_source WHERE w_t_medecins_administratifs.oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_medecins_administratifs WHERE oid = w_t_medecins_administratifs.oid + [IPX]); INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) SELECT '[DBNAME]'::text AS from_database, 'MEDECIN'::text AS table_code, oid AS from_id, code AS from_code, oid + [IPX] AS to_oid, '[CPX]' || code AS to_code FROM w_t_medecins_administratifs WHERE oid <> 0 ; -- Correction de la requête suivante qui faisait un UPDATE abusif qui ne vérifiait pas la correspondance du code (ajoutée depuis) UPDATE activite.t_medecins_administratifs SET code = ('[CPX]'::text || w_med.code::text), nom = w_med.nom, prenom = w_med.prenom FROM w_t_medecins_administratifs w_med WHERE w_med.oid + [IPX] = t_medecins_administratifs.oid AND ('[CPX]'::text || w_med.code::text) IS DISTINCT FROM t_medecins_administratifs.code; UPDATE activite.t_medecins_administratifs SET specialite_id = COALESCE(w_correspondances_specialites_medecin.oid,0), nom = t_medecins_administratifs_env.nom, prenom = t_medecins_administratifs_env.prenom, no_adeli = t_medecins_administratifs_env.no_adeli, est_medecin_salarie = t_medecins_administratifs_env.est_medecin_salarie FROM w_t_medecins_administratifs t_medecins_administratifs_env LEFT JOIN w_correspondances_specialites_medecin ON t_medecins_administratifs_env.specialite_id = w_correspondances_specialites_medecin.oid_source WHERE t_medecins_administratifs_env.oid + [IPX] = t_medecins_administratifs.oid AND '[CPX]'::text || t_medecins_administratifs_env.code::text = t_medecins_administratifs.code AND (t_medecins_administratifs.specialite_id IS DISTINCT FROM COALESCE(w_correspondances_specialites_medecin.oid,0) OR t_medecins_administratifs.nom IS DISTINCT FROM t_medecins_administratifs_env.nom OR t_medecins_administratifs.prenom IS DISTINCT FROM t_medecins_administratifs_env.prenom OR t_medecins_administratifs.no_adeli IS DISTINCT FROM t_medecins_administratifs_env.no_adeli OR t_medecins_administratifs.est_medecin_salarie IS DISTINCT FROM t_medecins_administratifs_env.est_medecin_salarie ); -- Correction reference medecin suite à fusion ou autre (selon un taux d'erreurs > 10% ou nombre d'erreurs > 100 -- On efface la reference qui sera recree depuis la source DROP TABLE IF EXISTS w_referentiel_ko; CREATE TEMP TABLE w_referentiel_ko AS SELECT t_medecins_administratifs.nom AS adm_nom, t_medecins_administratifs.prenom AS adm_prenom, t_medecins.nom, t_medecins.prenom, t_medecins_source.nom AS nom_source, t_medecins_source.prenom AS prenom_source, t_medecins_administratifs.medecin_id, t_medecins_administratifs.oid AS medecin_administratif_id, CASE WHEN base.cti_soundex_nom(t_medecins_administratifs.nom || ' ' || t_medecins_administratifs.prenom) <> base.cti_soundex_nom(t_medecins.nom || ' ' || t_medecins.prenom) AND base.cti_soundex_nom(t_medecins_administratifs.prenom || ' ' || t_medecins_administratifs.nom) <> base.cti_soundex_nom(t_medecins.nom || ' ' || t_medecins.prenom) AND base.cti_soundex_nom(t_medecins_administratifs.nom) <> base.cti_soundex_nom(t_medecins.nom) AND upper(left(t_medecins_administratifs.nom,5)) <> upper(left(t_medecins.nom,5)) THEN '0' ELSE '1' END AS is_ok, CASE WHEN t_medecins.nom = t_medecins_source.nom THEN '1' ELSE '0' END AS is_ok_source FROM activite.t_medecins_administratifs JOIN base.t_medecins ON medecin_id = t_medecins.oid JOIN w_t_medecins_administratifs t_medecins_administratifs_source ON t_medecins_administratifs.oid = (t_medecins_administratifs_source.oid + [IPX]) JOIN t_medecins t_medecins_source ON t_medecins_administratifs_source.medecin_id = t_medecins_source.oid WHERE length(t_medecins_administratifs.nom) > 2 AND t_medecins_administratifs.medecin_id <> 0 AND t_medecins_administratifs.oid BETWEEN [IPX] AND [IPX]+999999999999 ; UPDATE activite.t_medecins_administratifs SET medecin_id = 0 FROM w_referentiel_ko WHERE t_medecins_administratifs.oid = medecin_administratif_id AND is_ok = '0' AND is_ok_source = '0' ; UPDATE activite.t_medecins_administratifs SET medecin_id = 0 FROM w_referentiel_ko JOIN ( SELECT count(*), SUM(CASE WHEN is_ok <> '1' THEN 1 ELSE 0 END), base.cti_division(SUM(CASE WHEN is_ok <> '1' THEN 1 ELSE 0 END), count(*)) FROM w_referentiel_ko HAVING base.cti_division(SUM(CASE WHEN is_ok <> '1' THEN 1 ELSE 0 END), count(*)) >= 0.1 OR SUM(CASE WHEN is_ok <> '1' THEN 1 ELSE 0 END) > 100 ) subview ON 1=1 WHERE t_medecins_administratifs.oid = medecin_administratif_id AND is_ok = '0' ; UPDATE activite.t_medecins_administratifs SET medecin_id = w_correspondances_medecins.oid FROM w_t_medecins_administratifs t_medecins_administratifs_source JOIN w_correspondances_medecins ON t_medecins_administratifs_source.medecin_id = w_correspondances_medecins.oid_source WHERE t_medecins_administratifs.oid = t_medecins_administratifs_source.oid + [IPX] AND t_medecins_administratifs.medecin_id <> w_correspondances_medecins.oid_source AND t_medecins_administratifs.medecin_id = 0 ; -- Suppression des médecins qui n'existent plus DELETE FROM activite.t_medecins_administratifs WHERE oid BETWEEN [IPX] AND [IPX]+999999999999 AND NOT EXISTS (SELECT 1 FROM w_t_medecins_administratifs WHERE oid = activite.t_medecins_administratifs.oid-[IPX]) ; -- Initialisation spécialites si modifées après dans la source UPDATE base.t_medecins SET specialite_id = subview.to_specialite_id FROM ( SELECT t_medecins.oid, MAX(t_medecins_source.nom) AS source_nom, MAX(t_medecins_source.prenom) AS source_prenom, MAX(t_medecins_source.specialite_id) AS source_specialite_id, MAX(t_specialites_medecin_source.code) AS source_specialite_code, MAX(t_medecins.nom) AS nom, MAX(t_medecins.prenom) AS prenom, MAX(t_medecins.specialite_id) AS specialite_id, MAX(w_correspondances_specialites_medecin.oid) AS to_specialite_id FROM t_medecins t_medecins_source JOIN w_t_medecins_administratifs t_medecins_administratifs_source ON medecin_id = t_medecins_source.oid JOIN w_t_specialites_medecin t_specialites_medecin_source ON t_medecins_source.specialite_id = t_specialites_medecin_source.oid JOIN w_correspondances_medecins ON t_medecins_administratifs_source.medecin_id = w_correspondances_medecins.oid_source JOIN base.t_medecins ON w_correspondances_medecins.oid = t_medecins.oid JOIN base.t_specialites_medecin ON t_medecins.specialite_id = t_specialites_medecin.oid JOIN w_correspondances_specialites_medecin ON t_medecins_source.specialite_id = w_correspondances_specialites_medecin.oid_source WHERE t_specialites_medecin_source.code <> t_specialites_medecin.code AND ( t_specialites_medecin.code LIKE '%**' OR t_specialites_medecin.oid = 0 ) AND t_specialites_medecin_source.code NOT LIKE '%**' AND t_specialites_medecin_source.oid <> 0 GROUP BY 1 ) subview WHERE t_medecins.oid = subview.oid ; SELECT activite.cti_update_schema_classes('MEDECIN'); ]]> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_forme_activite WHERE code = i_forme_activite.code); INSERT INTO activite.t_forme_activite_rule (code, texte) SELECT '*NORULE_CONSO', 'Pas de règle sur environnement consolidé' WHERE NOT EXISTS (SELECT 1 FROM activite.t_forme_activite_rule WHERE code = '*NORULE_CONSO') ; DELETE FROM activite.t_forme_activite_rule WHERE code <> '*NORULE_CONSO' ; DROP TABLE IF EXISTS w_correspondances_forme_activite; CREATE TEMP TABLE w_correspondances_forme_activite AS SELECT i_forme_activite.oid AS oid_source, COALESCE(t_forme_activite.oid,0) AS oid FROM i_forme_activite LEFT JOIN activite.t_forme_activite ON i_forme_activite.code = t_forme_activite.code; CREATE INDEX w_correspondances_forme_activite_1 ON w_correspondances_forme_activite USING btree (oid_source); -- Pole INSERT INTO base.t_pole ( code, texte, texte_court ) SELECT code, texte, texte_court FROM i_pole WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM base.t_pole WHERE code = i_pole.code); DROP TABLE IF EXISTS w_correspondances_pole; CREATE TEMP TABLE w_correspondances_pole AS SELECT i_pole.oid AS oid_source, COALESCE(t_pole.oid,0) AS oid FROM i_pole LEFT JOIN base.t_pole ON i_pole.code = t_pole.code; CREATE INDEX w_correspondances_pole_1 ON w_correspondances_pole USING btree (oid_source); -- Codes postaux INSERT INTO base.t_codes_postaux ( code, texte, texte_court ) SELECT code, texte, texte_court FROM w_t_codes_postaux WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM base.t_codes_postaux WHERE code = w_t_codes_postaux.code) AND oid <> 0; DROP TABLE IF EXISTS w_correspondances_codes_postaux; CREATE TEMP TABLE w_correspondances_codes_postaux AS SELECT t_codes_postaux_source.oid AS oid_source, coalesce(t_codes_postaux.oid,0) AS oid FROM w_t_codes_postaux AS t_codes_postaux_source LEFT JOIN base.t_codes_postaux ON t_codes_postaux_source.code = t_codes_postaux.code; CREATE INDEX w_correspondances_codes_postaux_1 ON w_correspondances_codes_postaux USING btree (oid_source); -- Modes de traitement INSERT INTO base.t_modes_traitement ( code, texte, texte_court, code_original ) SELECT code, texte, texte_court, code_original FROM w_t_modes_traitement WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM base.t_modes_traitement WHERE code = w_t_modes_traitement.code); DROP TABLE IF EXISTS w_correspondances_modes_traitement; CREATE TEMP TABLE w_correspondances_modes_traitement AS SELECT t_modes_traitement_source.oid AS oid_source, coalesce(t_modes_traitement.oid,0) AS oid FROM w_t_modes_traitement AS t_modes_traitement_source LEFT JOIN base.t_modes_traitement ON t_modes_traitement_source.code = t_modes_traitement.code; CREATE INDEX w_correspondances_modes_traitement_1 ON w_correspondances_modes_traitement USING btree (oid_source); -- DMT INSERT INTO base.t_dmt ( code, texte, texte_court, code_original ) SELECT code, texte, texte_court, code_original FROM w_t_dmt WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM base.t_dmt WHERE code = w_t_dmt.code); DROP TABLE IF EXISTS w_correspondances_dmt; CREATE TEMP TABLE w_correspondances_dmt AS SELECT t_dmt_source.oid AS oid_source, coalesce(t_dmt.oid,0) AS oid FROM w_t_dmt AS t_dmt_source LEFT JOIN base.t_dmt ON t_dmt_source.code = t_dmt.code; CREATE INDEX w_correspondances_dmt_1 ON w_correspondances_dmt USING btree (oid_source); -- Services INSERT INTO activite.t_services_facturation(oid, code_original, code, texte, texte_court) SELECT 0, 0, '****', 'Non renseigné', 'Non renseigné' WHERE NOT EXISTS (SELECT 1 FROM activite.t_services_facturation WHERE oid = 0); UPDATE activite.t_services_facturation SET code = '[CPX]' || w_services_facturation.code, texte = w_services_facturation.texte, texte_court = w_services_facturation.texte_court FROM w_t_services_facturation w_services_facturation WHERE 1=1 AND t_services_facturation.oid = w_services_facturation.oid + [IPX] AND ( t_services_facturation.code IS DISTINCT FROM ('[CPX]' || w_services_facturation.code) OR t_services_facturation.texte IS DISTINCT FROM w_services_facturation.texte OR t_services_facturation.texte_court IS DISTINCT FROM w_services_facturation.texte_court ) ; INSERT INTO activite.t_services_facturation( oid, code, code_original, texte, texte_court, finess_id, statut, nb_lits, type_t2a, nb_cp, dmt_id, mode_traitement_id, unite_medicale_modifiable, est_sans_mouvement, etage_par_defaut_id, etage_force_id) SELECT w_t_services_facturation.oid + [IPX], '[CPX]' || w_t_services_facturation.code, w_t_services_facturation.oid + [IPX] AS code_original, w_t_services_facturation.texte, w_t_services_facturation.texte_court, COALESCE(w_correspondances_finess.oid,0) AS finess_id, w_t_services_facturation.statut, w_t_services_facturation.nb_lits, w_t_services_facturation.type_t2a, w_t_services_facturation.nb_cp, COALESCE(w_correspondances_dmt.oid,0) AS dmt_id, COALESCE(w_correspondances_modes_traitement.oid,0) AS mode_traitement_id, w_t_services_facturation.unite_medicale_modifiable, w_t_services_facturation.est_sans_mouvement, CASE WHEN etage_par_defaut_id <> 0 THEN etage_par_defaut_id + [IPX] ELSE 0 END AS etage_par_defaut_id, CASE WHEN etage_force_id <> 0 THEN etage_force_id + [IPX] ELSE 0 END AS etage_force_id FROM w_t_services_facturation LEFT JOIN w_correspondances_finess ON w_t_services_facturation.finess_id = w_correspondances_finess.oid_source LEFT JOIN w_correspondances_modes_traitement ON w_t_services_facturation.mode_traitement_id = w_correspondances_modes_traitement.oid_source LEFT JOIN w_correspondances_dmt ON w_t_services_facturation.dmt_id = w_correspondances_dmt.oid_source WHERE w_t_services_facturation.oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_services_facturation WHERE oid = w_t_services_facturation.oid + [IPX]); UPDATE activite.t_services_facturation SET finess_id = w_correspondances_finess.oid FROM w_t_services_facturation i_services_facturation JOIN w_correspondances_finess ON i_services_facturation.finess_id = w_correspondances_finess.oid_source WHERE t_services_facturation.oid = i_services_facturation.oid + [IPX] AND t_services_facturation.finess_id <> w_correspondances_finess.oid ; UPDATE activite.t_services_facturation SET type_t2a = i_services_facturation.type_t2a, etage_par_defaut_id = CASE WHEN i_services_facturation.etage_par_defaut_id <> 0 THEN i_services_facturation.etage_par_defaut_id + [IPX] ELSE 0 END, etage_force_id = CASE WHEN i_services_facturation.etage_force_id <> 0 THEN i_services_facturation.etage_force_id + [IPX] ELSE 0 END FROM w_t_services_facturation i_services_facturation WHERE t_services_facturation.oid = i_services_facturation.oid + [IPX] AND ( t_services_facturation.type_t2a IS DISTINCT FROM i_services_facturation.type_t2a OR t_services_facturation.etage_par_defaut_id IS DISTINCT FROM CASE WHEN i_services_facturation.etage_par_defaut_id <> 0 THEN i_services_facturation.etage_par_defaut_id + [IPX] ELSE 0 END OR t_services_facturation.etage_force_id IS DISTINCT FROM CASE WHEN i_services_facturation.etage_force_id <> 0 THEN i_services_facturation.etage_force_id + [IPX] ELSE 0 END ) ; INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) SELECT '[DBNAME]'::text AS from_database, 'SERVICE_F'::text AS table_code, oid AS from_id, code AS from_code, oid + [IPX] AS to_oid, '[CPX]' || code AS to_code FROM w_t_services_facturation WHERE oid <> 0 ; -- Unités médicales INSERT INTO activite.t_unites_medicales(oid, code_original, code, texte, texte_court) SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_unites_medicales WHERE oid = 0); UPDATE activite.t_unites_medicales SET code = '[CPX]' || w_unites_medicales.code, texte = w_unites_medicales.texte, texte_court = w_unites_medicales.texte_court FROM w_t_unites_medicales w_unites_medicales WHERE 1=1 AND t_unites_medicales.oid = w_unites_medicales.oid + [IPX] AND ( t_unites_medicales.code IS DISTINCT FROM ('[CPX]' || w_unites_medicales.code) OR t_unites_medicales.texte IS DISTINCT FROM w_unites_medicales.texte OR t_unites_medicales.texte_court IS DISTINCT FROM w_unites_medicales.texte_court ); INSERT INTO activite.t_unites_medicales( oid, code, code_original, texte, texte_court) SELECT oid + [IPX], '[CPX]' || code, oid + [IPX] AS code_original, texte, texte_court FROM w_t_unites_medicales WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_unites_medicales WHERE oid = w_t_unites_medicales.oid + [IPX]); INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) SELECT '[DBNAME]'::text AS from_database, 'UM'::text AS table_code, oid AS from_id, code AS from_code, oid + [IPX] AS to_oid, '[CPX]' || code AS to_code FROM w_t_unites_medicales WHERE oid <> 0 ; -- Unités fonctionnelles INSERT INTO activite.t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_unites_fonctionnelles WHERE oid = 0); UPDATE activite.t_unites_fonctionnelles SET code = '[CPX]' || w_unites_fonctionnelles.code, texte = w_unites_fonctionnelles.texte, texte_court = w_unites_fonctionnelles.texte_court FROM w_t_unites_fonctionnelles w_unites_fonctionnelles WHERE 1=1 AND t_unites_fonctionnelles.oid = w_unites_fonctionnelles.oid + [IPX] AND ( t_unites_fonctionnelles.code IS DISTINCT FROM ('[CPX]' || w_unites_fonctionnelles.code) OR t_unites_fonctionnelles.texte IS DISTINCT FROM w_unites_fonctionnelles.texte OR t_unites_fonctionnelles.texte_court IS DISTINCT FROM w_unites_fonctionnelles.texte_court ); INSERT INTO activite.t_unites_fonctionnelles( oid, code, code_original, texte, texte_court, finess_id) SELECT w_t_unites_fonctionnelles.oid + [IPX], '[CPX]' || w_t_unites_fonctionnelles.code, w_t_unites_fonctionnelles.oid + [IPX] AS code_original, w_t_unites_fonctionnelles.texte, w_t_unites_fonctionnelles.texte_court, COALESCE(w_correspondances_finess.oid,0) AS finess_id FROM w_t_unites_fonctionnelles LEFT JOIN w_correspondances_finess ON w_t_unites_fonctionnelles.finess_id = w_correspondances_finess.oid_source WHERE w_t_unites_fonctionnelles.oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_unites_fonctionnelles WHERE oid = w_t_unites_fonctionnelles.oid + [IPX]); UPDATE activite.t_unites_fonctionnelles SET finess_id = w_correspondances_finess.oid FROM w_t_unites_fonctionnelles i_unites_fonctionnelles JOIN w_correspondances_finess ON i_unites_fonctionnelles.finess_id = w_correspondances_finess.oid_source WHERE t_unites_fonctionnelles.oid = i_unites_fonctionnelles.oid + [IPX] AND t_unites_fonctionnelles.finess_id <> w_correspondances_finess.oid ; INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) SELECT '[DBNAME]'::text AS from_database, 'UF'::text AS table_code, oid AS from_id, code AS from_code, oid + [IPX] AS to_oid, '[CPX]' || code AS to_code FROM w_t_unites_fonctionnelles WHERE oid <> 0 ; -- Activités INSERT INTO activite.t_activites(oid, code_original, code, texte, texte_court) SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_activites WHERE oid = 0); -- Mise à jour préalable des codes s'ils ont été modifiés dans l'environnement source UPDATE activite.t_activites SET code = '[CPX]'::text || w_activites.code::text, code_original = w_activites.oid + [IPX], texte = w_activites.texte, texte_court = w_activites.texte_court FROM w_t_activites w_activites WHERE 1=1 AND t_activites.oid = w_activites.oid + [IPX] AND t_activites.code::text IS DISTINCT FROM ('[CPX]'::text || w_activites.code::text); -- Ajout des nouveaux codes INSERT INTO activite.t_activites( oid, code, code_original, texte, texte_court) SELECT oid + [IPX], '[CPX]' || code, oid + [IPX] AS code_original, texte, texte_court FROM w_t_activites WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_activites WHERE oid = w_t_activites.oid + [IPX]); -- Risques INSERT INTO activite.t_risque(oid, code, texte) SELECT 0, '**', 'Non renseigné' WHERE NOT EXISTS (SELECT 1 FROM activite.t_risque WHERE oid = 0); INSERT INTO activite.t_risque ( code, texte) SELECT t_risque.code, t_risque.texte FROM t_risque LEFT JOIN activite.t_risque ris ON ris.code = t_risque.code WHERE t_risque.oid <> 0 AND ris.code IS NULL; DROP TABLE IF EXISTS w_correspondances_risque; CREATE TEMP TABLE w_correspondances_risque AS SELECT t_risque_source.oid AS oid_source, COALESCE(t_risque.oid, 0) AS oid FROM t_risque AS t_risque_source LEFT JOIN activite.t_risque ON t_risque_source.code = t_risque.code; CREATE INDEX w_correspondancesrisque_1 ON w_correspondances_risque USING btree (oid_source); -- Etages et lits INSERT INTO activite.t_etages(oid, code_original, code, texte, texte_court, nb_lits) SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE NOT EXISTS (SELECT 1 FROM activite.t_etages WHERE oid = 0); UPDATE activite.t_etages SET code = '[CPX]' || w_etages.code FROM w_t_etages w_etages LEFT JOIN w_correspondances_finess ON w_etages.finess_id = w_correspondances_finess.oid_source WHERE 1=1 AND t_etages.oid = w_etages.oid + [IPX] AND ( t_etages.code IS DISTINCT FROM ('[CPX]' || w_etages.code) OR t_etages.nb_lits != w_etages.nb_lits OR t_etages.nb_cp != w_etages.nb_cp OR COALESCE(w_correspondances_finess.oid,0) != t_etages.finess_id ); INSERT INTO activite.t_etages( oid, code, code_original, texte, texte_court, nb_lits, nb_cp, finess_id) SELECT w_t_etages.oid + [IPX], '[CPX]' || w_t_etages.code, w_t_etages.oid + [IPX] AS code_original, w_t_etages.texte, w_t_etages.texte_court, w_t_etages.nb_lits, w_t_etages.nb_cp, COALESCE(w_correspondances_finess.oid,0) AS finess_id FROM w_t_etages LEFT JOIN w_correspondances_finess ON w_t_etages.finess_id = w_correspondances_finess.oid_source WHERE w_t_etages.oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_etages WHERE oid = w_t_etages.oid + [IPX]); UPDATE activite.t_etages SET texte = t_etages_source.texte, texte_court = t_etages_source.texte_court FROM w_t_etages t_etages_source WHERE t_etages.oid = t_etages_source.oid + [IPX] AND ( t_etages.texte IS DISTINCT FROM t_etages_source.texte OR t_etages.texte_court IS DISTINCT FROM t_etages_source.texte_court ) ; UPDATE activite.t_etages SET finess_id = w_correspondances_finess.oid FROM w_t_etages i_etages JOIN w_correspondances_finess ON i_etages.finess_id = w_correspondances_finess.oid_source WHERE t_etages.oid = i_etages.oid + [IPX] AND t_etages.finess_id <> w_correspondances_finess.oid ; INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) SELECT '[DBNAME]'::text AS from_database, 'ETAGE'::text AS table_code, oid AS from_id, code AS from_code, oid + [IPX] AS to_oid, '[CPX]' || code AS to_code FROM w_t_etages WHERE oid <> 0 ; INSERT INTO activite.t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE NOT EXISTS (SELECT 1 FROM activite.t_lits WHERE oid = 0); -- Mise à jour préalable des codes s'ils ont été modifiés dans l'environnement source SELECT base.cti_stash_table_constraints('activite.t_lits'); DELETE FROM activite.t_lits WHERE code like '[CPX]' || '%' AND NOT EXISTS (SELECT 1 FROM activite.t_lits WHERE oid = t_lits.oid - [IPX]); UPDATE activite.t_lits SET code = '[CPX]' || w_lits.code, code_original = w_lits.oid + [IPX], texte = w_lits.texte, texte_court = w_lits.texte_court, chambre_particuliere = w_lits.chambre_particuliere, etage_id = CASE WHEN w_lits.etage_id <> 0 THEN w_lits.etage_id + [IPX] ELSE 0 END FROM t_lits w_lits WHERE 1=1 AND t_lits.oid = w_lits.oid + [IPX] AND ( t_lits.code::text IS DISTINCT FROM ('[CPX]'::text || w_lits.code::text) OR t_lits.chambre_particuliere IS DISTINCT FROM w_lits.chambre_particuliere OR (w_lits.etage_id <> 0 AND t_lits.etage_id != (w_lits.etage_id + [IPX]))) ; SELECT base.cti_stash_pop_table_constraints('activite.t_lits'); -- Ajout des nouveaux codes INSERT INTO activite.t_lits( oid, code, code_original, texte, texte_court, chambre_particuliere, etage_id) SELECT oid + [IPX], '[CPX]' || code, oid + [IPX] AS code_original, texte, texte_court, chambre_particuliere, CASE WHEN etage_id <> 0 THEN etage_id + [IPX] ELSE 0 END AS etage_id FROM t_lits WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_lits WHERE oid = t_lits.oid + [IPX]); INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) SELECT '[DBNAME]'::text AS from_database, 'LIT'::text AS table_code, oid AS from_id, code AS from_code, oid + [IPX] AS to_oid, '[CPX]' || code AS to_code FROM t_lits WHERE oid <> 0 ; -- Historique des places DELETE FROM activite.t_etages_historique WHERE etage_id BETWEEN [IPX] AND [IPX] + 900000000000; INSERT INTO activite.t_etages_historique( etage_id, date, pole_occupation_id, nb_lits_theoriques, nb_lits_cp_theoriques, nb_lits_ouverts, nb_lits_cp_ouverts, est_ouvert_1, est_ouvert_2, est_ouvert_3, est_ouvert_4, est_ouvert_5, est_ouvert_6, est_ouvert_7, heberge_hospitalises, heberge_ambulatoires, heberge_externes, heberge_bebes, heberge_urgences, date_fin, nb_box_ambulatoires_theoriques, nb_box_ambulatoires_ouverts, nb_box_seances_theoriques, nb_box_seances_ouverts) SELECT etage_id + [IPX], date, COALESCE(w_correspondances_pole.oid, 0) AS pole_occupation_id, nb_lits_theoriques, nb_lits_cp_theoriques, nb_lits_ouverts, nb_lits_cp_ouverts, est_ouvert_1, est_ouvert_2, est_ouvert_3, est_ouvert_4, est_ouvert_5, est_ouvert_6, est_ouvert_7, heberge_hospitalises, heberge_ambulatoires, heberge_externes, heberge_bebes, heberge_urgences, date_fin, nb_box_ambulatoires_theoriques, nb_box_ambulatoires_ouverts, nb_box_seances_theoriques, nb_box_seances_ouverts FROM t_etages_historique LEFT JOIN w_correspondances_pole ON pole_occupation_id = w_correspondances_pole.oid_source; DELETE FROM activite.t_lit_historique WHERE lit_id BETWEEN [IPX] AND [IPX] + 900000000000; INSERT INTO activite.t_lit_historique( lit_id, date_debut, date_fin, etage_id) SELECT lit_id + [IPX], date_debut, date_fin, etage_id + [IPX] FROM t_lit_historique; ]]> ''CDAM'' ', 'temp w_t_actes' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM base.t_lpp ', 'temp t_lpp' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM base.t_ucd ', 'temp t_ucd' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.t_rejets_noemie ', 'temp t_rejets_noemie' ); DROP TABLE IF EXISTS w_correspondances_ghs; CREATE TEMP TABLE w_correspondances_ghs AS SELECT t_ghs_source.oid AS oid_source, coalesce(t_ghs.oid,0) AS oid FROM t_ghs AS t_ghs_source LEFT JOIN base.t_ghs ON t_ghs_source.code = t_ghs.code; CREATE INDEX w_correspondances_ghs_1 ON w_correspondances_ghs USING btree (oid_source); DROP TABLE IF EXISTS w_correspondances_ghm; CREATE TEMP TABLE w_correspondances_ghm AS SELECT t_ghm_source.oid AS oid_source, coalesce(t_ghm.oid,0) AS oid FROM t_ghm AS t_ghm_source LEFT JOIN base.t_ghm ON t_ghm_source.code = t_ghm.code; CREATE INDEX w_correspondances_ghm_1 ON w_correspondances_ghm USING btree (oid_source); DROP TABLE IF EXISTS w_correspondances_gme; CREATE TEMP TABLE w_correspondances_gme AS SELECT t_gme_source.oid AS oid_source, coalesce(t_gme.oid,0) AS oid FROM t_gme AS t_gme_source LEFT JOIN base.t_gme ON t_gme_source.code = t_gme.code; CREATE INDEX w_correspondances_gme_1 ON w_correspondances_gme USING btree (oid_source); INSERT INTO activite.t_rubriques_facturation(oid, code_original, code, texte, texte_court) SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_rubriques_facturation WHERE oid = 0); UPDATE activite.t_rubriques_facturation SET code = '#'::text || '[CPX]' || src.code, texte = src.texte, texte_court = src.texte_court FROM w_t_rubriques_facturation src WHERE t_rubriques_facturation.oid = (src.oid + [IPX]) AND ( t_rubriques_facturation.code IS DISTINCT FROM ('[CPX]' || src.code) OR t_rubriques_facturation.texte IS DISTINCT FROM src.texte OR t_rubriques_facturation.texte_court IS DISTINCT FROM src.texte_court ) ; UPDATE activite.t_rubriques_facturation SET code = '[CPX]' || src.code, texte = src.texte, texte_court = src.texte_court FROM w_t_rubriques_facturation src WHERE t_rubriques_facturation.oid = (src.oid + [IPX]) AND ( t_rubriques_facturation.code IS DISTINCT FROM ('[CPX]' || src.code) OR t_rubriques_facturation.texte IS DISTINCT FROM src.texte OR t_rubriques_facturation.texte_court IS DISTINCT FROM src.texte_court ) ; INSERT INTO activite.t_rubriques_facturation( oid, code, code_original, texte, texte_court) SELECT oid + [IPX], '[CPX]' || code, oid + [IPX] AS code_original, texte, texte_court FROM w_t_rubriques_facturation WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_rubriques_facturation WHERE oid = w_t_rubriques_facturation.oid + [IPX]); INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) SELECT '[DBNAME]'::text AS from_database, 'RUBRIQUE'::text AS table_code, oid AS from_id, code AS from_code, oid + [IPX] AS to_oid, '[CPX]' || code AS to_code FROM w_t_rubriques_facturation WHERE oid <> 0 ; INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court, clinique_honoraire) SELECT 0, 0, '', 'Non renseignée', 'Non renseignée', '' WHERE NOT EXISTS (SELECT 1 FROM activite.t_prestations WHERE oid = 0); INSERT INTO activite.t_prestations( code, code_original, texte, texte_court, clinique_honoraire) SELECT code, code_original, texte, texte_court, clinique_honoraire FROM t_prestations WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_prestations t_prestations_c WHERE t_prestations_c.code = t_prestations.code); DROP TABLE IF EXISTS w_correspondances_prestations; CREATE TEMP TABLE w_correspondances_prestations AS SELECT t_prestations_source.oid AS oid_source, coalesce(t_prestations.oid,0) AS oid FROM t_prestations AS t_prestations_source LEFT JOIN activite.t_prestations ON t_prestations_source.code = t_prestations.code; CREATE INDEX w_correspondances_prestations_1 ON w_correspondances_prestations USING btree (oid_source); INSERT INTO activite.t_compte(oid, code_original, code, texte, texte_court) SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_compte WHERE oid = 0); DROP TABLE IF EXISTS c_compte; CREATE TEMP TABLE c_compte AS SELECT oid, code, MAX(texte) as texte, MAX(texte_court) as texte_court, ''::text AS texte_soundex, ''::text AS to_code, 0::bigint AS to_oid FROM t_compte GROUP BY 1,2; UPDATE c_compte SET texte_soundex = base.cti_soundex_nom(lower(texte)); DROP TABLE IF EXISTS w_compte_to; CREATE TEMP TABLE w_compte_to AS SELECT *, ''::text AS texte_soundex FROM activite.t_compte; UPDATE w_compte_to SET texte_soundex = base.cti_soundex_nom(lower(texte)); UPDATE c_compte SET to_oid = oid + [IPX], to_code = code WHERE NOT EXISTS (SELECT 1 FROM w_compte_to WHERE code = c_compte.code); UPDATE c_compte SET to_oid = w_compte_to.oid, to_code = c_compte.code FROM w_compte_to WHERE to_oid = 0 AND c_compte.code = w_compte_to.code AND c_compte.texte_soundex = w_compte_to.texte_soundex; UPDATE c_compte SET to_oid = oid + [IPX], to_code = code || '_[PX]' WHERE to_oid = 0; ALTER TABLE c_compte ADD CONSTRAINT c_compte_pkey PRIMARY KEY(oid); UPDATE activite.t_compte SET code_original = '#'||oid WHERE code_original <> oid::text; UPDATE activite.t_compte SET code_original = oid WHERE code_original <> oid::text; INSERT INTO activite.t_compte( oid, code, code_original, texte, texte_court) SELECT to_oid, to_code, to_oid::text AS code_original, texte, texte_court FROM c_compte WHERE oid != 0 AND NOT EXISTS (SELECT 1 FROM activite.t_compte WHERE t_compte.oid = c_compte.to_oid); ; DROP TABLE IF EXISTS w_correspondances_compte; CREATE TEMP TABLE w_correspondances_compte AS SELECT t_compte_source.oid AS oid_source, MAX(coalesce(t_compte.oid,0)) AS oid FROM c_compte AS t_compte_source LEFT JOIN activite.t_compte ON t_compte_source.to_code = t_compte.code GROUP BY 1; CREATE INDEX w_correspondances_compte_1 ON w_correspondances_compte USING btree (oid_source); INSERT INTO activite.t_protocoles(oid, code_original, code, texte, texte_court) SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE NOT EXISTS (SELECT 1 FROM activite.t_protocoles WHERE oid = 0); UPDATE activite.t_protocoles SET code = '[CPX]'::text || prot_px.code::text, texte = prot_px.texte, texte_court = prot_px.texte FROM w_t_protocoles prot_px WHERE 1=1 AND t_protocoles.oid = (prot_px.oid + [IPX]) AND ((t_protocoles.code::text <> ('[CPX]'::text || prot_px.code::text)) OR (t_protocoles.texte <> prot_px.texte)); INSERT INTO activite.t_protocoles( oid, code, code_original, texte, texte_court) SELECT oid + [IPX], '[CPX]' || code, oid + [IPX] AS code_original, texte, texte_court FROM w_t_protocoles WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_protocoles WHERE oid = w_t_protocoles.oid + [IPX]) AND NOT EXISTS (SELECT 1 FROM activite.t_protocoles WHERE activite.t_protocoles.code = '[CPX]' || w_t_protocoles.code); DROP TABLE IF EXISTS w_correspondances_ccam_regroupements; CREATE TEMP TABLE w_correspondances_ccam_regroupements AS SELECT t_ccam_regroupements_source.oid AS oid_source, coalesce(t_ccam_regroupements.oid,0) AS oid FROM t_ccam_regroupements AS t_ccam_regroupements_source LEFT JOIN base.t_ccam_regroupements ON t_ccam_regroupements_source.code = t_ccam_regroupements.code; CREATE INDEX w_correspondances_ccam_regroupements_1 ON w_correspondances_ccam_regroupements USING btree (oid_source); INSERT INTO base.t_actes( code, texte, texte_court, nomenclature, ccam_regroupement_id_1, ccam_regroupement_id_4) SELECT code, texte, texte_court, nomenclature, COALESCE(w_correspondances_ccam_regroupements_1.oid,0), COALESCE(w_correspondances_ccam_regroupements_4.oid,0) FROM w_t_actes LEFT JOIN w_correspondances_ccam_regroupements w_correspondances_ccam_regroupements_1 ON ccam_regroupement_id_1 = w_correspondances_ccam_regroupements_1.oid_source LEFT JOIN w_correspondances_ccam_regroupements w_correspondances_ccam_regroupements_4 ON ccam_regroupement_id_4 = w_correspondances_ccam_regroupements_4.oid_source WHERE w_t_actes.oid <> 0 AND NOT EXISTS (SELECT 1 FROM base.t_actes WHERE code = w_t_actes.code); DROP TABLE IF EXISTS w_correspondances_actes; CREATE TEMP TABLE w_correspondances_actes AS SELECT t_actes_source.oid AS oid_source, coalesce(t_actes.oid,0) AS oid FROM w_t_actes AS t_actes_source LEFT JOIN base.t_actes ON t_actes_source.code = t_actes.code; CREATE INDEX w_correspondances_actes_1 ON w_correspondances_actes USING btree (oid_source); INSERT INTO base.t_lpp( code, texte, texte_court) SELECT code, texte, texte_court FROM t_lpp WHERE t_lpp.oid <> 0 AND NOT EXISTS (SELECT 1 FROM base.t_lpp WHERE code = t_lpp.code); DROP TABLE IF EXISTS w_correspondances_lpp; CREATE TEMP TABLE w_correspondances_lpp AS SELECT t_lpp_source.oid AS oid_source, coalesce(t_lpp.oid,0) AS oid FROM t_lpp AS t_lpp_source LEFT JOIN base.t_lpp ON t_lpp_source.code = t_lpp.code; CREATE INDEX w_correspondances_lpp_1 ON w_correspondances_lpp USING btree (oid_source); INSERT INTO base.t_ucd( code, texte, texte_court) SELECT code, texte, texte_court FROM t_ucd WHERE t_ucd.oid <> 0 AND NOT EXISTS (SELECT 1 FROM base.t_ucd WHERE code = t_ucd.code); DROP TABLE IF EXISTS w_correspondances_ucd; CREATE TEMP TABLE w_correspondances_ucd AS SELECT t_ucd_source.oid AS oid_source, coalesce(t_ucd.oid,0) AS oid FROM t_ucd AS t_ucd_source LEFT JOIN base.t_ucd ON t_ucd_source.code = t_ucd.code; CREATE INDEX w_correspondances_ucd_1 ON w_correspondances_ucd USING btree (oid_source); INSERT INTO activite.t_rejets_noemie( code, texte) SELECT code, texte FROM t_rejets_noemie WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_rejets_noemie WHERE code || texte = t_rejets_noemie.code || t_rejets_noemie.texte); DROP TABLE IF EXISTS w_correspondances_rejets_noemie; CREATE TEMP TABLE w_correspondances_rejets_noemie AS SELECT t_rejets_noemie_source.oid AS oid_source, coalesce(t_rejets_noemie.oid,0) AS oid FROM t_rejets_noemie AS t_rejets_noemie_source LEFT JOIN activite.t_rejets_noemie ON t_rejets_noemie_source.code = t_rejets_noemie.code AND t_rejets_noemie_source.texte = t_rejets_noemie.texte; CREATE INDEX w_correspondances_rejets_noemie_1 ON w_correspondances_rejets_noemie USING btree (oid_source); ]]> ''1'' AND t_listes.code <> '''' ', 'temp e_listes' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT * FROM activite.t_listes_contenu ', 'temp e_listes_contenu' ); UPDATE e_listes SET ok_liste = '1' WHERE table_code IN ('MEDECIN','RUBRIQUE','ETAGE','SERVICE_F','COMPTE') AND EXISTS (SELECT 1 FROM activite.t_listes WHERE code = e_listes.code) ; DELETE FROM activite.t_listes_contenu WHERE EXISTS ( SELECT 1 FROM activite.t_listes JOIN activite.t_listes_tables ON t_listes.table_id = t_listes_tables.oid JOIN e_listes ON t_listes.code = e_listes.code AND t_listes_tables.code = table_code WHERE ok_liste = '1' AND activite.t_listes_contenu.liste_id = t_listes.oid ) AND to_id BETWEEN [IPX] AND ([IPX] + 999999999999) ; INSERT INTO activite.t_listes_contenu (liste_id, to_id) SELECT t_listes.oid, [IPX] + to_id FROM e_listes_contenu JOIN e_listes ON e_listes_contenu.liste_id = e_listes.oid JOIN activite.t_listes ON t_listes.code = e_listes.code JOIN activite.t_listes_tables ON t_listes.table_id = t_listes_tables.oid AND t_listes_tables.code = e_listes.table_code WHERE ok_liste = '1' ; -- Classes SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT t_classes.oid, t_classes.code, t_listes_tables.code AS table_code, ''0''::text AS ok_classe FROM activite.t_classes JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid WHERE EXISTS ( SELECT 1 FROM activite.t_classes_sections JOIN activite.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE classe_id = t_classes.oid ) AND t_classes.code <> '''' AND contenu_by_code <> ''1'' ', 'temp e_classes' ); UPDATE e_classes SET ok_classe = '1' WHERE table_code IN ('MEDECIN','RUBRIQUE','ETAGE','SERVICE_F','COMPTE') AND EXISTS (SELECT 1 FROM activite.t_classes WHERE code = e_classes.code) ; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT classe_id, t_classes_sections.oid, t_classes_sections.code, t_classes_sections.texte FROM activite.t_classes_sections ', 'temp e_classes_sections' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT section_id, t_classes_sections_elements.to_id FROM activite.t_classes_sections_elements ', 'temp e_classes_sections_elements' ); INSERT INTO activite.t_classes_sections (code, texte, classe_id) SELECT e_classes_sections.code, e_classes_sections.texte, t_classes.oid FROM e_classes_sections JOIN e_classes ON e_classes_sections.classe_id = e_classes.oid AND e_classes.ok_classe = '1' JOIN activite.t_listes_tables ON e_classes.table_code = t_listes_tables.code JOIN activite.t_classes ON e_classes.code = t_classes.code AND t_classes.table_id = t_listes_tables.oid LEFT JOIN activite.t_classes_sections ON t_classes.oid = t_classes_sections.classe_id AND t_classes_sections.code = e_classes_sections.code WHERE t_classes_sections.oid IS NULL ; DELETE FROM activite.t_classes_sections_elements WHERE EXISTS ( SELECT 1 FROM activite.t_classes JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid JOIN e_classes ON t_classes.code = e_classes.code AND t_listes_tables.code = table_code JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid WHERE ok_classe = '1' AND section_id = t_classes_sections.oid ) AND to_id BETWEEN [IPX] AND ([IPX] + 999999999999) ; INSERT INTO activite.t_classes_sections_elements (section_id, to_id) SELECT t_classes_sections.oid, [IPX] + to_id FROM e_classes_sections_elements JOIN e_classes_sections ON e_classes_sections_elements.section_id = e_classes_sections.oid JOIN e_classes ON e_classes.oid = e_classes_sections.classe_id AND ok_classe = '1' JOIN activite.t_classes ON e_classes.code = t_classes.code JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid AND e_classes.table_code = t_listes_tables.code JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid AND t_classes_sections.code = e_classes_sections.code GROUP BY 1,2 ; ]]> '''' AND contenu_by_code <> ''1'' ', 'temp e_listes' ); UPDATE e_listes SET ok_liste = '1' WHERE table_code IN ('MEDECIN','RUBRIQUE','ETAGE','SERVICE_F','UF') AND EXISTS (SELECT 1 FROM activite.t_listes WHERE code = e_listes.code) ; -- Recopie contenu vers environnement établissement SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ( SELECT base.cti_group_concat_without_sep(sqlcmd) FROM ( SELECT '1', 'DELETE FROM activite.t_listes_contenu WHERE liste_id IN ('|| (SELECT base.cti_group_concat(oid::text) FROM e_listes WHERE ok_liste = '1')|| ')., ' AS sqlcmd UNION SELECT '2', 'INSERT INTO activite.t_listes_contenu(liste_id, to_id) VALUES('||e_listes.oid||', '||t_listes_contenu.to_id - [IPX]||')., ' FROM activite.t_listes JOIN activite.t_listes_tables On t_listes.table_id = t_listes_tables.oid JOIN e_listes ON e_listes.code = t_listes.code AND e_listes.table_code = t_listes_tables.code JOIN activite.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id AND to_id BETWEEN [IPX] AND ([IPX] + 999999999999) WHERE ok_liste = '1' ORDER BY 1 ) subview ), true); -- classes SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT t_classes.oid, t_classes.code, t_listes_tables.code AS table_code, ''0''::text AS ok_classe FROM activite.t_classes JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid WHERE contenu_by_code <> ''1'' AND t_classes.code <> '''' ', 'temp e_classes' ); SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT classe_id, t_classes_sections.oid, t_classes_sections.code, t_classes_sections.texte FROM activite.t_classes_sections ', 'temp e_classes_sections' ); UPDATE e_classes SET ok_classe = '1' WHERE table_code IN ('MEDECIN','RUBRIQUE','ETAGE','SERVICE_F','UF','UM') AND EXISTS (SELECT 1 FROM activite.t_classes WHERE code = e_classes.code) AND code NOT IN ('CTI_MEDLIBSAL') ; -- Creation des sections inexistantes SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ( SELECT base.cti_group_concat_without_sep(sqlcmd) FROM ( SELECT '1', 'INSERT INTO activite.t_classes_sections (classe_id, code, texte) VALUES('||e_classes.oid||', '''||replace(t_classes_sections.code,'''','''''')||''','''||replace(t_classes_sections.texte,'''','''''')||''').,' AS sqlcmd FROM activite.t_classes JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid JOIN e_classes ON t_classes.code = e_classes.code AND e_classes.table_code = t_listes_tables.code AND ok_classe = '1' LEFT JOIN e_classes_sections ON e_classes_sections.code = t_classes_sections.code AND e_classes_sections.classe_id = e_classes.oid WHERE e_classes_sections.oid IS NULL UNION SELECT '2', 'UPDATE activite.t_classes_sections SET texte = ''' || replace(t_classes_sections.texte,'''','''''')||''' WHERE oid = ' || e_classes_sections.oid || '.,' AS sqlcmd FROM activite.t_classes JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid JOIN e_classes ON t_classes.code = e_classes.code AND e_classes.table_code = t_listes_tables.code AND ok_classe = '1' JOIN e_classes_sections ON e_classes_sections.code = t_classes_sections.code AND e_classes_sections.classe_id = e_classes.oid WHERE e_classes_sections.texte IS DISTINCT FROM t_classes_sections.texte ORDER BY 1 ) subview ), true) ; SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' SELECT classe_id, t_classes_sections.oid, t_classes_sections.code, t_classes_sections.texte FROM activite.t_classes_sections ', 'temp e_classes_sections' ); SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ( SELECT base.cti_group_concat_without_sep(sqlcmd) FROM ( SELECT '1', 'DELETE FROM activite.t_classes_sections_elements WHERE section_id IN ('|| (SELECT base.cti_group_concat(e_classes_sections.oid::text) FROM e_classes_sections JOIN e_classes ON e_classes.oid = e_classes_sections.classe_id WHERE ok_classe = '1')|| ')., ' AS sqlcmd UNION SELECT '2', 'INSERT INTO activite.t_classes_sections_elements(section_id, to_id) VALUES('||e_classes_sections.oid||', '||t_classes_sections_elements.to_id - [IPX] || ')., ' FROM activite.t_classes JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid JOIN e_classes ON t_classes.code = e_classes.code AND e_classes.table_code = t_listes_tables.code AND ok_classe = '1' JOIN e_classes_sections ON e_classes_sections.code = t_classes_sections.code AND e_classes_sections.classe_id = e_classes.oid WHERE t_classes_sections_elements.to_id BETWEEN [IPX] AND ([IPX] + 999999999999) ORDER BY 1 ) subview ), true) ; ]]> = 20100101 AND to_char(date_sortie, 'YYYYMM')::numeric <= to_char(now() + interval '1 month', 'YYYYMM')::numeric ) subview ; DELETE FROM activite.p_chiffrier WHERE mois > to_char(now() + interval '1 month', 'YYYYMM')::numeric ; ]]> 0 GROUP BY 1,2 ORDER BY 1,2 ) subview GROUP BY 1; UPDATE activite.p_factures_reference SET retard_groupage = w_retard_groupage_coefficient.retard_groupage FROM activite.p_sejours JOIN w_retard_groupage_coefficient ON w_retard_groupage_coefficient.type_sejour = p_sejours.type_sejour WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND p_factures_reference.retard_groupage <> 0; UPDATE activite.p_factures_reference SET retard_groupage = w_retard_groupage_coefficient.retard_groupage FROM activite.p_sejours JOIN w_retard_groupage_coefficient ON w_retard_groupage_coefficient.type_sejour = p_sejours.type_sejour WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND p_factures_reference.retard_groupage <> 0; -- Recalcul des retards facture (moyens) en prenant le max par etablissement et type séjour -- pour que le total soit coherent DROP TABLE IF EXISTS w_retard_facture_coefficient; CREATE TEMP TABLE w_retard_facture_coefficient AS SELECT type_sejour, base.cti_division(MAX(retard_facture) , SUM(nb)) AS retard_facture FROM ( SELECT finess, type_sejour, SUM(retard_facture) AS retard_facture, count(*) AS nb FROM activite.p_factures_reference JOIN activite.p_sejours ON p_factures_reference.no_sejour = p_sejours.no_sejour WHERE retard_facture <> 0 GROUP BY 1,2 ORDER BY 1,2 ) subview GROUP BY 1; UPDATE activite.p_factures_reference SET retard_facture = w_retard_facture_coefficient.retard_facture FROM activite.p_sejours JOIN w_retard_facture_coefficient ON w_retard_facture_coefficient.type_sejour = p_sejours.type_sejour WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND p_factures_reference.retard_facture <> 0; UPDATE activite.p_factures_reference SET retard_facture = w_retard_facture_coefficient.retard_facture FROM activite.p_sejours JOIN w_retard_facture_coefficient ON w_retard_facture_coefficient.type_sejour = p_sejours.type_sejour WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND p_factures_reference.retard_facture <> 0; ]]> = date_entree AND date_sortie < '2099-12-31'::date GROUP BY 2 ORDER BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'c_postaux', code_postal_id FROM activite.p_sejours WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'c_postaux' AND oid = code_postal_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'medecin_s', medecin_sejour_id FROM activite.p_sejours WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'medecin_s' AND oid = medecin_sejour_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'medecin_s', medecin_sejour_id FROM activite.p_mouvements_sejour WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'medecin_s' AND oid = medecin_sejour_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'forme_activite', forme_activite_id FROM activite.p_sejours WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'forme_activite' AND oid = forme_activite_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'ghs', ghs_id FROM activite.p_sejours WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'ghs' AND oid = ghs_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'ghs', ghs_id FROM activite.p_factures WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'ghs' AND oid = ghs_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'medecin_x', medecin_facture_id FROM activite.p_factures_lignes_h WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'medecin_x' AND oid = medecin_facture_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'rubrique_c', rubrique_facturation_id FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'rubrique_c' AND oid = rubrique_facturation_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'rubrique_c', rubrique_comptabilisation_id FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'rubrique_c' AND oid = rubrique_comptabilisation_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'rubrique_c', rubrique_comptabilisee_id FROM activite.p_factures_soldes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'rubrique_c' AND oid = rubrique_comptabilisee_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'prestation_c', prestation_id FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'prestation_c' AND oid = prestation_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'lpp', lpp_id FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'lpp' AND oid = lpp_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'ucd', ucd_id FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'ucd' AND oid = ucd_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'prestation_c', prestation_id FROM activite.p_factures_soldes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'prestation_c' AND oid = prestation_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'prestation_h', prestation_id FROM activite.p_factures_lignes_h WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'prestation_h' AND oid = prestation_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'acte_h', acte_id FROM activite.p_factures_lignes_h WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'acte_h' AND oid = acte_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'tiers_payant', tiers_payant_0_id FROM activite.p_factures WHERE tiers_payant_0_id <> 0 AND NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'tiers_payant' AND oid = tiers_payant_0_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'tiers_payant', tiers_payant_1_id FROM activite.p_factures WHERE tiers_payant_1_id <> 0 AND NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'tiers_payant' AND oid = tiers_payant_1_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'tiers_payant', tiers_payant_2_id FROM activite.p_factures WHERE tiers_payant_2_id <> 0 AND NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'tiers_payant' AND oid = tiers_payant_2_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'tiers_payant', tiers_payant_22_id FROM activite.p_factures WHERE tiers_payant_22_id <> 0 AND NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'tiers_payant' AND oid = tiers_payant_22_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'mode_traitement', t_services_facturation.mode_traitement_id FROM activite.t_lieux JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'mode_traitement' AND oid IS NOT NULL AND oid = t_services_facturation.mode_traitement_id) AND t_services_facturation.mode_traitement_id IS NOT NULL GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'lit', lit_id FROM activite.t_lieux WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'lit' AND oid = lit_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'service', service_facturation_id FROM activite.t_lieux WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'service' AND oid = service_facturation_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'etage', etage_id FROM activite.t_lieux, activite.t_lits WHERE lit_id = t_lits.oid AND NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'etage' AND oid = etage_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'uf', unite_fonctionnelle_id FROM activite.t_lieux WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'uf' AND oid = unite_fonctionnelle_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'um', unite_medicale_id FROM activite.t_lieux WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'um' AND oid = unite_medicale_id) GROUP BY 2; INSERT INTO activite.p_oids (code_table, oid) SELECT 'pole', pole_id FROM activite.p_sejour_lieu WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'pole' AND oid = pole_id) GROUP BY 2; ]]>