w_DATPASSAGE.PASUM ; UPDATE [SCHEMA].p_rss SET unite_medicale_principale_id = p_rss_rum.unite_medicale_id FROM [SCHEMA].p_rss_rum WHERE p_rss.oid = p_rss_rum.rss_id AND p_rss.no_rum_principal = p_rss_rum.no_rum AND p_rss.nb_rum = 1 AND p_rss.unite_medicale_principale_id <> p_rss_rum.unite_medicale_id ; UPDATE [SCHEMA].p_rss_actes SET unite_medicale = p_rss_rum.unite_medicale, unite_medicale_id = p_rss_rum.unite_medicale_id FROM [SCHEMA].p_rss_rum WHERE p_rss_actes.rss_id = p_rss_rum.rss_id AND p_rss_actes.no_rum = p_rss_rum.no_rum AND NOT ( p_rss_actes.unite_medicale = p_rss_rum.unite_medicale AND p_rss_actes.unite_medicale_id = p_rss_rum.unite_medicale_id ) ; ]]> DATPATIENT.IPPNOM OR p_identites.prenom <> DATPATIENT.IPPPRENOM OR p_identites.nom_naissance <> DATPATIENT.IPPNOMEPOUSE ); ]]> '4' AND t_actes_c.ccam_regroupement_code_1 <> 'ADI' AND t_actes_c.ccam_regroupement_code_1 <> 'ADA' AND t_actes_c.ccam_regroupement_code_1 <> 'ATM' THEN Array[t_actes_c.icr_1,medecin_id] ELSE NULL END), MAX( CASE WHEN activite_ccam <> '4' AND t_actes_c.ccam_regroupement_code_1 <> 'ADI' AND t_actes_c.ccam_regroupement_code_1 <> 'ADA' THEN Array[t_actes_c.icr_1,medecin_id] ELSE NULL END), MAX( CASE WHEN activite_ccam <> '4' AND t_actes_c.ccam_regroupement_code_1 <> 'ADA' THEN Array[t_actes_c.icr_1,medecin_id] ELSE NULL END), Array[0,0] )) AS icr_medecin FROM [SCHEMA].p_rss_actes p_rss_actes JOIN pmsi.t_actes_c ON p_rss_actes.acte_id = t_actes_c.oid GROUP BY 1,2 ORDER BY 1,2; -- Médecin RSS de l'exécutant du plus fort ICR du premier RUM -- Si l'option OPTPMSI_MED_RSS vaut 1 UPDATE [SCHEMA].p_rss SET medecin_rss_id = subview.medecin_id FROM ( SELECT rss_id, icr_medecin[2]::bigint as medecin_id FROM w_max_icr where no_rum = 1 ) subview, pmsi.t_divers WHERE 1=1 AND subview.rss_id = p_rss.oid AND p_rss.medecin_rss_id IS DISTINCT FROM subview.medecin_id AND t_divers.code = 'OPTPMSI_MED_RSS' AND t_divers.valeur = '1'; -- Médecin RSS de l'exécutant du plus fort ICR, peu importe le RUM -- Si l'option OPTPMSI_MED_RSS vaut 0 ou s'il reste des médecins RSS non renseignés UPDATE [SCHEMA].p_rss SET medecin_rss_id = subview.medecin_id FROM ( SELECT rss_id, (MAX(icr_medecin))[2]::bigint as medecin_id FROM w_max_icr GROUP BY 1 ) subview, pmsi.t_divers WHERE 1=1 AND subview.rss_id = p_rss.oid AND p_rss.medecin_rss_id IS DISTINCT FROM subview.medecin_id AND t_divers.code = 'OPTPMSI_MED_RSS' AND (t_divers.valeur = '0' OR medecin_rss_id = 0); -- S'il reste des séjours sans médecins, on prend le responsable du premier RUM -- Si l'option OPTPMSI_MED_RSS vaut 1 UPDATE [SCHEMA].p_rss SET medecin_rss_id = t_medecins.oid FROM prod_sim.DATENTREE JOIN prod_sim.DATPASSAGE ON DATPASSAGE.PASIDENT = DATENTREE.ENTID JOIN pmsi.t_medecins ON t_medecins.code = DATPASSAGE.PASRESP, pmsi.t_divers where 1=1 AND DATENTREE.ENTNUM = p_rss.no_sejour_administratif AND DATPASSAGE.PASINDEX = 1 AND medecin_rss_id = 0 AND t_divers.code = 'OPTPMSI_MED_RSS' AND t_divers.valeur = '1'; ]]> = '[ANNEE]0101' AND DATENTREE.ENTENTREELE <= now(); CREATE INDEX i_rss_11 ON w_sej USING btree (ENTNUM); DROP TABLE IF EXISTS w_rss; CREATE TEMP TABLE w_rss AS SELECT base.cti_to_number(DATENTREE.ENTIPP) AS no_patient ,'[FINESS]'::text as finess ,DATRESUMEMCO.RSSNUMANONYME as no_rss ,''::text as version_groupage ,date(DATPATIENT.IPPNAISSANCE) as date_naissance ,DATRESUMEMCO.RSSSEXE AS sexe ,date(DATENTREE.ENTENTREELE) AS date_entree ,date(DATENTREE.ENTSORTIELE) AS date_sortie ,DATRESUMEMCO.RSSME as mode_entree ,DATRESUMEMCO.RSSPROV as provenance ,DATRESUMEMCO.RSSMS as mode_sortie ,DATRESUMEMCO.RSSDEST as destination ,COALESCE(t_codes_postaux_c.code, ''::text) as code_postal ,DATRESUMEMCO.RSSPOIDS as poids_bebe ,DATRESUMEMCO.RSSIGS as igs2 ,''::text as cma ,COALESCE(substr(DATRESUMEMCO.RSSGHM, 3, 1), ''::text) as groupe_ghm ,DATRESUMEMCO.RSSDUREE as duree_sejour ,GREATEST(DATRESUMEMCO.RSSSEANCES,1) as nb_rsa ,DATRESUMEMCO.RSSAGEAN as age ,''::text as supprime ,now() AS date_import ,DATRESUMEMCO.RSSNBRERUM as nb_rum ,''::text as secteur ,DATENTREE.ENTNUM as no_sejour_administratif ,DATRESUMEMCO.RSSSEANCES as nb_seances ,''::text as ghm_fg9 ,COALESCE(t_ghm.oid, 0) as ghm_id ,0::bigint as medecin_rss_id ,COALESCE(t_ghs.oid, 0) as ghs_id ,date_part('year', date(DATENTREE.ENTSORTIELE)) * 100 + date_part('month', date(DATENTREE.ENTSORTIELE)) AS mois_sortie ,COALESCE(dp.oid, 0) as diagnostic_principal_id ,COALESCE(dr.oid, 0) as diagnostic_relie_id ,COALESCE(t_ghm.oid, 0) as ghm_production_id ,DATRESUMEMCO.RSSNOCLASSANT as no_rum_principal ,COALESCE(t_unites_medicales.oid, 0) as unite_medicale_principale_id ,nextval('pmsi.s_rss'::regclass) as rss_id ,-1::bigint as import_id ,''::text as etat ,0::bigint as acte_principal_id ,COALESCE(t_codes_postaux_c.oid, 0) as code_postal_id ,0::bigint as patient_id ,0::bigint as prestation_principale_id ,''::text as severite_fg11_simulation_code ,'1'::text as en_cours ,CASE WHEN DATRESUMEMCO.RSSCMD <> '90' THEN 'V'::text ELSE 'S'::text END as en_cours_etat ,0::bigint as base_remboursement ,0::bigint as sejour_facture ,0::bigint as honoraires_factures ,0::bigint as t2a_facture ,0::bigint as dmi_facture ,0::bigint as phc_facture ,0::bigint as ca_ghs_theorique ,0::bigint as nb_ghs ,0::bigint as ca_ghs ,0::bigint as nb_exb ,0::bigint as ca_exb ,0::bigint as nb_exh ,0::bigint as ca_exh ,0::bigint as nb_si ,0::bigint as ca_si ,0::bigint as nb_sur ,0::bigint as ca_sur ,0::bigint as nb_rea ,0::bigint as ca_rea ,0::bigint as nb_neonat ,0::bigint as ca_neonat ,''::text as traitement_epmsi ,''::text as code_retour_groupage ,0::bigint as comite_medical_id ,''::text as rehosp_meme_ghm ,0::bigint as from_oid ,0::bigint as forfait_facture ,DATRESUMEMCO.RSSAGEGEST as age_gestationnel ,'20991231'::date as date_dernieres_regles ,''::text as confirmation_codage ,''::text as type_machine_rdth ,''::text as type_dosimetrie ,''::text as numero_innovation ,0::bigint as rss_mere_id ,0::smallint as nombre_ivg_anterieures ,0::smallint as annee_ivg_precedente ,0::bigint as nombre_naissances_vivantes_anterieures ,0::bigint as nb_ghsmin FROM prod_sim.DATENTREE JOIN w_sej ON DATENTREE.ENTNUM = w_sej.ENTNUM JOIN prod_sim.DATRESUMEMCO ON DATRESUMEMCO.RSSENTID = DATENTREE.ENTID JOIN prod_sim.DATPATIENT ON DATPATIENT.IPPID = DATENTREE.ENTIPP LEFT JOIN pmsi.t_ghm ON t_ghm.code = DATRESUMEMCO.RSSGHM LEFT JOIN pmsi.t_codes_postaux_c ON t_codes_postaux_c.code = DATRESUMEMCO.RSSCP LEFT JOIN pmsi.t_ghs ON t_ghs.code_text = DATRESUMEMCO.RSSGHS LEFT JOIN pmsi.t_diagnostics dp on dp.code = DATRESUMEMCO.RSSDP LEFT JOIN pmsi.t_diagnostics dr on dr.code = DATRESUMEMCO.RSSDR LEFT JOIN pmsi.t_unites_medicales ON t_unites_medicales.code = DATRESUMEMCO.RSSUMCLASSANT; INSERT INTO pmsi.p_rss ( no_patient ,finess ,no_rss ,version_groupage ,date_naissance ,sexe ,date_entree ,date_sortie ,mode_entree ,provenance ,mode_sortie ,destination ,code_postal ,poids_bebe ,igs2 ,cma ,groupe_ghm ,duree_sejour ,nb_rsa ,age ,supprime ,date_import ,nb_rum ,secteur ,no_sejour_administratif ,nb_seances ,ghm_fg9 ,ghm_id ,medecin_rss_id ,ghs_id ,mois_sortie ,diagnostic_principal_id ,diagnostic_relie_id ,ghm_production_id ,no_rum_principal ,unite_medicale_principale_id ,oid ,import_id ,etat ,acte_principal_id ,code_postal_id ,patient_id ,prestation_principale_id ,severite_fg11_simulation_code ,en_cours ,en_cours_etat ,base_remboursement ,sejour_facture ,honoraires_factures ,t2a_facture ,dmi_facture ,phc_facture ,ca_ghs_theorique ,nb_ghs ,ca_ghs ,nb_exb ,ca_exb ,nb_exh ,ca_exh ,nb_si ,ca_si ,nb_sur ,ca_sur ,nb_rea ,ca_rea ,nb_neonat ,ca_neonat ,traitement_epmsi ,code_retour_groupage ,comite_medical_id ,rehosp_meme_ghm ,from_oid ,forfait_facture ,age_gestationnel ,date_dernieres_regles ,confirmation_codage ,type_machine_rdth ,type_dosimetrie ,numero_innovation ,rss_mere_id ,nombre_ivg_anterieures ,annee_ivg_precedente ,nombre_naissances_vivantes_anterieures ,nb_ghsmin) SELECT no_patient ,finess ,no_rss ,version_groupage ,date_naissance ,sexe ,date_entree ,date_sortie ,mode_entree ,provenance ,mode_sortie ,destination ,code_postal ,poids_bebe ,igs2 ,cma ,groupe_ghm ,duree_sejour ,nb_rsa ,age ,supprime ,date_import ,nb_rum ,secteur ,no_sejour_administratif ,nb_seances ,ghm_fg9 ,ghm_id ,medecin_rss_id ,ghs_id ,mois_sortie ,diagnostic_principal_id ,diagnostic_relie_id ,ghm_production_id ,no_rum_principal ,unite_medicale_principale_id ,rss_id ,import_id ,etat ,acte_principal_id ,code_postal_id ,patient_id ,prestation_principale_id ,severite_fg11_simulation_code ,en_cours ,en_cours_etat ,base_remboursement ,sejour_facture ,honoraires_factures ,t2a_facture ,dmi_facture ,phc_facture ,ca_ghs_theorique ,nb_ghs ,ca_ghs ,nb_exb ,ca_exb ,nb_exh ,ca_exh ,nb_si ,ca_si ,nb_sur ,ca_sur ,nb_rea ,ca_rea ,nb_neonat ,ca_neonat ,traitement_epmsi ,code_retour_groupage ,comite_medical_id ,rehosp_meme_ghm ,from_oid ,forfait_facture ,age_gestationnel ,date_dernieres_regles ,confirmation_codage ,type_machine_rdth ,type_dosimetrie ,numero_innovation ,rss_mere_id ,nombre_ivg_anterieures ,annee_ivg_precedente ,nombre_naissances_vivantes_anterieures ,nb_ghsmin FROM w_rss; ]]> DATPASSAGE.PASINDEX AND DATDIAGS.DIAGTYPE in ('DP', 'DR') THEn 'DA' ELSE DATDIAGS.DIAGTYPE END as type_diagnostic_rss ,''::text as imprecis ,DATPASSAGE.PASUM as unite_medicale ,w_rss.rss_id as rss_id ,COALESCE(t_unites_medicales.oid, 0) as unite_medicale_id FROM w_rss JOIN prod_sim.DATENTREE ON DATENTREE.ENTNUM = w_rss.no_sejour_administratif JOIN prod_sim.DATPASSAGE ON DATPASSAGE.PASIDENT = DATENTREE.ENTID JOIN prod_sim.DATDIAGS ON DATDIAGS.DIAGIDPASS = DATPASSAGE.PASID JOIN prod_sim.DATRESUMEMCO ON DATRESUMEMCO.RSSENTID = DATENTREE.ENTID LEFT JOIN pmsi.t_diagnostics on t_diagnostics.code = DATDIAGS.DIAGCODE LEFT JOIN pmsi.t_unites_medicales ON t_unites_medicales.code = DATPASSAGE.PASUM; ]]>