--===========================================================================================
/* **************** OFICINA DE GESTIÓN DE LA INFORMACIÓN (OGEI/OGTI/MINSA) ******************
FICHA: INDICADOR N° - DL 1153 - 2024
NOMBRE: Porcentaje de Resolutividad														   */
--===========================================================================================

--*******************************************************************************************
-- Creado por (2023)   : Jhonatan Lavi Casilla (OGEI)
-- Fecha creación      : 23/01/2023
---------------------------------------------------------------------------------------------
-- Fecha Actualización : 25/10/2023
-- Motivo              : Modificaciones en la FICHA para los Indicadores del 2024
-- Modificado por	   : Piero Romero Marín (OGEI)
--*******************************************************************************************
use BD_HISINDICADORES
go

--***************************************************
--				BASES DE DATOS.
--***************************************************
--Base de renaes (Hospital de II nivel con más de 50 camas, hospital general de III nivel, hospital e instituto especializado)
IF OBJECT_ID('Tempdb..#renaes') IS NOT NULL DROP TABLE #renaes
select
	b.*
into #renaes
from BD_BACKUP_OGEI.dbo.Renaes_20231023 b
where	converT(int,AMBITO) = 1 and			-- MINSA y GORE
		CAT_ESTAB in ('II-1','II-2','II-E','III-1','III-2','III-E') AND	
		COD_ESTAB NOT IN (6208,6209,6210,6216,16918,6217,				-- Excluir INSTITUTOS
						  7733,7734,7397,5197,7277,27857)		

--Base de SEEM
IF OBJECT_ID('Tempdb..#seem') IS NOT NULL DROP TABLE #seem
select
	renaes			= converT(int,a.renipress)		,
	Categoria		= b.CAT_ESTAB					,
	fecha_aten		= try_convert(date,a.fecate)	,
	fecha_egreso	= try_convert(date,a.fecegr)	,
	Prioridad		= CONVERT(INT,a.PRIORIDAD)		,
	emergencia		= 1
into #seem
from BD_BACKUP_OGEI.dbo.TramaEmergencias_202309_20231023 a
inner join #renaes b on convert(int,a.renipress) = convert(int,b.cod_Estab)
WHERE a.PRIORIDAD IN ('1','2','3','4')
 
--Base de REFCON
IF OBJECT_ID('Tempdb..#refcon') IS NOT NULL DROP TABLE #refcon
select
	renaes			= convert(int,cod_unico)	,
	Categoria		= b.CAT_ESTAB				,
	id_referencia	,
	fecha_envio		= convert(date,fecha_envio)	,
	ups_destino
into #refcon		
from BD_BACKUP_OGEI.dbo.MEF_TramaREFCON_202309_20231023 a
inner join #renaes b on convert(int,a.cod_unico) = convert(int,b.cod_Estab)		-- Establecimiento de Origen
where	tipo_traslado = 'REFERENCIA'	AND
		ups_destino like '%emergencia%' AND			-- Referencias Realizado por EESS y son enviados por emergencia.
		convert(date,fecha_envio) is not null


--***************************************************
--					SINTAXIS
--***************************************************
IF OBJECT_ID('Tempdb..#tabla_reporte') IS NOT NULL DROP TABLE #tabla_reporte
create table #tabla_reporte
(
renaes	int,
año		int,
mes		int,
den		int,
num		int
)

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

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

while @mes_inicio <= @mes_eval
begin 

--%%%%%%%%%%%%%%%%
--  DENOMINADOR
--%%%%%%%%%%%%%%%%

-- 1. NIVEL III:
--N° de atenciones de emergencia en el período
IF OBJECT_ID('Tempdb..#ind_den_NivelIII') IS NOT NULL DROP TABLE #ind_den_NivelIII
select
	s.renaes,
	den = sum(s.emergencia)
into #ind_den_NivelIII
from #seem s
where	year(fecha_aten)  = @año		AND
		month(fecha_aten) = @mes_inicio			AND
		s.PRIORIDAD IN ('1','2')		AND			-- Emergencia
		s.Categoria in ('III-1','III-2','III-E')	-- NIVEL III
group by renaes 

-- 2. NIVEL II:
--N° de atenciones de emergencia en el período
IF OBJECT_ID('Tempdb..#ind_den_NivelII') IS NOT NULL DROP TABLE #ind_den_NivelII
select
	s.renaes,
	den = sum(s.emergencia)
into #ind_den_NivelII
from #seem s
where	year(fecha_aten)  = @año				AND
		month(fecha_aten) = @mes_inicio					AND
		s.PRIORIDAD IN ('1','2','3','4')		AND		-- Emergencia y Urgencia
		s.Categoria in ('II-1','II-2','II-E')			-- NIVEL III
group by renaes 

--Denominador final
IF OBJECT_ID('Tempdb..#Ind_Den') IS NOT NULL DROP TABLE #Ind_Den
SELECT
	d.*
INTO #Ind_Den
FROM #ind_den_NivelIII d
UNION ALL
SELECT
	d.*
FROM #ind_den_NivelII d

--%%%%%%%%%%%%%%%%
-- NUMERADOR
--%%%%%%%%%%%%%%%%

-- 1. NIVEL III:
--N° Referencias para emergencia enviadas en un periodo
	IF OBJECT_ID('Tempdb..#num_emergencia_III') IS NOT NULL DROP TABLE #num_emergencia_III
	select
		r.renaes,
		num_emergencia = count(distinct r.id_referencia)
	into #num_emergencia_III
	from #refcon r
	where	r.ups_destino like '%emergencia%'	AND
			year(r.fecha_envio)  = @año			AND
			month(r.fecha_envio) = @mes_inicio	AND
			r.Categoria in ('III-1','III-2','III-E')
   group by renaes

-- 1. NIVEL II:
--N° Referencias para emergencia enviadas en un periodo
	IF OBJECT_ID('Tempdb..#num_emergencia_II') IS NOT NULL DROP TABLE #num_emergencia_II
	select
		r.renaes,
		num_emergencia = count(distinct r.id_referencia)
	into #num_emergencia_II
	from #refcon r
	where	r.ups_destino like '%emergencia%'	AND
			year(r.fecha_envio)  = @año			AND
			month(r.fecha_envio) = @mes_inicio	AND
			r.Categoria in ('II-1','II-2','II-E')
   group by renaes

--Numerador final
IF OBJECT_ID('Tempdb..#Ind_Num') IS NOT NULL DROP TABLE #Ind_Num
SELECT
	d.*
INTO #Ind_Num
FROM #num_emergencia_III d
UNION ALL
SELECT
	d.*
FROM #num_emergencia_II d


--%%%%%%%%%%%%%%%%
--	INDICADOR
--%%%%%%%%%%%%%%%%
insert into #tabla_reporte
select
	a.renaes,
	año		= @año		,
	mes		= @mes_inicio	,
	a.den	,
	num		= isnull(b.num_emergencia,0)
from #Ind_Den a
left join #Ind_Num b on a.renaes = b.renaes


drop table #num_emergencia
drop table #ind_den

set @mes_inicio = @mes_inicio + 1
end 

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

--ALTER TABLE BD_HISINDICADORES.dbo.DL1153_2023_CG20_Resolutividad 
--ADD Indicador INT NULL, Mes_Corte INT NULL;

--UPDATE a SET
--	a.Indicador = 20,
--	a.Mes_Corte = 6
--FROM DL1153_2023_CG20_Resolutividad a

--INSERT INTO BD_HISINDICADORES.dbo.DL1153_2023_CG20_Resolutividad
IF OBJECT_ID('Tempdb..#Reporte_Final') IS NOT NULL DROP TABLE #Reporte_Final
select
	Diris			= B.diris,
	Departamento	=	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,
	Provincia		= B.desc_prov,
	Distrito		= B.desc_dist,
	Red				=	case
							when b.DIRIS like '%diris%' then b.diris
							else B.DESC_RED
						end,
	MicroRed		= b.desc_mred,
	b.cat_estab		,
	eess_nombre		= b.desc_estab,
	--filtro_aplicacion = d.tipo,
	a.*,
	Indicador = 20
	--Mes_Corte = 9
INTO #Reporte_Final
from #tabla_reporte a
inner join #renaes b				on convert(int,a.renaes) = convert(int,b.COD_ESTAB)
--inner join (select
--				distinct
--				renaes,
--				tipo
--				from BD_HISINDICADORES.dbo.DL1153_2023_EESS_EVAL
--				where Ind = 20) d	on convert(int,a.renaes) = convert(int,d.renaes)


select * from  #Reporte_Final
WHERE Mes_Corte = @mes_eval

drop table #refcon
drop table #renaes
drop table #tabla_reporte
drop table #seem
-------------------------------------- =D