You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

83 lines
4.1 KiB

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;