0 AND
(code || '..') NOT IN (SELECT code FROM pmsi.t_specialites_internes_medecin);
-- Médecins
INSERT INTO pmsi.t_medecins(code, nom, prenom, specialite_id, no_adeli, specialite_interne_id)
SELECT MD_IDAN, MD_NOM, MD_PRN,
COALESCE(t_specialites_medecin.oid,0),
MD_NOOR,
COALESCE(t_specialites_internes_medecin.oid,0)
FROM prod_mipih_noyau.CV_MD
LEFT JOIN pmsi.t_specialites_medecin ON MD_QLCD_ELT_COD = t_specialites_medecin.code
LEFT JOIN pmsi.t_specialites_internes_medecin ON (MD_QLCD_ELT_COD || '..') = t_specialites_internes_medecin.code
WHERE MD_IDAN IN (SELECT ACT_CDMED FROM prod_mipih_noyau.DA_ACT) AND
MD_IDAN NOT IN (SELECT code FROM pmsi.t_medecins);
UPDATE pmsi.t_medecins SET
nom = MD_NOM,
prenom = MD_PRN,
specialite_id = COALESCE(t_specialites_medecin.oid,0)
FROM prod_mipih_noyau.CV_MD
LEFT JOIN pmsi.t_specialites_medecin ON MD_QLCD_ELT_COD = t_specialites_medecin.code
WHERE t_medecins.code = MD_IDAN AND
(
nom <> MD_NOM OR
prenom <> MD_PRN OR
specialite_id <> COALESCE(t_specialites_medecin.oid,0)
);
-- Unités médicales
DROP TABLE IF EXISTS w_CV_UF;
CREATE TEMP TABLE w_CV_UF AS
SELECT UF_CODE,
(MAX(ARRAY[UF_DATDEB::text, UF_LIBEL]))[2] AS UF_LIBEL,
CASE WHEN UF_CODE IN (SELECT DOS_DERUFM FROM prod_mipih_noyau.DA_DOSADM JOIN [SCHEMA].p_rss ON no_sejour_administratif = DOS_IEP) THEN '1' ELSE '0' END AS UF_USED
FROM prod_mipih_noyau.CV_UF
GROUP BY 1
ORDER BY 1;
UPDATE pmsi.t_unites_medicales
SET texte = UF_LIBEL
FROM w_CV_UF
WHERE UF_CODE = t_unites_medicales.code AND
texte <> UF_LIBEL;
INSERT INTO pmsi.t_unites_medicales (code, texte)
SELECT
UF_CODE,
UF_LIBEL
FROM w_CV_UF
WHERE UF_USED = '1' AND
UF_CODE NOT IN (SELECT code FROM pmsi.t_unites_medicales WHERE code IS NOT NULL)
;
]]>
base.cti_to_number(DA_DOSADM.PAT_IPP)
);
-- nom
UPDATE [SCHEMA].p_identites SET
nom = CASE WHEN ETC_NOM_MAR <> '' THEN ETC_NOM_MAR ELSE ETC_NOM END,
nom_naissance = CASE WHEN ETC_NOM_MAR <> '' THEN ETC_NOM ELSE '' END,
prenom = ETC_PRN
FROM [SCHEMA].p_rss
JOIN prod_mipih_noyau.DA_DOSADM ON no_sejour_administratif = DOS_IEP
JOIN prod_mipih_noyau.PA_PAT ON DA_DOSADM.PAT_IPP = PA_PAT.PAT_IPP
WHERE p_identites.rss_id = p_rss.oid AND
date_naissance = date(ETC_DDN) AND
(
nom IS DISTINCT FROM CASE WHEN ETC_NOM_MAR <> '' THEN ETC_NOM_MAR ELSE ETC_NOM END OR
nom_naissance IS DISTINCT FROM CASE WHEN ETC_NOM_MAR <> '' THEN ETC_NOM ELSE '' END OR
prenom IS DISTINCT FROM ETC_PRN
);
UPDATE [SCHEMA].p_identites SET
nom = CASE WHEN ETC_NOM_MAR <> '' THEN ETC_NOM_MAR ELSE ETC_NOM END,
nom_naissance = CASE WHEN ETC_NOM_MAR <> '' THEN ETC_NOM ELSE '' END,
prenom = ETC_PRN
FROM [SCHEMA].p_rss
JOIN prod_mipih_noyau.DA_DOSADM ON no_sejour_administratif = DOS_IEP
JOIN prod_mipih_noyau.PA_PAT ON DA_DOSADM.PAT_IPP = PA_PAT.PAT_IPP
WHERE p_identites.rss_id = p_rss.oid AND
date_part('year',date_naissance) = date_part('year',ETC_DDN) AND
nom LIKE 'RSS %' AND
(
nom IS DISTINCT FROM CASE WHEN ETC_NOM_MAR <> '' THEN ETC_NOM_MAR ELSE ETC_NOM END OR
nom_naissance IS DISTINCT FROM CASE WHEN ETC_NOM_MAR <> '' THEN ETC_NOM ELSE '' END OR
prenom IS DISTINCT FROM ETC_PRN
);
-- Médecin d'après les actes
UPDATE [SCHEMA].p_rss
SET medecin_rss_id = subview.medecin_rss_id
FROM
(
SELECT p_rss.oid, MAX(t_medecins.oid) AS medecin_rss_id
FROM [SCHEMA].p_rss
JOIN prod_mipih_noyau.DA_DOSADM ON no_sejour_administratif = DA_DOSADM.DOS_IEP
JOIN prod_mipih_noyau.PA_PAT ON DA_DOSADM.PAT_IPP = PA_PAT.PAT_IPP
JOIN prod_mipih_noyau.DA_ACT ON DA_DOSADM.DOS_IEP = DA_ACT.DOS_IEP
JOIN prod_mipih_noyau.CV_MED_UF ON DA_DOSADM.DOS_DERUFM = MED_UF_CD_UF AND
DA_ACT.ACT_CDMED = MED_UF_CD_MED
JOIN pmsi.t_medecins ON ACT_CDMED = t_medecins.code
WHERE act_iacnom IN ('TLETCLE', 'CCAM') AND
ACT_CDACTE NOT IN ('AMI', 'B') AND
ACT_CODACTI <> '4' AND
ACT_LC <> 'ADI' AND
ACT_CDACTE NOT IN ('DEQP003')
GROUP BY 1
HAVING count(DISTINCT ACT_CDMED) = 1
) subview
WHERE p_rss.oid = subview.oid AND p_rss.medecin_rss_id = 0;
UPDATE [SCHEMA].p_rss
SET medecin_rss_id = subview.medecin_rss_id
FROM
(
SELECT p_rss.oid, MAX(t_medecins.oid) AS medecin_rss_id
FROM [SCHEMA].p_rss
JOIN prod_mipih_noyau.DA_DOSADM ON no_sejour_administratif = DA_DOSADM.DOS_IEP
JOIN prod_mipih_noyau.PA_PAT ON DA_DOSADM.PAT_IPP = PA_PAT.PAT_IPP
JOIN prod_mipih_noyau.DA_ACT ON DA_DOSADM.DOS_IEP = DA_ACT.DOS_IEP
JOIN pmsi.t_medecins ON ACT_CDMED = t_medecins.code
WHERE act_iacnom IN ('TLETCLE', 'CCAM') AND
ACT_CDACTE NOT IN ('AMI', 'B') AND
ACT_CODACTI <> '4' AND
ACT_LC <> 'ADI' AND
ACT_CDACTE NOT IN ('DEQP003')
GROUP BY 1
HAVING count(DISTINCT ACT_CDMED) = 1
) subview
WHERE p_rss.oid = subview.oid AND p_rss.medecin_rss_id = 0;
]]>
t_medecins.oid
GROUP BY 1,2,3,4,5
) subview
WHERE
p_rss_actes.rss_id = subview.rss_id AND
p_rss_actes.date_acte = subview.date_acte AND
p_rss_actes.acte_id = subview.acte_id AND
p_rss_actes.activite_ccam = subview.activite_ccam;
UPDATE [SCHEMA].p_rss_actes
SET medecin_id = subview.medecin_id
FROM (
SELECT p_rss_actes.no_rss, p_rss_actes.rss_id, p_rss_actes.date_acte, p_rss_actes.acte_id, p_rss_actes.activite_ccam, MAX(t_medecins.oid) AS medecin_id
FROM [SCHEMA].p_rss
JOIN prod_mipih_noyau.DA_DOSADM ON no_sejour_administratif = DA_DOSADM.DOS_IEP
JOIN prod_mipih_noyau.PA_PAT ON DA_DOSADM.PAT_IPP = PA_PAT.PAT_IPP
JOIN [SCHEMA].p_rss_actes ON p_rss_actes.rss_id = p_rss.oid
JOIN pmsi.t_actes ON acte_id = t_actes.oid
JOIN prod_mipih_noyau.DA_ACT ON DA_DOSADM.DOS_IEP = DA_ACT.DOS_IEP AND
date_acte = date(ACT_DTREAL) AND
t_actes.code = substring(ACT_CDACTE, 1, 7) AND
activite_ccam = ACT_CODACTI
JOIN pmsi.t_medecins ON ACT_CDMED = t_medecins.code
WHERE date_part('year',date_naissance) = date_part('year',ETC_DDN) AND
p_rss_actes.medecin_id = 0
GROUP BY 1,2,3,4,5
) subview
WHERE
p_rss_actes.rss_id = subview.rss_id AND
p_rss_actes.date_acte = subview.date_acte AND
p_rss_actes.acte_id = subview.acte_id AND
p_rss_actes.activite_ccam = subview.activite_ccam;
]]>