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;
]]>