1
OR p_rss.no_rum_principal <> p_rss_rum.no_rum
OR p_rss.diagnostic_principal_id <> p_rss_rum.diagnostic_principal_id
OR p_rss.diagnostic_relie_id <> p_rss_rum.diagnostic_relie_id
);
]]>
'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 <> 'ADE' 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' 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]
))[2]::bigint AS medecin_id
FROM
[SCHEMA].p_rss_actes
JOIN [SCHEMA].p_rss ON p_rss.oid = p_rss_actes.rss_id
JOIN pmsi.t_actes_c ON p_rss_actes.acte_id = t_actes_c.oid
WHERE
p_rss.import_id = [IMPORT_ID]
GROUP BY 1;
UPDATE [SCHEMA].p_rss
SET medecin_rss_id = w_rss_actes.medecin_id
FROM w_rss_actes
WHERE w_rss_actes.rss_id = p_rss.oid AND
p_rss.medecin_rss_id <> w_rss_actes.medecin_id AND
w_rss_actes.medecin_id <> 0;
-- Pour les séjours sans actes et sans médecin responsable renseigné
-- on va regarder dans la liste des documents du dossier médical
-- Le médecin qui a signé le courrier médical peut être le médecin responsable du séjour
UPDATE [SCHEMA].p_rss
SET
medecin_rss_id = t_medecins.oid
FROM
prod_orbis.FALL
JOIN prod_orbis.CW_VERWEIS ON CW_VERWEIS.FALL = FALL.FALLID
JOIN prod_orbis.CW_PRIMITIVUM ON CW_PRIMITIVUM.PRIMITIVUMNUMMER = CW_VERWEIS.SOHNREFERENZ
AND CW_PRIMITIVUM.ERZEUGERKLASSE = CW_VERWEIS.VATERKLASSE
JOIN prod_orbis.CW_PRIMITIVUMINFO ON CW_PRIMITIVUMINFO.PRIMITIVUMNUMMER = CW_VERWEIS.SOHNREFERENZ
JOIN prod_orbis.MITARBEITER on MITARBEITER.MAID = CW_PRIMITIVUM.MEDUSER
JOIN pmsi.t_medecins ON t_medecins.code = MITARBEITER.MA_KURZ
WHERE 1=1
AND FALL.FALLNR = p_rss.no_sejour_administratif
AND p_rss.import_id = [IMPORT_ID]
AND p_rss.medecin_rss_id = 0
AND CW_PRIMITIVUMINFO.STATUSSTRING ILIKE 'sign%' AND CW_PRIMITIVUMINFO.DOKNAMESTRING ILIKE 'courrier m%';
]]>
350 THEN ORGAEBENE.OEBENENAME ELSE NULL END)
) AS OEBENENAME
FROM prod_orbis.ORGAEBENE
JOIN pmsi.t_unites_medicales ON ORGAEBENE.OEBENEKURZ = t_unites_medicales.code
GROUP BY ORGAEBENE.OEBENEKURZ
ORDER BY 1
) subview
WHERE t_unites_medicales.code = subview.OEBENEKURZ AND
t_unites_medicales.texte IS DISTINCT FROM subview.OEBENENAME;
]]>
1;
DROP TABLE IF EXISTS w_FALL;
CREATE TEMP TABLE w_FALL AS
SELECT
w_finess.code as finess
,nextval('pmsi.s_rss'::regclass) as rss_id
,FALL.FALLID
,FALL.FALLNR
,FALL.AUFNDAT
,FALL.ENTLDAT
,FALL.PERSNR
,NATPERSON.NAME AS NAME
,NATPERSON.GEBURTSNAME AS GEBURTSNAME
,NATPERSON.VORNAME AS VORNAME
FROM
w_finess,
prod_orbis.FALL
JOIN prod_orbis.NATPERSON ON FALL.PERSNR = NATPERSON.PERSNR
LEFT JOIN pmsi.p_rss ON FALL.FALLNR = p_rss.no_sejour_administratif
WHERE 1=1
AND p_rss.oid IS NULL
AND FALL.ENTLDAT BETWEEN '[ANNEE]0101' AND now();
DROP TABLE IF EXISTS w_rss;
CREATE TEMP TABLE w_rss AS
SELECT
w_FALL.finess
,w_FALL.FALLID
,0 - w_FALL.FALLID AS no_rss
,w_FALL.FALLNR
,w_FALL.rss_id
,'19811101'::date AS BIRTHDAY
,''::text AS SEX
,w_FALL.AUFNDAT
,w_FALL.ENTLDAT
,''::text AS ADMISSIONTYPE
,''::text AS ORIGIN
,''::text AS DISCHARGETYPE
,''::text AS DESTINATION
,''::text AS ZIPCODE
,0::integer AS BIRTHWEIGHT
,0::integer AS IGS2
,0::integer as NB_RSA
,0::integer AS NB_RUM
,0::integer as NB_SEANCES
,0::integer as GESTANR
,w_FALL.NAME
,w_FALL.GEBURTSNAME
,w_FALL.VORNAME
,''::text AS DRGGHM
,0 AS IS_GROUPED
,'20991231'::date AS VALIDATION_LASTDATE
,0::integer AS DRGGHS
,DATE(w_FALL.ENTLDAT) - DATE(w_FALL.AUFNDAT) AS DURSEJ
,0 as AGE
,'0'::text as IS_FACTURED
FROM
w_FALL;
DROP TABLE IF EXISTS w_DRGMCO;
CREATE TEMP TABLE w_DRGMCO AS
SELECT
w_FALL.FALLID
,MAX(date(FALL_DRGMCO.BIRTHDAY)) as BIRTHDAY
,MAX(COALESCE(FALL_DRGMCO.SEX,'1')) as SEX
,MAX(FALL_DRGMCO.ZIPCODE) as ZIPCODE
,MAX(FALL_DRGMCO.BIRTHWEIGHT) as BIRTHWEIGHT
,MAX(base.cti_to_number(FALL_DRGMCO.IGS2)) as IGS2
,MAX(GREATEST(1,FALL_DRGMCO.STAYNR)) as STAYNR
,COUNT(FALL_DRGMCO.FALL_DRGMCOID) as FALL_DRGMCOID
,MAX(FALL_DRGMCO.STAYNR) as NB_SEANCES
,MAX(FALL_DRGMCO.GESTANR) as GESTANR
,MAX(FALL_DRGRESULT.DRGCMD || FALL_DRGRESULT.DRGNUMBER) as DRGGHM
,max(FALL_DRGMCO.IS_GROUPED) as IS_GROUPED
,max(date(FALL_DRGMCO.VALIDATION_LASTDATE)) as VALIDATION_LASTDATE
,base.cti_to_number(MAX(EXTERNALSERVICE.TW_LSTNR)) as DRGGHS
,MIN(CATALOGTEXT.SHORTTEXT) as IS_FACTURED
FROM
w_FALL
JOIN prod_orbis.FALL_DRGMCO ON FALL_DRGMCO.FALLID = w_FALL.FALLID
JOIN prod_orbis.FALL_DRGRESULT ON FALL_DRGMCO.FALL_DRGMCOID = FALL_DRGRESULT.FALL_DRGMCOID
LEFT JOIN prod_orbis.EXTERNALSERVICE ON EXTERNALSERVICE.EXTERNALSERVICEID = FALL_DRGRESULT.GHSID
LEFT JOIN prod_orbis.CATALOGTEXT ON CATALOGTEXT.DBUID = FALL_DRGMCO.RUM_BILL_STATUS
WHERE 1=1
AND FALL_DRGRESULT.GRPCASEFLAG = 2
AND FALL_DRGMCO.VISIBILITY = 0
GROUP BY w_FALL.FALLID;
DELETE FROM w_rss
WHERE
FALLID != ALL(ARRAY(SELECT FALLID FROM w_DRGMCO)::bigint[]);
UPDATE w_rss SET
BIRTHDAY = w_DRGMCO.BIRTHDAY
,SEX = w_DRGMCO.SEX
,ZIPCODE = w_DRGMCO.ZIPCODE
,BIRTHWEIGHT = w_DRGMCO.BIRTHWEIGHT
,IGS2 = w_DRGMCO.IGS2
,NB_RSA = w_DRGMCO.STAYNR
,NB_RUM = w_DRGMCO.FALL_DRGMCOID
,NB_SEANCES = w_DRGMCO.STAYNR
,GESTANR = w_DRGMCO.GESTANR
,DRGGHM = w_DRGMCO.DRGGHM
,IS_GROUPED = w_DRGMCO.IS_GROUPED
,VALIDATION_LASTDATE = w_DRGMCO.VALIDATION_LASTDATE
,DRGGHS = w_DRGMCO.DRGGHS
,IS_FACTURED = w_DRGMCO.IS_FACTURED
FROM
w_DRGMCO
WHERE w_rss.FALLID = w_DRGMCO.FALLID;
-- Tout ce qui est codé en erreur obtient le GHM CTI 99Z99Z
UPDATE w_rss
SET DRGGHM = '99Z99Z'
WHERE 1!=1
OR DRGGHM LIKE '90%'
OR length(DRGGHM) <> 6
OR DRGGHM IS NULL;
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_rss.finess AS finess
,w_rss.rss_id AS oid
,w_rss.no_rss
,0 AS no_patient
,'11' AS version_groupage
,w_rss.BIRTHDAY AS date_naissance
,w_rss.SEX
,w_rss.AUFNDAT AS date_entree
,w_rss.ENTLDAT AS date_sortie
,w_rss.ADMISSIONTYPE AS mode_entree
,w_rss.ORIGIN AS provenance
,w_rss.DISCHARGETYPE AS mode_sortie
,w_rss.DESTINATION AS destination
,w_rss.ZIPCODE AS code_postal
,w_rss.BIRTHWEIGHT AS poids_bebe
,w_rss.IGS2 AS igs2
,'' AS cma
,substr(w_rss.DRGGHM , 3 , 1) AS groupe_ghm
,w_rss.DURSEJ AS duree_sejour
,w_rss.NB_RSA AS nb_rsa
,w_rss.AGE AS age
,'' AS supprime
,now() AS date_import
,w_rss.NB_RUM AS nb_rum
,'' AS secteur
,w_rss.FALLNR AS no_sejour_administratif
,w_rss.NB_SEANCES AS nb_seances
,'' AS ghm_fg9
,COALESCE(t_ghm.oid, 0) AS ghm_id
,0 AS medecin_rss_id
,COALESCE(t_ghs.oid, 0) AS ghs_id
,(extract(year from w_rss.ENTLDAT) * 100 + extract(month from w_rss.ENTLDAT))::integer AS mois_sortie
,0 AS diagnostic_principal_id
,0 AS diagnostic_relie_id
,COALESCE(t_ghm.oid, 0) AS ghm_production_id
,1 AS no_rum_principal
,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 w_rss.IS_GROUPED = 1 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
,'00' AS traitement_epmsi
,'' AS code_retour_groupage
,0 AS comite_medical_id
,'0' AS rehosp_meme_ghm
,0 AS from_oid
FROM w_rss
LEFT JOIN base.t_codes_postaux ON t_codes_postaux.code = w_rss.ZIPCODE
LEFT JOIN pmsi.t_ghm ON t_ghm.code = w_rss.DRGGHM
LEFT JOIN pmsi.t_ghs ON t_ghs.code = w_rss.DRGGHS;
]]>
1 AND
p_rss_rum.rss_id = w_rss_rum.rss_id AND p_rss_rum.no_rum = w_rss_rum.no_dernier_rum;
]]>