|
|
return: text
|
|
|
lang: plpgsql
|
|
|
parameters:
|
|
|
p0:
|
|
|
type: bigint
|
|
|
name: i_enquete_id
|
|
|
default: "0"
|
|
|
src: |
|
|
|
DECLARE
|
|
|
result TEXT;
|
|
|
BEGIN
|
|
|
|
|
|
DROP TABLE IF EXISTS w_fiche5_enquete;
|
|
|
CREATE TEMP TABLE w_fiche5_enquete AS
|
|
|
SELECT *
|
|
|
FROM pmsi.t_fiche5_enquete
|
|
|
WHERE i_enquete_id = 0 OR
|
|
|
oid = i_enquete_id
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
UPDATE w_fiche5_enquete
|
|
|
SET data = replace(data,E'\t','|')
|
|
|
;
|
|
|
UPDATE w_fiche5_enquete
|
|
|
SET data = replace(data,E'\r'||E'\n','[[')
|
|
|
;
|
|
|
UPDATE w_fiche5_enquete
|
|
|
SET data = replace(data,E'\n'||E'\r','[[')
|
|
|
;
|
|
|
UPDATE w_fiche5_enquete
|
|
|
SET data = replace(data,E'\n','[[')
|
|
|
;
|
|
|
UPDATE w_fiche5_enquete
|
|
|
SET data = replace(data,E'\r','[[')
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS w_fiche5_rss;
|
|
|
CREATE TEMP TABLE w_fiche5_rss AS
|
|
|
SELECT enquete_id,
|
|
|
base.cti_to_number(COALESCE(import_cellule_array[1],'0')) AS no_ogc,
|
|
|
CASE WHEN import_cellule_array[3] IS NOT NULL AND import_cellule_array[4] IS NOT NULL AND import_cellule_array[5] IS NOT NULL THEN
|
|
|
base.cti_to_number(COALESCE(substr(import_cellule_array[10],28,20),'0'))
|
|
|
ELSE
|
|
|
base.cti_to_number(COALESCE(import_cellule_array[2],'0'))
|
|
|
END
|
|
|
AS no_rss,
|
|
|
import_cellule_array[4] AS champ_code,
|
|
|
import_cellule_array[5] AS champ_texte,
|
|
|
0::bigint AS champ_id,
|
|
|
substr(import_cellule_array[10],28,20),
|
|
|
0::bigint AS fiche5_rss_id
|
|
|
FROM
|
|
|
(
|
|
|
SELECT enquete_id, import_ligne, string_to_array(import_ligne,'|') AS import_cellule_array
|
|
|
FROM
|
|
|
(
|
|
|
SELECT enquete_id, unnest(data_array) AS import_ligne
|
|
|
FROM
|
|
|
(
|
|
|
SELECT
|
|
|
oid AS enquete_id, string_to_array(data,'[[') AS data_array
|
|
|
FROM w_fiche5_enquete
|
|
|
|
|
|
) subview
|
|
|
) subview
|
|
|
) subview
|
|
|
;
|
|
|
|
|
|
|
|
|
UPDATE w_fiche5_rss
|
|
|
SET fiche5_rss_id = p_fiche5_rss.oid
|
|
|
FROM pmsi.p_fiche5_rss
|
|
|
WHERE p_fiche5_rss.enquete_id = w_fiche5_rss.enquete_id AND
|
|
|
p_fiche5_rss.no_ogc = w_fiche5_rss.no_ogc
|
|
|
;
|
|
|
|
|
|
DELETE FROM pmsi.p_fiche5_rss
|
|
|
WHERE enquete_id IN (SELECT enquete_id FROM w_fiche5_rss) AND
|
|
|
oid NOT IN (SELECT fiche5_rss_id FROM w_fiche5_rss)
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss
|
|
|
SET no_rss = w_fiche5_rss.no_rss
|
|
|
FROM w_fiche5_rss
|
|
|
WHERE w_fiche5_rss.fiche5_rss_id = p_fiche5_rss.oid AND
|
|
|
p_fiche5_rss.no_rss IS DISTINCT FROM w_fiche5_rss.no_rss
|
|
|
;
|
|
|
|
|
|
|
|
|
INSERT INTO pmsi.t_fiche5_champ(code, enquete_id, texte)
|
|
|
SELECT champ_code, enquete_id, MAX(replace(champ_texte,'?','é')) AS champ_texte
|
|
|
FROM w_fiche5_rss
|
|
|
WHERE champ_code IS NOT NULL AND
|
|
|
(enquete_id::text||'|'||champ_code) NOT IN (SELECT (enquete_id::text||'|'||code) FROM pmsi.t_fiche5_champ)
|
|
|
GROUP BY 1,2
|
|
|
;
|
|
|
|
|
|
UPDATE w_fiche5_rss
|
|
|
SET champ_id = t_fiche5_champ.oid
|
|
|
FROM pmsi.t_fiche5_champ
|
|
|
WHERE w_fiche5_rss.enquete_id = t_fiche5_champ.enquete_id AND
|
|
|
w_fiche5_rss.champ_code = t_fiche5_champ.code
|
|
|
;
|
|
|
|
|
|
INSERT INTO pmsi.p_fiche5_rss (enquete_id, no_ogc, no_rss, champ_id)
|
|
|
SELECT w_fiche5_rss.enquete_id, w_fiche5_rss.no_ogc, w_fiche5_rss.no_rss, MAX(w_fiche5_rss.champ_id)
|
|
|
FROM w_fiche5_rss
|
|
|
WHERE no_ogc <> 0 AND no_rss <> 0 AND fiche5_rss_id = 0
|
|
|
GROUP BY 1,2,3
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss
|
|
|
SET champ_id = w_fiche5_rss.champ_id
|
|
|
FROM w_fiche5_rss
|
|
|
WHERE fiche5_rss_id = p_fiche5_rss.oid
|
|
|
;
|
|
|
|
|
|
ANALYSE w_fiche5_rss
|
|
|
;
|
|
|
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
rss_id = p_rss.oid,
|
|
|
no_sejour_administratif = trim(p_rss.no_sejour_administratif),
|
|
|
no_patient = CASE WHEN p_patients.no_patient > 0 THEN p_patients.no_patient ELSE 0 END,
|
|
|
date_naissance = p_rss.date_naissance,
|
|
|
date_entree = p_rss.date_entree,
|
|
|
date_sortie = p_rss.date_sortie,
|
|
|
mode_sortie = p_rss.mode_sortie,
|
|
|
duree_sejour = p_rss.duree_sejour,
|
|
|
facture_dp_id = p_rss.diagnostic_principal_id,
|
|
|
facture_dp_code = COALESCE(t_diagnostics.code,''),
|
|
|
facture_ghs_id = p_rss.ghs_id,
|
|
|
facture_ghs_code = COALESCE(to_char(t_ghs.code,'FM0000'),''),
|
|
|
facture_ghm_id = p_rss.ghm_id,
|
|
|
facture_ghm_code = COALESCE(t_ghm.code,'')
|
|
|
FROM pmsi.t_fiche5_enquete
|
|
|
JOIN pmsi.p_rss ON
|
|
|
p_rss.ghm_id > 0 AND
|
|
|
p_rss.en_cours = '0' AND
|
|
|
date_part('year',p_rss.date_sortie) = t_fiche5_enquete.annee
|
|
|
LEFT JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND p_rss.ghm_id > 0
|
|
|
LEFT JOIN pmsi.t_ghs ON p_rss.ghs_id = t_ghs.oid AND p_rss.ghs_id > 0
|
|
|
LEFT JOIN pmsi.t_diagnostics ON p_rss.diagnostic_principal_id = t_diagnostics.oid AND p_rss.diagnostic_principal_id > 0
|
|
|
LEFT JOIN pmsi.p_patients ON p_rss.patient_id = p_patients.oid
|
|
|
WHERE p_fiche5_rss.no_rss = p_rss.no_rss
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
nom = p_identites.nom,
|
|
|
nom_naissance = p_identites.nom_naissance,
|
|
|
prenom = p_identites.prenom
|
|
|
FROM pmsi.p_identites
|
|
|
WHERE p_identites.rss_id = p_fiche5_rss.rss_id
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
matricule_assure = p_rsf_total.matricule_assure,
|
|
|
cle_matricule_assure = p_rsf_total.cle_matricule_assure,
|
|
|
no_facture = p_rsf_total.no_facture,
|
|
|
regime_code = COALESCE(t_grands_regimes.Code,''),
|
|
|
taux_remboursement = p_rsf_total.taux_remboursement
|
|
|
FROM pmsi.p_rsf_total
|
|
|
LEFT JOIN base.t_grands_regimes ON t_grands_regimes.oid = p_rsf_total.regime_id AND p_rsf_total.regime_id <> 0
|
|
|
WHERE p_rsf_total.rss_id = p_fiche5_rss.rss_id
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
taux_remboursement_vidhosp = p_vidhosp.taux_remboursement
|
|
|
FROM pmsi.p_vidhosp
|
|
|
WHERE p_vidhosp.rss_id = p_fiche5_rss.rss_id
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
caisse_gestionnaire_texte = subview.caisse_gestionnaire_texte,
|
|
|
caisse_gestionnaire_code = subview.caisse_gestionnaire_code
|
|
|
FROM
|
|
|
(
|
|
|
SELECT p_fiche5_rss.oid,
|
|
|
(MAX(Array[
|
|
|
CASE WHEN substr(t_tiers_payant.code,1,2) = p_fiche5_rss.regime_code THEN '1' ELSE '0' END || p_factures.date_facture::text,
|
|
|
COALESCE(t_tiers_payant.texte || ' (' || t_tiers_payant.code || ')','')
|
|
|
]))[2] AS caisse_gestionnaire_texte,
|
|
|
(MAX(Array[
|
|
|
CASE WHEN substr(t_tiers_payant.code,1,2) = p_fiche5_rss.regime_code THEN '1' ELSE '0' END || p_factures.date_facture::text,
|
|
|
CASE
|
|
|
WHEN substr(t_tiers_payant.code,1,2) = p_fiche5_rss.regime_code AND
|
|
|
length(t_tiers_payant.code) >= 9 AND
|
|
|
to_char(base.cti_to_number(substr(t_tiers_payant.code,3,3)),'FM000') = substr(t_tiers_payant.code,3,3) AND
|
|
|
to_char(base.cti_to_number(substr(t_tiers_payant.code,6,4)),'FM0000') = substr(t_tiers_payant.code,6,4) THEN
|
|
|
substr(t_tiers_payant.code,3,3)
|
|
|
WHEN substr(t_tiers_payant.code,1,2) = p_fiche5_rss.regime_code AND
|
|
|
length(t_tiers_payant.code) = 8 AND
|
|
|
to_char(base.cti_to_number(substr(t_tiers_payant.code,3,3)),'FM000') = substr(t_tiers_payant.code,3,3) AND
|
|
|
to_char(base.cti_to_number(substr(t_tiers_payant.code,6,3)),'FM000') = substr(t_tiers_payant.code,6,3) THEN
|
|
|
substr(t_tiers_payant.code,3,3)
|
|
|
WHEN substr(t_tiers_payant.code,1,2) = p_fiche5_rss.regime_code AND
|
|
|
length(t_tiers_payant.code) = 5 AND
|
|
|
to_char(base.cti_to_number(substr(t_tiers_payant.code,3,3)),'FM000') = substr(t_tiers_payant.code,3,3) THEN
|
|
|
substr(t_tiers_payant.code,3,3)
|
|
|
ELSE '' END
|
|
|
]))[2] AS caisse_gestionnaire_code
|
|
|
FROM pmsi.p_fiche5_rss
|
|
|
JOIN activite.p_sejour_pmsi ON p_fiche5_rss.rss_id = p_sejour_pmsi.rss_id
|
|
|
JOIN activite.p_sejours ON p_sejour_pmsi.no_sejour = p_sejours.no_sejour
|
|
|
JOIN activite.p_factures ON p_factures.no_sejour = p_sejours.no_sejour
|
|
|
LEFT JOIN activite.t_tiers_payant ON
|
|
|
p_factures.tiers_payant_1_id = t_tiers_payant.oid AND
|
|
|
p_factures.tiers_payant_1_id <> 0 AND
|
|
|
t_tiers_payant.type_tiers_payant_id <> 0
|
|
|
GROUP BY 1
|
|
|
) subview
|
|
|
WHERE p_fiche5_rss.oid = subview.oid AND
|
|
|
(
|
|
|
p_fiche5_rss.caisse_gestionnaire_code IS DISTINCT FROM subview.caisse_gestionnaire_code OR
|
|
|
p_fiche5_rss.caisse_gestionnaire_texte IS DISTINCT FROM subview.caisse_gestionnaire_texte
|
|
|
)
|
|
|
;
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss
|
|
|
SET type_tarif = CASE WHEN type_etablissement NOT IN ('2','3') THEN '2' ELSE '1' END
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code
|
|
|
WHERE p_fiche5_rss.rss_id = p_rss.oid AND
|
|
|
type_tarif IS DISTINCT FROM CASE WHEN type_etablissement NOT IN ('2','3') THEN '2' ELSE '1' END
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
montant_ticket_moderateur = subview.montant_ticket_moderateur,
|
|
|
montant_forfait_journalier = subview.montant_forfait_journalier,
|
|
|
nombre_forfait_journalier = subview.nombre_forfait_journalier,
|
|
|
taux_remboursement = subview.taux_remboursement,
|
|
|
facture_nb_exh = subview.facture_nb_exh,
|
|
|
facture_ghs_tarif = subview.facture_ghs_tarif,
|
|
|
facture_ghs_montant_total = subview.facture_ghs_montant_total,
|
|
|
facture_ghs_montant_amo = subview.facture_ghs_montant_amo,
|
|
|
facture_exb_montant_total = subview.facture_exb_montant_total,
|
|
|
facture_exb_montant_amo = subview.facture_exb_montant_amo,
|
|
|
facture_exh_montant_total = subview.facture_exh_montant_total,
|
|
|
facture_exh_montant_amo = subview.facture_exh_montant_amo,
|
|
|
coefficient_mco = subview.coefficient_mco,
|
|
|
facture_nb_src = subview.facture_nb_src,
|
|
|
facture_src_montant_total = subview.facture_src_montant_total,
|
|
|
facture_src_montant_amo = subview.facture_src_montant_amo,
|
|
|
facture_nb_stf = subview.facture_nb_stf,
|
|
|
facture_stf_montant_total = subview.facture_stf_montant_total,
|
|
|
facture_stf_montant_amo = subview.facture_stf_montant_amo,
|
|
|
facture_nb_rea = subview.facture_nb_rea,
|
|
|
facture_rea_montant_total = subview.facture_rea_montant_total,
|
|
|
facture_rea_montant_amo = subview.facture_rea_montant_amo
|
|
|
FROM
|
|
|
(
|
|
|
SELECT p_fiche5_rss.oid,
|
|
|
MAX(
|
|
|
CASE
|
|
|
WHEN t_prestations.code IN ('GHS') THEN p_rsf_detail.coefficient_mco
|
|
|
WHEN t_prestations.code IN ('I01') THEN 1
|
|
|
ELSE 0 END
|
|
|
) AS coefficient_mco,
|
|
|
MAX(
|
|
|
CASE WHEN t_prestations.code IN ('GHS','I01')
|
|
|
THEN p_rsf_detail.taux_remboursement
|
|
|
ELSE 0 END
|
|
|
) AS taux_remboursement,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code IN ('GHS','I01')
|
|
|
THEN p_rsf_detail.prix_unitaire
|
|
|
ELSE 0 END
|
|
|
) AS facture_ghs_tarif,
|
|
|
SUM(
|
|
|
CASE
|
|
|
WHEN t_prestations.code = 'I01' THEN p_rsf_detail.base_remboursement
|
|
|
WHEN t_prestations.code = 'GHS' AND coefficient >= 0.98 THEN p_rsf_detail.base_remboursement
|
|
|
WHEN t_prestations.code = 'GHS' AND coefficient < 0.98 THEN round(p_rsf_detail.prix_unitaire * p_rsf_detail.coefficient_mco,2)
|
|
|
ELSE 0 END
|
|
|
) AS facture_ghs_montant_total,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code IN ('GHS','I01')
|
|
|
THEN p_rsf_detail.sejour_remboursable ELSE 0 END
|
|
|
) AS facture_ghs_montant_amo,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'GHS' AND coefficient < 0.98
|
|
|
THEN p_rsf_detail.base_remboursement - round(p_rsf_detail.prix_unitaire * p_rsf_detail.coefficient_mco,2) ELSE 0 END
|
|
|
) AS facture_exb_montant_total,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'EXB'
|
|
|
THEN p_rsf_detail.sejour_remboursable ELSE 0 END
|
|
|
) AS facture_exb_montant_amo,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'EXH'
|
|
|
THEN p_rsf_detail.nombre ELSE 0 END
|
|
|
) AS facture_nb_exh,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'EXH'
|
|
|
THEN p_rsf_detail.base_remboursement ELSE 0 END
|
|
|
) AS facture_exh_montant_total,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'EXH'
|
|
|
THEN p_rsf_detail.sejour_remboursable ELSE 0 END
|
|
|
) AS facture_exh_montant_amo,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code IN ('GHS', 'EXH', 'I01') AND p_rsf_detail.taux_remboursement < 100
|
|
|
THEN p_rsf_detail.base_remboursement - p_rsf_detail.sejour_remboursable
|
|
|
ELSE 0 END
|
|
|
) AS montant_ticket_moderateur,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code IN ('GHS', 'EXH', 'I01') AND p_rsf_detail.taux_remboursement = 100 OR t_prestations.code LIKE 'FJ%'
|
|
|
THEN p_rsf_detail.base_remboursement - p_rsf_detail.sejour_remboursable ELSE 0 END
|
|
|
) AS montant_forfait_journalier,
|
|
|
round(
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code IN ('GHS', 'EXH', 'I01') AND p_rsf_detail.taux_remboursement = 100 OR t_prestations.code LIKE 'FJ%'
|
|
|
THEN p_rsf_detail.base_remboursement - p_rsf_detail.sejour_remboursable ELSE 0 END
|
|
|
) /
|
|
|
MAX(CASE WHEN p_rsf_detail.date_fin >= '20180101' THEN 20 ELSE 18 END)
|
|
|
,0) AS nombre_forfait_journalier,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'SRC'
|
|
|
THEN p_rsf_detail.nombre ELSE 0 END
|
|
|
) AS facture_nb_src,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'SRC'
|
|
|
THEN p_rsf_detail.base_remboursement ELSE 0 END
|
|
|
) AS facture_src_montant_total,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'SRC'
|
|
|
THEN p_rsf_detail.sejour_remboursable ELSE 0 END
|
|
|
) AS facture_src_montant_amo,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'STF'
|
|
|
THEN p_rsf_detail.nombre ELSE 0 END
|
|
|
) AS facture_nb_stf,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'STF'
|
|
|
THEN p_rsf_detail.base_remboursement ELSE 0 END
|
|
|
) AS facture_stf_montant_total,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'STF'
|
|
|
THEN p_rsf_detail.sejour_remboursable ELSE 0 END
|
|
|
) AS facture_stf_montant_amo,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'REA'
|
|
|
THEN p_rsf_detail.nombre ELSE 0 END
|
|
|
) AS facture_nb_rea,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'REA'
|
|
|
THEN p_rsf_detail.base_remboursement ELSE 0 END
|
|
|
) AS facture_rea_montant_total,
|
|
|
SUM(
|
|
|
CASE WHEN t_prestations.code = 'REA'
|
|
|
THEN p_rsf_detail.sejour_remboursable ELSE 0 END
|
|
|
) AS facture_rea_montant_amo
|
|
|
FROM pmsi.p_rsf_detail
|
|
|
JOIN pmsi.p_rss ON p_rsf_detail.rss_id = p_rss.oid
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id
|
|
|
JOIN pmsi.p_fiche5_rss ON p_fiche5_rss.rss_id = p_rsf_detail.rss_id
|
|
|
JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code = ANY (Array['GHS','EXH','I01','FJA', 'FJR', 'SRC', 'STF', 'REA'])
|
|
|
WHERE p_rsf_detail.est_ligne_rss = '1' AND
|
|
|
(
|
|
|
t_prestations.code <> 'GHS' OR
|
|
|
t_ghm.code NOT LIKE '14%' OR
|
|
|
p_rsf_detail.ghs_id = p_rss.ghs_id
|
|
|
)
|
|
|
GROUP BY 1
|
|
|
) subview
|
|
|
WHERE p_fiche5_rss.oid = subview.oid
|
|
|
;
|
|
|
|
|
|
|
|
|
-- initialisaion codes dans scénarios
|
|
|
UPDATE pmsi.p_fiche5_rss SET
|
|
|
initial_ghm_code = CASE WHEN initial_ghm_code = '' THEN facture_ghm_code ELSE initial_ghm_code END,
|
|
|
initial_ghm_id = CASE WHEN initial_ghm_code = '' THEN facture_ghm_id ELSE initial_ghm_id END,
|
|
|
initial_ghs_code = CASE WHEN initial_ghs_code = '' THEN facture_ghs_code ELSE initial_ghs_code END,
|
|
|
initial_ghs_id = CASE WHEN initial_ghs_code = '' THEN facture_ghs_id ELSE initial_ghs_id END,
|
|
|
initial_dp_code = CASE WHEN initial_dp_code = '' THEN facture_dp_code ELSE initial_dp_code END,
|
|
|
initial_dp_id = CASE WHEN initial_dp_code = '' THEN facture_dp_id ELSE initial_dp_id END,
|
|
|
scenar1_ghm_code = CASE WHEN scenar1_ghm_code = '' THEN facture_ghm_code ELSE scenar1_ghm_code END,
|
|
|
scenar1_ghm_id = CASE WHEN scenar1_ghm_code = '' THEN facture_ghm_id ELSE scenar1_ghm_id END,
|
|
|
scenar1_ghs_code = CASE WHEN scenar1_ghs_code = '' THEN facture_ghs_code ELSE scenar1_ghs_code END,
|
|
|
scenar1_ghs_id = CASE WHEN scenar1_ghs_code = '' THEN facture_ghs_id ELSE scenar1_ghs_id END,
|
|
|
scenar1_dp_code = CASE WHEN scenar1_dp_code = '' THEN facture_dp_code ELSE scenar1_dp_code END,
|
|
|
scenar1_dp_id = CASE WHEN scenar1_dp_code = '' THEN facture_dp_id ELSE scenar1_dp_id END,
|
|
|
scenar1_rum_um_code = CASE WHEN scenar1_rum_um_code IS NULL THEN initial_rum_um_code ELSE scenar1_rum_um_code END,
|
|
|
scenar1_rum_dp_code = CASE WHEN scenar1_rum_dp_code IS NULL THEN initial_rum_dp_code ELSE scenar1_rum_dp_code END,
|
|
|
scenar1_rum_dr_code = CASE WHEN scenar1_rum_dr_code IS NULL THEN initial_rum_dr_code ELSE scenar1_rum_dr_code END,
|
|
|
scenar1_rum_da_code = CASE WHEN scenar1_rum_da_code IS NULL THEN initial_rum_da_code ELSE scenar1_rum_da_code END,
|
|
|
scenar2_ghm_code = CASE WHEN scenar2_ghm_code = '' THEN facture_ghm_code ELSE scenar2_ghm_code END,
|
|
|
scenar2_ghm_id = CASE WHEN scenar2_ghm_code = '' THEN facture_ghm_id ELSE scenar2_ghm_id END,
|
|
|
scenar2_ghs_code = CASE WHEN scenar2_ghs_code = '' THEN facture_ghs_code ELSE scenar2_ghs_code END,
|
|
|
scenar2_ghs_id = CASE WHEN scenar2_ghs_code = '' THEN facture_ghs_id ELSE scenar2_ghs_id END,
|
|
|
scenar2_dp_code = CASE WHEN scenar2_dp_code = '' THEN facture_dp_code ELSE scenar2_dp_code END,
|
|
|
scenar2_dp_id = CASE WHEN scenar2_dp_code = '' THEN facture_dp_id ELSE scenar2_dp_id END,
|
|
|
scenar2_rum_um_code = CASE WHEN scenar2_rum_um_code IS NULL THEN initial_rum_um_code ELSE scenar2_rum_um_code END,
|
|
|
scenar2_rum_dp_code = CASE WHEN scenar2_rum_dp_code IS NULL THEN initial_rum_dp_code ELSE scenar2_rum_dp_code END,
|
|
|
scenar2_rum_dr_code = CASE WHEN scenar2_rum_dr_code IS NULL THEN initial_rum_dr_code ELSE scenar2_rum_dr_code END,
|
|
|
scenar2_rum_da_code = CASE WHEN scenar2_rum_da_code IS NULL THEN initial_rum_da_code ELSE scenar2_rum_da_code END,
|
|
|
control_ghm_code = CASE WHEN control_ghm_code = '' THEN facture_ghm_code ELSE control_ghm_code END,
|
|
|
control_ghm_id = CASE WHEN control_ghm_code = '' THEN facture_ghm_id ELSE control_ghm_id END,
|
|
|
control_ghs_code = CASE WHEN control_ghs_code = '' THEN facture_ghs_code ELSE control_ghs_code END,
|
|
|
control_ghs_id = CASE WHEN control_ghs_code = '' THEN facture_ghs_id ELSE control_ghs_id END,
|
|
|
control_dp_code = CASE WHEN control_dp_code = '' THEN facture_dp_code ELSE control_dp_code END,
|
|
|
control_dp_id = CASE WHEN control_dp_code = '' THEN facture_dp_id ELSE control_dp_id END,
|
|
|
control_rum_um_code = CASE WHEN control_rum_um_code IS NULL THEN initial_rum_um_code ELSE control_rum_um_code END,
|
|
|
control_rum_dp_code = CASE WHEN control_rum_dp_code IS NULL THEN initial_rum_dp_code ELSE control_rum_dp_code END,
|
|
|
control_rum_dr_code = CASE WHEN control_rum_dr_code IS NULL THEN initial_rum_dr_code ELSE control_rum_dr_code END,
|
|
|
control_rum_da_code = CASE WHEN control_rum_da_code IS NULL THEN initial_rum_da_code ELSE control_rum_da_code END,
|
|
|
retenu_ghm_code = CASE WHEN retenu_ghm_code = '' THEN facture_ghm_code ELSE retenu_ghm_code END,
|
|
|
retenu_ghm_id = CASE WHEN retenu_ghm_code = '' THEN facture_ghm_id ELSE retenu_ghm_id END,
|
|
|
retenu_ghs_code = CASE WHEN retenu_ghs_code = '' THEN facture_ghs_code ELSE retenu_ghs_code END,
|
|
|
retenu_ghs_id = CASE WHEN retenu_ghs_code = '' THEN facture_ghs_id ELSE retenu_ghs_id END,
|
|
|
retenu_dp_code = CASE WHEN retenu_dp_code = '' THEN facture_dp_code ELSE retenu_dp_code END,
|
|
|
retenu_dp_id = CASE WHEN retenu_dp_code = '' THEN facture_dp_id ELSE retenu_dp_id END,
|
|
|
retenu_rum_um_code = CASE WHEN retenu_rum_um_code IS NULL THEN initial_rum_um_code ELSE retenu_rum_um_code END,
|
|
|
retenu_rum_dp_code = CASE WHEN retenu_rum_dp_code IS NULL THEN initial_rum_dp_code ELSE retenu_rum_dp_code END,
|
|
|
retenu_rum_dr_code = CASE WHEN retenu_rum_dr_code IS NULL THEN initial_rum_dr_code ELSE retenu_rum_dr_code END,
|
|
|
retenu_rum_da_code = CASE WHEN retenu_rum_da_code IS NULL THEN initial_rum_da_code ELSE retenu_rum_da_code END
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
-- Nombre dans entete
|
|
|
UPDATE pmsi.t_fiche5_enquete SET
|
|
|
nb_ogc = subview.nb_ogc,
|
|
|
nb_rss_ok = subview.nb_rss_ok,
|
|
|
nb_rss_ko = subview.nb_rss_ko
|
|
|
FROM
|
|
|
(
|
|
|
SELECT t_fiche5_enquete.oid,
|
|
|
count(*) AS nb_ogc,
|
|
|
SUM(CASE WHEN rss_id <> 0 THEN 1 ELSE 0 END) AS nb_rss_ok,
|
|
|
SUM(CASE WHEN rss_id = 0 THEN 1 ELSE 0 END) AS nb_rss_ko
|
|
|
FROM pmsi.t_fiche5_enquete
|
|
|
LEFT JOIN pmsi.p_fiche5_rss ON enquete_id = t_fiche5_enquete.oid
|
|
|
GROUP BY 1
|
|
|
) subview
|
|
|
WHERE t_fiche5_enquete.oid = subview.oid
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 'OK'
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RETURN 'OK';
|
|
|
END;
|