= [ANNEE] and stdev_etab.finess = '[FINESS]' AND t_medecins.code IS NULL GROUP BY 1,2,3,4,5,6 ; -- Recensement des médecins UM. INSERT INTO pmsi.t_medecins(code, nom, prenom, specialite_id, no_adeli, specialite_interne_id) SELECT stdev_person.idperson, stdev_person.pernom, stdev_person.perpnm, COALESCE(t_specialites_medecin.oid, 0), stdev_person.pernse, 0 -- COALESCE(t_specialites_internes_medecin.oid, 0) from prod_chataigneraie_mysql.stdev_sejour join prod_chataigneraie_mysql.stdev_etab on stdev_etab.idetab = stdev_sejour.idetab JOIN prod_chataigneraie_mysql.stdev_person_sejour on stdev_person_sejour.id_sejour = stdev_sejour.id_sejour join prod_chataigneraie_mysql.stdev_person on stdev_person.idperson = stdev_person_sejour.idperson LEFT JOIN pmsi.t_specialites_medecin ON t_specialites_medecin.code = stdev_person.sc1nu --LEFT JOIN pmsi.t_specialites_internes_medecin ON t_specialites_internes_medecin.code = SUBSTR(MDZTAR , 1, 2) || '..' -- Pas de spécialité interne identifiée. LEFT JOIN pmsi.t_medecins ON t_medecins.code = stdev_person.idperson WHERE 1=1 AND to_char(date_entree, 'YYYY') >= [ANNEE] and stdev_etab.finess = '[FINESS]' AND t_medecins.code IS NULL GROUP BY 1,2,3,4,5,6 ; -- Recensement des médecins acte. INSERT INTO pmsi.t_medecins(code, nom, prenom, specialite_id, no_adeli, specialite_interne_id) SELECT stdev_person.idperson, stdev_person.pernom, stdev_person.perpnm, COALESCE(t_specialites_medecin.oid, 0), stdev_person.pernse, 0 -- COALESCE(t_specialites_internes_medecin.oid, 0) from prod_chataigneraie_mysql.stdev_nbloccam join prod_chataigneraie_mysql.stdev_sejour on stdev_sejour.id_sejour = stdev_nbloccam.senum join prod_chataigneraie_mysql.stdev_etab on stdev_etab.idetab = stdev_nbloccam.idetab join prod_chataigneraie_mysql.stdev_person on stdev_person.idperson = stdev_nbloccam.bapnuax LEFT JOIN pmsi.t_specialites_medecin ON t_specialites_medecin.code = stdev_person.sc1nu --LEFT JOIN pmsi.t_specialites_internes_medecin ON t_specialites_internes_medecin.code = SUBSTR(MDZTAR , 1, 2) || '..' -- Pas de spécialité interne identifiée. LEFT JOIN pmsi.t_medecins ON t_medecins.code = stdev_person.idperson WHERE 1=1 AND to_char(date_entree, 'YYYY') >= [ANNEE] and stdev_etab.finess = '[FINESS]' AND t_medecins.code IS NULL GROUP BY 1,2,3,4,5,6 ; -- Unités médicales. DROP TABLE IF EXISTS w_um ; CREATE TEMP TABLE w_um AS SELECT to_char(valum,'FM0000') as code, MIN(lum) AS texte FROM prod_chataigneraie_mysql.stdev_unimed WHERE finess = '[FINESS]' GROUP BY 1 order by 1 ; UPDATE pmsi.t_unites_medicales SET texte = w_um.texte FROM w_um WHERE 1=1 AND t_unites_medicales.code = t_unites_medicales.texte AND w_um.code = t_unites_medicales.code AND w_um.texte != '' ; INSERT INTO pmsi.t_unites_medicales (code, texte) SELECT w_um.code, w_um.texte FROM w_um WHERE w_um.code NOT IN (SELECT code FROM pmsi.t_unites_medicales) GROUP BY 1,2 ; ]]> 0 THEN SENUM * 1000000 + BENU ELSE SENUM END::text AS no_sejour_administratif, DUDTNA, DUNOMH, DUPNMH, DUNJFH, DATENT, DATSOR, STDEV_SEJBEBE.DUUNIQ, STDEV_SEJOUR.IDPERSON FROM prod_chataigneraie_mysql.STDEV_SEJBEBE JOIN prod_chataigneraie_as400.NXXXFIC_DPATIENT ON NXXXFIC_DPATIENT.DUUNIQ = STDEV_SEJBEBE.DUUNIQ JOIN prod_chataigneraie_mysql.STDEV_ETAB ON STDEV_ETAB.IDETAB = STDEV_SEJBEBE.IDETAB AND STDEV_ETAB.FINESS = '[FINESS]' JOIN prod_chataigneraie_mysql.STDEV_SEJOUR ON SENUM = STDEV_SEJOUR.ID_SEJOUR AND STDEV_SEJBEBE.IDETAB = STDEV_SEJOUR.IDETAB ; UPDATE pmsi.p_identites SET nom = DUNOMH, prenom = DUPNMH, nom_naissance = DUNJFH FROM pmsi.p_rss JOIN w_sejours ON p_rss.no_sejour_administratif = w_sejours.no_sejour_administratif WHERE p_rss.oid = p_identites.rss_id AND p_rss.date_naissance = DUDTNA AND ( p_rss.date_sortie = date(DATENT) OR p_rss.date_entree = date(DATSOR) ) AND ( nom NOT ILIKE DUNOMH OR prenom NOT ILIKE DUPNMH OR nom_naissance NOT ILIKE DUNJFH ) ; UPDATE pmsi.p_rss SET no_patient = w_sejours.DUUNIQ FROM w_sejours WHERE p_rss.no_sejour_administratif = w_sejours.no_sejour_administratif AND p_rss.date_naissance = DUDTNA AND ( p_rss.date_sortie = date(DATENT) OR p_rss.date_entree = date(DATSOR) ) AND ( no_patient <> w_sejours.DUUNIQ ) ; ]]> w_pernu_medecin.medecin_id ) ; ]]> = [ANNEE] and stdev_etab.finess = '[FINESS]' AND t_medecins.code IS NULL GROUP BY 1,2,3,4,5,6 ; -- Recensement des médecins UM. INSERT INTO pmsi.t_medecins(code, nom, prenom, specialite_id, no_adeli, specialite_interne_id) SELECT stdev_person.idperson, stdev_person.pernom, stdev_person.perpnm, COALESCE(t_specialites_medecin.oid, 0), stdev_person.pernse, 0 -- COALESCE(t_specialites_internes_medecin.oid, 0) from prod_chataigneraie_mysql.stdev_sejour join prod_chataigneraie_mysql.stdev_etab on stdev_etab.idetab = stdev_sejour.idetab JOIN prod_chataigneraie_mysql.stdev_person_sejour on stdev_person_sejour.id_sejour = stdev_sejour.id_sejour join prod_chataigneraie_mysql.stdev_person on stdev_person.idperson = stdev_person_sejour.idperson LEFT JOIN pmsi.t_specialites_medecin ON t_specialites_medecin.code = stdev_person.sc1nu --LEFT JOIN pmsi.t_specialites_internes_medecin ON t_specialites_internes_medecin.code = SUBSTR(MDZTAR , 1, 2) || '..' -- Pas de spécialité interne identifiée. LEFT JOIN pmsi.t_medecins ON t_medecins.code = stdev_person.idperson WHERE 1=1 AND to_char(date_entree, 'YYYY') >= [ANNEE] and stdev_etab.finess = '[FINESS]' AND t_medecins.code IS NULL GROUP BY 1,2,3,4,5,6 ; -- Recensement des médecins acte. INSERT INTO pmsi.t_medecins(code, nom, prenom, specialite_id, no_adeli, specialite_interne_id) SELECT stdev_person.idperson, stdev_person.pernom, stdev_person.perpnm, COALESCE(t_specialites_medecin.oid, 0), stdev_person.pernse, 0 -- COALESCE(t_specialites_internes_medecin.oid, 0) from prod_chataigneraie_mysql.stdev_nbloccam join prod_chataigneraie_mysql.stdev_sejour on stdev_sejour.id_sejour = stdev_nbloccam.senum join prod_chataigneraie_mysql.stdev_etab on stdev_etab.idetab = stdev_nbloccam.idetab join prod_chataigneraie_mysql.stdev_person on stdev_person.idperson = stdev_nbloccam.bapnuax LEFT JOIN pmsi.t_specialites_medecin ON t_specialites_medecin.code = stdev_person.sc1nu --LEFT JOIN pmsi.t_specialites_internes_medecin ON t_specialites_internes_medecin.code = SUBSTR(MDZTAR , 1, 2) || '..' -- Pas de spécialité interne identifiée. LEFT JOIN pmsi.t_medecins ON t_medecins.code = stdev_person.idperson WHERE 1=1 AND to_char(date_entree, 'YYYY') >= [ANNEE] and stdev_etab.finess = '[FINESS]' AND t_medecins.code IS NULL GROUP BY 1,2,3,4,5,6 ; ]]> 0 THEN SENUM * 1000000 + BENU ELSE SENUM END::text AS no_sejour_administratif, NUMRSS, DUSEXH, DUDTNA, DUNOMH, DUPNMH, DUNJFH, NOCDPH, DATENT, DATSOR, STDEV_SEJBEBE.DUUNIQ, NXXXFAC_NDOADM.DPERNU, STDEV_SEJBEBE.POINA FROM prod_chataigneraie_mysql.STDEV_SEJBEBE JOIN prod_chataigneraie_as400.NXXXFIC_DPATIENT ON NXXXFIC_DPATIENT.DUUNIQ = STDEV_SEJBEBE.DUUNIQ JOIN prod_chataigneraie_mysql.STDEV_ETAB ON STDEV_ETAB.IDETAB = STDEV_SEJBEBE.IDETAB AND STDEV_ETAB.FINESS = '[FINESS]' JOIN prod_chataigneraie_as400.NXXXFAC_NDOADM ON SENUM = NONUMA WHERE DATSOR BETWEEN '20140101' AND now() AND STID <> 3 AND NOFACT <> 'N' AND NOTAR <> 77181 AND HORSPMSI <> 1 ; UPDATE w_sejours SET NUMRSS = 0-SENUM WHERE NUMRSS = 0 ; CREATE INDEX w_sejours_i1 ON w_sejours USING btree (SENUM); CREATE INDEX w_sejours_i2 ON w_sejours USING btree (sejour_id); DROP TABLE IF EXISTS w_STDEV_RUM; CREATE TEMP TABLE w_STDEV_RUM AS SELECT sejour_id, w_sejours.SENUM, w_sejours.BENU, w_sejours.IDETAB, substr(LIGNRSS,87,4) AS unite_medicale_code, rank() OVER (PARTITION BY w_sejours.SENUM, w_sejours.BENU ORDER BY MVTLIEU_DEB.DATENT) AS no_rum, MVTLIEU_DEB.DATENT, to_char(MVTLIEU_DEB.MDEID,'FM9') AS MDEID, CASE WHEN MVTLIEU_DEB.PREID <> 0 THEN to_char(MVTLIEU_DEB.PREID,'FM0') ELSE '' END AS PREID, CASE WHEN date(MVTLIEU_FIN.DATSOR) >= w_sejours.DATENT THEN MVTLIEU_FIN.DATSOR ELSE w_sejours.DATSOR END, to_char(MVTLIEU_FIN.MDSID,'FM9') AS MDSID, CASE WHEN MVTLIEU_DEB.DEEID <> 0 THEN to_char(MVTLIEU_DEB.DEEID,'FM0') ELSE '' END AS DEEID, COALESCE(t_ghm.oid,0) AS ghm_id, COALESCE(t_ghs.oid,0) AS ghs_id, COALESCE(CCAM4_GHM.code,'') AS ghm_code, NBCHIMIOS, IDMVTDEB, IDMVTFIN, 0::bigint AS diagnostic_principal_id, 0::bigint AS diagnostic_relie_id, 0::bigint AS unite_medicale_id FROM w_sejours JOIN prod_chataigneraie_mysql.STDEV_RUM ON w_sejours.SENUM = stdev_rum.SENUMD AND w_sejours.IDETAB = stdev_rum.IDETAB AND w_sejours.DUUNIQ = stdev_rum.DUUNIQ JOIN prod_chataigneraie_mysql.STDEV_MVTLIEU MVTLIEU_DEB ON STDEV_RUM.IDETAB = MVTLIEU_DEB.IDETAB AND IDMVTDEB = MVTLIEU_DEB.IDMVTL JOIN prod_chataigneraie_mysql.STDEV_MVTLIEU MVTLIEU_FIN ON STDEV_RUM.IDETAB = MVTLIEU_FIN.IDETAB AND IDMVTFIN = MVTLIEU_FIN.IDMVTL LEFT JOIN prod_chataigneraie_mysql.CCAM4_GHM ON CCAM4_GHM.ID = STDEV_RUM.IDGHM LEFT JOIN prod_chataigneraie_mysql.CCAM4_GHS ON CCAM4_GHS.ID = STDEV_RUM.IDGHS LEFT JOIN pmsi.t_ghm ON CCAM4_GHM.code = t_ghm.code LEFT JOIN pmsi.t_ghs ON CCAM4_GHS.ghs = t_ghs.code WHERE date(STDEV_RUM.DTFIN) = '00010101' ; DELETE FROM w_STDEV_RUM USING ( SELECT SENUM, BENU, date(DATENT), date(DATSOR), ghm_id, MAX(CTID) AS del_ctid FROM w_STDEV_RUM GROUP BY 1,2,3,4,5 HAVING count(*) > 1 ) subview WHERE w_STDEV_RUM.CTID = del_ctid; CREATE INDEX w_STDEV_RUM_i1 ON w_STDEV_RUM USING btree (SENUM); CREATE INDEX w_STDEV_RUM_i2 ON w_STDEV_RUM USING btree (IDMVTDEB); CREATE INDEX w_STDEV_RUM_i3 ON w_STDEV_RUM USING btree (IDMVTDEB); CREATE INDEX w_STDEV_RUM_i4 ON w_STDEV_RUM USING btree (sejour_id); UPDATE w_STDEV_RUM SET diagnostic_principal_id = t_diagnostics.oid FROM prod_chataigneraie_mysql.STDEV_DIAGP JOIN prod_chataigneraie_mysql.STDEV_CIM10 ON IDDIAG = DPDIAGP JOIN pmsi.t_diagnostics ON STDEV_CIM10.code = t_diagnostics.code WHERE STDEV_DIAGP.IDMVTL = w_STDEV_RUM.IDMVTDEB ; UPDATE w_STDEV_RUM SET diagnostic_principal_id = t_diagnostics.oid FROM prod_chataigneraie_mysql.STDEV_DIAGP JOIN prod_chataigneraie_mysql.STDEV_CIM10 ON IDDIAG = DPDIAGP JOIN pmsi.t_diagnostics ON STDEV_CIM10.code = t_diagnostics.code WHERE STDEV_DIAGP.IDMVTL = w_STDEV_RUM.IDMVTFIN AND diagnostic_principal_id = 0 ; UPDATE w_STDEV_RUM SET diagnostic_principal_id = t_diagnostics.oid FROM prod_chataigneraie_mysql.STDEV_DIAGP JOIN prod_chataigneraie_mysql.STDEV_CIM10 ON IDDIAG = DPDIAGP JOIN pmsi.t_diagnostics ON STDEV_CIM10.code = t_diagnostics.code WHERE STDEV_DIAGP.IDMVTL = w_STDEV_RUM.IDMVTFIN AND diagnostic_principal_id = 0 ; UPDATE w_STDEV_RUM SET diagnostic_relie_id = t_diagnostics.oid FROM prod_chataigneraie_mysql.STDEV_DIAGR JOIN prod_chataigneraie_mysql.STDEV_CIM10 ON IDDIAG = DRDIAGR JOIN pmsi.t_diagnostics ON STDEV_CIM10.code = t_diagnostics.code WHERE STDEV_DIAGR.IDMVTL = w_STDEV_RUM.IDMVTDEB ; UPDATE w_STDEV_RUM SET diagnostic_relie_id = t_diagnostics.oid FROM prod_chataigneraie_mysql.STDEV_DIAGR JOIN prod_chataigneraie_mysql.STDEV_CIM10 ON IDDIAG = DRDIAGR JOIN pmsi.t_diagnostics ON STDEV_CIM10.code = t_diagnostics.code WHERE STDEV_DIAGR.IDMVTL = w_STDEV_RUM.IDMVTFIN AND diagnostic_relie_id = 0 ; UPDATE w_STDEV_RUM SET unite_medicale_id = t_unites_medicales.oid FROM pmsi.t_unites_medicales WHERE unite_medicale_code = t_unites_medicales.code ; DROP TABLE IF EXISTS w_STDEV_RSS; CREATE TEMP TABLE w_STDEV_RSS AS SELECT sejour_id, IDETAB, SENUM, BENU, MIN(DATENT) AS DATENT, (MIN(Array[DATENT::text,MDEID::text]))[2] AS MDEID, (MIN(Array[DATENT::text,PREID]))[2] AS PREID, MAX(DATSOR) AS DATSOR, (MAX(Array[DATSOR::text,MDSID::text]))[2] AS MDSID, (MAX(Array[DATSOR::text,DEEID::text]))[2] AS DEEID, MIN(ghm_id) AS ghm_id, MIN(ghs_id) AS ghs_id, MIN(ghm_code) AS ghm_code, SUM(NBCHIMIOS) AS NBCHIMIOS FROM w_STDEV_RUM GROUP BY 1,2,3,4 ; CREATE INDEX w_STDEV_RSS_i1 ON w_STDEV_RSS USING btree (SENUM); CREATE INDEX w_STDEV_RSS_i2 ON w_STDEV_RSS USING btree (sejour_id); DROP TABLE IF EXISTS w_pernu_medecin; CREATE TEMP TABLE w_pernu_medecin AS SELECT STDEV_PERSON.PERNU, MAX(t_medecins.oid) AS medecin_id FROM w_sejours JOIN prod_chataigneraie_AS400.NXXXFIC_DPERSON ON NXXXFIC_DPERSON.PERNU = DPERNU JOIN prod_chataigneraie_mysql.STDEV_PERSON ON NXXXFIC_DPERSON.PERNU = STDEV_PERSON.PERNU AND NXXXFIC_DPERSON.SC1NU = STDEV_PERSON.SC1NU AND NXXXFIC_DPERSON.PERNOM = STDEV_PERSON.PERNOM AND NXXXFIC_DPERSON.PERPNM = STDEV_PERSON.PERPNM JOIN pmsi.t_medecins ON t_medecins.code = IDPERSON WHERE STDEV_PERSON.PERNU IS NOT NULL GROUP BY 1; INSERT INTO w_pernu_medecin SELECT STDEV_PERSON.PERNU, MAX(t_medecins.oid) AS medecin_id FROM w_sejours LEFT JOIN w_pernu_medecin on w_sejours.DPERNU = w_pernu_medecin.PERNU JOIN prod_chataigneraie_AS400.NXXXFIC_DPERSON ON NXXXFIC_DPERSON.PERNU = DPERNU JOIN prod_chataigneraie_mysql.STDEV_PERSON ON NXXXFIC_DPERSON.PERNU = STDEV_PERSON.PERNU AND NXXXFIC_DPERSON.SC1NU = STDEV_PERSON.SC1NU AND substr(NXXXFIC_DPERSON.PERNOM,1,4) = substr(STDEV_PERSON.PERNOM,1,4) AND NXXXFIC_DPERSON.PERPNM = STDEV_PERSON.PERPNM JOIN pmsi.t_medecins ON t_medecins.code = IDPERSON WHERE w_pernu_medecin.medecin_id IS NULL AND STDEV_PERSON.PERNU IS NOT NULL GROUP BY 1; INSERT INTO w_pernu_medecin SELECT STDEV_PERSON.PERNU, MAX(t_medecins.oid) AS medecin_id FROM w_sejours LEFT JOIN w_pernu_medecin on w_sejours.DPERNU = w_pernu_medecin.PERNU JOIN prod_chataigneraie_AS400.NXXXFIC_DPERSON ON NXXXFIC_DPERSON.PERNU = DPERNU JOIN prod_chataigneraie_mysql.STDEV_PERSON ON NXXXFIC_DPERSON.PERNU = STDEV_PERSON.PERNU AND NXXXFIC_DPERSON.SC1NU = STDEV_PERSON.SC1NU AND substr(NXXXFIC_DPERSON.PERNOM,1,4) = substr(STDEV_PERSON.PERNOM,1,4) JOIN pmsi.t_medecins ON t_medecins.code = IDPERSON WHERE w_pernu_medecin.medecin_id IS NULL AND STDEV_PERSON.PERNU IS NOT NULL GROUP BY 1; INSERT INTO w_pernu_medecin SELECT STDEV_PERSON.PERNU, MAX(t_medecins.oid) AS medecin_id FROM w_sejours LEFT JOIN w_pernu_medecin on w_sejours.DPERNU = w_pernu_medecin.PERNU JOIN prod_chataigneraie_AS400.NXXXFIC_DPERSON ON NXXXFIC_DPERSON.PERNU = DPERNU left JOIN prod_chataigneraie_mysql.STDEV_PERSON ON NXXXFIC_DPERSON.PERNU = STDEV_PERSON.PERNU AND NXXXFIC_DPERSON.PERNOM = STDEV_PERSON.PERNOM AND NXXXFIC_DPERSON.PERPNM = STDEV_PERSON.PERPNM left JOIN pmsi.t_medecins ON t_medecins.code = IDPERSON WHERE w_pernu_medecin.medecin_id IS NULL AND STDEV_PERSON.PERNU IS NOT NULL GROUP BY 1; DROP TABLE IF EXISTS w_rss ; CREATE TEMP TABLE w_rss AS SELECT w_sejours.sejour_id, w_sejours.finess ,nextval('pmsi.s_rss'::regclass) AS rss_id ,w_sejours.NUMRSS AS no_rss ,w_sejours.DUUNIQ AS no_patient ,w_sejours.POINA AS poids_bebe ,w_sejours.no_sejour_administratif ,w_sejours.DUUNIQ ,w_sejours.DUNOMH AS nom ,w_sejours.DUPNMH AS prenom ,w_sejours.DUNJFH AS nom_naissance ,CASE WHEN CASE WHEN date(w_sejours.DATSOR) < date(w_sejours.DATENT) THEN date(now()) ELSE date(w_sejours.DATSOR) END >= date(w_sejours.DATENT) THEN trunc( (w_sejours.DATENT::date - (CASE WHEN date(w_sejours.DUDTNA) > '1880-01-01' THEN date(w_sejours.DUDTNA) ELSE '1979-12-17' END)::date) / 365.25 ,0) ELSE 0 END AS age ,date(w_sejours.DATENT) AS date_entree ,CASE WHEN date(w_sejours.DATSOR) < date(w_sejours.DATENT) THEN current_date ELSE date(w_sejours.DATSOR) END AS date_sortie ,CASE WHEN date(w_sejours.DATSOR) > date(w_sejours.DATENT) THEN date(w_sejours.DATSOR) - date(w_sejours.DATENT) ELSE 0 END AS duree_sejour ,CASE WHEN substr(COALESCE(w_STDEV_RSS.ghm_code,''), 1, 2) = '28' THEN w_STDEV_RSS.NBCHIMIOS ELSE 1 END AS nb_rsa ,COALESCE(w_STDEV_RSS.MDEID,'8') AS mode_entree ,COALESCE(w_STDEV_RSS.PREID,'') AS provenance ,COALESCE(w_STDEV_RSS.MDSID,'8') AS mode_sortie ,COALESCE(w_STDEV_RSS.DEEID,'') AS destination ,date(w_sejours.DUDTNA) AS date_naissance ,CASE WHEN DUSEXH = 'F' THEN '2' ELSE '1' END AS sexe ,w_sejours.NOCDPH AS code_postal ,substr(COALESCE(w_STDEV_RSS.ghm_code,'') , 3 , 1) AS groupe_ghm ,1 AS nb_rum ,current_date AS date_import ,COALESCE(w_STDEV_RSS.ghm_id,0) AS ghm_id ,COALESCE(w_pernu_medecin.medecin_id, 0) AS medecin_rss_id ,COALESCE(w_STDEV_RSS.ghs_id,0) AS ghs_id ,to_char(w_sejours.DATSOR, 'YYYYMM')::numeric AS mois_sortie ,COALESCE(w_STDEV_RSS.ghm_id,0) AS ghm_production_id ,CASE WHEN substr(COALESCE(w_STDEV_RSS.ghm_code,''), 1, 2) = '28' THEN w_STDEV_RSS.NBCHIMIOS ELSE 0 END AS nb_seances ,COALESCE(w_STDEV_RSS.ghm_code,'') AS ghm_code FROM w_sejours LEFT JOIN w_STDEV_RSS ON w_STDEV_RSS.sejour_id = w_sejours.sejour_id LEFT JOIN w_pernu_medecin ON w_pernu_medecin.PERNU = w_sejours.DPERNU LEFT JOIN pmsi.p_rss ON p_rss.no_sejour_administratif = w_sejours.no_sejour_administratif AND p_rss.etat = '' LEFT JOIN pmsi.p_rss p_rss2 ON p_rss2.no_rss = NUMRSS AND NUMRSS <> 0 AND p_rss2.etat = '' WHERE 1=1 AND p_rss.no_rss IS NULL AND p_rss2.no_rss IS NULL ; INSERT INTO pmsi.p_rss( finess, oid, no_rss, no_patient, 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, 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) SELECT finess, rss_id, no_rss, no_patient, '' AS version_groupage, date_naissance, sexe, date_entree, date_sortie, mode_entree, provenance, mode_sortie, destination, code_postal, poids_bebe, 0 AS igs2, '' AS cma, groupe_ghm, duree_sejour, nb_rsa, age, '' AS supprime, date_import, nb_rum, '' AS secteur, no_sejour_administratif, nb_seances, '' AS ghm_fg9, ghm_id, medecin_rss_id, ghs_id, mois_sortie, 0 AS diagnostic_principal_id, 0 AS diagnostic_relie_id, ghm_production_id, 1 AS no_rum_principal, 0 AS unite_medicale_principale_id, -1 AS import_id, '' AS etat, 0 AS acte_principal_id, 0 AS code_postal_id, 0 AS patient_id, 0 AS prestation_principale_id, '' AS severite_fg11_simulation_code, '1' AS en_cours, CASE WHEN 1=1 AND length(ghm_code) = 6 AND substr(ghm_code, 1, 2) != '90' THEN 'G' ELSE 'S' END AS en_cours_etat, 0 AS base_remboursement, 0 AS sejour_facture, 0 AS honoraires_factures, 0 AS t2a_facture, 0 AS dmi_facture, 0 AS phc_facture, 0 AS ca_ghs_theorique, 0 AS nb_ghs, 0 AS ca_ghs, 0 AS nb_exb, 0 AS ca_exb, 0 AS nb_exh, 0 AS ca_exh, 0 AS nb_si, 0 AS ca_si, 0 AS nb_sur, 0 AS ca_sur, 0 AS nb_rea, 0 AS ca_rea, 0 AS nb_neonat, 0 AS ca_neonat, '' AS traitement_epmsi, '' AS code_retour_groupage, 0 AS comite_medical_id, '0' AS rehosp_meme_ghm, 0 AS from_oid FROM w_rss ; ]]> 0; INSERT INTO pmsi.p_rss_diagnostics( finess, rss_id, no_rss, no_rum, diagnostic_id, type_diagnostic, type_diagnostic_rss, imprecis, unite_medicale, unite_medicale_id) SELECT w_rss.finess, p_rss_rum.rss_id, w_rss.no_rss, no_rum, diagnostic_relie_id AS diagnostic_id, 'DR' AS type_diagnostic, 'DR' AS type_diagnostic_rss, '' AS imprecis, unite_medicale, unite_medicale_id FROM pmsi.p_rss_rum JOIN w_rss ON (p_rss_rum.rss_id = w_rss.rss_id) WHERE diagnostic_relie_id <> 0; -- Insertion des diags. associés. INSERT INTO pmsi.p_rss_diagnostics( finess, rss_id, no_rss, no_rum, diagnostic_id, type_diagnostic, type_diagnostic_rss, imprecis, unite_medicale, unite_medicale_id) SELECT w_rss.finess, w_rss.rss_id, w_rss.no_rss, w_STDEV_RUM.no_rum, t_diagnostics.oid, 'DA' AS type_diagnostic, 'DA' AS type_diagnostic_rss, '' AS imprecis, w_STDEV_RUM.unite_medicale_code, w_STDEV_RUM.unite_medicale_id FROM w_STDEV_RUM JOIN w_rss ON w_STDEV_RUM.sejour_id = w_rss.sejour_id JOIN prod_chataigneraie_mysql.STDEV_DIAGA ON IDMVTDEB = STDEV_DIAGA.IDMVTL JOIN prod_chataigneraie_mysql.STDEV_CIM10 ON IDDIAG = DADIAGA JOIN pmsi.t_diagnostics ON STDEV_CIM10.code = t_diagnostics.code ; ]]> 0 THEN SENUM * 1000000 + BENU ELSE SENUM END::text AS no_sejour_administratif, DUDTNA, DUNOMH, DUPNMH, DUNJFH, DATENT, DATSOR, STDEV_SEJBEBE.DUUNIQ, STDEV_SEJOUR.IDPERSON, NODFA1, NODFA2, dateprval, datedrval, CCAMOK, GHMOK FROM prod_chataigneraie_mysql.STDEV_SEJBEBE JOIN prod_chataigneraie_as400.NXXXFIC_DPATIENT ON NXXXFIC_DPATIENT.DUUNIQ = STDEV_SEJBEBE.DUUNIQ JOIN prod_chataigneraie_mysql.STDEV_ETAB ON STDEV_ETAB.IDETAB = STDEV_SEJBEBE.IDETAB AND STDEV_ETAB.FINESS = '[FINESS]' JOIN prod_chataigneraie_mysql.STDEV_SEJOUR ON SENUM = STDEV_SEJOUR.ID_SEJOUR AND STDEV_SEJBEBE.IDETAB = STDEV_SEJOUR.IDETAB JOIN prod_chataigneraie_as400.NXXXFAC_NDOADM ON SENUM = NONUMA ; UPDATE pmsi.p_rss_etat SET date_facture = GREATEST(NODFA1,NODFA2), est_facture = CASE WHEN date(NODFA1) >= date_sortie OR date(NODFA2) >= date_sortie THEN '1' ELSE '0' END FROM pmsi.p_rss JOIN w_sejours ON p_rss.no_sejour_administratif = w_sejours.no_sejour_administratif WHERE p_rss_etat.rss_id = p_rss.oid AND ( date_facture <> GREATEST(NODFA1,NODFA2) OR est_facture <> CASE WHEN date(NODFA1) >= date_sortie OR date(NODFA2) >= date_sortie THEN '1' ELSE '0' END ) ; UPDATE pmsi.p_rss_etat SET est_groupe = '1', est_valide = '1' WHERE est_facture = '1' AND (est_groupe = '0' OR est_valide = '0') ; UPDATE pmsi.p_rss_etat SET date_groupage = GREATEST(DATEPRVAL,DATEDRVAL), est_groupe = '1', est_valide = '1' FROM pmsi.p_rss JOIN w_sejours ON p_rss.no_sejour_administratif = w_sejours.no_sejour_administratif WHERE p_rss_etat.rss_id = p_rss.oid AND en_cours = '0' AND ( date_groupage <> GREATEST(DATEPRVAL,DATEDRVAL) OR est_groupe <> '1' OR est_valide <> '1' ) ; UPDATE pmsi.p_rss_etat SET date_groupage = GREATEST(DATEPRVAL,DATEDRVAL), est_groupe = CASE WHEN substr(t_ghm.code,1,2) BETWEEN '01' AND '28' THEN '1' ELSE '0' END, est_valide = CASE WHEN substr(t_ghm.code,1,2) BETWEEN '01' AND '28' AND GHMOK = '1' THEN '1' ELSE '0' END FROM pmsi.p_rss JOIN w_sejours ON p_rss.no_sejour_administratif = w_sejours.no_sejour_administratif JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid WHERE p_rss_etat.rss_id = p_rss.oid AND en_cours <> '0' AND ( date_groupage <> GREATEST(DATEPRVAL,DATEDRVAL) OR est_groupe <> CASE WHEN substr(t_ghm.code,1,2) BETWEEN '01' AND '28' THEN '1' ELSE '0' END OR est_valide <> CASE WHEN substr(t_ghm.code,1,2) BETWEEN '01' AND '28' AND GHMOK = '1' THEN '1' ELSE '0' END ) ; UPDATE pmsi.p_rss_etat SET date_facture = '20991231' WHERE date_facture = '00010101' ; UPDATE pmsi.p_rss_etat SET date_groupage = '20991231' WHERE date_groupage = '00010101' ; UPDATE pmsi.p_rss_etat SET date_groupage = date_facture WHERE date_facture < date_groupage AND date_facture <> '20991231' AND date_groupage <> '20991231'; UPDATE pmsi.p_rss_etat SET date_groupage = '20991231' WHERE date_groupage <> '20991231' AND est_groupe IN ('0','9'); UPDATE pmsi.p_rss SET ghm_id = t_ghm_99Z98Z.oid, ghm_production_id = t_ghm_99Z98Z.oid FROM pmsi.p_rss_etat, pmsi.t_ghm, pmsi.t_ghm t_ghm_99Z98Z WHERE p_rss.oid = p_rss_etat.rss_id AND p_rss.ghm_id = t_ghm.oid AND t_ghm_99Z98Z.code = '99Z98Z' AND est_facture = '1' AND t_ghm.code = '99Z99Z' AND p_rss.oid NOT IN ( SELECT rss_id FROM pmsi.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'APE', 'AP2', 'FPI', 'FFM', 'XTR') ); UPDATE pmsi.p_rss SET ghm_id = 0, ghm_production_id = 0 FROM pmsi.p_rss_etat, pmsi.t_ghm, pmsi.t_ghm t_ghm_99Z98Z WHERE p_rss.oid = p_rss_etat.rss_id AND p_rss.en_cours = '1' AND p_rss.ghm_id = t_ghm.oid AND t_ghm_99Z98Z.code = '99Z98Z' AND est_facture = '1' AND t_ghm.code = '99Z99Z' AND p_rss.oid NOT IN ( SELECT rss_id FROM pmsi.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'APE', 'AP2', 'FPI', 'FFM', 'XTR') ); UPDATE pmsi.p_rss SET ghm_id = t_ghm_99Z99Z.oid, ghm_production_id = t_ghm_99Z99Z.oid FROM pmsi.p_rss_etat, pmsi.t_ghm, pmsi.t_ghm t_ghm_99Z99Z WHERE p_rss.oid = p_rss_etat.rss_id AND p_rss.ghm_id = t_ghm.oid AND t_ghm_99Z99Z.code = '99Z99Z' AND en_cours = '1' AND t_ghm.code LIKE '90%'; UPDATE pmsi.p_rss SET ghm_id = 0, ghm_production_id = 0 FROM pmsi.p_rss_etat, pmsi.t_ghm WHERE p_rss.oid = p_rss_etat.rss_id AND p_rss.en_cours = '1' AND p_rss.ghm_id = t_ghm.oid AND est_facture = '1' AND (t_ghm.code = '99Z99Z' OR ghm_id = 0) AND p_rss.oid IN ( SELECT rss_id FROM pmsi.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'APE', 'AP2', 'FPI', 'FFM', 'XTR') ); UPDATE pmsi.p_rss SET en_cours_etat = 'F' FROM pmsi.p_rss_etat WHERE p_rss.oid = p_rss_etat.rss_id AND en_cours = '1' AND en_cours_etat IS DISTINCT FROM 'F' AND est_facture = 1 ; ]]>