1 OR p_rss.no_rum_principal <> p_rss_rum.no_rum OR p_rss.diagnostic_principal_id <> p_rss_rum.diagnostic_principal_id OR p_rss.diagnostic_relie_id <> p_rss_rum.diagnostic_relie_id ); ]]> '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 <> 'ADE' 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' 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] ))[2]::bigint AS medecin_id FROM [SCHEMA].p_rss_actes JOIN [SCHEMA].p_rss ON p_rss.oid = p_rss_actes.rss_id JOIN pmsi.t_actes_c ON p_rss_actes.acte_id = t_actes_c.oid WHERE p_rss.import_id = [IMPORT_ID] GROUP BY 1; UPDATE [SCHEMA].p_rss SET medecin_rss_id = w_rss_actes.medecin_id FROM w_rss_actes WHERE w_rss_actes.rss_id = p_rss.oid AND p_rss.medecin_rss_id <> w_rss_actes.medecin_id AND w_rss_actes.medecin_id <> 0; -- Pour les séjours sans actes et sans médecin responsable renseigné -- on va regarder dans la liste des documents du dossier médical -- Le médecin qui a signé le courrier médical peut être le médecin responsable du séjour UPDATE [SCHEMA].p_rss SET medecin_rss_id = t_medecins.oid FROM prod_orbis.FALL JOIN prod_orbis.CW_VERWEIS ON CW_VERWEIS.FALL = FALL.FALLID JOIN prod_orbis.CW_PRIMITIVUM ON CW_PRIMITIVUM.PRIMITIVUMNUMMER = CW_VERWEIS.SOHNREFERENZ AND CW_PRIMITIVUM.ERZEUGERKLASSE = CW_VERWEIS.VATERKLASSE JOIN prod_orbis.CW_PRIMITIVUMINFO ON CW_PRIMITIVUMINFO.PRIMITIVUMNUMMER = CW_VERWEIS.SOHNREFERENZ JOIN prod_orbis.MITARBEITER on MITARBEITER.MAID = CW_PRIMITIVUM.MEDUSER JOIN pmsi.t_medecins ON t_medecins.code = MITARBEITER.MA_KURZ WHERE 1=1 AND FALL.FALLNR = p_rss.no_sejour_administratif AND p_rss.import_id = [IMPORT_ID] AND p_rss.medecin_rss_id = 0 AND CW_PRIMITIVUMINFO.STATUSSTRING ILIKE 'sign%' AND CW_PRIMITIVUMINFO.DOKNAMESTRING ILIKE 'courrier m%'; ]]> 350 THEN ORGAEBENE.OEBENENAME ELSE NULL END) ) AS OEBENENAME FROM prod_orbis.ORGAEBENE JOIN pmsi.t_unites_medicales ON ORGAEBENE.OEBENEKURZ = t_unites_medicales.code GROUP BY ORGAEBENE.OEBENEKURZ ORDER BY 1 ) subview WHERE t_unites_medicales.code = subview.OEBENEKURZ AND t_unites_medicales.texte IS DISTINCT FROM subview.OEBENENAME; ]]> 1; DROP TABLE IF EXISTS w_FALL; CREATE TEMP TABLE w_FALL AS SELECT w_finess.code as finess ,nextval('pmsi.s_rss'::regclass) as rss_id ,FALL.FALLID ,FALL.FALLNR ,FALL.AUFNDAT ,FALL.ENTLDAT ,FALL.PERSNR ,NATPERSON.NAME AS NAME ,NATPERSON.GEBURTSNAME AS GEBURTSNAME ,NATPERSON.VORNAME AS VORNAME FROM w_finess, prod_orbis.FALL JOIN prod_orbis.NATPERSON ON FALL.PERSNR = NATPERSON.PERSNR LEFT JOIN pmsi.p_rss ON FALL.FALLNR = p_rss.no_sejour_administratif WHERE 1=1 AND p_rss.oid IS NULL AND FALL.ENTLDAT BETWEEN '[ANNEE]0101' AND now(); DROP TABLE IF EXISTS w_rss; CREATE TEMP TABLE w_rss AS SELECT w_FALL.finess ,w_FALL.FALLID ,0 - w_FALL.FALLID AS no_rss ,w_FALL.FALLNR ,w_FALL.rss_id ,'19811101'::date AS BIRTHDAY ,''::text AS SEX ,w_FALL.AUFNDAT ,w_FALL.ENTLDAT ,''::text AS ADMISSIONTYPE ,''::text AS ORIGIN ,''::text AS DISCHARGETYPE ,''::text AS DESTINATION ,''::text AS ZIPCODE ,0::integer AS BIRTHWEIGHT ,0::integer AS IGS2 ,0::integer as NB_RSA ,0::integer AS NB_RUM ,0::integer as NB_SEANCES ,0::integer as GESTANR ,w_FALL.NAME ,w_FALL.GEBURTSNAME ,w_FALL.VORNAME ,''::text AS DRGGHM ,0 AS IS_GROUPED ,'20991231'::date AS VALIDATION_LASTDATE ,0::integer AS DRGGHS ,DATE(w_FALL.ENTLDAT) - DATE(w_FALL.AUFNDAT) AS DURSEJ ,0 as AGE ,'0'::text as IS_FACTURED FROM w_FALL; DROP TABLE IF EXISTS w_DRGMCO; CREATE TEMP TABLE w_DRGMCO AS SELECT w_FALL.FALLID ,MAX(date(FALL_DRGMCO.BIRTHDAY)) as BIRTHDAY ,MAX(COALESCE(FALL_DRGMCO.SEX,'1')) as SEX ,MAX(FALL_DRGMCO.ZIPCODE) as ZIPCODE ,MAX(FALL_DRGMCO.BIRTHWEIGHT) as BIRTHWEIGHT ,MAX(base.cti_to_number(FALL_DRGMCO.IGS2)) as IGS2 ,MAX(GREATEST(1,FALL_DRGMCO.STAYNR)) as STAYNR ,COUNT(FALL_DRGMCO.FALL_DRGMCOID) as FALL_DRGMCOID ,MAX(FALL_DRGMCO.STAYNR) as NB_SEANCES ,MAX(FALL_DRGMCO.GESTANR) as GESTANR ,MAX(FALL_DRGRESULT.DRGCMD || FALL_DRGRESULT.DRGNUMBER) as DRGGHM ,max(FALL_DRGMCO.IS_GROUPED) as IS_GROUPED ,max(date(FALL_DRGMCO.VALIDATION_LASTDATE)) as VALIDATION_LASTDATE ,base.cti_to_number(MAX(EXTERNALSERVICE.TW_LSTNR)) as DRGGHS ,MIN(CATALOGTEXT.SHORTTEXT) as IS_FACTURED FROM w_FALL JOIN prod_orbis.FALL_DRGMCO ON FALL_DRGMCO.FALLID = w_FALL.FALLID JOIN prod_orbis.FALL_DRGRESULT ON FALL_DRGMCO.FALL_DRGMCOID = FALL_DRGRESULT.FALL_DRGMCOID LEFT JOIN prod_orbis.EXTERNALSERVICE ON EXTERNALSERVICE.EXTERNALSERVICEID = FALL_DRGRESULT.GHSID LEFT JOIN prod_orbis.CATALOGTEXT ON CATALOGTEXT.DBUID = FALL_DRGMCO.RUM_BILL_STATUS WHERE 1=1 AND FALL_DRGRESULT.GRPCASEFLAG = 2 AND FALL_DRGMCO.VISIBILITY = 0 GROUP BY w_FALL.FALLID; DELETE FROM w_rss WHERE FALLID != ALL(ARRAY(SELECT FALLID FROM w_DRGMCO)::bigint[]); UPDATE w_rss SET BIRTHDAY = w_DRGMCO.BIRTHDAY ,SEX = w_DRGMCO.SEX ,ZIPCODE = w_DRGMCO.ZIPCODE ,BIRTHWEIGHT = w_DRGMCO.BIRTHWEIGHT ,IGS2 = w_DRGMCO.IGS2 ,NB_RSA = w_DRGMCO.STAYNR ,NB_RUM = w_DRGMCO.FALL_DRGMCOID ,NB_SEANCES = w_DRGMCO.STAYNR ,GESTANR = w_DRGMCO.GESTANR ,DRGGHM = w_DRGMCO.DRGGHM ,IS_GROUPED = w_DRGMCO.IS_GROUPED ,VALIDATION_LASTDATE = w_DRGMCO.VALIDATION_LASTDATE ,DRGGHS = w_DRGMCO.DRGGHS ,IS_FACTURED = w_DRGMCO.IS_FACTURED FROM w_DRGMCO WHERE w_rss.FALLID = w_DRGMCO.FALLID; -- Tout ce qui est codé en erreur obtient le GHM CTI 99Z99Z UPDATE w_rss SET DRGGHM = '99Z99Z' WHERE 1!=1 OR DRGGHM LIKE '90%' OR length(DRGGHM) <> 6 OR DRGGHM 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 w_rss.finess AS finess ,w_rss.rss_id AS oid ,w_rss.no_rss ,0 AS no_patient ,'11' AS version_groupage ,w_rss.BIRTHDAY AS date_naissance ,w_rss.SEX ,w_rss.AUFNDAT AS date_entree ,w_rss.ENTLDAT AS date_sortie ,w_rss.ADMISSIONTYPE AS mode_entree ,w_rss.ORIGIN AS provenance ,w_rss.DISCHARGETYPE AS mode_sortie ,w_rss.DESTINATION AS destination ,w_rss.ZIPCODE AS code_postal ,w_rss.BIRTHWEIGHT AS poids_bebe ,w_rss.IGS2 AS igs2 ,'' AS cma ,substr(w_rss.DRGGHM , 3 , 1) AS groupe_ghm ,w_rss.DURSEJ AS duree_sejour ,w_rss.NB_RSA AS nb_rsa ,w_rss.AGE AS age ,'' AS supprime ,now() AS date_import ,w_rss.NB_RUM AS nb_rum ,'' AS secteur ,w_rss.FALLNR AS no_sejour_administratif ,w_rss.NB_SEANCES AS nb_seances ,'' AS ghm_fg9 ,COALESCE(t_ghm.oid, 0) AS ghm_id ,0 AS medecin_rss_id ,COALESCE(t_ghs.oid, 0) AS ghs_id ,(extract(year from w_rss.ENTLDAT) * 100 + extract(month from w_rss.ENTLDAT))::integer AS mois_sortie ,0 AS diagnostic_principal_id ,0 AS diagnostic_relie_id ,COALESCE(t_ghm.oid, 0) AS 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 w_rss.IS_GROUPED = 1 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 ,'00' AS traitement_epmsi ,'' AS code_retour_groupage ,0 AS comite_medical_id ,'0' AS rehosp_meme_ghm ,0 AS from_oid FROM w_rss LEFT JOIN base.t_codes_postaux ON t_codes_postaux.code = w_rss.ZIPCODE LEFT JOIN pmsi.t_ghm ON t_ghm.code = w_rss.DRGGHM LEFT JOIN pmsi.t_ghs ON t_ghs.code = w_rss.DRGGHS; ]]> 1 AND p_rss_rum.rss_id = w_rss_rum.rss_id AND p_rss_rum.no_rum = w_rss_rum.no_dernier_rum; ]]>