/*==============================================================================
FICHA: Indicador N°19 - DL 1153 2023
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
use BD_HISINDICADORES
go

--***************************************************
--				BASES DE DATOS.
--***************************************************
--Base Estadistica de Egresos y Permanencia
select   try_convert(int,a.RENIPRESS) renaes
		, try_convert(date,a.FECING) fecha_ingreso
		, try_convert(date,a.FECEGR) fecha_egreso
		, a.TOTALEST total_estancia
		, a.ups
		, b.DESCRIP_UPS02 ups_descrip
		, a.condicion
		, a.CODDIAG1 dx1
		, a.CODDIAG2 dx2
		, a.CODDIAG3 dx3
		, a.CODDIAG4 dx4
into #Base_Egresos
from BD_BACKUP_OGEI.dbo.MEF_TramaEgresos_202301_20230221 a with (nolock)
left join BD_HISINDICADORES.dbo.TramaEgresos_RES_UPS b on a.UPS=b.cod_ups
where a.CODDIAG1 is not null and a.CODDIAG1 not in ('','NULL')
and try_convert(date,a.FECING) is not null
and try_convert(date,a.FECEGR) is not null
and try_convert(date,a.FECEGR)>=try_convert(date,a.FECING) 


--***************************************************
--					SINTAXIS
--***************************************************
create table #tabla_reporte
(
renaes int,
ups int,
ups_descript nvarchar(500),
año int,
mes int,
den int,
num int,
total_estancia int
)

declare @mes_inicio int,
		@mes_eval int,
		@año int 

set @mes_inicio=1 --<=========== Mes de inicio		
set @mes_eval=1 --<=========== Mes de evaluación
set @año=2023 --<============= Año de evaluación 

while @mes_inicio<=@mes_eval
begin 

	-- No se consideran pacientes Hospitalizados por COVID.
	delete from #Base_Egresos where dx1='U071' and year(fecha_egreso)=@año and month(fecha_egreso)=@mes_inicio
	delete from #Base_Egresos where dx2='U071' and year(fecha_egreso)=@año and month(fecha_egreso)=@mes_inicio
	delete from #Base_Egresos where dx3='U071' and year(fecha_egreso)=@año and month(fecha_egreso)=@mes_inicio
	delete from #Base_Egresos where dx4='U071' and year(fecha_egreso)=@año and month(fecha_egreso)=@mes_inicio

	-- Excluir lo siguiente
	delete from #Base_Egresos where convert(int,substring(ups,1,4)) in (2501,2502,2503,2504) and year(fecha_egreso)=@año and month(fecha_egreso)=@mes_inicio -- <= UNIDAD DE CUIDADOS INTENSIVOS (INCLUYE CUIDADOS INTERMEDIOS)
	delete from #Base_Egresos where convert(int,ups) in (250500) and year(fecha_egreso)=@año and month(fecha_egreso)=@mes_inicio							 -- <= UNIDAD DE CUIDADOS INTENSIVOS (INCLUYE CUIDADOS INTERMEDIOS)
	delete from #Base_Egresos where convert(int,substring(ups,1,2)) in (23)	and year(fecha_egreso)=@año and month(fecha_egreso)=@mes_inicio 				 -- <= CAMAS DE EMERGENCIA

--%%%%%%%%%%%%%%%%
--  DENOMINADOR
--%%%%%%%%%%%%%%%%
--1. El número de egresos es la sumatoria diaria de todos los pacientes que salen de la UPSS Hospitalización luego de haber ocupado una cama de hospitalización
select renaes, ups, ups_descrip, count(*) den
into #Base_Egresos_Den
from #Base_Egresos
where year(fecha_egreso)=@año and month(fecha_egreso)=@mes_inicio 	
group by renaes, ups, ups_descrip

--%%%%%%%%%%%%%%%%
-- NUMERADOR
--%%%%%%%%%%%%%%%%
--1.El número total de días-estancia de los egresos (o días de permanencia) se obtiene de la sumatoria de los días de hospitalización de cada paciente egresado de la UPSS Hospitalización
select renaes, ups, ups_descrip, sum(num) num, sum(total_estancia) Total_estancia
into #Base_Egresos_Num
from(
		select renaes, ups, ups_descrip, 
		case when datediff(dd,fecha_ingreso,fecha_Egreso)=0 then 1 else datediff(dd,fecha_ingreso,fecha_Egreso) end num
		, total_Estancia
		from #Base_Egresos
		where year(fecha_egreso)=@año and month(fecha_egreso)=@mes_inicio 
) as t 
group by renaes, ups, ups_descrip

--%%%%%%%%%%%%%%%%
--	INDICADOR
--%%%%%%%%%%%%%%%%
insert into #tabla_reporte
select a.renaes, a.UPS, a.ups_descrip
, @año año
, @mes_inicio mes
, a.den
, isnull(b.num,0) num
, isnull(b.total_Estancia,0) total_Estancia
from #Base_Egresos_Den a
left join #Base_Egresos_Num b on a.renaes=b.renaes and a.UPS=b.UPS and a.ups_descrip=b.ups_descrip

drop table #Base_Egresos_Den
drop table #Base_Egresos_Num

set @mes_inicio=@mes_inicio+1
end 

--===================
-- REPORTE
--===================
drop table BD_HISINDICADORES.dbo.DL1153_2023_CG19_PermanenciaCama

select 
B.diris Diris, CASE 
	WHEN B.DESC_DPTO='LIMA' AND B.DESC_PROV='LIMA' THEN 'LIMA METROPOLITANA'
	WHEN B.DESC_DPTO='LIMA' AND B.DESC_PROV<>'LIMA' THEN 'LIMA PROVINCIAS'
	ELSE B.DESC_DPTO END Departamento
, B.desc_prov Provincia
, B.desc_dist Distrito
, case when b.DIRIS like '%diris%' then b.diris else B.DESC_RED end Red
, b.desc_mred MicroRed
, b.cat_estab
, b.desc_estab eess_nombre
, case when a.ups_descript is null then convert(nvarchar(10),a.ups)
else convert(nvarchar(10),a.ups)+'-'+a.ups_descript end ups_nombre
, a.*
into BD_HISINDICADORES.dbo.DL1153_2023_CG19_PermanenciaCama
from #tabla_reporte a
inner join BD_BACKUP_OGEI.dbo.Renaes_20230221 b on convert(int,a.renaes)=convert(int,b.COD_ESTAB)
where ( (b.CAT_ESTAB in ('II-1','II-2','II-E') and convert(int,b.camas)>50)
		or b.CAT_ESTAB in ('III-1','III-2','III-E') )
and convert(int,b.AMBITO)=1

select * from BD_HISINDICADORES.dbo.DL1153_2023_CG19_PermanenciaCama

drop table #Base_Egresos
drop table #tabla_reporte
-- =D
