/*==============================================================================
FICHA: Indicador Ficha 10: Porcentaje de mujeres de 25 a 64 años con tamizaje para la detección de lesiones premalignas e Incipientes 
-- de cáncer de cuello uterino.
-- DL 1153 2023
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
use DB_UEIS
go

--***************************************************
--				BASES DE DATOS.
--***************************************************
--HIS MINSA 

select id_cita
	, convert(date,FECHA_ATENCION) fecha_atencion
	, convert(int,Codigo_Unico) renaes
	, Id_Tipo_Documento id_tipo_doc
	, Numero_Documento num_doc
	, edad_reg
	, TIPO_DIAGNOSTICO tipo_dx
	, codigo_item cod_item  
	, valor_lab
into #his_minsa
from his_nominal with (nolock)
where --sw=1	and														--Validacion de tipo y numero de documento
codigo_item in (
				'88141'								--PAP
				,'88141.01'							--IVAA
				,'87621'							--VPH
				)
and TIPO_EDAD='A' and ( convert(int,edad_reg) between 25 and 64 )  --Mujeres 25 a 64 años.
and Sexo='F'														--Genero Femenino


--***************************************************
--					SINTAXIS
--***************************************************
create table #tabla_reporte
(
renaes int,
anio int,
mes int,
den int,
num int,
num_ivaa int,
num_pap  int,
num_vph  int
) 

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


set @mes_eval=7 --<=========== Mes de evaluación

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

 while @mes_inicio<=@mes_eval
 begin

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


DELETE FROM TB_F10 WHERE ANIO = @año 

--1. Mujeres de 25 a 64 años identicadas con documento de identidad afiliadas al SIS.
select convert(int,RENIPRES) renaes,
	  @año  anio,
	  SIS den
 into #dpcan_den
from ASEGURADOSIS -- > (Considerar el nuevo SIS para el 2023 !)
group by convert(int,RENIPRES),SIS

--%%%%%%%%%%%%%%%%
-- NUMERADOR
--%%%%%%%%%%%%%%%%dpcan_den

--1.Mujeres de 25 a 64 años con los siguientes examenes.

	--1.1 Resultado Entregado de PAP.
	select distinct renaes, id_tipo_doc, num_doc, num_pap=1
	into #num_pap
	from #his_minsa
	where year(fecha_atencion)=@año
	and month(fecha_atencion)<=@mes_inicio
	and (edad_reg between 25 and 64)
	and cod_item='88141'
	and valor_lab in ('N','A')
	and tipo_dx='D'

	--1.2 Resultado Entregado de IVAA			
	select distinct renaes, id_tipo_doc, num_doc, num_ivaa=1
	into #num_ivaa
	from #his_minsa
	where year(fecha_atencion)=@año
	and month(fecha_atencion)<=@mes_inicio
	and (edad_reg between 30 and 49)
	and cod_item='88141.01'
	and valor_lab in ('N','A')
	and tipo_dx='D'

	--1.2 Resultado Entregado de VPH			
	select distinct renaes, id_tipo_doc, num_doc, num_vph=1
	into #num_vph
	from #his_minsa
	where year(fecha_atencion)=@año
	and month(fecha_atencion)<=@mes_inicio
	and (edad_reg between 30 and 49)
	and cod_item='87621'
	and valor_lab in ('N','A')
	and tipo_dx='D'

	-- Union bases separadas (identificador unico por persona y renaes)
	select distinct renaes, id_tipo_doc, num_doc
	into #base_num
	from (
			select distinct renaes, id_tipo_doc, num_doc from #num_ivaa
			union all
			select distinct renaes, id_tipo_doc, num_doc from #num_pap
			union all
			select distinct renaes, id_tipo_doc, num_doc from #num_vph
	) as t

	--Numeradores Final.
	select renaes, count(*) num, sum(num_ivaa) num_ivaa, sum(num_pap) num_pap, sum(num_vph) num_vph
	into #dpcan_num
	from(
			select a.*
			, isnull(b.num_ivaa,0) num_ivaa
			, isnull(c.num_pap,0) num_pap
			, isnull(d.num_vph,0) num_vph
			from #base_num a
			left join #num_ivaa b on a.renaes=b.renaes and a.id_tipo_doc=b.id_tipo_doc and a.num_doc=b.num_doc
			left join #num_pap c on a.renaes=c.renaes and a.id_tipo_doc=c.id_tipo_doc and a.num_doc=c.num_doc
			left join #num_vph d on a.renaes=d.renaes and a.id_tipo_doc=d.id_tipo_doc and a.num_doc=d.num_doc
	) as t group by renaes

--%%%%%%%%%%%%%%%%
--	INDICADOR
--%%%%%%%%%%%%%%%%
insert into #tabla_reporte
select a.renaes, a.anio, @mes_inicio mes, a.den
, isnull(b.num,0)  num
, isnull(b.num_ivaa,0) num_ivaa
, isnull(b.num_pap,0) num_pap
, isnull(b.num_vph,0) num_vph
from #dpcan_den a 
left join #dpcan_num b on a.renaes=b.renaes
where den>0

drop table #base_num
drop table #dpcan_den
drop table #dpcan_num
drop table #num_ivaa
drop table #num_pap
drop table #num_vph

 set @mes_inicio=@mes_inicio+1

 end

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

SELECT renaes,anio,MAX(den) den, sum(num) num,sum(num_ivaa)num_ivaa,sum(num_pap)num_pap,sum(num_vph) num_voh into #tabla_reporte_final FROM #tabla_reporte
group by renaes,anio

--select * from #tabla_reporte_final

INSERT INTO TB_F10
SELECT u.desc_prov,u.desc_dist,e.Disa,e.Codigo_Red,e.Red,e.Codigo_MicroRed,e.MicroRed,e.Nombre_Establecimiento,e.Categoria,t.*
--INTO TB_F10 
FROM #tabla_reporte_final t 
LEFT join ESTABLECIMIENTOS e on convert(int, t.renaes)=e.Codigo_Unico
inner join maestro_ubigeo u on e.Ubigueo_Establecimiento=u.UBIGEO
where ( u.desc_prov IN('MOYOBAMBA') or (u.ubigeo IN('220502') and convert(int,t.renaes) in('6348','7297','10516'))) --and t.id=1
--and ((t.seguro LIKE concat('%','0','%') or t.seguro LIKE concat('%','1','%') OR t.seguro LIKE concat('%','6','%') OR t.seguro IS NULL OR t.seguro='' )) 
ORDER BY t.anio asc


 delete from TB_F10 
 where  (convert(int,renaes) IN('6291','6282','6292','6293','6295','6296') and Red='RIOJA') -- ubigeo='220101')