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