|
|
return: text
|
|
|
lang: plpgsql
|
|
|
src: |
|
|
|
DECLARE
|
|
|
|
|
|
BEGIN
|
|
|
-- Identification des journées selon lignes facturées
|
|
|
DROP TABLE IF EXISTS w_duree_occupation;
|
|
|
CREATE TEMP TABLE w_duree_occupation AS
|
|
|
SELECT
|
|
|
no_sejour,
|
|
|
|
|
|
t_lieux_c.etage_id AS lieu_etage_id,
|
|
|
t_lieux_c.etage_code AS lieu_etage_code,
|
|
|
t_lieux_c.etage_texte AS lieu_etage_texte,
|
|
|
t_lieux_c.etage_section_id AS lieu_etage_section_id,
|
|
|
t_lieux_c.etage_section_code AS lieu_etage_section_code,
|
|
|
t_lieux_c.etage_section_texte AS lieu_etage_section_texte,
|
|
|
|
|
|
t_lieux_c.lit_id AS lieu_lit_id,
|
|
|
t_lieux_c.lit_code AS lieu_lit_code,
|
|
|
t_lieux_c.lit_texte AS lieu_lit_texte,
|
|
|
t_lieux_c.lit_section_id AS lieu_lit_section_id,
|
|
|
t_lieux_c.lit_section_code AS lieu_lit_section_code,
|
|
|
t_lieux_c.lit_section_texte AS lieu_lit_section_texte,
|
|
|
|
|
|
t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id,
|
|
|
t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code,
|
|
|
t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte,
|
|
|
t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id,
|
|
|
t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code,
|
|
|
t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte,
|
|
|
|
|
|
t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id,
|
|
|
t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code,
|
|
|
t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte,
|
|
|
t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id,
|
|
|
t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code,
|
|
|
t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte,
|
|
|
sum(nb_jours_f) AS duree_occ_eta
|
|
|
FROM activite.p_mouvements_sejour
|
|
|
JOIN activite.t_lieux_c ON p_mouvements_sejour.lieu_id = t_lieux_c.oid
|
|
|
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25;
|
|
|
|
|
|
CREATE INDEX w_duree_occupation_i1 ON w_duree_occupation USING btree (no_sejour);
|
|
|
DROP TABLE IF EXISTS activite.p_duree_occupation;
|
|
|
CREATE TABLE activite.p_duree_occupation AS
|
|
|
SELECT
|
|
|
no_sejour::text,
|
|
|
lieu_etage_id::bigint as v_lieu_etage_id,
|
|
|
lieu_etage_code::text as v_lieu_etage_code,
|
|
|
lieu_etage_texte::text as v_lieu_etage_texte,
|
|
|
lieu_etage_section_id::bigint[] as v_lieu_etage_section_id,
|
|
|
lieu_etage_section_code::text[] as v_lieu_etage_section_code,
|
|
|
lieu_etage_section_texte::text[] as v_lieu_etage_section_texte,
|
|
|
lieu_lit_id::bigint as v_lieu_lit_id,
|
|
|
lieu_lit_code::text as v_lieu_lit_code,
|
|
|
lieu_lit_texte::text as v_lieu_lit_texte,
|
|
|
lieu_lit_section_id::bigint[] as v_lieu_lit_section_id,
|
|
|
lieu_lit_section_code::text[] as v_lieu_lit_section_code,
|
|
|
lieu_lit_section_texte::text[] as v_lieu_lit_section_texte,
|
|
|
lieu_unite_medicale_id::bigint as v_lieu_unite_medicale_id,
|
|
|
lieu_unite_medicale_code::text as v_lieu_unite_medicale_code,
|
|
|
lieu_unite_medicale_texte::text as v_lieu_unite_medicale_texte,
|
|
|
lieu_unite_medicale_section_id::bigint[] as v_lieu_unite_medicale_section_id,
|
|
|
lieu_unite_medicale_section_code::text[] as v_lieu_unite_medicale_section_code,
|
|
|
lieu_unite_medicale_section_texte::text[] as v_lieu_unite_medicale_section_texte,
|
|
|
lieu_unite_fonctionnelle_id::bigint as v_lieu_unite_fonctionnelle_id,
|
|
|
lieu_unite_fonctionnelle_code::text as v_lieu_unite_fonctionnelle_code,
|
|
|
lieu_unite_fonctionnelle_texte::text as v_lieu_unite_fonctionnelle_texte,
|
|
|
lieu_unite_fonctionnelle_section_id::bigint[] as v_lieu_unite_fonctionnelle_section_id,
|
|
|
lieu_unite_fonctionnelle_section_code::text[] as v_lieu_unite_fonctionnelle_section_code,
|
|
|
lieu_unite_fonctionnelle_section_texte::text[] as v_lieu_unite_fonctionnelle_section_texte,
|
|
|
duree_occ_eta::bigint
|
|
|
FROM w_duree_occupation;
|
|
|
|
|
|
-- Détection nouvelles journées pour les services concernés
|
|
|
RAISE NOTICE '%' , 'Fin calcule durée occupation';
|
|
|
|
|
|
ANALYZE activite.p_duree_occupation;
|
|
|
|
|
|
RETURN 'OK' ;
|
|
|
END;
|