0 AND t_specialites_internes_medecin.code IS NULL ORDER BY 1; /********************************************************************************** * MEDECINS * **********************************************************************************/ INSERT INTO pmsi.t_medecins (code, nom, prenom, specialite_id, no_adeli, specialite_interne_id) SELECT INTERVENANT.IN_CODE as code ,INTERVENANT.IN_NOM as nom ,INTERVENANT.IN_PRENOM as prenom ,COALESCE(t_specialites_medecin.oid, 0) as specialite_id ,SUBSTR(COALESCE(INTERVENANT.IN_IDNATIONAL,''),1,9) as no_adeli ,COALESCE(t_specialites_internes_medecin.oid, 0) as specialite_interne_id FROM prod_cerner.INTERVENANT LEFT JOIN pmsi.t_specialites_medecin ON t_specialites_medecin.code = IN_SPCODE LEFT JOIN pmsi.t_specialites_internes_medecin ON (t_specialites_internes_medecin.code = IN_SPCODE || '..') LEFT JOIN pmsi.t_medecins ON IN_CODE = t_medecins.code WHERE t_medecins.code IS NULL; /********************************************************************************** * UNITES MEDICALES * **********************************************************************************/ INSERT INTO pmsi.t_unites_medicales (code, texte) SELECT UF_CODE ,UF_LIB FROM prod_cerner.UF LEFT JOIN pmsi.t_unites_medicales ON t_unites_medicales.code = UF.UF_CODE WHERE t_unites_medicales.code IS NULL ORDER BY 1; /********************************************************************************** * UNITES FONCTIONNELLES * **********************************************************************************/ INSERT INTO pmsi.t_unites_fonctionnelles (code, texte) SELECT UF_CODE ,UF_LIB FROM prod_cerner.UF LEFT JOIN pmsi.t_unites_fonctionnelles ON t_unites_fonctionnelles.code = UF.UF_CODE WHERE t_unites_fonctionnelles.code IS NULL ORDER BY 1; ]]> '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 JOIN pmsi.t_actes_c ON p_rss_actes.acte_id = t_actes_c.oid GROUP BY 1,2 ORDER BY 1,2; 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 WHERE 1=1 AND p_rss.ghm_id = 0 AND subview.rss_id = p_rss.oid AND p_rss.medecin_rss_id IS DISTINCT FROM subview.medecin_id; DROP TABLE IF EXISTS w_max_icr; DROP TABLE IF EXISTS w_SERVEUR_CDAM; -- Si pas d'acte, on prend le médecin exécutant de la consult -- Le code de prestation dans la table SERVEUR_NGAP doit être "traduit" à l'aide de la table CODE_TARIF -- Car il n'est pas toujours conforme à ce qu'il y a dans les RSF-ACE with w_SERVEUR_NGAP AS ( SELECT SNGAP_HONUM, SNGAP_DATE, COALESCE( MAX(CASE WHEN CT_LET = 'CS' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'CSC' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'C' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'CNPSY' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'C2PSY' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'CNP' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'ATM' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'FTN' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'AMC' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'AMI' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'TB' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'B' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END), MAX(CASE WHEN CT_LET = 'G' THEN array[to_char(SNGAP_MAJ, 'YYYYMMDD'), SNGAP_INXCODE::text] ELSE NULL END) ) as SNGAP_INXCODE FROM prod_cerner.SERVEUR_NGAP LEFT JOIN prod_cerner.CODE_TARIF ON CODE_TARIF.CT_CODE = SERVEUR_NGAP.SNGAP_CTCODE WHERE 1=1 AND CODE_TARIF.CT_LET IN ('C', 'CS', 'CNP', 'CNPSY', 'C2PSY', 'CSC', 'AMC', 'ATM', 'AMI', 'FTN', 'TB', 'B', 'G') GROUP BY 1,2 ) UPDATE [SCHEMA].p_rss SET medecin_rss_id = t_medecins.oid FROM w_SERVEUR_NGAP, [SCHEMA].p_rsf_detail, pmsi.t_medecins WHERE 1=1 AND p_rss.no_sejour_administratif = w_SERVEUR_NGAP.SNGAP_HONUM AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.date_debut = w_SERVEUR_NGAP.SNGAP_DATE AND t_medecins.code = w_SERVEUR_NGAP.SNGAP_INXCODE[2] AND ghm_id = 0 AND medecin_rss_id = 0; -- Si non, on prend le médecin responsable du passage with w_PASSAGE AS ( SELECT p_rss.oid as rss_id ,MAX(PASSAGE.SEA_INCODE) as med_code FROM [SCHEMA].p_rss JOIN prod_cerner.HOSPITALISATION ON HOSPITALISATION.HO_NUM = p_rss.no_sejour_administratif JOIN prod_cerner.PASSAGE ON PASSAGE.SEA_HONUM = HOSPITALISATION.HO_NUM WHERE 1=1 AND p_rss.import_id = [IMPORT_ID] AND p_rss.ghm_id = 0 AND p_rss.medecin_rss_id = 0 AND p_rss.date_entree = PASSAGE.SEA_DATE GROUP BY p_rss.oid ) UPDATE [SCHEMA].p_rss SET medecin_rss_id = t_medecins.oid FROM w_PASSAGE JOIN pmsi.t_medecins ON t_medecins.code = w_PASSAGE.med_code WHERE p_rss.oid = w_PASSAGE.rss_id ; ]]> = '[ANNEE]0101' AND p_rss.no_sejour_administratif IS NULL; ]]>