0 AND PMSI_RESULT.N_CLINI = 1 AND p_rss.import_id = [IMPORT_ID] AND (1!=1 OR p_identites.nom IS DISTINCT FROM NOM_PAT OR p_identites.nom_naissance IS DISTINCT FROM COALESCE(PATIENT.MAR_PAT,'') OR p_identites.prenom IS DISTINCT FROM PRE_PAT ) ; -- Spécial externes UPDATE [SCHEMA].p_rss SET no_sejour_administratif = N_HOSPI FROM [SCHEMA].p_rsf_total JOIN prod_qsp.FACTURE ON FACTURE.NUM_FACT = p_rsf_total.no_facture WHERE import_id = [IMPORT_ID] AND p_rss.ghm_id = 0 AND p_rss.oid = p_rsf_total.rss_id AND no_sejour_administratif IS DISTINCT FROM N_HOSPI; UPDATE [SCHEMA].p_identites SET nom = NOM_PAT, nom_naissance = COALESCE(PATIENT.MAR_PAT,''), prenom = PRE_PAT FROM [SCHEMA].p_rss JOIN prod_qsp.DOSSIER ON DOSSIER.NDOSSIER = p_rss.no_sejour_administratif JOIN prod_qsp.PATIENT ON PATIENT.NPATIENT = DOSSIER.NPATIENT WHERE 1=1 AND p_identites.rss_id = p_rss.oid AND date_part('month',DOSSIER.DATE_SORTIE) = date_part('month', p_rss.date_sortie) AND p_rss.ghm_id = 0 AND p_rss.import_id = [IMPORT_ID] AND (1!=1 OR p_identites.nom IS DISTINCT FROM NOM_PAT OR p_identites.nom_naissance IS DISTINCT FROM COALESCE(PATIENT.MAR_PAT,'') OR p_identites.prenom IS DISTINCT FROM PRE_PAT ) ; UPDATE [SCHEMA].p_rss SET no_patient = base.cti_to_number(DOSSIER.NPATIENT) FROM prod_qsp.DOSSIER WHERE 1=1 AND DOSSIER.NDOSSIER = p_rss.no_sejour_administratif AND date_trunc('month',DOSSIER.DATE_SORTIE) = date_trunc('month', p_rss.date_sortie) AND no_patient IS DISTINCT FROM base.cti_to_number(DOSSIER.NPATIENT); ]]> 0 AND PMSI_RESULT.N_CLINI = 1 AND p_rss.import_id = [IMPORT_ID] AND medecin_rss_id IS DISTINCT FROM COALESCE(t_medecins.oid,0) ; UPDATE [SCHEMA].p_rss SET medecin_rss_id = COALESCE(t_medecins.oid,0) FROM prod_qsp.DOSSIER JOIN pmsi.t_medecins ON t_medecins.code = DOSSIER.MEDSUIV WHERE 1=1 AND DOSSIER.NDOSSIER =p_rss.no_sejour_administratif AND date_part('month',DOSSIER.DATE_SORTIE) = date_part('month', p_rss.date_sortie) AND ghm_id > 0 AND p_rss.import_id = [IMPORT_ID] AND medecin_rss_id = 0 ; -- Spécial externes UPDATE [SCHEMA].p_rss SET medecin_rss_id = COALESCE(t_medecins.oid,0) FROM prod_qsp.DOSSIER JOIN pmsi.t_medecins ON t_medecins.code = DOSSIER.MEDSUIV WHERE 1=1 AND DOSSIER.NDOSSIER =p_rss.no_sejour_administratif AND date_part('month',DOSSIER.DATE_SORTIE) = date_part('month', p_rss.date_sortie) AND ghm_id = 0 AND p_rss.import_id = [IMPORT_ID] AND medecin_rss_id IS DISTINCT FROM COALESCE(t_medecins.oid,0) ; ]]> 0; CREATE INDEX w_PMSI_ACTE_i1 ON w_PMSI_ACTE USING btree (NDOSSIER); UPDATE [SCHEMA].p_rss_actes SET medecin_id = t_medecins.oid FROM w_PMSI_ACTE JOIN [SCHEMA].p_rss ON no_sejour_administratif = ndossier AND date_part('month',w_PMSI_ACTE.DATE_SORTIE) = date_part('month', p_rss.date_sortie) JOIN pmsi.t_medecins ON PRAT_EXEC = t_medecins.code JOIN pmsi.t_actes ON w_PMSI_ACTE.N_ACTE || COALESCE(w_PMSI_ACTE.CODE_CCAM_DESCR, '') = t_actes.code WHERE p_rss_actes.rss_id = p_rss.oid AND ( p_rss_actes.acte_id = t_actes.oid OR p_rss_actes.acte_ccam_descriptif_id = t_actes.oid ) AND date(p_rss_actes.date_acte) = date(w_PMSI_ACTE.DATE_ACTE) AND p_rss_actes.activite_ccam = w_PMSI_ACTE.CODE_ACTIVITE AND p_rss_actes.medecin_id IS DISTINCT FROM t_medecins.oid; UPDATE [SCHEMA].p_rss_actes SET medecin_id = t_medecins.oid FROM w_PMSI_ACTE JOIN [SCHEMA].p_rss ON no_sejour_administratif = ndossier AND date_part('month',w_PMSI_ACTE.DATE_SORTIE) = date_part('month', p_rss.date_sortie) JOIN pmsi.t_medecins ON PRAT_EXEC = t_medecins.code JOIN pmsi.t_actes ON w_PMSI_ACTE.N_ACTE || COALESCE(w_PMSI_ACTE.CODE_CCAM_DESCR, '') = t_actes.code WHERE p_rss_actes.rss_id = p_rss.oid AND ( p_rss_actes.acte_id = t_actes.oid OR p_rss_actes.acte_ccam_descriptif_id = t_actes.oid ) AND p_rss_actes.activite_ccam = w_PMSI_ACTE.CODE_ACTIVITE AND p_rss_actes.medecin_id = 0; ]]> 1; DROP TABLE IF EXISTS w_PMSI_RESULT; CREATE TEMP TABLE w_PMSI_RESULT AS SELECT (SELECT code FROM w_finess) AS finess, PMSI_RESULT.*, DOSSIER.DATE_SORTIE, DOSSIER.DATE_ENTREE, DOSSIER.NPATIENT, PATIENT.CPO_PAT, PATIENT.SEXE, PATIENT.NOM_PAT, PATIENT.PRE_PAT, COALESCE(PATIENT.MAR_PAT,'') AS MAR_PAT, base.date(NAI_PAT) AS NAI_PAT, nextval('pmsi.s_rss'::regclass) AS rss_id FROM prod_qsp.PMSI_RESULT JOIN prod_qsp.DOSSIER ON PMSI_RESULT.NDOSSIER = DOSSIER.NDOSSIER JOIN prod_qsp.PATIENT ON DOSSIER.NPATIENT = PATIENT.NPATIENT JOIN prod_qsp.CLINIQUE ON DOSSIER.ID_CLI = CLINIQUE.FINESS LEFT JOIN pmsi.p_rss ON PMSI_RESULT.N_RSS = p_rss.no_rss AND p_rss.etat = '' AND date_part('month',DOSSIER.DATE_SORTIE) = date_part('month', p_rss.date_sortie) WHERE DOSSIER.DATE_SORTIE BETWEEN '[ANNEE]0101' AND ('[ANNEE]1231'::date + '10 years'::interval)::date AND n_rss > 0 AND p_rss.no_rss IS NULL AND DOSSIER.PMSI_GERE = 'O' ORDER BY PMSI_RESULT.N_RSS; -- Evite d'insérer des RSS alors que le séjour est déjà en base (premier prestataire ou import ePMSI) DELETE FROM w_PMSI_RESULT WHERE ndossier IN ( SELECT no_sejour_administratif FROM pmsi.p_rss WHERE 1=1 AND etat <> 'S' GROUP BY no_sejour_administratif ); DROP TABLE IF EXISTS w_PMSI_ACTIVERUM; CREATE TEMP TABLE w_PMSI_ACTIVERUM AS SELECT w_PMSI_RESULT.NDOSSIER, w_PMSI_RESULT.N_SEQ, N_RUM, MAX(N_UNIQUE) AS N_UNIQUE FROM prod_qsp.PMSI_RUM JOIN w_PMSI_RESULT ON w_PMSI_RESULT.NDOSSIER = PMSI_RUM.NDOSSIER AND w_PMSI_RESULT.N_SEQ = PMSI_RUM.N_SEQ GROUP BY 1,2,3; DROP TABLE IF EXISTS W_PMSI_RSS; CREATE TEMP TABLE W_PMSI_RSS AS SELECT w_PMSI_RESULT.finess, w_PMSI_RESULT.rss_id, w_PMSI_RESULT.N_RSS, w_PMSI_RESULT.NDOSSIER, w_PMSI_RESULT.N_SEQ, '1' AS facture_ok, w_PMSI_RESULT.DATE_ENTREE, w_PMSI_RESULT.DATE_SORTIE, w_PMSI_RESULT.CPO_PAT, w_PMSI_RESULT.SEXE, w_PMSI_RESULT.NAI_PAT, w_PMSI_RESULT.NPATIENT, CASE WHEN w_PMSI_RESULT.MAR_PAT <> '' THEN w_PMSI_RESULT.MAR_PAT ELSE w_PMSI_RESULT.NOM_PAT END AS NOM_PAT_NAI , CASE WHEN w_PMSI_RESULT.MAR_PAT <> '' THEN w_PMSI_RESULT.NOM_PAT ELSE w_PMSI_RESULT.NOM_PAT END AS NOM_PAT, PRE_PAT, TRIM(COALESCE(w_PMSI_RESULT.CMD,'')) AS CMD, TRIM(COALESCE(w_PMSI_RESULT.GHM,'')) AS GHM, COALESCE(w_PMSI_RESULT.GHS,0) AS GHS, w_PMSI_RESULT.VALIDER, to_number(substr(MIN(to_char(w_PMSI_ACTIVERUM.N_RUM,'00000') || to_char(w_PMSI_ACTIVERUM.N_UNIQUE, '0000000000')),8,10),'0000000000') AS N_UNIQUE_RUM1, to_number(substr(MAX(to_char(w_PMSI_ACTIVERUM.N_RUM,'00000') || to_char(w_PMSI_ACTIVERUM.N_UNIQUE, '0000000000')),8,10),'0000000000') AS N_UNIQUE_RUM9, (MIN(ARRAY[PMSI_RUM.N_RUM::text, substr(PMSI_RUM.MODE_ENT, 1,1)::text]))[2] as mode_entree, (MIN(ARRAY[PMSI_RUM.N_RUM::text, substr(PMSI_RUM.MODE_ENT, 2,1)::text]))[2] as provenance, (MAX(ARRAY[PMSI_RUM.N_RUM::text, substr(PMSI_RUM.MODE_SOR, 1,1)::text]))[2] as mode_sortie, (MAX(ARRAY[PMSI_RUM.N_RUM::text, substr(PMSI_RUM.MODE_SOR, 2,1)::text]))[2] as destination, trim(substr(MIN(to_char(PMSI_RUM.N_RUM,'00000') || PMSI_RUM.DIAG_PRI),7,10)) AS DIAG_PRI, trim(substr(MIN(to_char(PMSI_RUM.N_RUM,'00000') || PMSI_RUM.DIAG_REL),7,10)) AS DIAG_REL, trim(substr(MIN(to_char(PMSI_RUM.N_RUM,'00000') || PMSI_RUM.C_PRAT),7,10)) AS C_PRAT, trim(substr(MIN(to_char(PMSI_RUM.N_RUM,'00000') || CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END),7,10)) AS UM, SUM(SEANCE) AS SEANCE, count(*) AS nb_rum, MAX(POIDS) AS POIDS FROM w_PMSI_RESULT JOIN w_PMSI_ACTIVERUM ON w_PMSI_RESULT.NDOSSIER = w_PMSI_ACTIVERUM.NDOSSIER AND w_PMSI_RESULT.N_SEQ = w_PMSI_ACTIVERUM.N_SEQ JOIN prod_qsp.PMSI_RUM ON w_PMSI_ACTIVERUM.N_UNIQUE = PMSI_RUM.N_UNIQUE GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 ; CREATE TEMP TABLE w_PMSI_RUM_CPRAT AS SELECT NDOSSIER, trim(substr(MIN(to_char(PMSI_RUM.N_RUM,'00000') || PMSI_RUM.C_PRAT),7,10)) AS CPRAT FROM prod_qsp.PMSI_RUM WHERE 1=1 AND COALESCE(C_PRAT, '')::text <> '' GROUP BY 1 ; UPDATE W_PMSI_RSS SET C_PRAT = w_PMSI_RUM_CPRAT.CPRAT FROM w_PMSI_RUM_CPRAT WHERE 1=1 AND trim(W_PMSI_RSS.C_PRAT) = '' AND w_PMSI_RUM_CPRAT.NDOSSIER = W_PMSI_RSS.NDOSSIER ; 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_PMSI_RSS.finess AS finess, w_PMSI_RSS.rss_id AS oid, w_PMSI_RSS.N_RSS AS no_rss, w_PMSI_RSS.NPATIENT AS no_patient, '' AS version_groupage, w_PMSI_RSS.NAI_PAT AS date_naissance, w_PMSI_RSS.SEXE AS sexe, w_PMSI_RSS.DATE_ENTREE AS date_entree, w_PMSI_RSS.DATE_SORTIE AS date_sortie, w_PMSI_RSS.mode_entree AS mode_entree, w_PMSI_RSS.provenance AS provenance, w_PMSI_RSS.mode_sortie AS mode_sortie, w_PMSI_RSS.destination AS destination, w_PMSI_RSS.CPO_PAT AS code_postal, w_PMSI_RSS.POIDS AS poids_bebe, 0 AS igs2, '' AS cma, '' AS groupe_ghm, CASE WHEN w_PMSI_RSS.DATE_SORTIE > w_PMSI_RSS.DATE_ENTREE THEN date(w_PMSI_RSS.DATE_SORTIE) - date(w_PMSI_RSS.DATE_ENTREE) ELSE 0 END AS duree_sejour, CASE WHEN w_PMSI_RSS.CMD = '28' THEN w_PMSI_RSS.SEANCE ELSE 1 END AS nb_rsa, CASE WHEN w_PMSI_RSS.DATE_ENTREE > w_PMSI_RSS.NAI_PAT THEN trunc((date(w_PMSI_RSS.DATE_ENTREE) - date(w_PMSI_RSS.NAI_PAT)) / 365.25,0) ELSE 0 END AS age, '' AS supprime, now() AS date_import, w_PMSI_RSS.nb_rum AS nb_rum, '' AS secteur, w_PMSI_RSS.NDOSSIER AS no_sejour_administratif, CASE WHEN w_PMSI_RSS.CMD = '28' THEN w_PMSI_RSS.SEANCE ELSE 1 END AS nb_seances, '' AS ghm_fg9, COALESCE(t_ghm.oid, 0) AS ghm_id, COALESCE(t_medecins.oid, 0) AS medecin_rss_id, COALESCE(t_ghs.oid, 0) AS ghs_id, date_part('year', w_PMSI_RSS.DATE_SORTIE) * 100 + date_part('month', w_PMSI_RSS.DATE_SORTIE) AS mois_sortie, COALESCE(t_diagnostics.oid, 0) AS diagnostic_principal_id, COALESCE(t_diagnostics_relies.oid, 0) AS diagnostic_relie_id, COALESCE(t_ghm.oid, 0) AS ghm_production_id, 1 AS no_rum_principal, COALESCE(t_unites_medicales.oid, 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 length(w_PMSI_RSS.GHM) = 6 AND w_PMSI_RSS.CMD <> '90' AND w_PMSI_RSS.VALIDER = 1 THEN 'V' WHEN length(w_PMSI_RSS.GHM) = 6 AND w_PMSI_RSS.CMD <> '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_PMSI_RSS LEFT JOIN pmsi.t_ghm ON (w_PMSI_RSS.GHM = t_ghm.code) LEFT JOIN pmsi.t_ghs ON (w_PMSI_RSS.GHS = t_ghs.code) LEFT JOIN pmsi.t_diagnostics ON (w_PMSI_RSS.DIAG_PRI = t_diagnostics.code) LEFT JOIN pmsi.t_diagnostics t_diagnostics_relies ON (w_PMSI_RSS.DIAG_REL = t_diagnostics_relies.code) LEFT JOIN pmsi.t_unites_medicales ON (w_PMSI_RSS.UM = t_unites_medicales.code) LEFT JOIN pmsi.t_medecins ON (w_PMSI_RSS.C_PRAT = t_medecins.code); ]]> PMSI_RUM.DATE_ENTREE AND date(PMSI_RUM.DATE_SORTIE) - date(PMSI_RUM.DATE_ENTREE) <= 99999 THEN date(PMSI_RUM.DATE_SORTIE) - date(PMSI_RUM.DATE_ENTREE) ELSE 0 END AS duree_sejour, CASE WHEN w_PMSI_RSS.CMD = '28' THEN PMSI_RUM.SEANCE ELSE 0 END AS nb_seances, trim(CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) AS unite_medicale, COALESCE(t_diagnostics.oid,0) AS diagnostic_principal_id, COALESCE(t_diagnostics_relies.oid,0) AS diagnostic_relie_id, COALESCE(t_unites_medicales.oid,0) AS unite_medicale_id, '' AS type_autorisation, PMSI_RUM.IGS AS igs2, '' AS type_autorisation_lit_dedie, '' AS supplement_code FROM w_PMSI_RSS JOIN w_PMSI_ACTIVERUM ON w_PMSI_RSS.NDOSSIER = w_PMSI_ACTIVERUM.NDOSSIER AND w_PMSI_RSS.N_SEQ = w_PMSI_ACTIVERUM.N_SEQ JOIN prod_qsp.PMSI_RUM ON w_PMSI_ACTIVERUM.N_UNIQUE = PMSI_RUM.N_UNIQUE LEFT JOIN pmsi.t_unites_medicales ON trim(CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) = t_unites_medicales.code LEFT JOIN pmsi.t_diagnostics ON (PMSI_RUM.DIAG_PRI = t_diagnostics.code) LEFT JOIN pmsi.t_diagnostics t_diagnostics_relies ON (PMSI_RUM.DIAG_REL = t_diagnostics_relies.code); ]]> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) AS unite_medicale, COALESCE(t_unites_medicales.oid,0) AS unite_medicale_id FROM w_PMSI_RSS JOIN w_PMSI_ACTIVERUM ON w_PMSI_RSS.NDOSSIER = w_PMSI_ACTIVERUM.NDOSSIER AND w_PMSI_RSS.N_SEQ = w_PMSI_ACTIVERUM.N_SEQ JOIN prod_qsp.PMSI_RUM ON w_PMSI_ACTIVERUM.N_UNIQUE = PMSI_RUM.N_UNIQUE LEFT JOIN pmsi.t_unites_medicales ON trim(CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) = t_unites_medicales.code LEFT JOIN pmsi.t_diagnostics ON (PMSI_RUM.DIAG_PRI = t_diagnostics.code) WHERE COALESCE(PMSI_RUM.DIAG_PRI,'') <> ''; 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_PMSI_RSS.finess AS finess, w_PMSI_RSS.rss_id AS rss_id, w_PMSI_RSS.N_RSS AS no_rss, PMSI_RUM.N_RUM AS no_rum, COALESCE(t_diagnostics.oid,0) AS diagnostic_id, 'DR' AS type_diagnostic, 'DR' AS type_diagnostic_rss, '' AS imprecis, trim(CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) AS unite_medicale, COALESCE(t_unites_medicales.oid,0) AS unite_medicale_id FROM w_PMSI_RSS JOIN w_PMSI_ACTIVERUM ON w_PMSI_RSS.NDOSSIER = w_PMSI_ACTIVERUM.NDOSSIER AND w_PMSI_RSS.N_SEQ = w_PMSI_ACTIVERUM.N_SEQ JOIN prod_qsp.PMSI_RUM ON w_PMSI_ACTIVERUM.N_UNIQUE = PMSI_RUM.N_UNIQUE LEFT JOIN pmsi.t_unites_medicales ON trim(CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) = t_unites_medicales.code LEFT JOIN pmsi.t_diagnostics ON (PMSI_RUM.DIAG_REL = t_diagnostics.code) WHERE COALESCE(PMSI_RUM.DIAG_REL,'') <> ''; 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_PMSI_RSS.finess AS finess, w_PMSI_RSS.rss_id AS rss_id, w_PMSI_RSS.N_RSS AS no_rss, PMSI_RUM.N_RUM AS no_rum, COALESCE(t_diagnostics.oid,0) AS diagnostic_id, CASE WHEN PMSI_DIAG.D_DOC = 1 THEN 'DD' ELSE 'DA' END AS type_diagnostic, CASE WHEN PMSI_DIAG.D_DOC = 1 THEN 'DD' ELSE 'DA' END AS type_diagnostic_rss, '' AS imprecis, trim(CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) AS unite_medicale, COALESCE(t_unites_medicales.oid,0) AS unite_medicale_id FROM w_PMSI_RSS JOIN w_PMSI_ACTIVERUM ON w_PMSI_RSS.NDOSSIER = w_PMSI_ACTIVERUM.NDOSSIER AND w_PMSI_RSS.N_SEQ = w_PMSI_ACTIVERUM.N_SEQ JOIN prod_qsp.PMSI_RUM ON w_PMSI_ACTIVERUM.N_UNIQUE = PMSI_RUM.N_UNIQUE JOIN prod_qsp.PMSI_DIAG ON PMSI_RUM.N_UNIQUE = PMSI_DIAG.N_UNIQUE LEFT JOIN pmsi.t_unites_medicales ON trim(CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) = t_unites_medicales.code LEFT JOIN pmsi.t_diagnostics ON (PMSI_DIAG.N_DIAG = t_diagnostics.code) WHERE PMSI_DIAG.D_DOC IN (0, 1); ]]> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) = t_unites_medicales.code LEFT JOIN pmsi.t_actes ON PMSI_ACTE.N_ACTE || COALESCE(PMSI_ACTE.CODE_CCAM_DESCR, '') = t_actes.code LEFT JOIN pmsi.t_medecins ON (DOSSIER_CCAM.PRAT_EXEC = t_medecins.code) WHERE PMSI_ACTE.N_UNIQUE_CCAM <> 0 AND t_medecins.oid IS NULL ) AND t_medecins.oid IS NULL; INSERT INTO pmsi.p_rss_actes( finess, rss_id, no_rss, no_rum, unite_medicale, unite_medicale_id, date_acte, medecin_id, acte_id, nombre, phase_ccam, activite_ccam, extension_ccam, modificateur_ccam_1, modificateur_ccam_2, modificateur_ccam_3, modificateur_ccam_4, remboursement_excp_ccam, association_nonprevue_ccam ) SELECT w_PMSI_RSS.finess AS finess, w_PMSI_RSS.rss_id AS rss_id, w_PMSI_RSS.N_RSS AS no_rss, PMSI_RUM.N_RUM AS no_rum, trim(CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) AS unite_medicale, COALESCE(t_unites_medicales.oid,0) AS unite_medicale_id, PMSI_ACTE.DATE_ACTE AS date_acte, COALESCE(t_medecins.oid,0) AS medecin_id, COALESCE(t_actes.oid,0) AS acte_id, PMSI_ACTE.NB_ACTE AS nombre, PMSI_ACTE.N_PHASE AS phase_ccam, PMSI_ACTE.CODE_ACTIVITE AS activite_ccam, PMSI_ACTE.EXT_DOC AS extension_ccam, substr(PMSI_ACTE.MODIF,1,1) AS modificateur_ccam_1, substr(PMSI_ACTE.MODIF,2,1) AS modificateur_ccam_2, substr(PMSI_ACTE.MODIF,3,1) AS modificateur_ccam_3, substr(PMSI_ACTE.MODIF,4,1) AS modificateur_ccam_4, PMSI_ACTE.REMB_EXCEPT AS remboursement_excp_ccam, PMSI_ACTE.ASSOC_NP AS association_nonprevue_ccam FROM w_PMSI_RSS JOIN w_PMSI_ACTIVERUM ON w_PMSI_RSS.NDOSSIER = w_PMSI_ACTIVERUM.NDOSSIER AND w_PMSI_RSS.N_SEQ = w_PMSI_ACTIVERUM.N_SEQ JOIN prod_qsp.PMSI_RUM ON w_PMSI_ACTIVERUM.N_UNIQUE = PMSI_RUM.N_UNIQUE JOIN prod_qsp.PMSI_ACTE ON PMSI_RUM.N_UNIQUE = PMSI_ACTE.N_UNIQUE JOIN prod_qsp.DOSSIER_CCAM ON PMSI_ACTE.N_UNIQUE_CCAM = DOSSIER_CCAM.N_UNIQUE_CCAM LEFT JOIN pmsi.t_unites_medicales ON trim(CASE WHEN COALESCE(PMSI_RUM.UM,'') <> '' THEN SUBSTR(PMSI_RUM.UM,1,4) ELSE SUBSTR(PMSI_RUM.C_SERV,1,4) END) = t_unites_medicales.code LEFT JOIN pmsi.t_actes ON PMSI_ACTE.N_ACTE || COALESCE(PMSI_ACTE.CODE_CCAM_DESCR, '') = t_actes.code LEFT JOIN pmsi.t_medecins ON (DOSSIER_CCAM.PRAT_EXEC = t_medecins.code) WHERE PMSI_ACTE.N_UNIQUE_CCAM <> 0 ; ]]> 'F'; ]]>