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