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

--***************************************************
--				BASES DE DATOS.
--***************************************************
--HIS MINSA
IF OBJECT_ID('Tempdb..#his_minsa') IS NOT NULL DROP TABLE #his_minsa
select 
	fecha_atencion	= convert(date,periodo)	,
	renaes			= convert(int,renaes)	,
	id_tipo_doc		,
	num_doc			,
	tipo_dx			= id_tipitem			,
	cod_item		,
	valor_lab
into #his_minsa
from BD_BACKUP_OGEI.dbo.MEF_TramaHisMinsa_202309_20231023 WITH(NOLOCK)
where				sw = 1 and											--Validacion de tipo y numero de documento
		(convert(int,edad_reg) between 50 and 70) and
		id_tipedad_reg = 'A'

--RENAES de Categoría I-3, I-4 y 2° nivel con población asignada (II-1)
IF OBJECT_ID('Tempdb..#renaes') IS NOT NULL DROP TABLE #renaes
SELECT
	r.*
INTO #renaes
FROM BD_BACKUP_OGEI.dbo.Renaes_20231023 r
WHERE	r.CAT_ESTAB IN ('I-3','I-4') OR
		(r.CAT_ESTAB = ('II-1') AND r.CAMAS <= 50)

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

declare @mes_eval int,
		@mes_inicio 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. Total de personas de 50 a 70 años identificados con Documento de Identidad atendidos por todas las causas y registrados en el HIS
-- Personas con algún diagnóstico de Cáncer (Todos los C) 
IF OBJECT_ID('Tempdb..#dpcan_den_Cancer') IS NOT NULL DROP TABLE #dpcan_den_Cancer
select
	distinct
	id_tipo_doc	,
	num_doc		
into #dpcan_den_Cancer
from #his_minsa h
where	year(fecha_atencion)	  = @año		AND
		month(fecha_atencion)	 <= @mes_inicio	AND
		SUBSTRING(h.cod_item,1,1) = 'C'			AND
		h.tipo_dx				  = 'D'


-- Todos los atendidos menos los de cancer
IF OBJECT_ID('Tempdb..#dpcan_den') IS NOT NULL DROP TABLE #dpcan_den
select
	distinct
	h.renaes		,
	h.id_tipo_doc	,
	h.num_doc		,
	den				= 1
into #dpcan_den
from #his_minsa h WITH(NOLOCK)
FULL OUTER JOIN #dpcan_den_Cancer c WITH(NOLOCK) ON h.id_tipo_doc = c.id_tipo_doc AND
													h.num_doc	  = c.num_doc
where	c.num_doc IS NULL					 AND
		year(fecha_atencion)   = @año		 AND
		month(fecha_atencion) <= @mes_inicio
	
--%%%%%%%%%%%%%%%%
-- NUMERADOR
--%%%%%%%%%%%%%%%%

--1. Personas del denominador a quienes que se les ha entregado el resultado del test de sangre oculta en heces y registradas en el HIS con diagnóstico definitivo, lab A (resultado positivo) o N (resultado negativo) 
IF OBJECT_ID('Tempdb..#dpcan_num') IS NOT NULL DROP TABLE #dpcan_num
select
	distinct
	renaes		,
	id_tipo_doc	,
	num_doc		,
	num			= 1
into #dpcan_num
from #his_minsa
where	year(fecha_atencion)   = @año		 and
		month(fecha_atencion) <= @mes_inicio and
					   tipo_dx = 'D'		 and
					  cod_item = '82270'	 and
					valor_lab in ('N','A')

--%%%%%%%%%%%%%%%%
--	INDICADOR
--%%%%%%%%%%%%%%%%
insert into #tabla_reporte
select
	año		= @año			,
	mes		= @mes_inicio	,
	renaes	,
	den		= sum(den)		,
	num		= sum(num)
from (
		select
			a.*,
			num = isnull(b.num,0)
		from #dpcan_den a
		left join #dpcan_num b on	a.renaes	  = b.renaes	  and
									a.id_tipo_doc = b.id_tipo_doc and
									a.num_doc	  = b.num_doc
	 ) as t
group by renaes 

set @mes_inicio = @mes_inicio + 1 
end

--===================
-- REPORTE
--===================

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,
	a.*
from #tabla_reporte a
inner join #renaes b on convert(int,a.renaes) = convert(int,b.COD_ESTAB)

-- =D