/*==============================================================================
FICHA: Indicador N°13 - Porcentaje de niñas y niños de 3 a 11 años con alta 
básica odontológica
ELABORACION: DIRESA SAN MARTÍN - JCAR
==============================================================================*/
use DataHIS
go

--***************************************************
--				BASES DE DATOS.
--***************************************************
--HIS MINSA 
select id_cita
	, fecha_registro
	, convert(date,FECHA_ATENCION) fecha_atencion
	, convert(int,e.Codigo_Unico) renaes
	, ID_CONDICION_ESTABLECIMIENTO id_tipcond_estab
	, ID_CONDICION_SERVICIO id_tipcond_serv
	, p.NUMERO_DOCUMENTO num_doc
	, edad_reg
	, TIPO_DIAGNOSTICO tipo_dx
	, CODIGO_ITEM cod_item  
	, valor_lab
into #his_minsa
from HIS_Nominal h 
inner join ESTABLECIMIENTOS e on h.ID_ESTABLECIMIENTO=e.Id_Establecimiento  -- with (Nolock)
inner join PACIENTE p on h.ID_PACIENTE=p.ID_PACIENTE
where ID_TIPO_DOCUMENTO=1 --and sw=1
      and substring(rtrim(ltrim(id_ups)),1,4)='3033'									-- UPS servicios Odontologicas.
	  and (convert(int,edad_reg) between 3 and 12) and TIPO_EDAD='A'					-- Edad 3 a 12 años.
						
	--Excluir Atenciones de Telemedicina.
	delete from #his_minsa 
	where id_cita in (
					select distinct id_cita from #his_minsa
					where substring(cod_item,1,5)='99499'
					) 
					

--***************************************************
--					SINTAXIS
--***************************************************
declare @mes_inicio int,
		@mes_eval int,
		@año int 

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

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

--1.Total de niñas y niños de 3 a 11 años y que presenten como primera atención en el año el procedimiento de evaluación oral completa
select distinct renaes 
				,num_doc
				,fecha_atencion
				,edad_reg edad
into #hisminsa_den
from (
		select *
		, row_number() over (partition by num_doc, renaes order by fecha_atencion asc, fecha_registro desc) id
		from #his_minsa
		where cod_item in ('D0150','D0120') and tipo_dx='D'
		and ( valor_lab not in ('G') or valor_lab is null )
		and id_tipcond_serv in ('N','R')
		and (edad_reg between 3 and 11)
		and year(fecha_atencion)=@año
		and month(fecha_atencion)<=@mes_eval
) as t 
where id=1


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

--1.Niños del denominador que durante o después de su primera atención cumplan con las siguientes condiciones: 

	--1.1 Procedimiento A.
	select distinct renaes, 
					num_doc,
					fecha_atencion,
					edad
	into #hisminsa_numa
	from (
			select renaes, num_doc ,fecha_atencion, edad
			, iif( (num_d0150d0120=1 and num_u160=1 and num_d1310=1 and num_d1330=1 and num_d1206d1208=1 and num_u510=1)
				   or (num_d0150d0120=1 and num_d1310=1 and num_d1330=1 and num_d1206d1208=1 and num_u510=1),1,0) num_a
			from (
					select renaes, num_doc, fecha_atencion, edad_reg edad, id_cita
					, max(iif( cod_item in ('D0150','D0120') and tipo_dx='D' and (valor_lab not in ('G') or valor_lab is null),1,0)) num_d0150d0120
					, max(iif( cod_item='u160' and tipo_dx='D' and (valor_lab not in ('G') or valor_lab is null),1,0)) num_u160
					, max(iif( cod_item='d1310' and tipo_dx='D' and (valor_lab not in ('G') or valor_lab is null),1,0)) num_d1310
					, max(iif( cod_item='d1330' and tipo_dx='D' and (valor_lab not in ('G') or valor_lab is null),1,0)) num_d1330
					, max(iif( cod_item in ('D1206','D1204','D1208') and tipo_dx='D' and (valor_lab not in ('G') or valor_lab is null),1,0)) num_d1206d1208
					, max(iif( cod_item ='U510' and tipo_dx='D' and (valor_lab not in ('G') or valor_lab is null),1,0)) num_u510
					from #his_minsa 
					where year(fecha_atencion)=@año
					and month(fecha_atencion)<=@mes_eval
					group by renaes, num_doc, fecha_atencion, edad_reg, id_cita
			) as t 
	) as t where num_a=1
	
		--Validacion de numerador A
		select distinct renaes, num_doc, fecha_atencion, edad, num_a, fecha_num_a
		into #hisminsa_numa_final
		from (
				select a.renaes, a.num_doc, a.fecha_atencion, a.edad
				, num_a=1 , b.fecha_atencion fecha_num_a
				, row_number() over (partition by a.num_doc, a.renaes order by b.fecha_atencion asc) id
				from #hisminsa_den a
				inner join #hisminsa_numa b on a.num_doc=b.num_doc and a.renaes=b.renaes
				where b.fecha_atencion>=a.fecha_atencion
		) as t where id=1


	--1.2 Procedimiento B.
	select distinct renaes, 
					num_doc,
					fecha_atencion,
					edad
	into #hisminsa_numb
	from (
			select renaes, num_doc ,fecha_atencion, edad
			, iif( num_DE=1 and num_u510=1,1,0) num_b
			from (
					select renaes, num_doc, fecha_atencion, edad_reg edad, id_cita
					, max(iif( substring(cod_item,1,1) in ('D','E') and tipo_dx='D' and (valor_lab not in ('G') or valor_lab is null),1,0)) num_DE
					, max(iif( cod_item ='U510' and tipo_dx='D' and (valor_lab not in ('G') or valor_lab is null),1,0)) num_u510
					from #his_minsa 
					where year(fecha_atencion)=@año
					and month(fecha_atencion)<=@mes_eval
					group by renaes, num_doc, fecha_atencion, edad_reg, id_cita
			) as t 
	) as t where num_b=1
	
		--Validacion de numerador B
		select distinct renaes, num_doc, fecha_atencion, edad, num_b, fecha_num_b
		into #hisminsa_numb_final
		from (
				select a.renaes, a.num_doc, a.fecha_atencion, a.edad
				, num_b=1 , b.fecha_atencion fecha_num_b
				, row_number() over (partition by a.num_doc, a.renaes order by b.fecha_atencion asc) id
				from #hisminsa_den a
				inner join #hisminsa_numb b on a.num_doc=b.num_doc and a.renaes=b.renaes
				where b.fecha_atencion>=a.fecha_atencion
		) as t where id=1


--%%%%%%%%%%%%%%%%
--	INDICADOR
--%%%%%%%%%%%%%%%%
select a.renaes, a.num_doc, a.edad
, case when b.fecha_num_a is null and c.fecha_num_b is null then a.fecha_atencion 
	when b.fecha_num_a is null and c.fecha_num_b is not null then c.fecha_num_b
	when b.fecha_num_a is not null and c.fecha_num_b is null then b.fecha_num_a 
	when b.fecha_num_a is not null and c.fecha_num_b is not null and b.fecha_num_a<=c.fecha_num_b then b.fecha_num_a
	when b.fecha_num_a is not null and c.fecha_num_b is not null and b.fecha_num_a>c.fecha_num_b then c.fecha_num_b 	
	end fecha_eval
, den=1
, iif(b.num_a=1 or c.num_b=1,1,0) num
, isnull(b.num_a,0) num_a, b.fecha_num_a
, isnull(c.num_b,0) num_b, c.fecha_num_b
into #tabla_reporte
from #hisminsa_den a 
left join #hisminsa_numa_final b on a.renaes=b.renaes and a.num_doc=b.num_doc and a.fecha_atencion=b.fecha_atencion and a.edad=b.edad
left join #hisminsa_numb_final c on a.renaes=c.renaes and a.num_doc=c.num_doc and a.fecha_atencion=c.fecha_atencion and a.edad=c.edad

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

drop table TRAMAHIS_DL_CG13_2023

select 
B.Disa Diris, CASE 
	WHEN B.Departamento='LIMA' AND B.Provincia='LIMA' THEN 'LIMA METROPOLITANA'
	WHEN B.Departamento='LIMA' AND B.Provincia<>'LIMA' THEN 'LIMA PROVINCIAS'
	ELSE B.Departamento END Departamento
, B.Provincia Provincia
, B.Distrito Distrito
, case when b.Disa like '%diris%' then b.Disa else B.Red end Red
, b.MicroRed MicroRed
, b.Categoria_Establecimiento cat_estab
, b.Nombre_Establecimiento eess_nombre
, year(a.fecha_eval) año
, month(a.fecha_eval) mes
, a.*
into TRAMAHIS_DL_CG13_2023
from #tabla_reporte a
inner join ESTABLECIMIENTOS b on convert(int,a.renaes)=convert(int,b.Codigo_Unico)
where ( (b.Categoria_Establecimiento in ('I-1','I-2','I-3','I-4')) or (b.Categoria_Establecimiento in ('II-1','II-2','II-E'))) --and b.CAMAS<=50
and convert(int,b.Codigo_Sector)=7

		--- NO CONSIDERAR ESTABLECIMIENTOS SIN RED.
		delete from TRAMAHIS_DL_CG13_2023 where CAT_ESTAB in ('I-1','I-2','I-3','I-4') and Red like '%no pertenece%'

		--- NO CONSIDERAR ESTABLECIMIENTOS DE SALUD MENTAL.
		delete from TRAMAHIS_DL_CG13_2023 where eess_nombre like '%salud%mental%'

select Diris, Departamento, Provincia, Distrito, Red, MicroRed, Cat_estab, eess_nombre, mes, año 
, sum(den) den, sum(num) num, sum(num_a) num_a, sum(num_b) num_b
from TRAMAHIS_DL_CG13_2023
group by Diris, Departamento, Provincia, Distrito, Red, MicroRed, Cat_estab, eess_nombre, mes, año 

drop table #his_minsa
drop table #hisminsa_den
drop table #hisminsa_numa
drop table #hisminsa_numa_final
drop table #hisminsa_numb
drop table #hisminsa_numb_final
drop table #tabla_reporte
-- =D


--select año,mes,Provincia,Distrito,Red,MicroRed,renaes,eess_nombre, num_doc, den,num from TRAMAHIS_DL_CG13_2023