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;