0% found this document useful (0 votes)
58 views

Scripts DL1153 Conveniosdegestion2022

This document describes a SQL script that analyzes health records and census data to calculate indicators related to anemia prevention and treatment among children in Peru. The script extracts relevant data from HIS and census databases, defines various subsets and intermediate tables, and ultimately generates a final report with counts and percentages of children who received integrated health services by region, department and province.

Uploaded by

Lex Alvarado
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views

Scripts DL1153 Conveniosdegestion2022

This document describes a SQL script that analyzes health records and census data to calculate indicators related to anemia prevention and treatment among children in Peru. The script extracts relevant data from HIS and census databases, defines various subsets and intermediate tables, and ultimately generates a final report with counts and percentages of children who received integrated health services by region, department and province.

Uploaded by

Lex Alvarado
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 82

Ficha N°01: Porcentaje de niñas y niños de 12 a 18 meses, con diagnóstico de anemia entre los 6 y 11

meses, que se han recuperado.


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

--====================================
-- REDUCIENDO TAMAÑO HIS MINSA
select convert(int,id_cita) id_cita
, convert(date,periodo) fecha_atencion
, convert(int,aniomes) aniomes
, ltrim(rtrim(num_doc)) num_doc
, ltrim(rtrim(id_tipitem)) collate sql_latin1_general_cp1_ci_as tipo
, ltrim(rtrim(cod_item)) collate sql_latin1_general_cp1_ci_as cod_item
, ltrim(rtrim(valor_lab)) collate sql_latin1_general_cp1_ci_as valor_lab
into #his_minsa
from bd_hisindicadores.dbo.tramahisminsa_2019_final_20200302_v1
where ltrim(rtrim(cod_item)) in ('d500','d508','d509','d649','85018','z017','u310','99199.17')
and id_tipo_doc=1 and sw=1

insert into #his_minsa


select convert(int,id_cita) id_cita
, convert(date,periodo) fecha_atencion
, convert(int,aniomes) aniomes
, ltrim(rtrim(num_doc)) num_doc
, ltrim(rtrim(id_tipitem)) collate sql_latin1_general_cp1_ci_as tipo
, ltrim(rtrim(cod_item)) collate sql_latin1_general_cp1_ci_as cod_item
, ltrim(rtrim(valor_lab)) collate sql_latin1_general_cp1_ci_as valor_lab
from bd_hisindicadores.dbo.TramaHisMinsa_Cierre2020_20210419
where ltrim(rtrim(cod_item)) in ('d500','d508','d509','d649','85018','z017','u310','99199.17')
and id_tipo_doc=1 and sw=1

insert into #his_minsa


select convert(int,id_cita) id_cita
, convert(date,periodo) fecha_atencion
, convert(int,aniomes) aniomes
, ltrim(rtrim(num_doc)) num_doc
, ltrim(rtrim(id_tipitem)) collate sql_latin1_general_cp1_ci_as tipo
, ltrim(rtrim(cod_item)) collate sql_latin1_general_cp1_ci_as cod_item
, ltrim(rtrim(valor_lab)) collate sql_latin1_general_cp1_ci_as valor_lab
from bd_hisindicadores.dbo.TramaHisMinsa_202109_20211020
where ltrim(rtrim(cod_item)) in ('d500','d508','d509','d649','85018','z017','u310','99199.17')
and id_tipo_doc=1 and sw=1

-- REDUCIENDO TAMAÑO PADRON NOMINAL


select doc_pnm num_doc
, convert(date,fe_nac_menor) fecha_nac, convert(int,co_ubigeo_inei) ubigeo
, seguro='minsa'
, orden=1
into #padron_nominal
from
(
select doc_pnm, TI_DOC_IDENTIDAD, CO_UBIGEO_INEI, TI_SEGURO_MENOR , FE_NAC_MENOR
from Padron_Nominal_20210930 with (nolock) WHERE TI_DOC_IDENTIDAD=1
and convert(int,TI_SEGURO_MENOR)=1 and sw_pn=1
) pd

----------------------------------------------------

----------------------------------------------------
create table #tabla
(
num_doc nvarchar(8)
, fecha_nac date
, seguro varchar(50)
, ubigeo int
, mes int
, año int
, fecha_dx date
, den int
, num int
, fecha_t1 date
, num_t1 int
, fecha_t2 date
, num_t2 int
, fecha_recup date
, num_recup int
, fecha_dosaje date
, num_dosaje int
)

declare @mes_eval int,


@mes_final int,
@year int ,
@fec_eval_1 date,
@fec_eval_2 date

set @mes_eval=1 -- <========= CAMBIAR MES INICIO


set @mes_final=9 -- <========= CAMBIAR MES FINAL
set @year=2021 -- <========= CAMBIAR AÑO.

while @mes_eval<=@mes_final
begin

set @fec_eval_1=try_convert(date,try_convert(varchar(4),@YEAR)+'-
'+right('00'+try_convert(varchar(2),@mes_eval),2)+'-'+right('00'+try_convert(varchar(2),1),2))
set @fec_eval_2=EOMONTH(try_convert(date,try_convert(varchar(4),@YEAR)+'-
'+right('00'+try_convert(varchar(2),@mes_eval),2)+'-'+right('00'+try_convert(varchar(2),1),2)))

--**************************************
-- DENOMINADOR
--**************************************

-- 1.Reduccion de padron nominal. (Niños con 350 y 573 dias de edad en el mes de evaluación).
select num_doc, fecha_nac, seguro , ubigeo ,@mes_eval mes, @year año
into #padron
from #padron_nominal
where ( ( @fec_eval_2 between dateadd(dd,350,fecha_nac) and dateadd(dd,573,fecha_nac) )
or ( @fec_eval_1 between dateadd(dd,350,fecha_nac) and dateadd(dd,573,fecha_nac) ) )

-- 2. busqueda de niños con anemia entre 170 y 364 dias, que cumplen en el mes de evaluacion 209
dias adicionales a partir del DX.
select num_doc, fecha_dx
into #dx
from (
select a.num_doc, MAX(a.fecha_atencion) fecha_dx
from (
select distinct fecha_atencion, num_doc from #his_minsa
where cod_item in ('D500','D508','D509','D649') and tipo='D'
and fecha_atencion<=@fec_eval_2
) a
inner join #padron b on a.num_doc=b.num_doc collate Latin1_General_CI_AS
where (datediff(dd,b.fecha_nac,a.fecha_atencion) between 170 and 364)
group by a.num_doc
) as t where month(dateadd(dd,209,fecha_dx))=@mes_eval and YEAR(dateadd(dd,209,fecha_dx))=@year

--**************************************
-- NUMERADOR
--**************************************
--3. tratamiento.
select distinct fecha_atencion, num_doc into #tratamientos_his from #his_minsa
where cod_item in ('U310','99199.17') and ( valor_lab in
('SF1','SF2','SF3','P01','P02','PO1','PO2')
or try_convert(int,valor_lab) in ('1','2','3') )
and id_cita in (select distinct id_cita from #his_minsa where cod_item in
('D500','D508','D509','D649') and tipo in ('D','R'))
and fecha_atencion<=@fec_eval_2

-- 3.1 Tratamiento Oportuno


select a.num_doc, min(a.fecha_atencion) fecha_t1 into #trat1 from #tratamientos_his a
inner join #dx b on a.num_doc=b.num_doc collate Latin1_General_CI_AS
where (datediff(dd,b.fecha_dx,a.fecha_atencion) between 0 and 7)
group by a.num_doc

-- 3.2 Continua Tratamiento por 6 meses (Entrega entre 25 a 100 dias [Maximo 2 entregas])
select a.num_doc, min(a.fecha_atencion) fecha_t2 into #trat2 from #tratamientos_his a
inner join #trat1 b on a.num_doc=b.num_doc collate Latin1_General_CI_AS
where (datediff(dd,b.fecha_t1,a.fecha_atencion) between 25 and 100)
group by a.num_doc

--4. Recuperación y Dosaje de HB entre 180 a 209 dias.


select a.num_doc, max(a.fecha_atencion) fecha_recup
into #recup
from (
select distinct fecha_atencion, num_doc from #his_minsa
where valor_lab='PR' and cod_item in ('D500','D508','D509','D649') and tipo='R'
and fecha_atencion<=@fec_eval_2
) a
inner join #dx b on a.num_doc=b.num_doc collate Latin1_General_CI_AS
where (datediff(dd,b.fecha_dx,a.fecha_atencion) between 180 and 209)
group by a.num_doc

select a.num_doc, MAX(a.fecha_atencion) fecha_dosaje


into #dosaje
from (
select distinct fecha_atencion, num_doc from #his_minsa
where cod_item in ('Z017','85018') and tipo='D'
and fecha_atencion<=@fec_eval_2
) a
inner join #dx b on a.num_doc=b.num_doc collate Latin1_General_CI_AS
where (datediff(dd,b.fecha_dx,a.fecha_atencion) between 180 and 209)
group by a.num_doc

--===================
-- BASE FINAL
--===================
select *
, IIF(num_t1=1 and num_t2=1 and num_recup=1 and num_dosaje=1,1,0) num
into #base
from (
select a.*, b.fecha_dx, iif(b.fecha_dx is null,0,1) den
, c.fecha_t1, iif(c.fecha_t1 is null,0,1) num_t1
, d.fecha_t2, iif(d.fecha_t2 is null,0,1) num_t2
, f.fecha_recup, iif(f.fecha_recup is null,0,1) num_recup
, g.fecha_dosaje, iif(g.fecha_dosaje is null,0,1) num_dosaje
from #padron a
inner join #dx b on a.num_doc=b.num_doc collate Latin1_General_CI_AS
left join #trat1 c on a.num_doc=c.num_doc collate Latin1_General_CI_AS
left join #trat2 d on a.num_doc=d.num_doc collate Latin1_General_CI_AS
left join #recup f on a.num_doc=f.num_doc collate Latin1_General_CI_AS
left join #dosaje g on a.num_doc=g.num_doc collate Latin1_General_CI_AS
) as t

insert into #tabla


select num_doc, fecha_nac, seguro, ubigeo, mes, año, fecha_dx, den, num
, fecha_t1, num_t1, fecha_t2, num_t2
, fecha_recup, num_recup, fecha_dosaje, num_dosaje
from #base

drop table #padron


drop table #dx
drop table #tratamientos_his
drop table #trat1
drop table #trat2
drop table #recup
drop table #dosaje
drop table #base

set @mes_eval = @mes_eval + 1


end

--===================
-- REPORTE
--===================
select ubigeo, seguro, mes, año
, sum(den) den, sum(num) num, sum(num_t1) num_t1, sum(num_t2) num_T2, sum(num_dosaje)
num_dosaje, sum(num_recup) num_recup
into #reporte
from #tabla
group by ubigeo, seguro, mes, año

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 dpto
, B.desc_prov prov
, B.desc_dist dist
, B.red, a.*
into #reporte_final
from #reporte a
inner join
Maestro_UBIGEO_20200407 b on CONVERT(int,a.ubigeo)=CONVERT(int,b.ubigeo)
Ficha N° 02: Porcentaje de niñas/niños menores de 12 meses, que reciben un paquete integrado
de servicios preventivos: CRED, vacunas, entrega de hierro (gotas, jarabe o micronutrientes) y
dosaje de hemoglobina para descarte de anemia.

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

--====================================
-- REDUCIENDO TAMAÑO HIS MINSA
select id_cita, LTRIM(rtrim(num_doc)) num_doc, CONVERT(date, periodo) fecha_atencion,
ltrim(rtrim(cod_item)) cod_item, ltrim(rtrim(id_tipitem)) tipo, ltrim(rtrim(valor_lab)) valor_lab
into #HIS_MINSA_COMPLETO from BD_HISINDICADORES.dbo.TramaHisMinsa_202109_20211020
where LTRIM(rtrim(cod_item)) in
(
'90712','90713' --Antipolio
,'90723' --Pentavalente
,'90681' --Rotavirus
,'90670' --Neumococo
,'99381' --CRED
,'85018','Z017' -- DOSAJE
,'Z298','99199.17','99199.19' --Suplementacion/Tratamiento.
,'P073','P071','P0711','P0712' -- Bajo Peso/Prematuro
) and sw=1 and id_tipo_doc in (1,6)

-- REDUCIENDO TAMAÑO PADRON NOMINAL


select distinct NU_DNI_MENOR, NU_CNV
, convert(date,fe_nac_menor) fecha_nac, convert(int,co_ubigeo_inei) ubigeo
, seguro= case
when ti_seguro_menor='1' then 'minsa'
when ti_seguro_menor='2' then 'essalud'
when ti_seguro_menor='3' then 'sanidad ffaa/pnp'
when ti_seguro_menor='4' then 'privado'
else 'sin registro' end
into #padron_nominal
from
(
select NU_DNI_MENOR, NU_CNV, TI_DOC_IDENTIDAD, CO_UBIGEO_INEI, TI_SEGURO_MENOR , FE_NAC_MENOR
from Padron_Nominal_20210930 with (nolock) WHERE (sw_pn=1 or sw_cnv=1) and TI_DOC_IDENTIDAD in
(1,3)
) pd

--------------------------------------------------
create table #tabla_final
(
num_doc nvarchar(10),
fecha_nac date,
edad_dias int,
edad_mes int,
edad_mes_2 int,
mes int ,
año int,
seguro nvarchar(50),
ubigeo int,
den int,
num int,
suple int,
cred int,
dosaje int,
vacuna int
)

declare @mes_eval int,


@mes_final int,
@year int ,
@fec_eval date

set @mes_eval=1 -- <========= CAMBIAR MES INICIO


set @mes_final=9 -- <========= CAMBIAR MES FINAL
set @year=2021 -- <========= CAMBIAR AÑO.

while @mes_eval<=@mes_final
begin

set @fec_eval=try_convert(date,try_convert(varchar(4),@YEAR)+'-
'+right('00'+try_convert(varchar(2),@mes_eval),2)+'-'+right('00'+try_convert(varchar(2),1),2))

-- Corte HIS (Hasta el periodo de evaluación)


select * into #HIS_MINSA from #HIS_MINSA_COMPLETO where fecha_atencion<=eomonth(@fec_eval)
-- Corte Padron Nominal (Todos los que nacen en el año)
select * into #padron_corte from #padron_nominal where YEAR(fecha_nac)>=@year

--================
-- DENOMINADOR
--================
-- Padron Nominal Menores de 12 meses.
select distinct case when NU_DNI_MENOR is null or nu_dni_menor in ('','NULL') then nu_cnv
else nu_dni_menor end num_doc
, fecha_nac, seguro, ubigeo, @mes_eval mes, @year año
, datediff(dd,fecha_nac,eomonth(@fec_eval)) edad_dias, den=1
, BD_HISINDICADORES.dbo.fn_calcula_edadmeses(fecha_nac,eomonth(@fec_eval)) as edad_mes
,case when DATEPART(D,convert(datetime, eomonth(@fec_eval),103)) >=DATEPART(D,convert (datetime,
fecha_nac,103))
THEN ( case when DATEPART(M,convert(datetime, eomonth(@fec_eval),103)) = DATEPART(M,convert
(datetime, fecha_nac,103)) AND
DATEPART(YYYY,convert(datetime, eomonth(@fec_eval), 103)) = DATEPART(YYYY,convert (datetime,
fecha_nac,103))
THEN 0 ELSE DATEDIFF(M,convert (datetime, fecha_nac,103), convert(datetime,
eomonth(@fec_eval),103))END )
ELSE DATEDIFF(M,convert (datetime,fecha_nac,103),convert(datetime, eomonth(@fec_eval),103))-1 END
edad_mes_2
into #padron
from #padron_corte
where (eomonth(@fec_eval) between fecha_nac and dateadd(dd,364,fecha_nac) )

-- Identificar niños con Bajo Peso o Prematuros.


select distinct a.num_doc, bpn=1 into #bpn from #padron a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item in ('P073','P071','P0711','P0712')
and (b.fecha_atencion between a.fecha_nac and dateadd(dd,364,a.fecha_nac) )

--================
-- VACUNAS
--================

-- ANTIPOLIO
-- Dosis1
select distinct a.num_doc, a.edad_dias, b.fecha_atencion fecha_dosis1 into #dosis1_polio from
#padron a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where ( datediff(dd,a.fecha_nac,b.fecha_atencion) between 55 and 119 )
and b.cod_item in ('90712','90713') and a.edad_dias>=120
-- Dosis2
select distinct a.num_doc, a.edad_dias, b.fecha_atencion fecha_dosis2 into #dosis2_polio from
#dosis1_polio a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item in ('90712','90713') and a.edad_dias>=148
and ( datediff(dd,a.fecha_dosis1,b.fecha_atencion) between 28 and 60)
-- Dosis3
select distinct a.num_doc, a.edad_dias, b.fecha_atencion fecha_dosis3 into #dosis3_polio from
#dosis2_polio a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item in ('90712','90713') and a.edad_dias>=208
and ( datediff(dd,a.fecha_dosis2,b.fecha_atencion) between 28 and 60)
select distinct a.num_doc
, case when a.edad_dias<=119 then 1 when a.edad_dias>=208 and b.dosis3=1 then 1
when (a.edad_dias between 148 and 207) and c.dosis2=1 then 1 when (a.edad_dias between 120 and
147) and d.dosis1=1 then 1 else 0 end polio
into #polio from #padron a
left join (select distinct num_doc, dosis3=1 from #dosis3_polio) b on a.num_doc=b.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, dosis2=1 from #dosis2_polio) c on a.num_doc=c.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, dosis1=1 from #dosis1_polio) d on a.num_doc=d.num_doc collate
Modern_Spanish_CI_AS

drop table #dosis1_polio


drop table #dosis2_polio
drop table #dosis3_polio

-- PENTAVALENTE
-- Dosis1
select distinct a.num_doc, a.edad_dias, b.fecha_atencion fecha_dosis1 into #dosis1_penta from
#padron a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where ( datediff(dd,a.fecha_nac,b.fecha_atencion) between 55 and 119 )
and b.cod_item in ('90723') and a.edad_dias>=120
-- Dosis2
select distinct a.num_doc, a.edad_dias, b.fecha_atencion fecha_dosis2 into #dosis2_penta from
#dosis1_penta a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item in ('90723') and a.edad_dias>=148
and ( datediff(dd,a.fecha_dosis1,b.fecha_atencion) between 28 and 60)
-- Dosis3
select distinct a.num_doc, a.edad_dias, b.fecha_atencion fecha_dosis3 into #dosis3_penta from
#dosis2_penta a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item in ('90723') and a.edad_dias>=208
and ( datediff(dd,a.fecha_dosis2,b.fecha_atencion) between 28 and 60)

select distinct a.num_doc


, case when a.edad_dias<=119 then 1 when a.edad_dias>=208 and b.dosis3=1 then 1
when (a.edad_dias between 148 and 207) and c.dosis2=1 then 1 when (a.edad_dias between 120 and
147) and d.dosis1=1 then 1 else 0 end penta
into #penta from #padron a
left join (select distinct num_doc, dosis3=1 from #dosis3_penta) b on a.num_doc=b.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, dosis2=1 from #dosis2_penta) c on a.num_doc=c.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, dosis1=1 from #dosis1_penta) d on a.num_doc=d.num_doc collate
Modern_Spanish_CI_AS

drop table #dosis1_penta


drop table #dosis2_penta
drop table #dosis3_penta

-- ROTAVIRUS
-- Dosis1
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_dosis1 into
#dosis1_rota from #padron a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where ( datediff(dd,a.fecha_nac,b.fecha_atencion) between 55 and 179)
and b.cod_item in ('90681') and a.edad_dias>=180
-- Dosis2 ((máximo hasta 7 meses 29 días = 239)
select distinct a.num_doc, a.edad_dias, b.fecha_atencion fecha_dosis2 into #dosis2_rota from
#dosis1_rota a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item in ('90681') and a.edad_dias>=208 and
b.fecha_atencion<=DATEADD(dd,239,a.fecha_nac)
and ( datediff(dd,a.fecha_dosis1,b.fecha_atencion) between 28 and 60)

select distinct a.num_doc


, case when a.edad_dias<=179 then 1 when a.edad_dias>=208 and b.dosis2=1 then 1
when (a.edad_dias between 180 and 207) and c.dosis1=1 then 1 else 0 end rota
into #rota from #padron a
left join (select distinct num_doc, dosis2=1 from #dosis2_rota) b on a.num_doc=b.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, dosis1=1 from #dosis1_rota) c on a.num_doc=c.num_doc collate
Modern_Spanish_CI_AS

drop table #dosis1_rota


drop table #dosis2_rota

-- NEUMOCOCO
-- Dosis1
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_dosis1 into
#dosis1_neumo from #padron a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where ( datediff(dd,a.fecha_nac,b.fecha_atencion) between 55 and 119)
and b.cod_item in ('90670') and a.edad_dias>=120
-- Dosis2
select distinct a.num_doc, a.edad_dias, b.fecha_atencion fecha_dosis2 into #dosis2_neumo from
#dosis1_neumo a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item in ('90670') and a.edad_dias>=148
and ( datediff(dd,a.fecha_dosis1,b.fecha_atencion) between 28 and 60)

select distinct a.num_doc


, case when a.edad_dias<=119 then 1 when a.edad_dias>=148 and b.dosis2=1 then 1
when (a.edad_dias between 120 and 147) and c.dosis1=1 then 1 else 0 end neumo
into #neumo from #padron a
left join (select distinct num_doc, dosis2=1 from #dosis2_neumo) b on a.num_doc=b.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, dosis1=1 from #dosis1_neumo) c on a.num_doc=c.num_doc collate
Modern_Spanish_CI_AS

drop table #dosis1_neumo


drop table #dosis2_neumo

-- REPORTE VACUNAS FINAL


select a.num_doc, max(iif(b.neumo=1 and c.penta=1 and d.rota=1 and e.polio=1,1,0)) vacuna into
#vacunas from #padron a
left join #neumo b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
left join #penta c on a.num_doc=c.num_doc collate Modern_Spanish_CI_AS
left join #rota d on a.num_doc=d.num_doc collate Modern_Spanish_CI_AS
left join #polio e on a.num_doc=e.num_doc collate Modern_Spanish_CI_AS group by a.num_doc

drop table #neumo


drop table #penta
drop table #polio
drop table #rota

--================
-- CRED
--================

-- Cred1
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred1 into #cred1
from #padron a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=60 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 29 and 59)
-- Cred2
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred2 into #cred2
from #cred1 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=90 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 60 and 89) and datediff(dd,a.fecha_cred1,b.fecha_atencion)>=28
-- Cred3
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred3 into #cred3
from #cred2 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=120 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 90 and 119) and datediff(dd,a.fecha_cred2,b.fecha_atencion)>=28
-- Cred4
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred4 into #cred4
from #cred3 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=150 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 120 and 149) and datediff(dd,a.fecha_cred3,b.fecha_atencion)>=28
-- Cred5
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred5 into #cred5
from #cred4 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=180 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 150 and 179) and datediff(dd,a.fecha_cred4,b.fecha_atencion)>=28
-- Cred6
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred6 into #cred6
from #cred5 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=210 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 180 and 209) and datediff(dd,a.fecha_cred5,b.fecha_atencion)>=28
-- Cred7
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred7 into #cred7
from #cred6 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=240 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 210 and 239) and datediff(dd,a.fecha_cred6,b.fecha_atencion)>=28
-- Cred8
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred8 into #cred8
from #cred7 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=270 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 240 and 269) and datediff(dd,a.fecha_cred7,b.fecha_atencion)>=28
-- Cred9
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred9 into #cred9
from #cred8 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=300 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 270 and 299) and datediff(dd,a.fecha_cred8,b.fecha_atencion)>=28
-- Cred10
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred10 into #cred10
from #cred9 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=330 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 300 and 329) and datediff(dd,a.fecha_cred9,b.fecha_atencion)>=28
-- Cred11
select distinct a.num_doc, a.fecha_nac, a.edad_dias, b.fecha_atencion fecha_cred11 into #cred11
from #cred10 a inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381' and a.edad_dias>=364 and (datediff(dd,a.fecha_nac,b.fecha_atencion)
between 330 and 364) and datediff(dd,a.fecha_cred10,b.fecha_atencion)>=28

-- REPORTE CRED FINAL


select num_doc , max(cred) cred into #cred
from (
select a.num_doc
, case when a.edad_dias<60 then 1
when a.edad_dias>=364 and b.cred11=1 then 1
when (a.edad_dias between 330 and 363) and c.cred10=1 then 1
when (a.edad_dias between 300 and 329) and d.cred9=1 then 1
when (a.edad_dias between 270 and 299) and e.cred8=1 then 1
when (a.edad_dias between 240 and 269) and f.cred7=1 then 1
when (a.edad_dias between 210 and 239) and g.cred6=1 then 1
when (a.edad_dias between 180 and 209) and h.cred5=1 then 1
when (a.edad_dias between 150 and 170) and i.cred4=1 then 1
when (a.edad_dias between 120 and 149) and j.cred3=1 then 1
when (a.edad_dias between 90 and 119) and k.cred2=1 then 1
when (a.edad_dias between 60 and 89) and m.cred1=1 then 1 else 0 end cred
from #padron a
left join (select distinct num_doc, cred11=1 from #cred11) b on a.num_doc=b.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred10=1 from #cred10) c on a.num_doc=c.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred9=1 from #cred9) d on a.num_doc=d.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred8=1 from #cred8) e on a.num_doc=e.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred7=1 from #cred7) f on a.num_doc=f.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred6=1 from #cred6) g on a.num_doc=g.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred5=1 from #cred5) h on a.num_doc=h.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred4=1 from #cred4) i on a.num_doc=i.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred3=1 from #cred3) j on a.num_doc=j.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred2=1 from #cred2) k on a.num_doc=k.num_doc collate
Modern_Spanish_CI_AS
left join (select distinct num_doc, cred1=1 from #cred1) m on a.num_doc=m.num_doc collate
Modern_Spanish_CI_AS
) as t group by num_doc

drop table #cred1


drop table #cred10
drop table #cred11
drop table #cred2
drop table #cred3
drop table #cred4
drop table #cred5
drop table #cred6
drop table #cred7
drop table #cred8
drop table #cred9

--================
-- DOSAJE
--================

select distinct A.num_doc, dosaje=1 into #temp_dosaje from #padron a


inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where cod_item in ('85018','Z017') and (datediff(dd,fecha_nac,fecha_atencion) between 170 and
269)

select distinct a.num_doc


, case when a.edad_dias<=269 then 1
when a.edad_dias>=270 and b.dosaje=1 then 1 else 0 end dosaje
into #dosaje
from #padron a left join #temp_dosaje b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS

drop table #temp_dosaje

--================
-- SUPLEMENTACION
--================
select distinct a.num_doc, a.edad_dias, a.fecha_nac, b.fecha_atencion
,iif(cod_item in ('Z298','99199.17') and valor_lab in
('SF1','SF2','SF3','SF4','SF5','SF6','SF7','SF8','SF9','S10','S11','S12'),1,0) suple_sf
,iif(cod_item in ('Z298','99199.17') and valor_lab in
('P01','P02','P03','P04','P05','P06','P07','P08','P09','P10','P11','P12','PO1','PO2','PO3','PO4',
'PO5','PO6','PO7','PO8','PO9'),1,0) suple_po
,iif(cod_item in ('Z298','99199.19') and try_convert(int,valor_lab) in
('1','2','3','4','5','6','7','8','9','10','11','12'),1,0) suple_mn
into #temp_suple from #padron a
inner join #HIS_MINSA b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item in ('Z298','99199.19','99199.17')

----------------------------
-- ESQUEMA 4 MESES.
select num_doc, max(iif(suple_po=1,2,iif(suple_sf=1,1,0))) suple4_1 into #suple4_1
from #temp_suple where edad_dias>=131 and (datediff(dd,fecha_nac,fecha_atencion) between 110 and
130) group by num_doc

select num_doc, max(iif(suple_po=1,2,iif(suple_sf=1,1,0))) suple4_2 into #suple4_2


from #temp_suple where edad_dias>=180 and (datediff(dd,fecha_nac,fecha_atencion) between 131 and
179) group by num_doc

select num_doc, max(suple4) suple4 into #suple4


from (
select distinct a.num_doc
, case when d.bpn=1 then 1 when a.edad_dias<=130 then 1
when (a.edad_dias between 131 and 179) and b.suple4_1>=1 then 1
when a.edad_dias>=180 and isnull(b.suple4_1,0)+isnull(c.suple4_2,0)>=2 then 1 else 0 end suple4
from #padron a
left join #bpn d on a.num_doc=d.num_doc
left join #suple4_1 b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
left join #suple4_2 c on a.num_doc=c.num_doc collate Modern_Spanish_CI_AS
) as t group by num_doc

drop table #suple4_1


drop table #suple4_2

----------------------------
-- ESQUEMA 6 MESES.
select num_doc, max(iif(suple_po=1,3,iif(suple_sf=1,2,iif(suple_mn=1,1,0)))) suple6_1 into
#suple6_1
from #temp_suple where edad_dias>=210 and (datediff(dd,fecha_nac,fecha_atencion) between 170 and
209) group by num_doc

select num_doc, max(iif(suple_po=1,3,iif(suple_sf=1,2,iif(suple_mn=1,1,0)))) suple6_2 into


#suple6_2
from #temp_suple where edad_dias>=240 and (datediff(dd,fecha_nac,fecha_atencion) between 210 and
239) group by num_doc

select num_doc, max(iif(suple_po=1,3,iif(suple_sf=1,2,iif(suple_mn=1,1,0)))) suple6_3 into


#suple6_3
from #temp_suple where edad_dias>=270 and (datediff(dd,fecha_nac,fecha_atencion) between 240 and
269) group by num_doc

select num_doc, max(iif(suple_po=1,3,iif(suple_sf=1,2,iif(suple_mn=1,1,0)))) suple6_4 into


#suple6_4
from #temp_suple where edad_dias>=300 and (datediff(dd,fecha_nac,fecha_atencion) between 270 and
299) group by num_doc

select num_doc, max(iif(suple_po=1,3,iif(suple_sf=1,2,iif(suple_mn=1,1,0)))) suple6_5 into


#suple6_5
from #temp_suple where edad_dias>=330 and (datediff(dd,fecha_nac,fecha_atencion) between 300 and
329) group by num_doc

select num_doc, max(iif(suple_po=1,3,iif(suple_sf=1,2,iif(suple_mn=1,1,0)))) suple6_6 into


#suple6_6
from #temp_suple where edad_dias>=364 and (datediff(dd,fecha_nac,fecha_atencion) between 330 and
364) group by num_doc

select num_doc, max(suple6) suple6 into #suple6


from (
select distinct a.num_doc
, case when a.edad_dias<=209 then 1
when (a.edad_dias between 210 and 239) and b.suple6_1>=1 then 1
when (a.edad_dias between 240 and 269) and (isnull(b.suple6_1,0)+ISNULL(c.suple6_2,0))>=2 then 1
when (a.edad_dias between 270 and 299) and
(isnull(b.suple6_1,0)+ISNULL(c.suple6_2,0)+ISNULL(d.suple6_3,0))>=3 then 1
when (a.edad_dias between 300 and 329) and
(isnull(b.suple6_1,0)+ISNULL(c.suple6_2,0)+ISNULL(d.suple6_3,0)+ISNULL(e.suple6_4,0))>=4 then 1
when (a.edad_dias between 330 and 363) and
(isnull(b.suple6_1,0)+ISNULL(c.suple6_2,0)+ISNULL(d.suple6_3,0)+ISNULL(e.suple6_4,0)+ISNULL(f.sup
le6_5,0))>=5 then 1
when a.edad_dias>=364 and
(isnull(b.suple6_1,0)+ISNULL(c.suple6_2,0)+ISNULL(d.suple6_3,0)+ISNULL(e.suple6_4,0)+ISNULL(f.sup
le6_5,0)+ISNULL(g.suple6_6,0))>=6 then 1
else 0 end suple6
from #padron a
left join #suple6_1 b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
left join #suple6_2 c on a.num_doc=c.num_doc collate Modern_Spanish_CI_AS
left join #suple6_3 d on a.num_doc=d.num_doc collate Modern_Spanish_CI_AS
left join #suple6_4 e on a.num_doc=e.num_doc collate Modern_Spanish_CI_AS
left join #suple6_5 f on a.num_doc=f.num_doc collate Modern_Spanish_CI_AS
left join #suple6_6 g on a.num_doc=g.num_doc collate Modern_Spanish_CI_AS
) as t group by num_doc

drop table #suple6_1


drop table #suple6_2
drop table #suple6_3
drop table #suple6_4
drop table #suple6_5
drop table #suple6_6

select num_doc , max(suple) suple into #suple


from (
select a.num_doc
, case when a.edad_dias<=130 then 1
when a.edad_dias>130 and (b.suple4=1 or c.suple6=1) then 1 else 0 end suple
from #padron a
left join #suple4 b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
left join #suple6 c on a.num_doc=c.num_doc collate Modern_Spanish_CI_AS
) as t group by num_doc

drop table #suple4


drop table #suple6

--================
-- TABLA FINAL
--================

insert into #tabla_final


select a.num_doc, a.fecha_nac, a.edad_dias, a.edad_mes, a.edad_mes_2, a.mes, a.año, a.seguro,
a.ubigeo, den=1
, iif(isnull(b.suple,0)+isnull(c.cred,0)+isnull(d.dosaje,0)+isnull(e.vacuna,0)>=4,1,0) num
, isnull(b.suple,0) suple, isnull(c.cred,0) cred, isnull(d.dosaje,0) dosaje, isnull(e.vacuna,0)
vacuna
from #padron a
left join #suple b on a.num_doc=b.num_doc collate Modern_Spanish_CI_AS
left join #cred c on a.num_doc=c.num_doc collate Modern_Spanish_CI_AS
left join #dosaje d on a.num_doc=d.num_doc collate Modern_Spanish_CI_AS
left join #vacunas e on a.num_doc=e.num_doc collate Modern_Spanish_CI_AS

drop table #padron


drop table #bpn
drop table #padron_corte
drop table #HIS_MINSA
drop table #vacunas
drop table #cred
drop table #dosaje
drop table #suple
drop table #temp_suple

set @mes_eval = @mes_eval + 1


end

--===================
-- REPORTE
--===================
select a.*, b.DIRIS, b.DESC_DPTO, b.DESC_PROV, b.DESC_DIST
from (
select ubigeo, seguro, edad_mes, edad_mes_2, año, mes
, sum(den) den, sum(num) num, sum(suple) suple
, sum(cred) cred, sum(dosaje) dosaje, sum(vacuna) vacuna
from #tabla_final
group by ubigeo, seguro, edad_mes, edad_mes_2, año, mes
) a
inner join Maestro_UBIGEO_20200407 b on CONVERT(int, a.ubigeo)=CONVERT(int,b.UBIGEO)
FUNCIONES GENERADAS PARA SU USO EN EL SCRIPT

 Fn_Calcula_Edad

CREATE FUNCTION [dbo].[fn_Calcula_Edad] (@dtFecNac datetime, @dtFecha datetime)


RETURNS int
AS
BEGIN
DECLARE @edad int
SET @edad= case when year(@dtFecha) = year(@dtFecNac) then 0 else
case when right(convert(varchar(8),@dtFecNac,112),4) <=
right(convert(varchar(8),@dtFecha,112),4)
then year(@dtFecha) - year(@dtFecNac) else year(@dtFecha) - year(@dtFecNac) - 1 end
end
RETURN(@edad)
END

 Fn_Calcula_EdadMes
create FUNCTION [dbo].[fn_Calcula_EdadMeses] (@dtFecNac datetime, @dtFechaCorte datetime)
RETURNS int
AS
BEGIN
DECLARE @meses int

set @meses =
case
WHEN MONTH(CONVERT(DATE,@dtFecNac,103)) IN (1,3,5,7,8,10,12) AND
DAY(CONVERT(DATE,@dtFecNac,103))=31 THEN
DATEDIFF(MONTH,CONVERT(DATE,@dtFecNac,103),CONVERT(DATE,@dtFechaCorte,103))
WHEN MONTH(CONVERT(DATE,@dtFecNac,103)) IN (4,6,9,11) AND DAY(CONVERT(DATE,@dtFecNac,103))=30
THEN DATEDIFF(MONTH,CONVERT(DATE,@dtFecNac,103),CONVERT(DATE,@dtFechaCorte,103))
ELSE
CASE
when year(@dtFecNac) = year(@dtFechaCorte) -- años iguales
then
case when month(@dtFecNac) = month(@dtFechaCorte)
then
case when day(@dtFecNac) = day(@dtFechaCorte) then 0
when day(@dtFecNac) < day(@dtFechaCorte) then 0
else 1/0 end
when month(@dtFecNac) < month(@dtFechaCorte)
then
case when day(@dtFecNac) = day(@dtFechaCorte) then month(@dtFechaCorte) - month(@dtFecNac)
when day(@dtFecNac) < day(@dtFechaCorte) then month(@dtFechaCorte) - month(@dtFecNac)
else month(@dtFechaCorte) - month(@dtFecNac) - 1 end

else 1/0 end


when year(@dtFecNac) < year(@dtFechaCorte)
then
case when month(@dtFecNac) = month(@dtFechaCorte)
then
case when day(@dtFecNac) = day(@dtFechaCorte) then
[BD_HISINDICADORES].dbo.fn_Calcula_Edad(@dtFecNac,@dtFechaCorte)*12
when day(@dtFecNac) < day(@dtFechaCorte) then
[BD_HISINDICADORES].dbo.fn_Calcula_Edad(@dtFecNac,@dtFechaCorte)*12
else [BD_HISINDICADORES].dbo.fn_Calcula_Edad(@dtFecNac,@dtFechaCorte)*12 + 11 end
when month(@dtFecNac) < month(@dtFechaCorte)
then
case when day(@dtFecNac) = day(@dtFechaCorte) then
[BD_HISINDICADORES].dbo.fn_Calcula_Edad(@dtFecNac,@dtFechaCorte)*12 + month(@dtFechaCorte) -
month(@dtFecNac)
when day(@dtFecNac) < day(@dtFechaCorte) then
[BD_HISINDICADORES].dbo.fn_Calcula_Edad(@dtFecNac,@dtFechaCorte)*12 + month(@dtFechaCorte) -
month(@dtFecNac)
else [BD_HISINDICADORES].dbo.fn_Calcula_Edad(@dtFecNac,@dtFechaCorte)*12 + month(@dtFechaCorte)
- month(@dtFecNac) - 1 end
else case when day(@dtFecNac) = day(@dtFechaCorte) then
([BD_HISINDICADORES].dbo.fn_Calcula_Edad(@dtFecNac,@dtFechaCorte) + 1 ) *12 + month(@dtFechaCorte)
- month(@dtFecNac)
when day(@dtFecNac) < day(@dtFechaCorte) then
([BD_HISINDICADORES].dbo.fn_Calcula_Edad(@dtFecNac,@dtFechaCorte) + 1 )*12 + month(@dtFechaCorte) -
month(@dtFecNac)
else ([BD_HISINDICADORES].dbo.fn_Calcula_Edad(@dtFecNac,@dtFechaCorte) + 1 )*12 +
month(@dtFechaCorte) - month(@dtFecNac) - 1 end end
else 1/0 end
END
RETURN(@meses)
END
Ficha N° 3 Porcentaje de recién nacidos con dos controles CRED.
/*==============================================================================
FICHA: Indicador N°3 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
use BD_HISINDICADORES
go

------------------------------------------------------------
---REDUCCION PADRON NOMINAL.
select *
into #Padron_Nominal
from Padron_Nominal_20210930 with (nolock)
where (sw_pn=1 or sw_cnv=1)

--- INFORMACIÓN HIS-MINSA.


select distinct id_cita, periodo, ltrim(rtrim(num_doc)) num_doc, aniomes,
ltrim(rtrim(id_tipitem)) id_tipitem
, ltrim(rtrim(cod_item)) cod_item, ltrim(rtrim(valor_lab)) valor_lab
into #TRAMA_HIS
from TramaHisMinsa_202109_20211020
where ltrim(rtrim(cod_item)) in ('P070','P0711','P0712','99381.01')
and sw=1 and id_tipo_doc in (1,6)

insert into #TRAMA_HIS


select distinct id_cita, periodo, ltrim(rtrim(num_doc)) num_doc, aniomes,
ltrim(rtrim(id_tipitem)) id_tipitem
, ltrim(rtrim(cod_item)) cod_item, ltrim(rtrim(valor_lab)) valor_lab
from TramaHisMinsa_Cierre2020_20210419
where ltrim(rtrim(cod_item)) in ('P070','P0711','P0712','99381.01')
and sw=1 and id_tipo_doc in (1,6) and aniomes='202012'
-----------------------------------------------------------------

create table #TRAMAHIS_CG_03_NOMINAL


(
año int,
mes int,
departam nvarchar(255),
provincia nvarchar(255),
distrito nvarchar(255),
diris nvarchar(255),
RED nvarchar(255),
dni nvarchar(50),
fecha_nac date,
seguro int,
ubi_res varchar(6),
fecha_cred1 date,
cred1 int,
fecha_cred2 date,
cred2 int,
num int,
den int
)

declare @anio_eval int, @mes_eval int, @mes_final int


declare @fec_eval date
set @anio_eval=2021
set @mes_final=9
set @mes_eval=1

while @mes_eval <= @mes_final


begin
set @fec_eval=convert(date,try_convert(varchar(4),@anio_eval)+'-
'+RIGHT('0'+try_convert(varchar(2),@mes_eval,2),2)+'-'+RIGHT('0'+try_convert(varchar(2),1,2),2))
-- DENOMINADOR
select distinct dni , fecha_nac, fecha_fin, seguro, ubi_res
, MONTH(Convert(date,DATEADD(DD,14,fecha_nac))) mes
, YEAR(Convert(date,DATEADD(DD,14,fecha_nac))) año
into #padron_03
from (
select distinct
case when a.nu_dni_menor is null or a.nu_dni_menor in ('','NULL') then a.NU_CNV
else a.nu_dni_menor end dni, ti_doc_identidad, a.NU_CNV,a.NU_DNI_MENOR,
TRY_CONVERT(DATE,a.fe_nac_menor) fecha_nac,
Convert(date,DATEADD(DD,14,fe_nac_menor)) fecha_fin,
TRY_CONVERT(INT,a.ti_seguro_menor) seguro,
a.co_ubigeo_inei ubi_res
from #padron_nominal a
where ti_doc_identidad in (1,3)
and (datediff(dd,a.fe_nac_menor,@fec_eval)<=14
and datediff(dd,a.fe_nac_menor,eomonth(@fec_eval))>=14)
) as t

select a.num_doc
into #bpn
FROM #TRAMA_HIS a
INNER join #padron_03 b on a.num_doc collate database_default = b.dni collate database_default
where ( try_convert(date,a.periodo) between b.fecha_nac and b.fecha_fin )
and a.COD_ITEM IN ('P070','P0711','P0712')

select *
into #padronf_03
from #padron_03
where dni collate database_default not in (select distinct num_doc from #bpn)

-- NUMERADOR

-- CRED1
select distinct a.dni, a.fecha_nac, a.fecha_fin, convert(date,b.periodo) fecha_cred1
into #cred1_03
from #padronf_03 a
inner join #TRAMA_HIS b on a.dni=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381.01'
and (convert(date,b.periodo) between dateadd(dd,3,a.fecha_nac) and a.fecha_fin)

-- CRED2
select distinct a.dni, a.fecha_nac, a.fecha_fin, a.fecha_cred1, convert(date,b.periodo)
fecha_cred2
into #cred2_03
from #cred1_03 a
inner join #TRAMA_HIS b on a.dni=b.num_doc collate Modern_Spanish_CI_AS
where b.cod_item='99381.01'
and (convert(date,b.periodo) between dateadd(dd,3,a.fecha_nac) and a.fecha_fin)
and DATEDIFF(dd,a.fecha_cred1,convert(date,b.periodo))>=3

select dni, min(fecha_cred1) fecha_cred1, cred1=1 into #tmp01 from #cred1_03 group by dni
select dni, min(fecha_cred2) fecha_cred2, cred2=1 into #tmp02 from #cred2_03 group by dni

insert into #TRAMAHIS_CG_03_NOMINAL


select CONVERT(INT,p.año) año, convert(int,p.mes) mes,
u.desc_dpto departam, u.desc_prov provincia, u.desc_dist distrito, u.DIRIS diris,u.RED,
p.dni, try_convert(date,p.fecha_nac) fecha_nac, p.seguro, p.ubi_res,
try_convert(date,t1.fecha_cred1) fecha_Cred1, isnull(cred1,0) cred1
, try_convert(date,t2.fecha_cred2) fecha_cred2, isnull(cred2,0) cred2, isnull(cred2,0) num,
den=1
from #padronf_03 p
left join #tmp01 t1 on p.dni collate database_default=t1.dni collate database_default
left join #tmp02 t2 on p.dni collate database_default=t2.dni collate database_default
left join BD_HISINDICADORES.DBO.Maestro_UBIGEO_20200407 u on p.ubi_res=try_convert(int,u.ubigeo)

drop table #padronf_03


drop table #padron_03
drop table #tmp01
drop table #tmp02
DROP table #bpn
drop table #cred1_03
drop table #cred2_03

set @mes_eval = @mes_eval + 1


end

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

select año, mes, departam, provincia, distrito, diris, red, ubi_res, seguro, count(*) padron,
sum(num) num, sum(den) den
into #TRAMAHIS_CG_03_CONSOLIDADO
from #TRAMAHIS_CG_03_NOMINAL
group by año, mes, departam, provincia, distrito, diris, red, ubi_res, seguro
Ficha N°04: Porcentaje de niñas y niños de 4 meses de edad que inician suplementación
con gotas de hierro
/*==============================================================================
FICHA: Indicador N°4 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/

USE BD_HISINDICADORES

DECLARE @MES_INICIO INT ,


@MES_FINAL INT ,
@YEAR INT

SET @MES_INICIO=1 -- <========= CAMBIAR MES INICIO


SET @MES_FINAL=9 -- <========= CAMBIAR MES FINAL
SET @YEAR=2021 -- <========= CAMBIAR AÑO.

-- **** CAMBIAR BASE DE DATOS ACTUALIZADAS ****


------------------------------------------------------------------------------------
-- HIS-MINSA
SELECT ID_CITA
, RENAES
, CONVERT(DATE,PERIODO) FECHA_ATENCION
, fecha_registro FECHA_REGISTRO
, LTRIM(RTRIM(NUM_DOC)) NUM_DOC
, LTRIM(RTRIM(ID_TIPITEM)) TIPO
, LTRIM(RTRIM(COD_ITEM)) COD_ITEM
, LTRIM(RTRIM(VALOR_LAB)) VALOR_LAB
INTO #TRAMAHIS
FROM TramaHisMinsa_202109_20211020
WHERE YEAR(CONVERT(DATE,PERIODO))=@YEAR AND MONTH(CONVERT(DATE,PERIODO))<=@MES_FINAL
AND id_tipo_doc=1 AND SW=1

-- PADRON
select doc_pnm num_doc,*
into #padron_nominal
from
(
select *
from Padron_Nominal_20210930 with (nolock) WHERE TI_DOC_IDENTIDAD=1 and SW_pn=1
) pd

-- RENAES.
SELECT *
INTO #RENAES
FROM Renaes_20211020
------------------------------------------------------------------------------------

--==================================
-- ´HIS MINSA Y PADRON NOMINAL.
--==================================

-- ATENCION ENTRE LOS 110 Y 149 DIAS DE NACIDOS.


SELECT *
INTO #TEMP1
FROM (
SELECT A.*
, B.FE_NAC_MENOR FECHA_NACIMIENTO
, DATEDIFF(DD,B.FE_NAC_MENOR,A.FECHA_ATENCION) EDAD_DIAS
, DEN=1
, MONTH(A.FECHA_ATENCION) MES
, YEAR(A.FECHA_ATENCION) AÑO
, IIF(DATEDIFF(DD,B.FE_NAC_MENOR,A.FECHA_ATENCION) BETWEEN 110 AND 149,1,0) ID
FROM #TRAMAHIS A
INNER JOIN #padron_nominal B ON a.num_doc=b.num_doc collate Latin1_General_CI_AS
) AS T
WHERE ID=1

--========================================
--- INDICADOR
--=========================================

-- SUPLEMENTACION DE HIERRO.
SELECT *
, IIF(SUPLE=1 AND DEN=1,1,0) NUM
INTO #TEMP2
FROM (
SELECT *
, IIF(
COD_ITEM in ('Z298','99199.17') AND (
VALOR_LAB IN ('SF1','SF2','SF3','SF4','SF5')
OR VALOR_LAB IN ('P01','P02','P03','P04','P05')
OR VALOR_LAB IN ('PO1','PO2','PO3','PO4','PO5'))
,1,0) SUPLE
FROM #TEMP1
) AS T

--===============================================
-- CRITERIOS DE ELECCION.
SELECT *
, MAX(NUM) OVER (PARTITION BY num_DOC) ID_1 --> IDENTIFICAR LOS NIÑOS QUE HAN RECIBIDO GOTAS. (1
= NIÑO QUE RECIBIO GOTAS | 0 = NIÑO QUE NO RECIBIO GOTAS)
INTO #TEMP3
FROM #TEMP2

--- NIÑOS QUE RECIBIERON GOTAS.


SELECT *
INTO #TEMP3_GOTAS
FROM (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY num_DOC ORDER BY FECHA_ATENCION ASC, FECHA_REGISTRO ASC) ID_2
--> IDENTIFICO AL PRIMER EESS QUE ENTREGO GOTAS AL NIÑO.
FROM #TEMP3
WHERE ID_1=1 AND NUM=1 --> NIÑO QUE RECIBIO GOTAS Y ESTABLECIMIENTO QUE LE DIO LAS GOTAS.
) AS T
WHERE ID_2=1

ALTER TABLE #TEMP3_GOTAS DROP COLUMN ID_2

--- NIÑOS QUE NO RECIBIERON GOTAS.


SELECT *
INTO #TEMP3_NOGOTAS
FROM #TEMP3
WHERE ID_1=0

-- UNION DE LA BASE DE NIÑOS FINAL ( CON GOTAS Y SIN GOTAS)


SELECT *
INTO #TEMP4
FROM #TEMP3_GOTAS
UNION ALL
SELECT *
FROM #TEMP3_NOGOTAS

--=====================================
-- COLLAPSE
--===================================
SELECT num_doc, RENAES, MES ,AÑO
, MAX(DEN) DEN, MAX(NUM) NUM
INTO #DL1153_2020_04_NOMINAL
FROM #TEMP4
GROUP BY num_doc, RENAES, MES , AÑO

SELECT RENAES, MES ,AÑO


, SUM(DEN) DENOMINADOR, SUM(NUM) NUMERADOR
INTO #COLLAPSE2
FROM #DL1153_2020_04_NOMINAL
GROUP BY RENAES, MES , AÑO

SELECT A.RENAES
, B.CAT_ESTAB
, B.AMBITO
, B.UBIGEO
, CASE WHEN b.DESC_DPTO='LIMA' and B.DESC_PROV not in ('LIMA') then 'LIMA PROVINCIAS'
WHEN b.DESC_DPTO='LIMA' and B.DESC_PROV in ('LIMA') THEN 'LIMA METROPOLITANA' ELSE B.DESC_DPTO
END DEPARTAMENTO
, B.DESC_PROV PROVINCIA
, B.DESC_DIST DISTRITO
, B.DESC_RED
, B.DESC_MRED
, B.DESC_ESTAB EST_NOMBRE
, B.id_establecimiento ID_EESS_TRAMAHIS
, C.DIRIS
, A.AÑO
, A.MES
, A.NUMERADOR
, A.DENOMINADOR
INTO #COLLAPSE_FINAL
FROM #COLLAPSE2 A
INNER JOIN
#RENAES B ON CONVERT(INT,A.RENAES)=CONVERT(INT,B.COD_ESTAB)
LEFT JOIN
Maestro_UBIGEO_20200407 C ON CONVERT(INT,B.UBIGEO)=CONVERT(INT,C.UBIGEO)
WHERE B.CAT_ESTAB IN ('I-1','I-2','I-3','I-4','II-1','II-2','II-E')

--===================
-- REPORTE
--===================
select RENAES,ID_EESS_TRAMAHIS, CAT_ESTAB, AMBITO, RIGHT('000000'+RTRIM(LTRIM(UBIGEO)),6) UBIGEO
, DEPARTAMENTO, PROVINCIA, DISTRITO, DESC_RED, DESC_MRED, EST_NOMBRE, DIRIS, AÑO
,MES= case
when mes=1 then 'ENERO'
when mes=2 then 'FEBRERO'
when mes=3 then 'MARZO'
when mes=4 then 'ABRIL'
when mes=5 then 'MAYO'
when mes=6 then 'JUNIO'
when mes=7 then 'JULIO'
when mes=8 then 'AGOSTO'
when mes=9 then 'SETIEMBRE'
when mes=10 then 'OCTUBRE'
when mes=11 then 'NOVIEMBRE'
when mes=12 then 'DICIEMBRE' end
, DENOMINADOR, NUMERADOR
INTO #DL1153_2020_04_CONSOLIDADO
from #COLLAPSE_FINAL
Ficha N°05: Porcentaje de gestantes con paquete preventivo completo

/*==============================================================================
FICHA: Indicador N°5 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/

USE BD_HISINDICADORES

DECLARE @MES_INICIO INT ,


@MES_FINAL INT ,
@YEAR INT

SET @MES_INICIO=1 -- <========= CAMBIAR MES INICIO


SET @MES_FINAL=9 -- <========= CAMBIAR MES FINAL
SET @YEAR=2021 -- <========= CAMBIAR AÑO.

-- **** CAMBIAR BASE DE DATOS ACTUALIZADAS ****


------------------------------------------------------------------------------------
-- REDUCIENDO BASE DE DATOS.
-- renaes
SELECT * INTO #RENAES
FROM BD_HISINDICADORES.DBO.Renaes_20211020

-- cnv
select
LTRIM(rtrim(NU_DOC_MADRE)) ndoc
,convert(date,fe_nacido) fecha_nac
, convert(int,dur_emb_parto) semana_nac
, DPTO_DOM_MADRE + PROV_DOM_MADRE + DIST_DOM_MADRE ubigeoreniec
into #cnv_cnv
from BD_BACKUP_OGEI.dbo.MEF_TramaCNV_20211010
where
convert(int,TIP_DOC_MADRE)=1
and sw_dni=1
and try_convert(int,CONT_DOM_MADRE)=92 and try_convert(int,PAIS_DOM_MADRE)=33 --> SOLO PARTOS
DE GESTANTES DOMICILIADAS EN PERÚ.
and convert(int,dur_emb_parto)>=37 and dur_emb_parto is not null --> PARTOS CON EDAD GESTACIONAL
MAYOR O IGUAL A 37 SEMANAS.
and convert(int,tip_lugar_nacido)=1 --> PARTOS REALIZADOS EN ESTABLECIMIENTOS DE SALUD.
and convert(int,co_local) in (select distinct convert(int,COD_ESTAB) from #renaes where
convert(int,ambito)=1) --> PARTOS REALIZADOS EN ESTABLECIMIENTOS DEL MINSA.
and month(convert(date,fe_nacido))>=@mes_inicio
and month(convert(date,fe_nacido))<=@mes_final
and year(convert(date,fe_nacido))=@YEAR

-- HIS.
SELECT ID_CITA, CONVERT(DATE,PERIODO) FECHA_ATENDIDO, ltrim(rtrim(NUM_DOC)) num_doc,
LTRIM(RTRIM(ID_TIPITEM)) TIPO, LTRIM(RTRIM(COD_ITEM)) COD_ITEM, LTRIM(RTRIM(VALOR_LAB)) VALOR_LAB
INTO #HIS_MINSA
FROM BD_HISINDICADORES.DBO.TramaHisMinsa_202109_20211020
WHERE YEAR(CONVERT(DATE,PERIODO))=@YEAR
AND MONTH(CONVERT(DATE,PERIODO))>=@MES_INICIO
AND MONTH(CONVERT(DATE,PERIODO))<=@MES_FINAL
AND LTRIM(RTRIM(COD_ITEM)) IN (
'85018','85018.01'
,'86780','86592','86593','86318.01'
,'86703','86703.02','87389','86318.01'
,'81007','81002','81000.02'
,'80055.01'
,'Z3491','Z3492','Z3493','Z3591','Z3592','Z3593','Z359','Z349'
,'59401.04','99199.26','O990'
)
AND id_tipo_doc=1 and sw=1

insert INTO #HIS_MINSA


SELECT ID_CITA, CONVERT(DATE,PERIODO) FECHA_ATENDIDO, ltrim(rtrim(NUM_DOC)) NUM_DOC,
LTRIM(RTRIM(ID_TIPITEM)) TIPO, LTRIM(RTRIM(COD_ITEM)) COD_ITEM, LTRIM(RTRIM(VALOR_LAB)) VALOR_LAB
FROM BD_HISINDICADORES.DBO.TramaHisMinsa_Cierre2020_20210419
WHERE YEAR(CONVERT(DATE,PERIODO))=2020
AND LTRIM(RTRIM(COD_ITEM)) IN (
'85018','85018.01'
,'86780','86592','86593','86318.01'
,'86703','86703.02','87389','86318.01'
,'81007','81002','81000.02'
,'80055.01'
,'Z3491','Z3492','Z3493','Z3591','Z3592','Z3593','Z359','Z349'
,'59401.04','99199.26','O990'
)
AND id_tipo_doc=1 and sw=1
------------------------------------------------------------------------------------

--================
-- CNV
--================
--1. Variables del CNV elegidas para el indicador.
select ndoc, fecha_nac, ubigeoreniec , MAX(semana_nac) semana_nac
into #cnv_previo from #cnv_cnv
group by ndoc, fecha_nac, ubigeoreniec

---*** GENERACION DE SEMANAS DE GESTANTE (TRIMESTRES GESTANTES) ***


------------------------------------------------------------------
SELECT t1.año, t1.semana, min(t1.mes) min_mes,
(select min(dia) from DIM_FECHA_MIDIS where semana = t1.Semana and año = t1.Año and Mes =
min(t1.mes)) min_dia
,MIN(convert(date,FECHA)) AS FECHA
INTO #DimFechaMin
FROM DIMFECHA_MIDIS t1
GROUP BY t1.año, t1.semana
------------------------------------------------------------------
select a.*
, DATEADD(DAY,-1,dfMin1.fecha) AS Fecha_trimestre1
, DATEADD(DAY,-1,dfMin2.fecha) AS Fecha_trimestre2
into #cnv
from(
select a.*, dfMin.fecha inicio_gestacion
from #cnv_previo a
join DIMFECHA_MIDIS df on DATEADD(dd,-(a.semana_nac*7),a.fecha_nac)=df.Fecha
JOIN #DimFechaMin dfMin on df.Año = dfMin.Año and df.Semana = dfMin.Semana
) a
JOIN DIMFECHA_MIDIS df1 on DATEADD(DAY,(14*7),a.inicio_gestacion)= CONVERT(DATE,df1.Fecha)
JOIN #DimFechaMin dfMin1 on df1.Año = dfMin1.Año and df1.Semana = dfMin1.Semana
JOIN DIMFECHA_MIDIS df2 on DATEADD(DAY,(28*7),a.inicio_gestacion)= CONVERT(DATE,df2.Fecha)
JOIN #DimFechaMin dfMin2 on df2.Año = dfMin2.Año and df2.Semana = dfMin2.Semana

--- eliminar niño ---


select ndoc
,min(fecha_nac) minfecha_nac
into #elimina_menor
from #cnv
where convert(varchar,ndoc)+'-'+convert(varchar(6), month(fecha_nac),112)+ubigeoreniec
in (select ndoc+'-'+convert(varchar(6), month(fecha_nac),112)+ubigeoreniec
from #cnv
group by ndoc+'-'+convert(varchar(6), month(fecha_nac),112)+ubigeoreniec
having count(*) >1
)
group by ndoc
--------------------------------------------

delete from #cnv


where convert(varchar,ndoc)+'-'+convert(varchar(8),fecha_nac,112) IN (
select convert(varchar,ndoc)+'-'+convert(varchar(8),minfecha_nac,112)
FROM #elimina_menor
)

--2. Estableciento la ubicacion de residencia segun CNV y Partos en Establecimientos del MINSA Y
REGIONALES.
SELECT *, DEN=1
INTO #CNV_FINAL
FROM (
SELECT
A.*
, B.UBIGEO
, CASE WHEN B.DESC_DPTO='LIMA' AND B.DESC_PROV NOT IN ('LIMA') THEN 'LIMA PROVINCIAS'
WHEN B.DESC_DPTO='LIMA' AND B.DESC_PROV IN ('LIMA') THEN 'LIMA METROPOLITANA'
ELSE B.DESC_DPTO END DESC_DPTO
, B.DESC_PROV
, B.DESC_DIST
, B.DIRIS
, B.RED
FROM #CNV A
INNER JOIN
Maestro_UBIGEO_20200407 B ON CONVERT(INT,A.UBIGEORENIEC)=CONVERT(INT,B.UBIGEORENIEC)
) AS T

--==========================
-- ATENDIDOS
--=========================
--UNION DE BASE DE HIS Y CNV
SELECT A.* , B.FECHA_ATENDIDO , B.ID_CITA , B.TIPO, B.COD_ITEM , B.VALOR_LAB
INTO #ATENDIDOS FROM #CNV_FINAL A
LEFT JOIN #HIS_MINSA B ON A.ndoc=B.num_doc collate Latin1_General_CI_AS

---*** GENERACION DE SEMANAS DE GESTANTE (TRIMESTRES GESTANTES) ***


SELECT *
, MONTH(FECHA_NAC) MES, YEAR(FECHA_NAC) AÑO
INTO #TEMP1
FROM #ATENDIDOS

--*** GENERACION DE ATENCION DE GESTANTES POR CITA *****


SELECT *
, MAX(TEMP_GEST) OVER (PARTITION BY ID_CITA, ndoc) DUMMY_GESTANTE
INTO #TEMP2
FROM (
SELECT *
,IIF(COD_ITEM IN ('Z349','Z3491','Z3492','Z3493'
,'Z359','Z3591','Z3592','Z3593'),1,0) TEMP_GEST
FROM #TEMP1
) AS T

--================================================================
-- INDICADORES
--================================================================

--1. Examenes auxiliares o perfil obstetrico.


SELECT *
,IIF (FECHA_TRIMESTRE1>=FECHA_ATENDIDO AND DEN=1 AND FECHA_ATENDIDO IS NOT NULL AND
FECHA_TRIMESTRE1 IS NOT NULL AND FECHA_ATENDIDO<FECHA_NAC AND FECHA_ATENDIDO>=INICIO_GESTACION
AND DUMMY_GESTANTE=1 AND TIPO='D'AND COD_ITEM IN ('85018','85018.01'),1,0) temp_Exam_hemoglobina
,IIF (FECHA_TRIMESTRE1>=FECHA_ATENDIDO AND DEN=1 AND FECHA_ATENDIDO IS NOT NULL AND
FECHA_TRIMESTRE1 IS NOT NULL AND FECHA_ATENDIDO<FECHA_NAC AND FECHA_ATENDIDO>=INICIO_GESTACION
AND DUMMY_GESTANTE=1 AND TIPO='D'AND COD_ITEM IN ('86780','86592','86593','86318.01'),1,0)
temp_Exam_sifilis
,IIF (FECHA_TRIMESTRE1>=FECHA_ATENDIDO AND DEN=1 AND FECHA_ATENDIDO IS NOT NULL AND
FECHA_TRIMESTRE1 IS NOT NULL AND FECHA_ATENDIDO<FECHA_NAC AND FECHA_ATENDIDO>=INICIO_GESTACION

AND DUMMY_GESTANTE=1 AND TIPO='D'AND COD_ITEM IN ('86703','86703.02','87389','86318.01'),1,0)


temp_Exam_vih
,IIF (FECHA_TRIMESTRE1>=FECHA_ATENDIDO AND DEN=1 AND FECHA_ATENDIDO IS NOT NULL AND
FECHA_TRIMESTRE1 IS NOT NULL AND FECHA_ATENDIDO<FECHA_NAC AND FECHA_ATENDIDO>=INICIO_GESTACION

AND DUMMY_GESTANTE=1 AND TIPO='D'AND COD_ITEM IN ('81007','81002','81000.02'),1,0)


temp_bacteriuria
,IIF (fECHA_TRIMESTRE1>=FECHA_ATENDIDO AND DEN=1 AND FECHA_ATENDIDO IS NOT NULL AND
FECHA_TRIMESTRE1 IS NOT NULL AND FECHA_ATENDIDO<FECHA_NAC AND FECHA_ATENDIDO>=INICIO_GESTACION
AND DUMMY_GESTANTE=1 AND TIPO='D'AND COD_ITEM='80055.01',1,0) temp_exam_bateria
INTO #TEMP4
FROM #TEMP2

--2. Realizar al menos 4 atenciones prenatales en el transcurso del embarazo.


SELECT *
, IIF(DEN=1 AND FECHA_ATENDIDO<=fECHA_TRIMESTRE1 AND FECHA_ATENDIDO>=INICIO_GESTACION
AND COD_ITEM IN ('Z3491','Z3492','Z3493','Z3591','Z3592','Z3593'),1,0) temp_apn1
, IIF(DEN=1 AND FECHA_ATENDIDO<=fECHA_TRIMESTRE2 AND FECHA_ATENDIDO>fECHA_TRIMESTRE1
AND COD_ITEM IN ('Z3491','Z3492','Z3493','Z3591','Z3592','Z3593'),1,0) temp_apn2
, IIF(DEN=1 AND FECHA_ATENDIDO<fECHA_nac AND FECHA_ATENDIDO>fECHA_TRIMESTRE2
AND COD_ITEM IN ('Z3491','Z3492','Z3493','Z3591','Z3592','Z3593'),1,0) temp_apn3
INTO #TEMP5
FROM #TEMP4

--3. Al menos 3 entregas de suplementos en el transcurso del embarazo.


--- ***** ATENCION SUPLEMENTO *****
SELECT *
, MAX(IIF(COD_ITEM='O990',1,0)) OVER (PARTITION BY ID_CITA, ndoc) TEMP_SUP
INTO #TEMP6 FROM #TEMP5

SELECT *
, IIF(
DEN=1
AND FECHA_ATENDIDO<FECHA_NAC
AND FECHA_ATENDIDO IS NOT NULL
AND FECHA_ATENDIDO>=INICIO_GESTACION
AND DUMMY_GESTANTE=1
AND (
COD_ITEM IN ('59401.04')
OR
COD_ITEM IN ('99199.26')
OR
(COD_ITEM IN ('99199.26') AND TEMP_SUP=1)
OR
(COD_ITEM IN ('59401.04') AND TEMP_SUP=1)
),1,0) TEMP_SUPLEMENTO
INTO #TEMP7
FROM #TEMP6

--================================================================
-- INDICADORES
--===============================================================

SELECT
FECHA_ATENDIDO
, NDOC
, UBIGEO
, DESC_DPTO
, desc_prov
, desc_dist
, DIRIS
, RED
, AÑO
, MES
, MAX(DEN) DEN
, MAX(TEMP_EXAM_HEMOGLOBINA) ex_aux_hemoglobina, MAX(temp_bacteriuria) ex_aux_bacteriuria
, MAX(TEMP_EXAM_SIFILIS) ex_aux_sifilis, MAX(TEMP_EXAM_VIH) ex_aux_vih, MAX(TEMP_EXAM_BATERIA)
ex_bateria
, MAX(temp_apn1) apn1, max(temp_apn2) apn2, max(temp_apn3) apn3
, MAX(temp_suplemento) sup_compuesto
INTO #TEMP8
FROM #TEMP7
GROUP BY
FECHA_ATENDIDO
, NDOC
, UBIGEO
, DESC_DPTO
, desc_prov
, desc_dist
, DIRIS
, RED
, AÑO
, MES

SELECT
NDOC
, UBIGEO
, DESC_DPTO
, desc_prov
, desc_dist
, DIRIS
, RED
, AÑO
, MES
, MAX(DEN) DEN
, MAX(ex_aux_hemoglobina) ex_aux_hemoglobina, MAX(ex_aux_bacteriuria) ex_aux_bacteriuria,
MAX(ex_aux_sifilis) ex_aux_sifilis
, MAX(ex_aux_vih) ex_aux_vih, MAX(ex_bateria) ex_bateria
, SUM(apn1) apn1, SUM(apn2) apn2, SUM(apn3) apn3
, SUM(sup_compuesto) sup_compuesto
INTO #TEMP9
FROM #TEMP8
GROUP BY
NDOC
, UBIGEO
, DESC_DPTO
, desc_prov
, desc_dist
, DIRIS
, RED
, AÑO
, MES

--==========================
-- GENERACION INDICADORES2
--=========================
--Indicador
select *, IIF(num1=1 and num2=1,1,0) num_12,
IIF(num1=1 and num2=1 and num3=1,1,0) num
into #DL1153_2021_05_NOMINAL
from (
select *,
IIF(ex_bateria=1 or ex_aux=1,1,0) num1, IIF(apn1>=1 and apn2>=1 and apn3>=2,1,0) num2,
IIF(sup_compuesto>=3,1,0) num3
from (
select * ,
iif(ex_aux_hemoglobina=1 and ex_aux_bacteriuria=1 and ex_aux_sifilis=1 and ex_aux_vih=1,1,0)
ex_aux,
iif(ex_aux_hemoglobina=1 and ex_aux_bacteriuria=1 and ex_aux_sifilis=1,1,0) ex_aux_hos,
iif(ex_aux_hemoglobina=1 and ex_aux_bacteriuria=1 and ex_aux_vih=1,1,0) ex_aux_hov,
iif(ex_aux_hemoglobina=1 and ex_aux_sifilis=1 and ex_aux_vih=1,1,0) ex_aux_hsv,
iif(ex_aux_bacteriuria=1 and ex_aux_sifilis=1 and ex_aux_vih=1,1,0) ex_aux_osv
from #TEMP9
)as t0
)as t1

--===================
-- REPORTE
--===================
select ubigeo, desc_dpto, desc_prov, desc_dist, diris, red ,mes ,año,
sum(den) denominador, SUM(num) numerador, SUM(num1) num1, SUM(num2) num2, SUM(num3) num3
into #collapse_3
from #DL1153_2021_05_NOMINAL
group by ubigeo, desc_dpto, desc_prov, desc_dist, diris, red ,mes ,año

select ubigeo, desc_dpto departamento, desc_prov provincia, desc_dist distrito, diris, red, año,
mes= case
when mes=1 then 'Enero'
when mes=2 then 'Febrero'
when mes=3 then 'Marzo'
when mes=4 then 'Abril'
when mes=5 then 'Mayo'
when mes=6 then 'Junio'
when mes=7 then 'Julio'
when mes=8 then 'Agosto'
when mes=9 then 'Setiembre'
when mes=10 then 'Octubre'
when mes=11 then 'Noviembre'
when mes=12 then 'Diciembre' end, denominador, numerador, num1, num2, num3
INTO #DL1153_2021_05_CONSOLIDADO
from #collapse_3
Ficha N°06: Porcentaje de niñas/niños recién nacidos de parto institucional vacunados con BCG y
Antihepatitis B antes del alta
/*==============================================================================
FICHA: Indicador N°6 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
USE BD_HISINDICADORES

DECLARE @MES_INICIO INT ,


@MES_FINAL INT ,
@YEAR INT,
@FECHA_FIN DATE

SET @MES_INICIO=1 -- <========= CAMBIAR MES INICIO


SET @MES_FINAL=9 -- <========= CAMBIAR MES FINAL
SET @YEAR=2021 -- <========= CAMBIAR AÑO.
SET @fecha_fin=DATEADD(DD,0,DATEADD(MONTH,1,CONVERT(DATE,try_convert(varchar(4),@YEAR)+'-
'+try_convert(varchar(2),@MES_FINAL)+'-'+try_convert(varchar(2),'01'))))

-- **** CAMBIAR BASE DE DATOS ACTUALIZADAS ****


------------------------------------------------------------------------------------
-- REDUCIENDO BASE DE DATOS.
SELECT nu_cnv, fe_nacido, co_local, TIP_LUGAR_NACIDO
INTO #CNV
from BD_BACKUP_OGEI.dbo.MEF_TramaCNV_20211010 with (nolock)
where MONTH(CONVERT(DATE,FE_NACIDO))>=@MES_INICIO
AND MONTH(CONVERT(DATE,FE_NACIDO))<=@MES_FINAL
AND YEAR(CONVERT(DATE,FE_NACIDO))=@YEAR
AND TRY_CONVERT(INT,PESO_NACIDO)>=2000 --> SE EXCLUYE NIÑOS NACIDOS CON MENOS DE 2000 gr.
and sw_cnv=1

SELECT ID_CITA
, CONVERT(DATE,PERIODO) FECHA_ATENDIDO, ltrim(rtrim(NUM_DOC)) num_doc, RENAES
, LTRIM(RTRIM(ID_TIPITEM)) TIPO, LTRIM(RTRIM(COD_ITEM)) COD_ITEM, LTRIM(RTRIM(VALOR_LAB))
VALOR_LAB
INTO #HIS_MINSA
FROM BD_HISINDICADORES.DBO.TramaHisMinsa_202109_20211020
WHERE LTRIM(RTRIM(COD_ITEM)) IN ('90585','90744') --> CODIGOS ANTERIORES!!
and sw=1 and id_tipo_doc in (1,6) and
YEAR(CONVERT(DATE,PERIODO))=@YEAR
AND CONVERT(DATE,PERIODO)<=@fecha_fin

SELECT *
INTO #RENAES
FROM BD_HISINDICADORES.DBO.Renaes_20211020
WHERE CONVERT(INT,AMBITO)=1 --> PARTOS EN ESTABLECIMIENTOS DEL MINSA.
AND LTRIM(RTRIM(CAT_ESTAB)) in ('II-1','II-2','II-E','III-1','III-E','III-2')
------------------------------------------------------------------------------------

--================
-- CNV
--================
--1. Variables del CNV elegidas para el indicador.
SELECT
NU_CNV NUM_DOC
, MONTH(CONVERT(DATE,FE_NACIDO)) MES
, YEAR(CONVERT(DATE,FE_NACIDO)) AÑO
, CONVERT(DATE,FE_NACIDO) FECHA_NAC
, CO_LOCAL RENAES
INTO #CNV2
FROM #CNV
WHERE CONVERT(INT,TIP_LUGAR_NACIDO)=1 --> PARTOS REALIZADOS EN ESTABLECIMIENTOS DE SALUD.

--2. Estableciento la ubicacion de residencia segun CNV y Partos en Establecimientos del MINSA Y
REGIONALES. (NIVEL: HOSPITAL)
SELECT
A.*
, B.UBIGEO
, CASE WHEN B.DESC_DPTO='LIMA' AND B.DESC_PROV NOT IN ('LIMA') THEN 'LIMA PROVINCIAS'
WHEN B.DESC_DPTO='LIMA' AND B.DESC_PROV IN ('LIMA') THEN 'LIMA METROPOLITANA'
ELSE B.DESC_DPTO END DESC_DPTO
, B.DESC_PROV
, B.DESC_DIST
, B.DIRIS
, C.desc_red RED
, C.id_establecimiento ID_EESS_TRAMAHIS
, C.AMBITO
, C.CAT_ESTAB
, ISNULL(CONVERT(INT,C.CAMAS),0) CAMAS
, IIF(ISNULL(CONVERT(INT,C.CAMAS),0)>=50,1,0) DUMMY_CAMAS
, C.DESC_ESTAB EESS_NOMBRE
, DEN=1
INTO #CNV_FINAL
FROM #CNV2 A
INNER JOIN #Renaes C ON CONVERT(INT,A.RENAES)=CONVERT(INT,C.COD_ESTAB)
INNER JOIN Maestro_UBIGEO_20200407 B ON CONVERT(INT,C.UBIGEO)=CONVERT(INT,B.UBIGEO)

--==========================
-- ATENDIDOS
--=========================
--UNION DE BASE DE HIS Y CNV
SELECT A.*, b.FECHA_ATENDIDO, b.id_cita, b.TIPO, b.COD_ITEM, b.VALOR_LAB
INTO #ATENDIDOS
FROM #CNV_FINAL A LEFT JOIN #HIS_MINSA B ON CONVERT(INT,A.RENAES)=CONVERT(INT,B.renaes) AND
A.NUM_DOC=B.num_doc collate sql_latin1_general_cp1_ci_as

--================================================================
-- INDICADORES
--================================================================

--1. NUM_DOC QUE RECIBIERON 1 DOSIS DE VACUNA BCG DENTRO DE LAS 24 HORAS
SELECT *
, MAX(TEMP_BCG) OVER (PARTITION BY num_doc) NUM_BCG
INTO #TEMP1
FROM (
SELECT *, IIF(FECHA_ATENDIDO IS NOT NULl AND FECHA_NAC IS NOT NULL AND (
DATEDIFF(DD,FECHA_NAC,FECHA_ATENDIDO) BETWEEN 0 AND 1 )
AND COD_ITEM IN ('90585'),1,0) TEMP_BCG
FROM #ATENDIDOS
) AS T

--2. NUM_DOC QUE RECIBIERON 1 DOSIS DE VACUNA HVB DENTRO DE LAS 24 HORAS
SELECT *
, MAX(TEMP_HVB) OVER (PARTITION BY num_doc) NUM_HVB
INTO #TEMP2
FROM (
SELECT *
, IIF(FECHA_ATENDIDO IS NOT NULL AND FECHA_NAC IS NOT NULL AND (
DATEDIFF(DD,FECHA_NAC,FECHA_ATENDIDO) BETWEEN 0 AND 1 )
AND COD_ITEM IN ('90744'),1,0) TEMP_HVB
FROM #TEMP1
) AS T

--===================
-- REPORTE
--===================
SELECT
num_doc
, MES
, AÑO
, UBIGEO
, DESC_DPTO
, DESC_PROV
, DESC_DIST
, DIRIS
, RED
, CAT_ESTAB
, CAMAS
, DUMMY_CAMAS
, EESS_NOMBRE
, ID_EESS_TRAMAHIS
, RENAES
, MAX(DEN) DEN, MAX(NUM_HVB) NUM_HVB, MAX(NUM_BCG) NUM_BCG
INTO #TEMP3
FROM #TEMP2
GROUP BY
num_doc
, MES
, AÑO
, UBIGEO
, DESC_DPTO
, DESC_PROV
, DESC_DIST
, DIRIS
, RED
, CAT_ESTAB
, CAMAS
, DUMMY_CAMAS
, EESS_NOMBRE
, ID_EESS_TRAMAHIS
, RENAES

SELECT *
, IIF(NUM_HVB=1 AND NUM_BCG=1,1,0) NUM
INTO #DL1153_2021_06_NOMINAL
FROM #TEMP3

SELECT
MES
, AÑO
, UBIGEO
, DESC_DPTO
, DESC_PROV
, DESC_DIST
, DIRIS
, RED
, CAT_ESTAB
, CAMAS
, DUMMY_CAMAS
, EESS_NOMBRE
, ID_EESS_TRAMAHIS
, RENAES
, SUM(DEN) DENOMINADOR, SUM(NUM) NUMERADOR, SUM(NUM_HVB) NUM_HVB, SUM(NUM_BCG ) NUM_BCG
INTO #DL1153_2021_06_CONSOLIDADO
FROM #DL1153_2021_06_NOMINAL
GROUP BY
MES
, AÑO
, UBIGEO
, DESC_DPTO
, DESC_PROV
, DESC_DIST
, DIRIS
, RED
, CAT_ESTAB
, CAMAS
, DUMMY_CAMAS
, EESS_NOMBRE
, ID_EESS_TRAMAHIS
, RENAES
Ficha N°07: Porcentaje de abandonos al tratamiento de Tuberculosis Sensible (TBS)

/*==============================================================================
FICHA: Indicador N°7 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/

USE BD_HISINDICADORES

-- Tabla Insumo.
SELECT Codigo_TB, CONVERT(int,eess_renaes) eess_renaes, Excluido_esquema, Condicion_egreso,
case when año_egreso='' then null
else CONVERT(date,convert(char(4),año_egreso)+'-'+right('00'+convert(char(2),mes_egreso),2)+'-
'+right('00'+convert(char(2),dia_egreso),2)) end fecha_egreso,
case when año_initto='' then null
else CONVERT(date,convert(char(4),año_initto)+'-'+right('00'+convert(char(2),mes_initto),2)+'-
'+right('00'+convert(char(2),dia_initto),2)) end fecha_tto
INTO #TABLA
FROM tbl_dl1153_2022_Ind7TB_mes10

----------------------
-- MES DE EVALUACIÓN
--===================
select *,
case when year(fecha_tto)=2021 then MONTH(fecha_tto)
when year(fecha_tto)=2020 then MONTH(fecha_egreso) end mes_eval
into #tabla_ind
from #TABLA

--=================
-- DENOMINADOR
--=================
select codigo_tb, eess_renaes, mes_eval, den=1 into #denominador
from #tabla_ind where excluido_esquema not in ('Sí')

--=================
-- NUMERADOR
--=================
select codigo_tb, eess_renaes, mes_eval, num=1 into #numerador
from #tabla_ind where excluido_esquema not in ('Sí') and condicion_egreso='Abandono'

--===================
-- REPORTE
--===================
SELECT A.*, ISNULL(B.NUM,0) num
into #nominal
FROM #denominador a
LEFT JOIN #numerador B ON a.CODIGO_TB=B.CODIGO_TB AND a.eess_renaes=B.eess_renaes AND
a.mes_eval=B.mes_eval

select eess_renaes, mes_eval, SUM(den) den, SUM(num) num


into #consolidado
from #nominal
group by eess_renaes, mes_eval

SELECT A.*, B.DIRIS diris, B.desc_dpto dpto, B.desc_red red, B.desc_prov prov, B.desc_mred mred,
B.desc_dist dist, B.cat_estab, B.desc_estab
FROM #consolidado A
INNER JOIN BD_HISINDICADORES.dbo.Renaes_20211020 B ON
CONVERT(INT,A.eess_renaes)=CONVERT(INT,B.cod_estab)
Ficha N°08: Porcentaje de Sintomáticos Respiratorios BK (+) por Nivel de Riesgo de Tuberculosis
/*==============================================================================
FICHA: Indicador N°8 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/

USE BD_HISINDICADORES

-- Tabla Insumo.
SELECT CONVERT(int,cod_renaes) eess_cod,*
INTO #TABLA
FROM tbl_dl1153_2022_Ind8TB_mes10

--=================
-- NUMERADOR
--=================
select * INTO #TEMP_SRI
from #TABLA
WHERE INDICADOR='SRI'

SELECT eess_cod, MES, TOTAL_MES DENOMINADOR


INTO #DENOMINADOR
FROM #TEMP_SRI
UNPIVOT
(
TOTAL_MES
FOR [MES] IN (MES_1, MES_2,MES_3, MES_4, MES_5, MES_6, MES_7, MES_8, MES_9, MES_10, MES_11,
MES_12)
) AS P
WHERE TOTAL_MES>0

--=================
-- DENOMINADOR
--=================
select * INTO #TEMP_SREBK
from #TABLA
WHERE INDICADOR='SRExBK(+)'

SELECT eess_cod, MES, TOTAL_MES NUMERADOR


INTO #NUMERADOR
FROM #TEMP_SREBK
UNPIVOT
(
TOTAL_MES
FOR [MES] IN (MES_1, MES_2,MES_3, MES_4, MES_5, MES_6, MES_7, MES_8, MES_9, MES_10, MES_11,
MES_12)
) AS P
WHERE TOTAL_MES>0

--===================
-- REPORTE
--===================
SELECT a.eess_cod, CONVERT(INT,SUBSTRING(a.MES,5,2)) mes, denominador, ISNULL(B.NUMERADOR,0)
numerador
INTO #TABLA_FINAL
FROM #DENOMINADOR A
LEFT JOIN #NUMERADOR B ON A.MES=B.MES AND A.eess_cod=b.eess_cod

SELECT A.*, B.DIRIS diris, B.desc_dpto dpto, B.desc_red red, B.desc_prov prov, B.desc_mred mred,
B.desc_dist dist, B.cat_estab, B.desc_estab
FROM #TABLA_FINAL A
INNER JOIN BD_HISINDICADORES.dbo.Renaes_20211020 B ON
CONVERT(INT,A.eess_cod)=CONVERT(INT,B.cod_estab)
Ficha N°09: 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.
/*==============================================================================
FICHA: Indicador N°9 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
USE BD_HISINDICADORES

-- **** CAMBIAR BASE DE DATOS ACTUALIZADAS ****


------------------------------------------------------------------------------------
-- REDUCIENDO BASE DE DATOS.
SELECT *
INTO #HIS_MINSA
FROM BD_HISINDICADORES.DBO.TramaHisMinsa_202109_20211020
WHERE LTRIM(RTRIM(COD_ITEM)) IN ('88141', '88141.01','87621')
AND ID_TIPEDAD_REG='A' --> EDAD EN AÑOS.
AND ID_GENERO='F' --> MUJERES
AND ( CONVERT(INT,EDAD_REG) BETWEEN 25 AND 64 ) --> ENTRE 25 Y 64 AÑOS
AND SW=1

SELECT *
INTO #RENAES
FROM Renaes_20211020

SELECT A.*, B.cod_estab,ISNULL(CONVERT(INT,B.CAMAS),0) CAMAS


INTO #SIS_CANCER
FROM DL1153_2022_SISCANCER A
INNER JOIN
#RENAES B ON CONVERT(INT,A.ID_EESS)=CONVERT(INT,B.COD_ESTAB)

--=================================================================
-- INDICADOR
--==================================================================

---- DENOMINADOR.

DECLARE @MES_INICIO INT ,


@MES_FINAL INT ,
@YEAR INT

SET @MES_INICIO=1 -- <========= CAMBIAR MES INICIO


SET @MES_FINAL=9 -- <========= CAMBIAR MES FINAL
SET @YEAR=2021 -- <========= CAMBIAR AÑO.

--- Información del DEN.


SELECT *
, @YEAR AÑO
INTO #DEN_2
FROM #SIS_CANCER

--- Resultado Entregado de PAP


SELECT *, NUM_PAP=1
INTO #PAP_2
FROM (
SELECT DISTINCT RENAES, ID_TIPO_DOC, ltrim(rtrim(NUM_DOC)) num_doc
FROM #HIS_MINSA
WHERE YEAR(CONVERT(DATE,PERIODO))=@YEAR
AND MONTH(CONVERT(DATE,PERIODO))>=@MES_INICIO AND MONTH(CONVERT(DATE,PERIODO))<=@MES_FINAL
AND (CONVERT(INT,EDAD_REG) BETWEEN 25 AND 64)
AND LTRIM(RTRIM(COD_ITEM))='88141'
AND LTRIM(RTRIM(VALOR_LAB)) IN ('N','A')
AND LTRIM(RTRIM(id_tipitem)) IN ('D')
) AS T

--- Resultado Entregado de IVAA


SELECT *, NUM_IVAA=1
INTO #IVAA_2
FROM (
SELECT DISTINCT RENAES, ID_TIPO_DOC, ltrim(rtrim(NUM_DOC)) num_doc
FROM #HIS_MINSA
WHERE YEAR(CONVERT(DATE,PERIODO))=@YEAR
AND MONTH(CONVERT(DATE,PERIODO))>=@MES_INICIO AND MONTH(CONVERT(DATE,PERIODO))<=@MES_FINAL
AND (CONVERT(INT,EDAD_REG) BETWEEN 30 AND 49)
AND LTRIM(RTRIM(COD_ITEM))='88141.01'
AND LTRIM(RTRIM(VALOR_LAB)) IN ('N','A')
AND LTRIM(RTRIM(id_tipitem)) IN ('D')
) AS T

--- Resultado Entregado de VPH


SELECT *, NUM_VPH=1
INTO #VPH_2
FROM (
SELECT DISTINCT RENAES, ID_TIPO_DOC, ltrim(rtrim(NUM_DOC)) num_doc
FROM #HIS_MINSA
WHERE YEAR(CONVERT(DATE,PERIODO))=@YEAR
AND MONTH(CONVERT(DATE,PERIODO))>=@MES_INICIO AND MONTH(CONVERT(DATE,PERIODO))<=@MES_FINAL
AND (CONVERT(INT,EDAD_REG) BETWEEN 30 AND 49)
AND LTRIM(RTRIM(COD_ITEM))='87621'
AND LTRIM(RTRIM(VALOR_LAB)) IN ('N','A')
AND LTRIM(RTRIM(id_tipitem)) IN ('D')
) AS T

--- Union y distinct de todos los documentos.


SELECT DISTINCT RENAES, id_tipo_doc, num_doc
INTO #TEMP_2
FROM (
SELECT * FROM #IVAA_2
UNION ALL
SELECT * FROM #PAP_2
UNION ALL
SELECT * FROM #VPH_2
) AS T

-- NUMERADOR
SELECT A.*,
ISNULL(B.NUM_IVAA,0) NUM_IVAA ,
ISNULL(C.NUM_PAP,0) NUM_PAP ,
ISNULL(D.NUM_VPH,0) NUM_VPH
INTO #TEMP_FINAL_2
FROM #TEMP_2 A
LEFT JOIN
#IVAA_2 B ON A.renaes=B.renaes AND A.id_tipo_doc=B.id_tipo_doc AND A.num_doc=B.num_doc
LEFT JOIN
#PAP_2 C ON A.renaes=C.renaes AND A.id_tipo_doc=C.id_tipo_doc AND A.num_doc=C.num_doc
LEFT JOIN
#VPH_2 D ON A.renaes=D.renaes AND A.id_tipo_doc=D.id_tipo_doc AND A.num_doc=D.num_doc

--- NUMERADOR FINAL


select renaes, count(*) Casos, sum(NUM_IVAA) num_ivaa, sum(num_pap) num_pap, sum(num_vph)
num_vph
into #NUM_2
from #TEMP_FINAL_2
group by renaes

--- INDICADOR FINAL.


SELECT A.*, ISNULL(B.Casos,0) NUM , ISNULL(B.NUM_IVAA,0) NUM_IVAA , ISNULL(B.NUM_PAP,0) NUM_PAP
, ISNULL(B.NUM_VPH,0) NUM_VPH
INTO #TEMPORAL_2
FROM #DEN_2 A
LEFT JOIN
#NUM_2 B ON CONVERT(INT,A.cod_estab)=CONVERT(INT,B.renaes)
--===================
-- REPORTE
--===================
SELECT B.DIRIS,B.desc_dpto DEPARTAMENTO,B.desc_prov PROVINCIA,B.desc_dist DISTRITO
, B.desc_red RED, B.desc_mred MICRORED, B.UBIGEO, B.cat_estab EESS_CAT,
TRY_CONVERT(INT,B.cod_estab) EESS_RENAES
, B.desc_estab EESS_NOMBRE, CONVERT(INT,A.CAMAS) CAMAS, A.AÑO, CONVERT(INT,A.[TOTAL_GENERAL])
DEN_TOTAL
, CONVERT(INT,A.DEN) DEN , A.NUM , A.NUM_IVAA, A.NUM_PAP, A.NUM_VPH
INTO #TRAMA_CANCER_CONTINUO
FROM #TEMPORAL_2 a
INNER JOIN #RENAES B ON CONVERT(INT,a.cod_estab)=CONVERT(INT,B.cod_estab)
Ficha N°10: Porcentaje de niñas y niños de 3 a 11 años con alta básica odontológica
/*==============================================================================
FICHA: Indicador N°10 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
USE BD_HISINDICADORES
GO

DECLARE @MES_INICIO INT ,


@MES_FINAL INT ,
@YEAR INT

SET @MES_INICIO=1 -- <========= CAMBIAR MES INICIO


SET @MES_FINAL=9 -- <========= CAMBIAR MES FINAL
SET @YEAR=2021 -- <========= CAMBIAR AÑO.

---- REDUCCIÓN DEL HIS .


SELECT id_cita, ltrim(rtrim(num_doc)) num_doc, renaes, id_tipcond_estab, id_tipcond_serv, cod_item,
id_tipitem, valor_lab, fecha_registro, periodo, edad_reg
INTO #HIS_MINSA
FROM BD_HISINDICADORES.dbo.TramaHisMinsa_202109_20211020
WHERE YEAR(TRY_CONVERT(DATE, periodo))=@YEAR
AND MONTH(TRY_CONVERT(DATE, periodo))<=@MES_FINAL AND MONTH(TRY_CONVERT(DATE,
periodo))>=@MES_INICIO
AND SUBSTRING(RTRIM(LTRIM(id_ups)),1,4) in ('3033') --> SERVICIOS ODONTOLOGICOS.
AND (TRY_CONVERT(INT,EDAD_REG)>=3 AND TRY_CONVERT(INT,EDAD_REG)<=11) --> EDAD ENTRE LOS 3 Y 11
AÑOS.
AND LTRIM(RTRIM(id_tipedad_reg)) IN ('A') --> EDAD EN AÑOS.
AND ID_TIPO_DOC=1 --> TIPO DE DOCUMENTOS DNI.
and sw=1

SELECT *
INTO #RENAES
FROM Renaes_20211020
WHERE CONVERT(INT,AMBITO)=1 AND ( (CAT_ESTAB IN ('I-1','I-2','I-3','I-4'))
OR (CAT_ESTAB IN ('II-1','II-2','II-E') AND CAMAS<=50) )
---------------------------------------------------------------------------

-- 1] PRIMERO EXCLUIR LAS ATENCIONES MEDIANTE TELEMEDICINA.


SELECT *
INTO #BASE_HIS_NO_TLM
FROM (
SELECT *
, MAX(IIF(LTRIM(RTRIM(COD_ITEM)) IN
('99499.01','99499.02','99499.03','99499.04','99499.05','99499.06','99499.07','99499.08','99499.0
9','99499.10'),1,0))
OVER (PARTITION BY num_doc, ID_CITA) ID
FROM #HIS_MINSA
) AS T WHERE ID=0

--2] CALCULAR EL DENOMINADOR Y NUMERADOR.


----DENOMINADOR (1° REGISTRO SEGUN LA CONSIDERACION)
SELECT num_doc, FECHA_REGISTRO, FECHA_ATENDIDO, EDAD, AÑO, MES, renaes INTO #DEN
FROM (
SELECT num_doc
, TRY_CONVERT(DATE, periodo) FECHA_ATENDIDO
, TRY_CONVERT(INT,edad_reg) EDAD
, YEAR(TRY_CONVERT(DATE, periodo)) AÑO
, MONTH(TRY_CONVERT(DATE, periodo)) MES
, fecha_registro
, RENAES
, ROW_NUMBER() OVER (PARTITION BY num_doc ORDER BY TRY_CONVERT(DATE, periodo) ASC, FECHA_REGISTRO
ASC) ID
FROM #BASE_HIS_NO_TLM
WHERE CONVERT(INT,renaes) IN (SELECT DISTINCT CONVERT(INT,cod_estab) FROM #RENAES) -->
ESTABLECIMIENTOS DE PRIMER NIVEL Y SEGUNDO NIVEL CON MENOS DE 50 CAMAS.
AND LTRIM(RTRIM(id_tipcond_estab)) IN ('N','R','C') --> INGRESO ESTABLECIMIENTO (NUEVO, REINGRESO,
CONTINUO).
AND LTRIM(RTRIM(id_tipcond_serv)) IN ('R','N') --> INGRESO A SERVICIOS (NUEVO Y REINGRESO).
AND LTRIM(RTRIM(cod_item)) IN ('D0150','D0120')
AND LTRIM(RTRIM(ID_TIPITEM))='D'
AND (LTRIM(RTRIM(VALOR_LAB)) NOT IN ('G') Or valor_lab IS NULL)
) AS T WHERE ID=1

-- NUMERADOR.
-- ALTERNATIVA 1:
SELECT num_doc, FECHA_REGISTRO, FECHA_ATENDIDO, EDAD, AÑO, MES, renaes into #num_1
FROM (
select A.*
, ROW_NUMBER() OVER (PARTITION BY A.NUM_DOC ORDER BY A.FECHA_ATENDIDO DESC, A.FECHA_REGISTRO DESC)
ID
from (
select num_doc, fecha_registro, FECHA_ATENDIDO, EDAD, AÑO, MES, renaes
, iif(
(tmp_dx_d0150=1 and tmp_dx_u160=1 and tmp_dx_d1310=1 and tmp_dx_d1330=1 and tmp_dx_d1206_d128=1
and tmp_dx_u510=1) or
(tmp_dx_d0150=1 and tmp_dx_d1310=1 and tmp_dx_d1330=1 and tmp_dx_d1206_d128=1 and tmp_dx_u510=1)
,1,0) num
from (
SELECT num_doc, FECHA_REGISTRO,TRY_CONVERT(DATE,periodo) FECHA_ATENDIDO,
TRY_CONVERT(INT,edad_reg) EDAD, YEAR(TRY_CONVERT(DATE, periodo)) AÑO, MONTH(TRY_CONVERT(DATE,
periodo)) MES, RENAES
, MAX(IIF(LTRIM(RTRIM(ID_TIPITEM))='D' AND LTRIM(RTRIM(COD_ITEM)) in ('D0150','D0120') AND
(LTRIM(RTRIM(VALOR_LAB)) NOT IN ('G') Or valor_lab IS NULL),1,0)) OVER (PARTITION BY NUM_DOC,
ID_CITA) tmp_dx_d0150
, MAX(IIF(LTRIM(RTRIM(ID_TIPITEM))='D' AND LTRIM(RTRIM(COD_ITEM))='U160' AND
(LTRIM(RTRIM(VALOR_LAB)) NOT IN ('G') Or valor_lab IS NULL),1,0)) OVER (PARTITION BY NUM_DOC,
ID_CITA) tmp_dx_u160
, MAX(IIF(LTRIM(RTRIM(ID_TIPITEM))='D' AND LTRIM(RTRIM(COD_ITEM))='D1310' AND
(LTRIM(RTRIM(VALOR_LAB)) NOT IN ('G') Or valor_lab IS NULL),1,0)) OVER (PARTITION BY NUM_DOC,
ID_CITA) tmp_dx_d1310
, MAX(IIF(LTRIM(RTRIM(ID_TIPITEM))='D' AND LTRIM(RTRIM(COD_ITEM))='D1330' AND
(LTRIM(RTRIM(VALOR_LAB)) NOT IN ('G') Or valor_lab IS NULL),1,0)) OVER (PARTITION BY NUM_DOC,
ID_CITA) tmp_dx_d1330
, MAX(IIF(LTRIM(RTRIM(ID_TIPITEM))='D' AND LTRIM(RTRIM(COD_ITEM)) IN ('D1206','D1204','D1208')
AND (LTRIM(RTRIM(VALOR_LAB)) NOT IN ('G') Or valor_lab IS NULL),1,0)) OVER (PARTITION BY NUM_DOC,
ID_CITA) tmp_dx_d1206_d128
, MAX(IIF(LTRIM(RTRIM(ID_TIPITEM))='D' AND LTRIM(RTRIM(COD_ITEM))='U510' AND
(LTRIM(RTRIM(VALOR_LAB)) NOT IN ('G') Or valor_lab IS NULL),1,0)) OVER (PARTITION BY NUM_DOC,
ID_CITA) tmp_dx_u510
FROM #BASE_HIS_NO_TLM
WHERE CONVERT(INT,renaes) IN (SELECT DISTINCT CONVERT(INT,cod_estab) FROM #RENAES) -->
ESTABLECIMIENTOS DE PRIMER NIVEL Y SEGUNDO NIVEL CON MENOS DE 50 CAMAS.
) as t
) a inner join #DEN b on a.num_doc=b.num_doc where a.FECHA_ATENDIDO>=b.FECHA_ATENDIDO AND A.NUM=1
) AS T WHERE ID=1

-- ALTERNATIVA 2:
SELECT num_doc, FECHA_REGISTRO, FECHA_ATENDIDO, EDAD, AÑO, MES, renaes into #num_2
FROM (
select A.*
, ROW_NUMBER() OVER (PARTITION BY A.NUM_DOC ORDER BY A.FECHA_aTENDIDO DESC, A.FECHA_REGISTRO DESC)
ID
from (
select num_doc, fecha_registro, FECHA_ATENDIDO, EDAD, AÑO, MES, renaes
, iif( tmp_dx_D_E=1 and tmp_dx_u510=1,1,0) num
from (
SELECT NUM_DOC, FECHA_REGISTRO,TRY_CONVERT(DATE,periodo) FECHA_ATENDIDO,
TRY_CONVERT(INT,edad_reg) EDAD, YEAR(TRY_CONVERT(DATE, periodo)) AÑO, MONTH(TRY_CONVERT(DATE,
periodo)) MES, RENAES
, MAX(IIF(LTRIM(RTRIM(ID_TIPITEM))='D' AND SUBSTRING(LTRIM(RTRIM(COD_ITEM)),1,1) in ('D','E') AND
(LTRIM(RTRIM(VALOR_LAB)) NOT IN ('G') Or valor_lab IS NULL),1,0)) OVER (PARTITION BY NUM_DOC,
ID_CITA) tmp_dx_D_E
, MAX(IIF(LTRIM(RTRIM(ID_TIPITEM))='D' AND LTRIM(RTRIM(COD_ITEM))='U510' AND
(LTRIM(RTRIM(VALOR_LAB)) NOT IN ('G') Or valor_lab IS NULL),1,0)) OVER (PARTITION BY NUM_DOC,
ID_CITA) tmp_dx_u510
FROM #BASE_HIS_NO_TLM
WHERE CONVERT(INT,renaes) IN (SELECT DISTINCT CONVERT(INT,cod_estab) FROM #RENAES) -->
ESTABLECIMIENTOS DE PRIMER NIVEL Y SEGUNDO NIVEL CON MENOS DE 50 CAMAS.
) as t
) a inner join #DEN b on a.num_doc=b.num_doc where a.FECHA_ATENDIDO>=b.FECHA_ATENDIDO AND A.NUM=1
) AS T WHERE ID=1

-- UNION DE #DEN Y #NUM


SELECT *,DEN=1, NUM_A=0, NUM_B=0, NUM=0 INTO #BASE_FINAL FROM #DEN
UNION ALL
SELECT *,DEN=1, NUM_A=1, NUM_B=0, NUM=1 FROM #num_1
UNION ALL
SELECT *,DEN=1, NUM_A=0, NUM_B=1, NUM=1 FROM #num_2

-- 3] CRITERIOS DE ELECCION.

---- 3.1. PRIMERO SE IDENTIFICA A LOS QUE TIENEN ALTA Y A LOS QUE NO TIENEN ALTA.
SELECT *
, MAX(NUM) OVER (PARTITION BY NUM_DOC) ID_ALTA --> (SI ID_ALTA=1 EL NIÑO TIENE ALTA | ID_ALTA=0 EL
NIÑO NO TIENE ALTA)
INTO #TEMP3_1
FROM #BASE_FINAL

---- 3.2 NIÑOS CON ALTA ODONTOLOGICA.


SELECT num_doc, FECHA_ATENDIDO,EDAD, AÑO, MES, DEN, NUM, renaes, NUM_A, NUM_B
INTO #ALTA
FROM (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY NUM_DOC ORDER BY FECHA_ATENDIDO DESC , FECHA_REGISTRO DESC)
ID_ULTIMA_ALTA --> ENUMERAR DEL ULTIMO AL PRIMERO DE LOS EESS QUE DIERON ALTA AL NIÑO.
FROM #TEMP3_1
WHERE ID_ALTA=1 AND NUM=1 --> IDENTIFICAR LOS EESS QUE DIERON ALTA AL NIÑO.
) AS T
WHERE ID_ULTIMA_ALTA=1 --> ULTIMO EESS QUE DIO ALTA ODONTOLOGICA.

-----3.3 NIÑOS SIN ALTA ODONTOLGICA.


SELECT num_doc, FECHA_ATENDIDO,EDAD, AÑO, MES, DEN, NUM, renaes, NUM_A, NUM_B
INTO #NOALTA
FROM (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY NUM_DOC ORDER BY FECHA_ATENDIDO ASC, FECHA_REGISTRO ASC)
ID_PRIMERA_ATENCION --> ENUMERAR DEL PRIMER AL ULTIMO EESS QUE ATENDIERON AL NIÑO.
FROM #TEMP3_1
WHERE ID_ALTA=0
) AS T
WHERE ID_PRIMERA_ATENCION=1 --> PRIMER EESS QUE ATENDIO AL NIÑO EN UN SERVICIO ODONTOLOGICO.

------ 3.4 UNION DE 2 TEMPORALES.


SELECT *
INTO #PRE_COLLAPSE
FROM (
SELECT * FROM #ALTA
UNION ALL
SELECT * FROM #NOALTA
) AS T

--===================
-- REPORTE
--===================
select A.*, b.DIRIS, b.desc_dpto DEPARTAMENTO, B.desc_red RED
, B.desc_prov PROVINCIA, B.desc_dist DISTRITO, B.AMBITO, B.id_establecimiento ID_EESS_TRAMAHIS
, B.CAT_ESTAB, B.CAMAS, B.desc_estab EESS_NOMBRE
INTO #PRE_COLLAPSE_VF
from #PRE_COLLAPSE A
INNER JOIN #RENAES B ON CONVERT(INT,a.renaes)=CONVERT(INT,b.cod_estab)

-- TABLAS FINALES
SELECT NUM_DOC
, DIRIS
, DEPARTAMENTO
, RED
, PROVINCIA
, DISTRITO
, EDAD
, AÑO
, MES
, AMBITO
, RENAES
, ID_EESS_TRAMAHIS
, CAT_ESTAB
, CAMAS
, EESS_NOMBRE
, MAX(DEN) DENOMINADOR, MAX(NUM) NUMERADOR
, MAX(NUM_A) NUMERADOR_A, MAX(NUM_B) NUMERADOR_B
INTO #DL1153_2021_10_NOMINAL
FROM #PRE_COLLAPSE_VF
GROUP BY
NUM_DOC
, DIRIS
, DEPARTAMENTO
, RED
, PROVINCIA
, DISTRITO
, EDAD
, AÑO
, MES
, AMBITO
, RENAES
, ID_EESS_TRAMAHIS
, CAT_ESTAB
, CAMAS
, EESS_NOMBRE

SELECT
DIRIS
, DEPARTAMENTO
, RED
, PROVINCIA
, DISTRITO
, EDAD
, AÑO
, MES
, AMBITO
, RENAES
, ID_EESS_TRAMAHIS
, CAT_ESTAB
, CAMAS
, EESS_NOMBRE
, SUM(DENOMINADOR) DENOMINADOR, SUM(NUMERADOR) NUMERADOR
, SUM(NUMERADOR_A) NUMERADOR_A, SUM(NUMERADOR_B) NUMERADOR_B
INTO #DL1153_2021_10_CONSOLIDADO
FROM #DL1153_2021_10_NOMINAL
GROUP BY
DIRIS
, DEPARTAMENTO
, RED
, PROVINCIA
, DISTRITO
, EDAD
, AÑO
, MES
, AMBITO
, RENAES
, ID_EESS_TRAMAHIS
, CAT_ESTAB
, CAMAS
, EESS_NOMBRE
Ficha N° 11: Porcentaje de mujeres que acceden a métodos de planificación familiar post parto
institucional

/*==============================================================================
FICHA: Indicador N°11 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
USE BD_HISINDICADORES

DECLARE @MES_INICIO INT ,


@MES_FINAL INT ,
@YEAR INT

SET @MES_INICIO=1 -- <========= CAMBIAR MES INICIO


SET @MES_FINAL=9 -- <========= CAMBIAR MES FINAL
SET @YEAR=2021 -- <========= CAMBIAR AÑO.

-- **** CAMBIAR BASE DE DATOS ACTUALIZADAS ****


------------------------------------------------------------------------------------
-- REDUCIENDO BASE DE DATOS.
-- cnv
select *
, iif(
tip_doc_madre is not NULL and ltrim(rtrim(tip_doc_madre)) not in ('NULL','') and nu_doc_madre is
not null and ltrim(rtrim(nu_doc_madre)) not in ('NULL','')
and len(replace(ltrim(rtrim(nu_doc_madre)),LEFT(ltrim(rtrim(nu_doc_madre)),1),''))>0,1,0) sw_dni
into #trama_cnv_his
from CNV_20211010
where MONTH(CONVERT(DATE,DATEADD(DD,42,FE_NACIDO)))>=@MES_INICIO
AND MONTH(CONVERT(DATE,DATEADD(DD,42,FE_NACIDO)))<=@MES_FINAL
AND YEAR(CONVERT(DATE,DATEADD(DD,42,FE_NACIDO)))=@YEAR

update #trama_cnv_his
set sw_dni=0 where sw_dni=1 and (
convert(int,tip_doc_madre)=1 and (try_convert(bigint,nu_doc_madre) is null or
len(nu_doc_madre)>8))

SELECT *
INTO #CNV
FROM #trama_cnv_his
WHERE convert(int,TIP_DOC_MADRE)=1 and sw_dni=1 -- SE CONSIDERAN SOLO TIPO DE DOCUMENTO: DNI.
AND CONT_DOM_MADRE='92' AND PAIS_DOM_MADRE='33' --> SOLO PARTOS DE GESTANTES DOMICILIADAS EN
PERÚ.

SELECT ID_CITA, CONVERT(DATE,PERIODO) FECHA_ATENDIDO,LTRIM(RTRIM(NUM_DOC)) NUM_DOC


, LTRIM(RTRIM(ID_TIPITEM)) TIPO, LTRIM(RTRIM(COD_ITEM)) COD_ITEM, LTRIM(RTRIM(VALOR_LAB))
VALOR_LAB
INTO #HIS_MINSA
FROM TramaHisMinsa_202109_20211020
WHERE YEAR(CONVERT(DATE,PERIODO))=@YEAR
AND MONTH(CONVERT(DATE,PERIODO))>=@MES_INICIO AND MONTH(CONVERT(DATE,PERIODO))<=@MES_FINAL
AND LTRIM(RTRIM(COD_ITEM)) IN (
'58611' -- Ligadura de Trompas. (Cesarea)
,'58605' -- Ligadura de Trompas. (Hospitalizacion)
,'59515' -- Atencion post parto (Cesarea)
,'59410' -- Atencion post parto (Parto Vaginal)
,'59430' -- Atencion post parto (Control Puerpera)
,'11975' -- Insercion Implante
,'58300' -- Insercion Intrauterino
,'99208.05' -- Metodo Inyectable Trimestral
,'99208.02' -- Preservativos Masculinos.
,'99208.06' -- Preservativos Femeninos.
) and id_tipo_doc=1 and sw=1

INSERT INTO #HIS_MINSA


SELECT ID_CITA, CONVERT(DATE,PERIODO) FECHA_ATENDIDO,LTRIM(RTRIM(NUM_DOC)) NUM_DOC
, LTRIM(RTRIM(ID_TIPITEM)) TIPO, LTRIM(RTRIM(COD_ITEM)) COD_ITEM, LTRIM(RTRIM(VALOR_LAB))
VALOR_LAB
FROM TramaHisMinsa_Cierre2020_20210419
WHERE YEAR(CONVERT(DATE,PERIODO))=2020
AND MONTH(CONVERT(DATE,PERIODO))>=MONTH(DATEADD(MM,-2,'2021-01-01'))
AND LTRIM(RTRIM(COD_ITEM)) IN (
'58611','58605','59515','59410','59430','11975','58300','99208.05','99208.02','99208.06') and
id_tipo_doc=1 and sw=1

SELECT *
INTO #RENAES
FROM BD_HISINDICADORES.DBO.Renaes_20211020
WHERE CONVERT(INT,AMBITO)=1
------------------------------------------------------------------------------------

--================
-- CNV
--================
--1. Variables del CNV elegidas para el indicador.
SELECT
LTRIM(RTRIM(NU_DOC_MADRE)) DNI
, MONTH(CONVERT(DATE,DATEADD(DD,42,FE_NACIDO))) MES
, YEAR(CONVERT(DATE,DATEADD(DD,42,FE_NACIDO))) AÑO
, CONVERT(DATE,FE_NACIDO) FECHA_NAC
, TIP_PARTO
, CONVERT(INT,DUR_EMB_PARTO) SEMANA_NAC
, TIP_LUGAR_NACIDO
, CO_LOCAL RENAES
, DPTO_DOM_MADRE + PROV_DOM_MADRE + DIST_DOM_MADRE UBIGEORENIEC
INTO #CNV2
FROM #CNV
WHERE CONVERT(INT,TIP_LUGAR_NACIDO)=1 --> PARTOS REALIZADOS EN ESTABLECIMIENTOS DE SALUD.

--2. Estableciento la ubicacion de residencia segun CNV y Partos en Establecimientos del MINSA Y
REGIONALES.
SELECT * INTO #CNV3
FROM (
SELECT
A.*
, B.UBIGEO
, CASE WHEN B.DESC_DPTO='LIMA' AND B.DESC_PROV NOT IN ('LIMA') THEN 'LIMA PROVINCIAS'
WHEN B.DESC_DPTO='LIMA' AND B.DESC_PROV IN ('LIMA') THEN 'LIMA METROPOLITANA'
ELSE B.DESC_DPTO END DESC_DPTO
, B.DESC_PROV
, B.DESC_DIST
, B.DIRIS
, B.RED
, C.AMBITO
FROM #CNV2 A
INNER JOIN Maestro_UBIGEO_20200407 B ON CONVERT(INT,A.UBIGEORENIEC)=CONVERT(INT,B.UBIGEORENIEC)
INNER JOIN #Renaes C ON CONVERT(INT,A.RENAES)=CONVERT(INT,C.COD_ESTAB)
) AS T

--> PARTOS EN ESTABLECIMIENTOS DEL MINSA.


SELECT * , DEN=1
INTO #CNV_FINAL
FROM (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY DNI, FECHA_NAC ORDER BY DNI) ID_1
FROM #CNV3
) AS T0 WHERE ID_1=1
ALTER TABLE #CNV_FINAL DROP COLUMN ID_1, UBIGEORENIEC

--==========================
-- ATENDIDOS
--=========================
--UNION DE BASE DE HIS Y CNV
SELECT A.* , B.FECHA_ATENDIDO, B.ID_CITA, B.TIPO , B.COD_ITEM , B.VALOR_LAB,
DATEDIFF(DD,A.FECHA_NAC,B.FECHA_ATENDIDO) DIAS_POST_PARTO
, IIF( (DATEDIFF(DD,A.FECHA_NAC,B.FECHA_ATENDIDO) between 0 and 42),1,0) ID_ATENCION
INTO #ATENDIDOS
FROM #CNV_FINAL A
LEFT JOIN #HIS_MINSA B ON A.DNI=B.num_doc collate sql_latin1_general_cp1_ci_as

--================================================================
-- INDICADORES
--================================================================

--1. Ligadura de trompa(s) cuando se realiza al mismo tiempo que la cesárea tipo de diagnóstico
“D” CPMS 58611
SELECT *
, MAX(TEMP_NUM1) OVER (PARTITION BY DNI) NUM1
INTO #TEMP1
FROM (
SELECT *, IIF(COD_ITEM='58611' AND TIPO='D' AND ID_ATENCION=1,1,0) TEMP_NUM1
FROM #ATENDIDOS
) AS T

--2. Ligadura de trompa(s) cuando se realiza durante la misma hospitalización post parto vaginal
CPMS 58605 tipo de diagnóstico “D”
SELECT *
, MAX(TEMP_NUM2) OVER (PARTITION BY DNI) NUM2
INTO #TEMP2
FROM (
SELECT *, IIF(COD_ITEM='58605' AND TIPO='D' AND ID_ATENCION=1,1,0) TEMP_NUM2
FROM #TEMP1
) AS T

/*
--3.• Cesárea, incluyendo atención postparto tipo de diagnóstico “D” ó “R” CPMS 59515 + Inserción
de Implante tipo de diagnóstico “D” ó “R” CPMS 11975
ó Inserción de dispositivo intrauterino (DIU) tipo de diagnóstico “D” o “R” CPMS 58300 ó
Administración y uso de método inyectable Trimestral tipo de diagnóstico “D” ó “R”
CPMS 99208.05 ó Provisión de preservativos masculinos tipo de diagnóstico “D” ó “R” CPMS 99208.02
ó Provisión de preservativos femeninos tipo de diagnóstico “D” ó “R” CPMS 99208.06.
*/
SELECT *
, MAX(TEMP_NUM3) OVER (PARTITION BY DNI) NUM3
INTO #TEMP3
FROM (
SELECT *
, IIF(COD_ITEM IN ('11975','58300','99208.05','99208.02','99208.06')
AND TIPO in ('D','R')
AND TEMP_CESAREA=1
AND ID_ATENCION=1,1,0) TEMP_NUM3
FROM (
SELECT *, MAX(IIF(COD_ITEM='59515' AND TIPO in ('D','R'),1,0)) OVER (PARTITION BY ID_CITA , DNI)
TEMP_CESAREA
FROM #TEMP2
) AS T0
) AS T1

/*
--4. Atención de parto vaginal (con o sin episiotomía), incluyendo atención postparto tipo de
diagnóstico “D” ó “R” CPMS 59410
+ Inserción de Implante tipo de diagnóstico “D” ó “R” CPMS 11975 ó Inserción de dispositivo
intrauterino (DIU) tipo de diagnóstico “D” ó “R”
CPMS 58300 ó Administración y uso de método inyectable Trimestral tipo de diagnóstico “D” ó “R”
CPMS 99208.05 ó Provisión de preservativos masculinos tipo de diagnóstico “D” ó “R”
CPMS 99208.02 ó Provisión de preservativos femeninos tipo de diagnóstico “D” ó “R” CPMS 99208.06.
*/
SELECT *
, MAX(TEMP_NUM4) OVER (PARTITION BY DNI) NUM4
INTO #TEMP4
FROM (
SELECT *
, IIF(COD_ITEM IN ('11975','58300','99208.05','99208.02','99208.06')
AND TIPO in ('D','R')
AND TEMP_PARTO=1
AND ID_ATENCION=1,1,0) TEMP_NUM4
FROM (
SELECT *
, MAX(IIF(COD_ITEM IN ('59410') AND TIPO in ('D','R'),1,0)) OVER (PARTITION BY ID_CITA , DNI)
TEMP_PARTO
FROM #TEMP3
) AS T0
) AS T1

/*
--5.• Atención postparto Control de puérpera código CPMS 59430 tipo de diagnóstico “D” Lab “1” ó“
2” + Inserción de Implante tipo de diagnóstico “D” o “R”
CPMS 11975 ó Inserción de dispositivo intrauterino (DIU) tipo de diagnóstico “D” o “R” CPMS 58300
ó Administración y uso de método inyectable Trimestral tipo de diagnóstico “D” o “R”
CPMS 99208.05 ó Provisión de preservativos masculinos tipo de diagnóstico “D” o “R” CPMS 99208.02
ó Provisión de preservativos femeninos tipo de diagnóstico “D” o “R” CPMS 99208.06.
*/
SELECT *
, MAX(TEMP_NUM5) OVER (PARTITION BY DNI) NUM5
INTO #TEMP5
FROM (
SELECT *
, IIF(COD_ITEM IN ('11975','58300','99208.05','99208.02','99208.06')
AND TIPO in ('D','R')
AND TEMP_PUERPERA=1
AND ID_ATENCION=1,1,0) TEMP_NUM5
FROM (
SELECT *
, MAX(IIF(COD_ITEM IN ('59430') AND TIPO='D' AND TRY_CONVERT(INT,VALOR_LAB) in (1,2),1,0)) OVER
(PARTITION BY ID_CITA , DNI) TEMP_PUERPERA
FROM #TEMP4
) AS T0
) AS T1

--===================
-- REPORTE
--===================
SELECT
DNI
,AÑO
,MES
,UBIGEO
,DESC_DPTO DEPARTAMENTO
,desc_prov PROVINCIA
,desc_dist DISTRITO
,DIRIS
,RED
,MAX(DEN) DENOMINADOR
,MAX(NUM1) NUM1
,MAX(NUM2) NUM2
,MAX(NUM3) NUM3
,MAX(NUM4) NUM4
,MAX(NUM5) NUM5
INTO #PRE_COLLAPSE
FROM #TEMP5
GROUP BY
DNI
,AÑO
,MES
,UBIGEO
,DESC_DPTO
,desc_prov
,desc_dist
,DIRIS
,RED

SELECT
DNI
,AÑO
,MES= case
when mes=1 then 'ENERO'
when mes=2 then 'FEBRERO'
when mes=3 then 'MARZO'
when mes=4 then 'ABRIL'
when mes=5 then 'MAYO'
when mes=6 then 'JUNIO'
when mes=7 then 'JULIO'
when mes=8 then 'AGOSTO'
when mes=9 then 'SETIEMBRE'
when mes=10 then 'OCTUBRE'
when mes=11 then 'NOVIEMBRE'
when mes=12 then 'DICIEMBRE' end
,UBIGEO
,DEPARTAMENTO
,PROVINCIA
,DISTRITO
,DIRIS
,RED
,DENOMINADOR
,IIF((NUM1+NUM2+NUM3+NUM4+NUM5)>=1,1,0) NUMERADOR
, NUM1 NUMERADOR_1
, NUM2 NUMERADOR_2
, NUM3 NUMERADOR_3
, NUM4 NUMERADOR_4
, NUM5 NUMERADOR_5
INTO #DL1153_2021_11_NOMINAL
FROM #PRE_COLLAPSE

SELECT
AÑO
,MES
,UBIGEO
,DEPARTAMENTO
,PROVINCIA
,DISTRITO
,DIRIS
,RED
,SUM(DENOMINADOR) DENOMINADOR
,SUM(NUMERADOR) NUMERADOR
,SUM(NUMERADOR_1) NUMERADOR_1
,SUM(NUMERADOR_2) NUMERADOR_2
,SUM(NUMERADOR_3) NUMERADOR_3
,SUM(NUMERADOR_4) NUMERADOR_4
,SUM(NUMERADOR_5) NUMERADOR_5
INTO #DL1153_2021_11_CONSOLIDADO
FROM #DL1153_2021_11_NOMINAL
GROUP BY
AÑO
,MES
,UBIGEO
,DEPARTAMENTO
,PROVINCIA
,DISTRITO
,DIRIS
,RED
Ficha N°12: Porcentaje de niños de 6 a 11 meses de edad con diagnóstico de anemia que reciben
consejería a través de visita domiciliaria o Teleorientación

/*==============================================================================
FICHA: Indicador N°12 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
USE BD_HISINDICADORES
go

-- Reduccion de Tramas.
select *
into #padronnominal
from Padron_Nominal_20210930 with (nolock)
where sw_pn=1 and TI_DOC_IDENTIDAD=1 and convert(int,TI_SEGURO_MENOR)=1

-- HIS
select LTRIM(rtrim(num_doc)) num_doc, CONVERT(date,periodo) fecha_atencion
, LTRIM(RTRIM(ID_TIPITEM)) tipo, LTRIM(RTRIM(COD_ITEM)) cod_item, LTRIM(RTRIM(VALOR_LAB))
valor_lab
, MAX(iif(ltrim(rtrim(cod_item)) in ('D500','D508','D509','D649') and
LTRIM(RTRIM(id_tipitem))='R',1,0)) over (partition by num_doc , id_cita) tmp_dx
into #his
from TramaHisMinsa_202109_20211020
where ltrim(rtrim(cod_item)) in ('D500','D508','D509','D649','C0011','99499.08')
and id_tipo_doc=1 and sw=1

insert into #his


select LTRIM(rtrim(num_doc)) num_doc, CONVERT(date,periodo) fecha_atencion
, LTRIM(RTRIM(ID_TIPITEM)) tipo, LTRIM(RTRIM(COD_ITEM)) cod_item, LTRIM(RTRIM(VALOR_LAB))
valor_lab
, MAX(iif(ltrim(rtrim(cod_item)) in ('D500','D508','D509','D649') and
LTRIM(RTRIM(id_tipitem))='R',1,0)) over (partition by num_doc , id_cita) tmp_dx
from TramaHisMinsa_Cierre2020_20210419
where ltrim(rtrim(cod_item)) in ('D500','D508','D509','D649','C0011','99499.08')
and id_tipo_doc=1 and sw=1
---------------------------------------------------------------------------

create table #TRAMAHIS_CG_12_NOMINAL


(
dni varchar(32),
mes int,
fecha_nac date,
seguro int,
ubi_res varchar(6),
departam varchar(50),
provincia varchar(50),
distrito varchar(50),
diris varchar(50),
red varchar(50),
fecha_anemia date,
anemia int,
fecha_visita date,
visita int,
den int,
num int
)

declare @anio_eval int, @mes_eval int, @mes_final int


declare @fec_eval date, @fec_final date
declare @periodoeval varchar(6), @periodofin varchar(6)
set @anio_eval=2021
set @mes_final=9
set @mes_eval=1

while @mes_eval <= @mes_final


begin
set @fec_eval=try_convert(date,try_convert(varchar(4),@anio_eval)+'-
'+right('00'+try_convert(varchar(2),@mes_eval),2)+'-'+right('00'+try_convert(varchar(2),1),2))

-- DENOMINADOR
select distinct a.NU_DNI_MENOR dni, MONTH(@fec_eval) mes,
a.fe_nac_menor fecha_nac, a.ti_seguro_menor seguro, a.co_ubigeo_inei ubi_res, b.desc_dpto,
b.desc_prov, b.desc_dist, b.diris, b.red
into #padron
from #padronnominal a with (nolock)
inner join Maestro_UBIGEO_20200407 b on convert(int,a.co_ubigeo_inei)=convert(int,b.UBIGEO)
where ( eomonth(@fec_eval) between dateadd(dd,180,fe_nac_menor) and dateadd(dd,364,fe_nac_menor)
)

-- Identificar Anemia.
select distinct b.dni, a.fecha_atencion fecha_anemia into #anemia1
from #padron b inner join #his a on a.num_doc=b.dni collate Modern_Spanish_CI_AS
where a.cod_item in ('D500','D508','D509','D649') and a.tipo='D'
and a.fecha_atencion<=eomonth(@fec_eval)
and ( a.fecha_atencion between dateadd(dd,180,b.fecha_nac) and dateadd(dd,364,b.fecha_nac) )

-- Identificar visita.
select distinct a.dni, a.fecha_anemia, b.fecha_atencion fecha_visita into #visita1
from #anemia1 a
inner join #his b on a.dni=b.num_doc collate Modern_Spanish_CI_AS
where b.tmp_dx=1 and b.cod_item in ('C0011','99499.08')
and b.fecha_atencion<=eomonth(@fec_eval)
and (DATEDIFF(dd,a.fecha_anemia,b.fecha_atencion) between 1 and 30)

select A.*
, b.fecha_anemia, IIF(b.fecha_anemia is null,0,1) anemia
, c.fecha_visita, IIF(c.fecha_visita is null,0,1) visita
, den=1, IIF(c.fecha_visita is null,0,1) num
into #temp_02
from #padron a
inner join #anemia1 b on a.dni=b.dni
left join #visita1 c on a.dni=c.dni

insert into #TRAMAHIS_CG_12_NOMINAL


select A.dni, A.mes, A.fecha_nac, A.seguro, A.ubi_res,
u.desc_dpto, u.desc_prov, u.desc_dist, u.DIRIS, u.RED,
a.fecha_anemia, a.anemia, a.fecha_visita, a.visita, a.den, a.num
from #temp_02 a
left join Maestro_UBIGEO_20200407 u on a.ubi_res=try_convert(int,u.ubigeo)

drop table #anemia1


drop table #padron
drop table #temp_02
drop table #visita1

set @mes_eval = @mes_eval + 1


end

--===================
-- REPORTE
--===================
update #TRAMAHIS_CG_12_NOMINAL
set fecha_visita=null,
visita=0,
num=0
where DATEDIFF(dd,fecha_anemia,fecha_visita)>30

select distinct dni, mes, fecha_nac, seguro, ubi_res, departam, provincia, distrito, diris, red,
fecha_anemia, anemia, fecha_visita, visita, den, num
into #TRAMAHIS_CG_12_NOMINAL_final
from (
select *, ROW_NUMBER() over (partition by dni order by num desc, fecha_visita asc, fecha_anemia
desc) id
from(
select *
, ROW_NUMBER() over (partition by dni, fecha_anemia, fecha_visita order by mes asc) id_1
from #TRAMAHIS_CG_12_NOMINAL
) as t where id_1=1
)as t where id=1

select mes, departam, provincia, distrito, diris, ubi_res, seguro,


sum(num) num, sum(den) den
into #TRAMAHIS_CG_12_CONSOLIDADO
from #TRAMAHIS_CG_12_NOMINAL_final
group by mes, departam, provincia, distrito, diris, ubi_res, seguro

select año=2021, * from #TRAMAHIS_CG_12_CONSOLIDADO


Ficha N°13: Porcentaje de adolescentes que reciben preventivamente suplementación de hierro mas
acido fólico

/*==============================================================================
FICHA: Indicador N°13 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
declare @mes_eval int
set @mes_eval=9

-- HIS MINSA
select distinct
convert(date, periodo) fecha_atencion, fecha_registro
, edad_reg, id_tipo_doc, ltrim(rtrim(num_doc)) num_doc, renaes, id_cita
into #den
from BD_HISINDICADORES.dbo.TramaHisMinsa_202109_20211020 where sw=1 and id_tipo_doc in (1,2,3,4)
and (convert(int,edad_reg) between 12 and 17) and ltrim(rtrim(id_genero))='F' and
MONTH(convert(date, periodo))<=@mes_eval

select distinct
convert(date, periodo) fecha_atencion, fecha_registro
, edad_reg, id_tipo_doc, ltrim(rtrim(num_doc)) num_doc, renaes, id_cita
into #num
from BD_HISINDICADORES.dbo.TramaHisMinsa_202109_20211020 where sw=1 and id_tipo_doc in (1,2,3,4)
and (convert(int,edad_reg) between 12 and 17) and ltrim(rtrim(id_genero))='F' and
ltrim(rtrim(cod_item))='99199.26' and ltrim(rtrim(valor_lab))='TA'
and MONTH(convert(date, periodo))<=@mes_eval

--- Tabla
select *, max(num) over (partition by id_tipo_doc, num_doc) num_global into #tabla from (
select a.*, den=1,IIF(b.num_doc is not null,1,0) num from #den a
left join #num b on a.id_tipo_doc=b.id_tipo_doc and a.renaes=b.renaes and a.id_cita=b.id_cita
and a.fecha_atencion=b.fecha_atencion and a.num_doc=b.num_doc collate
sql_latin1_general_cp1_ci_as
) as t

--- Numerador (Primer Establecimiento que brindo suplementacion)


select distinct id_tipo_doc, num_doc, fecha_atencion, renaes, den=1, num=1 into #trama_dx
from(
select *, row_number() over (partition by id_tipo_doc, num_doc order by fecha_atencion asc,
fecha_registro asc) id
from #tabla where num_global=1 and num=1
) as t where id=1

--- Denominador (Primer Establecimiento que brindo atencion)


select distinct id_tipo_doc, num_doc, fecha_atencion, renaes, den=1, num=0 into #trama_nodx
from(
select *, row_number() over (partition by id_tipo_doc, num_doc order by fecha_atencion asc,
fecha_registro asc) id
from #tabla where num_global=0
) as t where id=1

--- Tabla Nominal


select id_tipo_doc, num_doc, año, mes, renaes, MAX(den) den, MAX(num) num
into #ind_propuesto_nominal
from (
select *, MONTH(fecha_atencion) mes, YEAR(fecha_atencion) año from #trama_nodx
union all
select *, MONTH(fecha_atencion) mes, YEAR(fecha_atencion) año from #trama_dx
) as t group by id_tipo_doc, num_doc, año, mes, renaes

--- Tabla Consolidado


select año, mes, renaes, sum(den) den, sum(num) num
into #ind_propuesto
from #ind_propuesto_nominal
group by año, mes, renaes
--===================
-- REPORTE
--===================
select * from (
select a.*
, c.DIRIS diris, b.desc_dpto, b.desc_red,b.desc_prov,b.desc_mred, b.desc_dist
, b.cat_estab, isnull(b.CAMAS,0) camas, b.desc_estab eess_nombre, b.id_establecimiento
id_eess_tramahis
from #ind_propuesto a
inner join BD_HISINDICADORES.dbo.Renaes_20211020 b on
convert(int,a.renaes)=convert(int,b.cod_estab)
inner join BD_HISINDICADORES.dbo.Maestro_UBIGEO_20200407 c on
CONVERT(int,b.ubigeo)=CONVERT(int,c.ubigeo)
) as t where ( ( cat_estab in ('I-1','I-2','I-3','I-4') ) or ( cat_estab in ('II-1','II-2','II-E')
and CONVERT(int,camas)<=50 ) )
Ficha N°14: Porcentaje de gestante atendidas con APN en el hospital, referidas por factores de riesgo
/*==============================================================================
FICHA: Indicador N°14 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/
use BD_HISINDICADORES
go

declare @mes_eval int


set @mes_eval=9

--Renaes
select * into #renaes from Renaes_20211020
where cat_estab in ('III-2','II-2','II-1','II-E','III-E','III-1')
and convert(int,ambito)=1

-- TramaHIS
select distinct renaes, fecha, num_doc
into #trama_his
from(
select distinct renaes, convert(date,periodo) fecha, ltrim(rtrim(num_doc)) num_doc
, max(iif(ltrim(rtrim(id_tipcond_serv))='N',1,0)) over (partition by num_doc) id
from BD_HISINDICADORES.dbo.TramaHisMinsa_202109_20211020
where sw=1 and id_tipo_doc=1
and ltrim(rtrim(cod_item)) in ('Z3491','Z3492','Z3493','Z3591','Z3592','Z3593','Z359','Z349')
and convert(int,renaes) in (select distinct convert(int,cod_estab) from #renaes)
and month(convert(date,periodo))<=@mes_eval
) as t where id=1

-- Total de gestantes atendidas con 2 ó más APN en el hospital


select distinct renaes, fecha, num_doc, N_apn into #APN_gestantes
from(
select distinct renaes, fecha, num_doc, ROW_NUMBER() over (partition by num_doc order by fecha
asc) N_apn
from #trama_his
) as t1
where N_apn>=2

---- REFCON
-- Cesárea anterior
select distinct ltrim(rtrim(num_doc)) num_doc, id_ciex, convert(date,fecha_envio) fecha,
cod_unico, cod_unico_d into #temp_referencia_cesarea
from BD_HISINDICADORES.dbo.TramaEqhali_Refcon_202109_20211020
where tip_doc_pac='DNI' and tipo_traslado='REFERENCIA' and Anio=2021 and ups_destino='CONSULTA
EXTERNA'
and LTRIM(rtrim(id_ciex))='O342' and sw=1

select distinct renaes, fecha, num_doc, n_apn, num_1=1 into #referencia_cesarea


from (
select A.*, ROW_NUMBER() over (partition by a.num_doc order by a.n_apn asc) id from
#APN_gestantes a
inner join #temp_referencia_cesarea b on a.num_doc=b.num_doc and a.renaes=b.cod_unico_d
where a.fecha>=b.fecha
) as t where id=1

-- Anemia Severa
select distinct ltrim(rtrim(num_doc)) num_doc, id_ciex, convert(date,fecha_envio) fecha,
cod_unico, cod_unico_d into #temp_referencia_anemia
from BD_HISINDICADORES.dbo.TramaEqhali_Refcon_202109_20211020
where tip_doc_pac='DNI' and tipo_traslado='REFERENCIA' and Anio=2021 and ups_destino='CONSULTA
EXTERNA'
and LTRIM(rtrim(id_ciex))='O990' and sw=1

select distinct renaes, fecha, num_doc, n_apn, num_2=1 into #referencia_anemia


from (
select A.*, ROW_NUMBER() over (partition by a.num_doc order by a.n_apn asc) id from
#APN_gestantes a
inner join #temp_referencia_anemia b on a.num_doc=b.num_doc and a.renaes=b.cod_unico_d
where a.fecha>=b.fecha
) as t where id=1

-- Pre eclampsia
select distinct ltrim(rtrim(num_doc)) num_doc, id_ciex, convert(date,fecha_envio) fecha,
cod_unico, cod_unico_d into #temp_referencia_eclampsia
from BD_HISINDICADORES.dbo.TramaEqhali_Refcon_202109_20211020
where tip_doc_pac='DNI' and tipo_traslado='REFERENCIA' and Anio=2021 and ups_destino='CONSULTA
EXTERNA'
and LTRIM(rtrim(id_ciex)) in ('O149','O13','O141','O140') and sw=1

select distinct renaes, fecha, num_doc, n_apn, num_3=1 into #referencia_eclampsia


from (
select A.*, ROW_NUMBER() over (partition by a.num_doc order by a.n_apn asc) id from
#APN_gestantes a
inner join #temp_referencia_eclampsia b on a.num_doc=b.num_doc and a.renaes=b.cod_unico_d
where a.fecha>=b.fecha
) as t where id=1

-- ITU
select distinct ltrim(rtrim(num_doc)) num_doc, id_ciex, convert(date,fecha_envio) fecha,
cod_unico, cod_unico_d into #temp_referencia_itu
from BD_HISINDICADORES.dbo.TramaEqhali_Refcon_202109_20211020
where tip_doc_pac='DNI' and tipo_traslado='REFERENCIA' and Anio=2021 and ups_destino='CONSULTA
EXTERNA'
and LTRIM(rtrim(id_ciex)) in ('O23','O231','O232','O233','O234','O235','O236') and sw=1

select distinct renaes, fecha, num_doc, n_apn, num_4=1 into #referencia_itu


from (
select A.*, ROW_NUMBER() over (partition by a.num_doc order by a.n_apn asc) id from
#APN_gestantes a
inner join #temp_referencia_itu b on a.num_doc=b.num_doc and a.renaes=b.cod_unico_d
where a.fecha>=b.fecha
) as t where id=1

-- Placenta Previa
select distinct ltrim(rtrim(num_doc)) num_doc, id_ciex, convert(date,fecha_envio) fecha,
cod_unico, cod_unico_d into #temp_referencia_placenta
from BD_HISINDICADORES.dbo.TramaEqhali_Refcon_202109_20211020
where tip_doc_pac='DNI' and tipo_traslado='REFERENCIA' and Anio=2021 and ups_destino='CONSULTA
EXTERNA'
and LTRIM(rtrim(id_ciex)) in ('O44','O440','O441') and sw=1

select distinct renaes, fecha, num_doc, n_apn, num_5=1 into #referencia_placenta


from (
select A.*, ROW_NUMBER() over (partition by a.num_doc order by a.n_apn asc) id from
#APN_gestantes a
inner join #temp_referencia_placenta b on a.num_doc=b.num_doc and a.renaes=b.cod_unico_d
where a.fecha>=b.fecha
) as t where id=1

-- Gestantes Adolescentes
select distinct ltrim(rtrim(num_doc)) num_doc, id_ciex, convert(date,fecha_envio) fecha,
cod_unico, cod_unico_d into #temp_referencia_adol
from BD_HISINDICADORES.dbo.TramaEqhali_Refcon_202109_20211020
where tip_doc_pac='DNI' and tipo_traslado='REFERENCIA' and Anio=2021 and ups_destino='CONSULTA
EXTERNA'
and LTRIM(rtrim(id_ciex)) in ('z3591','z3592','z3593') and P_tipoedad='A' and P_edad_actual<=15
and sw=1

select distinct renaes, fecha, num_doc, n_apn, num_6=1 into #referencia_adol


from (
select A.*, ROW_NUMBER() over (partition by a.num_doc order by a.n_apn asc) id from
#APN_gestantes a
inner join #temp_referencia_adol b on a.num_doc=b.num_doc and a.renaes=b.cod_unico_d
where a.fecha>=b.fecha
) as t where id=1
-- GESTANTES ATENDIDAS Y REFERIDAS.
select a.*
, isnull(b.num_1,0) num1, isnull(c.num_2,0) num2, isnull(d.num_3,0) num3, isnull(e.num_4,0) num4,
isnull(f.num_5,0) num5, isnull(g.num_6,0) num6
into #tabla_pre
from #APN_gestantes a
left join #referencia_cesarea b on a.num_doc=b.num_doc and a.fecha=b.fecha and a.renaes=b.renaes
and a.N_apn=b.N_apn
left join #referencia_anemia c on a.num_doc=c.num_doc and a.fecha=c.fecha and a.renaes=c.renaes
and a.N_apn=c.N_apn
left join #referencia_eclampsia d on a.num_doc=d.num_doc and a.fecha=d.fecha and
a.renaes=d.renaes and a.N_apn=d.N_apn
left join #referencia_itu e on a.num_doc=e.num_doc and a.fecha=e.fecha and a.renaes=e.renaes and
a.N_apn=e.N_apn
left join #referencia_placenta f on a.num_doc=f.num_doc and a.fecha=f.fecha and a.renaes=f.renaes
and a.N_apn=f.N_apn
left join #referencia_adol g on a.num_doc=g.num_doc and a.fecha=g.fecha and a.renaes=g.renaes and
a.N_apn=g.N_apn

select *,IIF(num_1+num_2+num_3+num_4+num_5+num_6>=1,1,0) id_num


, iif(num1+num2+num3+num4+num5+num6>=1,1,0) idnum
into #tabla_pre_ind
from (
select renaes, fecha, num_doc, N_apn
, num1, num2, num3, num4, num5, num6
, MAX(num1) over (partition by num_doc) num_1
, MAX(num2) over (partition by num_doc) num_2
, MAX(num3) over (partition by num_doc) num_3
, MAX(num4) over (partition by num_doc) num_4
, MAX(num5) over (partition by num_doc) num_5
, MAX(num6) over (partition by num_doc) num_6
from #tabla_pre
) as t

--- TABLA FINAL

-- NUMERADOR!
select renaes, fecha, num_doc,den=1, num_1, num_2, num_3, num_4, num_5, num_6
into #tmp_num
from (
select *, ROW_NUMBER() over (partition by num_doc order by idnum desc, fecha asc) id
from #tabla_pre_ind where id_num=1
) as t where id=1

-- DENOMINADOR!
select renaes, fecha, num_doc,den=1, num_1=0, num_2=0, num_3=0, num_4=0, num_5=0, num_6=0
into #tmp_den
from(
select *, ROW_NUMBER() over (partition by num_doc order by fecha asc) id
from #tabla_pre_ind where id_num=0
) as t where id=1

--===================
-- REPORTE
--===================
select renaes, YEAR(fecha) año, month(fecha) mes
, SUM(den) den, SUM(num) num, SUM(num_1) num1, SUM(num_2) num2, SUM(num_3) num3, SUM(num_4) num4,
SUM(num_5) num5, SUM(num_6) num6
into #tabla_consolidado
from (
select *, num=1 from #tmp_num
union all
select *, num=0 from #tmp_den
) as t group by renaes, YEAR(fecha), month(fecha)

select A.*, b.desc_disa, b.desc_dpto, b.desc_red, b.desc_prov, b.desc_mred, b.desc_dist,


b.cat_estab, b.desc_estab
from #tabla_consolidado a
inner join #renaes b on converT(int,a.renaes)=convert(int,b.cod_estab)
Ficha N° 15. Porcentaje de Establecimientos de Salud que aseguran los equipos críticos para los
Programas Presupuestales.

 SCRIPT NIVEL DE DIRIS LIMA METROPOLITANA.

/*==============================================================================
FICHA: Indicador N°15 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA
- Jhonatan Lavi Casilla
----------------------------------------------------------------------- */
USE BD_HISINDICADORES
GO

--- TABLA DEL SIGA.


--1. Se consideran los registros con categorias: Bueno, Regular y Nuevo.
SELECT A.*, CONVERT(BIGINT,SUBSTRING(NOMBRE_FAMILIA,1,CHARINDEX('-',NOMBRE_FAMILIA,1)-1)) COD_FAMILIA
INTO #TEMP_SIGA
FROM TBL_DL1153_2022_IND15_SIGADIRIS A
WHERE A.DESC_ESTADO_CONSERVACION in ('1-BUENO','2-REGULAR','5-NUEVO')
and A.DESC_ESTADO_ACTIVO in ('1-ACTIVO')

--2.Validar que son establecimientos de categorias:I-1, I-2, I-3, I-4.


-- Para el cálculo del indicador se excluyen del denominador a los Centros de Salud Mental Comunitarios,
Centros de Rehabilitación, Centros Veterinarios y Laboratorios de Referencia.
SELECT b.COD_ESTAB, b.DIRIS ,b.DESC_RED RED
, CASE WHEN b.CAT_ESTAB='I-1' THEN 1 WHEN b.CAT_ESTAB='I-2' THEN 2
WHEN b.CAT_ESTAB='I-3' THEN 3 WHEN b.CAT_ESTAB='I-4' THEN 4 END CAT_ESTAB_NUMERAL
, b.CAT_ESTAB , iif(a.cod_ogei is null,0,1) CONTEO
, a.NOMBRE_EJECUTORA, b.DESC_ESTAB NOMBRE_CENTRO_COSTO, a.NOMBRE_FAMILIA
, a.NOMBRE_ITEM, a.DESC_ESTADO_CONSERVACION, a.ITEM_CATALOGO, a.COD_FAMILIA
INTO #Trama_SIGA_filtrado
FROM Renaes_20210419 b
left join #TEMP_SIGA a on convert(int,a.COD_OGEI)=convert(int,b.COD_ESTAB) WHERE b.CAT_ESTAB in ('I-
1','I-2','I-3','I-4')
AND b.DIRIS IN ('LIMA DIRIS CENTRO','LIMA DIRIS ESTE','LIMA DIRIS NORTE','LIMA DIRIS SUR')
AND convert(int,b.AMBITO)=1 and convert(int,b.SW_ESTADO)=1
AND b.DESC_ESTAB NOT LIKE '%CENTRO DE SALUD MENTAL COMUNITARI%'
AND b.DESC_ESTAB NOT LIKE '%CENTRO%REHABILITACION%'

-- AGREGAR ID
ALTER TABLE #Trama_SIGA_filtrado ADD ID int identity

--2. Dividir grupo de la Tabla Familia de Equipos


--=====================================
-- TIPO 1 -- CATEGORIAS (1,2,3,4)
--====================================
-- a.TIPO 1-A [CODIGO ITEM]
SELECT DISTINCT CONVERT(BIGINT,CLAVE) CLAVE, CATEGORIA, GRUPO, COD_PROD INTO #TEMP_1_TIPOA
FROM TBL_DL1153_2022_IND15_FAMILIAEQUIPOS WHERE CATEGORIA IN ('1','2','3','4') and
LEN(CONVERT(BIGINT,CLAVE))=12
-- b.TIPO 1-B [CODIGO FAMILIA]
SELECT DISTINCT CONVERT(BIGINT,CLAVE) CLAVE, CATEGORIA, GRUPO, COD_PROD INTO #TEMP_1_TIPOB
FROM TBL_DL1153_2022_IND15_FAMILIAEQUIPOS WHERE CATEGORIA IN ('1','2','3','4') and
LEN(CONVERT(BIGINT,CLAVE))=8

-- Union
--Trama SIGA tipo-a
SELECT DISTINCT A.NOMBRE_EJECUTORA, A.RED, A.COD_ESTAB COD_OGEI, A.NOMBRE_CENTRO_COSTO
NOMBRE_EESS,A.NOMBRE_FAMILIA
, A.NOMBRE_ITEM, A.DESC_ESTADO_CONSERVACION, A.CONTEO, A.ID, A.CAT_ESTAB, B.COD_PROD, B.GRUPO,
A.ITEM_CATALOGO, A.COD_FAMILIA
INTO #TRAMA_SIGA_1_A
FROM #Trama_SIGA_filtrado A
LEFT JOIN #TEMP_1_TIPOA B ON CONVERT(INT,A.CAT_ESTAB_NUMERAL)=CONVERT(INT,B.CATEGORIA)
AND CONVERT(BIGINT,A.ITEM_CATALOGO)=CONVERT(BIGINT,B.CLAVE) WHERE B.COD_PROD IS NOT NULL

--Trama SIGA tipo-b


SELECT DISTINCT A.NOMBRE_EJECUTORA, A.RED, A.COD_ESTAB COD_OGEI, A.NOMBRE_CENTRO_COSTO
NOMBRE_EESS,A.NOMBRE_FAMILIA
, A.NOMBRE_ITEM, A.DESC_ESTADO_CONSERVACION, A.CONTEO, A.ID, A.CAT_ESTAB, B.COD_PROD, B.GRUPO,
A.ITEM_CATALOGO, A.COD_FAMILIA
INTO #TRAMA_SIGA_1_B
FROM #Trama_SIGA_filtrado A
LEFT JOIN #TEMP_1_TIPOB B ON CONVERT(INT,A.CAT_ESTAB_NUMERAL)=CONVERT(INT,B.CATEGORIA)
AND CONVERT(BIGINT,A.COD_FAMILIA)=CONVERT(BIGINT,B.CLAVE) WHERE B.COD_PROD IS NOT NULL
AND A.ID NOT IN (SELECT DISTINCT ID FROM #TRAMA_SIGA_1_A)

--- TRAMA FINAL


SELECT * INTO #TRAMA_SIGA_1
FROM #TRAMA_SIGA_1_A union all
SELECT * FROM #TRAMA_SIGA_1_B

--===============
-- TIPO 2
--===============
--- BUSQUEDA EXCLUSIVA DE CODIGOS (602207380001,602282380001)
SELECT NOMBRE_EJECUTORA, RED, COD_OGEI, NOMBRE_EESS,NOMBRE_FAMILIA, NOMBRE_ITEM,
DESC_ESTADO_CONSERVACION, CONTEO, ID, CAT_ESTAB
, CASE WHEN ITEM_CATALOGO=602207380001 AND N=1 THEN 'CR1' WHEN ITEM_CATALOGO=602207380001 AND N>1 THEN
'PR5'
WHEN ITEM_CATALOGO=602282380001 AND N=1 THEN 'CR3' WHEN ITEM_CATALOGO=602282380001 AND N>1 THEN 'PR6'
END COD_PROD
, CASE WHEN ITEM_CATALOGO=602207380001 AND N=1 THEN 1 WHEN ITEM_CATALOGO=602207380001 AND N>1 THEN 5
WHEN ITEM_CATALOGO=602282380001 AND N=1 THEN 3 WHEN ITEM_CATALOGO=602282380001 AND N>1 THEN 6 END GRUPO,
ITEM_CATALOGO, COD_FAMILIA
INTO #TRAMA_SIGA_2_EXLCUSIVO
FROM (
SELECT NOMBRE_EJECUTORA, RED,COD_ESTAB COD_OGEI, NOMBRE_CENTRO_COSTO NOMBRE_EESS,NOMBRE_FAMILIA,
ITEM_CATALOGO, NOMBRE_ITEM, DESC_ESTADO_CONSERVACION, CONTEO, ID, CAT_ESTAB, COD_FAMILIA
, ROW_NUMBER() OVER (PARTITION BY NOMBRE_EJECUTORA, RED, COD_ESTAB, NOMBRE_ITEM ORDER BY NOMBRE_ITEM)
N
FROM #Trama_SIGA_filtrado
WHERE CONVERT(BIGINT,ITEM_CATALOGO) IN (602207380001,602282380001)
) AS T

--- BUSQUEDA NORMAL.


-- a.TIPO 2-A
SELECT DISTINCT CONVERT(BIGINT,CLAVE) CLAVE, CATEGORIA, GRUPO, COD_PROD INTO #TEMP_2_TIPOA
FROM TBL_DL1153_2022_IND15_FAMILIAEQUIPOS WHERE CATEGORIA IN ('34','TC','TR') and
LEN(CONVERT(BIGINT,CLAVE))=12
-- b.TIPO 2-B
SELECT DISTINCT CONVERT(BIGINT,CLAVE) CLAVE, CATEGORIA, GRUPO, COD_PROD INTO #TEMP_2_TIPOB
FROM TBL_DL1153_2022_IND15_FAMILIAEQUIPOS WHERE CATEGORIA IN ('34','TC','TR') and
LEN(CONVERT(BIGINT,CLAVE))=8

-- Union
--Trama SIGA tipo-a
SELECT DISTINCT A.NOMBRE_EJECUTORA, A.RED, A.COD_ESTAB COD_OGEI, A.NOMBRE_CENTRO_COSTO NOMBRE_EESS,
A.NOMBRE_FAMILIA
, A.NOMBRE_ITEM, A.DESC_ESTADO_CONSERVACION, A.CONTEO, A.ID, A.CAT_ESTAB, B.COD_PROD, B.GRUPO,
a.ITEM_CATALOGO, A.COD_FAMILIA
INTO #TRAMA_SIGA_2_A
FROM #Trama_SIGA_filtrado A LEFT JOIN #TEMP_2_TIPOA B ON
CONVERT(BIGINT,A.ITEM_CATALOGO)=CONVERT(BIGINT,B.CLAVE)
WHERE B.COD_PROD IS NOT NULL AND A.ITEM_CATALOGO NOT IN (602207380001,602282380001)
--Trama SIGA tipo-b
SELECT DISTINCT A.NOMBRE_EJECUTORA, A.RED, A.COD_ESTAB COD_OGEI, A.NOMBRE_CENTRO_COSTO NOMBRE_EESS,
A.NOMBRE_FAMILIA
, A.NOMBRE_ITEM, A.DESC_ESTADO_CONSERVACION, A.CONTEO, A.ID, A.CAT_ESTAB, B.COD_PROD, B.GRUPO ,
a.ITEM_CATALOGO, A.COD_FAMILIA
INTO #TRAMA_SIGA_2_B
FROM #Trama_SIGA_filtrado A LEFT JOIN #TEMP_2_TIPOB B ON
CONVERT(BIGINT,A.COD_FAMILIA)=CONVERT(BIGINT,B.CLAVE)
WHERE B.COD_PROD IS NOT NULL AND A.ID NOT IN (SELECT DISTINCT ID FROM #TRAMA_SIGA_2_A) AND
A.ITEM_CATALOGO NOT IN (602207380001,602282380001)

--- TRAMA FINAL


SELECT * INTO #TRAMA_SIGA_2
FROM #TRAMA_SIGA_2_A union all
SELECT * FROM #TRAMA_SIGA_2_B union all
SELECT * FROM #TRAMA_SIGA_2_EXLCUSIVO

--===============
-- UNION FINAL
--===============
SELECT NOMBRE_EJECUTORA, RED, COD_OGEI, NOMBRE_EESS, NOMBRE_FAMILIA, NOMBRE_ITEM,
DESC_ESTADO_CONSERVACION, CONTEO, CAT_ESTAB, COD_PROD, GRUPO, ITEM_CATALOGO, COD_FAMILIA
INTO #TRAMA_SIGA_FINAL
FROM #TRAMA_SIGA_1
UNION ALL
SELECT NOMBRE_EJECUTORA, RED, COD_OGEI, NOMBRE_EESS, NOMBRE_FAMILIA, NOMBRE_ITEM,
DESC_ESTADO_CONSERVACION, CONTEO, CAT_ESTAB, COD_PROD, GRUPO , ITEM_CATALOGO, COD_FAMILIA
FROM #TRAMA_SIGA_2

--======================================================
-- busqueda de Balanza, talimetro, Balanza y talimetro
--======================================================
select *
, IIF(pr4_pr5_pr6=0 and balanza_talimetro>=1 and balanza=0 and talimetro=0,1,0) pr4
, IIF(pr4_pr5_pr6=0 and balanza_talimetro=0 and balanza>=1 and talimetro=0,1,0) pr5
, IIF(pr4_pr5_pr6=0 and balanza_talimetro=0 and balanza=0 and talimetro>=1,1,0) pr6
, IIF(pr4_pr5_pr6=0 and balanza_talimetro>=1 and balanza>=1 and talimetro=0,1,0) pr4_pr5
, IIF(pr4_pr5_pr6=0 and balanza_talimetro=0 and balanza>=1 and talimetro>=1,1,0) pr5_pr6
, IIF(pr4_pr5_pr6=0 and balanza_talimetro>=1 and balanza=0 and talimetro>=1,1,0) pr4_pr6
into #actualizacion_grupos
from (
select *
, case when balanza_talimetro>=3 then 1 -- criterio: Si tiene de 3 a mas balanza con talimetro - se
contabiliza para el grupo PR4 , PR5 y PR6.
when balanza_talimetro=2 and (balanza=0 or talimetro=0) then 1-- Criterio: si tiene 2 balanza con
talimetro y no cuenta con balanza o con talimetro
when balanza_talimetro>=1 and balanza>=1 and talimetro>=1 then 1 else 0 end pr4_pr5_pr6 -- Crterio:
Tiene balanza con talimetro, balanza y talimetro
from (
SELECT COD_OGEI
,sum(iif(convert(bigint,COD_FAMILIA)=60220652,1,0)) balanza_talimetro --GRUPO PR4
,sum(iif(convert(bigint,ITEM_CATALOGO) in
(602206160001,602206160067,602206160066,602206720001,602206160052,602206160026,602207850001,60220616007
2,602206160023,602206160063,602206160064,602206720014,

602206160077,602206160050,602206160044,602206860001,602206160016,602207850014,602207380001,6022073800
09,602206720006,602207380003,602206160065,602206720002,

602206720010,602206860006,602206160031,602206520005,602206520002,602208420003,602207850021,6022065200
06) and substring(cod_prod,1,2)='pr' ,1,0)) balanza --GRUPO PR5
,sum(iif(convert(bigint,ITEM_CATALOGO) in
(602282380021,602282380001,602282380008,140900010010,602282380004,
602282380011,602282380020,602282380023,646200050053)and substring(cod_prod,1,2)='pr' ,1,0)) talimetro
--GRUPO PR6
FROM #TRAMA_SIGA_FINAL group by COD_OGEI
) as t
) as t

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

-- Calcular valores de los Items.


SELECT *, IIF(SUMA>=1,1,0) VALOR
INTO #TEMP_REPORT_1
FROM (
SELECT NOMBRE_EJECUTORA, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB, COD_PROD, GRUPO, SUM(CONTEO) SUMA
FROM #TRAMA_SIGA_FINAL GROUP BY NOMBRE_EJECUTORA, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB, COD_PROD,
GRUPO
) AS T

-- Pivotear las Tablas


SELECT NOMBRE_EJECUTORA, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB
, CF1,CF2,CF3,CF4,CR1,CR2,CR3,CR4,CR5,CR6,PR1,PR2,PR3,PR4,PR5,PR6,PR7,PR8,PR9
INTO #TEMP_REPORT_2
FROM #TEMP_REPORT_1
PIVOT
(
COUNT(VALOR)
for COD_PROD in (CF1,CF2,CF3,CF4,CR1,CR2,CR3,CR4,CR5,CR6,PR1,PR2,PR3,PR4,PR5,PR6,PR7,PR8,PR9)
) AS T

-- Trama de Reporte
SELECT NOMBRE_EJECUTORA, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB
,MAX(CF1) CF1, MAX(CF2) CF2, MAX(CF3) CF3, MAX(CF4) CF4, MAX(CR1) CR1, MAX(CR2) CR2, MAX(CR3) CR3,
MAX(CR4) CR4,MAX(CR5) CR5,MAX(CR6) CR6
,MAX(PR1) PR1,MAX(PR2) PR2,MAX(PR3) PR3,MAX(PR4) PR4,MAX(PR5) PR5,MAX(PR6) PR6,MAX(PR7) PR7,MAX(PR8)
PR8,MAX(PR9) PR9
INTO #TEMP_REPORT_3
FROM #TEMP_REPORT_2
GROUP BY NOMBRE_EJECUTORA, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB

--- ACTUALIZACION GRUPO PR4, GRUPO PR5, GRUPO PR6


UPDATE #TEMP_REPORT_3
SET PR4=0, PR5=0, PR6=0

UPDATE #TEMP_REPORT_3
SET PR4=1, PR5=1, PR6=1 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr4_pr5_pr6=1)

UPDATE #TEMP_REPORT_3
SET PR4=1, PR5=0, PR6=0 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr4=1)

UPDATE #TEMP_REPORT_3
SET PR4=0, PR5=1, PR6=0 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr5=1)

UPDATE #TEMP_REPORT_3
SET PR4=0, PR5=0, PR6=1 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr6=1)

UPDATE #TEMP_REPORT_3
SET PR4=1, PR5=1, PR6=0 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr4_pr5=1)

UPDATE #TEMP_REPORT_3
SET PR4=1, PR5=0, PR6=1 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr4_pr6=1)

UPDATE #TEMP_REPORT_3
SET PR4=0, PR5=1, PR6=1 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr5_pr6=1)

-- REPORTE FINAL
SELECT *, IIF(CR5>0,1,0) HMG
, CF1+CF2+CF3+CF4+CR1+CR2+CR3+CR4+CR5+CR6+PR1+PR2+PR3+PR4+PR5+PR6+PR7+PR8+PR9 TOTAL
, IIF(CAT_ESTAB IN ('I-1','I-2'),16,19) UMBRAL
INTO #REPORTE
FROM #TEMP_REPORT_3

-- EESS DEL RENAES QUE NO SE ENCUENTRAN EN EL SIGA!!!


SELECT CASE WHEN DIRIS='LIMA DIRIS CENTRO' THEN '1683 - DIRECCION DE REDES INTEGRADAS DE SALUD LIMA
CENTRO'
WHEN DIRIS='LIMA DIRIS ESTE' THEN '1686 - DIRECCION DE REDES INTEGRADAS DE SALUD LIMA ESTE'
WHEN DIRIS='LIMA DIRIS NORTE' THEN '1684 - DIRECCION DE REDES INTEGRADAS DE SALUD LIMA NORTE'
WHEN DIRIS='LIMA DIRIS SUR' THEN '1685 - DIRECCION DE REDES INTEGRADAS DE SALUD LIMA SUR'
END NOMBRE_EJECUTORA
, RED,COD_ESTAB COD_OGEI, NOMBRE_CENTRO_COSTO NOMBRE_EESS, CAT_ESTAB
, CF1=0, CF2=0, CF3=0, CF4=0, CR1=0, CR2=0, CR3=0, CR4=0, CR5=0, CR6=0
, PR1=0, PR2=0, PR3=0, PR4=0, PR5=0, PR6=0, PR7=0, PR8=0, PR9=0
, HMG=0, TOTAL=0, IIF(CAT_ESTAB IN ('I-1','I-2'),16,19) UMBRAL
INTO #REPORTE_NOSIGA
FROM #Trama_SIGA_filtrado WHERE NOMBRE_EJECUTORA IS NULL

-- REPORTE FINAL
SELECT *
,ROUND(CONVERT(FLOAT,TOTAL)/CONVERT(FLOAT,UMBRAL),2)*100 CUMPLIMIENTO
, IIF( (ROUND(CONVERT(FLOAT,TOTAL)/CONVERT(FLOAT,UMBRAL),2)*100) >=75 AND HMG=1,1,0) IND_CUMPLIMIENTO
FROM (
SELECT * FROM #REPORTE UNION ALL SELECT * FROM #REPORTE_NOSIGA ) AS T
 SCRIPT NIVEL DE REGION.

/*=============================================================================
FICHA: Indicador N°15 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA
- Jhonatan Lavi Casilla
----------------------------------------------------------------------- */
USE BD_HISINDICADORES
GO

--- TABLA DEL SIGA.


--1. Se consideran los registros con categorias: Bueno, Regular y Nuevo.
SELECT A.*, CONVERT(BIGINT,SUBSTRING(NOMBRE_FAMILIA,1,CHARINDEX('-',NOMBRE_FAMILIA,1)-1)) COD_FAMILIA
INTO #TEMP_SIGA
FROM TBL_DL1153_2022_IND15_SIGAREGION A
WHERE A.DESC_ESTADO_CONSERVACION in ('1-BUENO','2-REGULAR','5-NUEVO')
and A.DESC_ESTADO_ACTIVO in ('1-ACTIVO') and try_convert(int,a.COD_OGEI) is not null

--2.Validar que son establecimientos de categorias:I-1, I-2, I-3, I-4.


SELECT b.COD_ESTAB, b.DIRIS ,b.DESC_RED RED
, CASE WHEN b.CAT_ESTAB='I-1' THEN 1 WHEN b.CAT_ESTAB='I-2' THEN 2
WHEN b.CAT_ESTAB='I-3' THEN 3 WHEN b.CAT_ESTAB='I-4' THEN 4 END CAT_ESTAB_NUMERAL
, b.CAT_ESTAB , iif(a.cod_ogei is null,0,1) CONTEO
, a.NOMBRE_PLIEGO, b.DESC_ESTAB NOMBRE_CENTRO_COSTO, a.NOMBRE_FAMILIA
, a.NOMBRE_ITEM, a.DESC_ESTADO_CONSERVACION, a.ITEM_CATALOGO, a.COD_FAMILIA
INTO #Trama_SIGA_filtrado
FROM #TEMP_SIGA A
right join Renaes_20210419 b on try_convert(int,a.COD_OGEI)=convert(int,b.COD_ESTAB) WHERE b.CAT_ESTAB
in ('I-1','I-2','I-3','I-4')
AND convert(int,b.AMBITO)=1 and convert(int,b.SW_ESTADO)=1
AND b.DESC_ESTAB NOT LIKE '%CENTRO DE SALUD MENTAL COMUNITARI%'
AND b.DESC_ESTAB NOT LIKE '%CENTRO%REHABILITACION%'
AND b.DESC_DISA NOT IN ('LIMA CENTRO','LIMA ESTE','LIMA NORTE','LIMA SUR')

-- AGREGAR ID
ALTER TABLE #Trama_SIGA_filtrado ADD ID int identity

--2. Dividir grupo de la Tabla Familia de Equipos


--===============
-- TIPO 1
--===============
-- a.TIPO 1-A
SELECT DISTINCT CONVERT(BIGINT,CLAVE) CLAVE, CATEGORIA, GRUPO, COD_PROD INTO #TEMP_1_TIPOA
FROM TBL_DL1153_2022_IND15_FAMILIAEQUIPOS WHERE CATEGORIA IN ('1','2','3','4') and
LEN(CONVERT(BIGINT,CLAVE))=12
-- b.TIPO 1-B
SELECT DISTINCT CONVERT(BIGINT,CLAVE) CLAVE, CATEGORIA, GRUPO, COD_PROD INTO #TEMP_1_TIPOB
FROM TBL_DL1153_2022_IND15_FAMILIAEQUIPOS WHERE CATEGORIA IN ('1','2','3','4') and
LEN(CONVERT(BIGINT,CLAVE))=8

-- Union
--Trama SIGA tipo-a
SELECT DISTINCT A.NOMBRE_PLIEGO, A.RED, A.COD_ESTAB COD_OGEI, A.NOMBRE_CENTRO_COSTO
NOMBRE_EESS,A.NOMBRE_FAMILIA
, A.NOMBRE_ITEM, A.DESC_ESTADO_CONSERVACION, A.CONTEO, A.ID, A.CAT_ESTAB, B.COD_PROD, B.GRUPO,
A.ITEM_CATALOGO, A.COD_FAMILIA
INTO #TRAMA_SIGA_1_A
FROM #Trama_SIGA_filtrado A
LEFT JOIN #TEMP_1_TIPOA B ON CONVERT(INT,A.CAT_ESTAB_NUMERAL)=CONVERT(INT,B.CATEGORIA)
AND CONVERT(BIGINT,A.ITEM_CATALOGO)=CONVERT(BIGINT,B.CLAVE) WHERE B.COD_PROD IS NOT NULL

--Trama SIGA tipo-b


SELECT DISTINCT A.NOMBRE_PLIEGO, A.RED, A.COD_ESTAB COD_OGEI, A.NOMBRE_CENTRO_COSTO
NOMBRE_EESS,A.NOMBRE_FAMILIA
, A.NOMBRE_ITEM, A.DESC_ESTADO_CONSERVACION, A.CONTEO, A.ID, A.CAT_ESTAB, B.COD_PROD, B.GRUPO,
A.ITEM_CATALOGO, A.COD_FAMILIA
INTO #TRAMA_SIGA_1_B
FROM #Trama_SIGA_filtrado A
LEFT JOIN #TEMP_1_TIPOB B ON CONVERT(INT,A.CAT_ESTAB_NUMERAL)=CONVERT(INT,B.CATEGORIA)
AND CONVERT(BIGINT,A.COD_FAMILIA)=CONVERT(BIGINT,B.CLAVE) WHERE B.COD_PROD IS NOT NULL
AND A.ID NOT IN (SELECT DISTINCT ID FROM #TRAMA_SIGA_1_A)
--- TRAMA FINAL
SELECT * INTO #TRAMA_SIGA_1
FROM #TRAMA_SIGA_1_A union all
SELECT * FROM #TRAMA_SIGA_1_B

--===============
-- TIPO 2
--===============
--- BUSQUEDA EXCLUSIVA DE CODIGOS (602207380001,602282380001)
SELECT NOMBRE_PLIEGO, RED, COD_OGEI, NOMBRE_EESS,NOMBRE_FAMILIA, NOMBRE_ITEM, DESC_ESTADO_CONSERVACION,
CONTEO, ID, CAT_ESTAB
, CASE WHEN ITEM_CATALOGO=602207380001 AND N=1 THEN 'CR1' WHEN ITEM_CATALOGO=602207380001 AND N>1 THEN
'PR5'
WHEN ITEM_CATALOGO=602282380001 AND N=1 THEN 'CR3' WHEN ITEM_CATALOGO=602282380001 AND N>1 THEN 'PR6'
END COD_PROD
, CASE WHEN ITEM_CATALOGO=602207380001 AND N=1 THEN 1 WHEN ITEM_CATALOGO=602207380001 AND N>1 THEN 5
WHEN ITEM_CATALOGO=602282380001 AND N=1 THEN 3 WHEN ITEM_CATALOGO=602282380001 AND N>1 THEN 6 END
GRUPO, ITEM_CATALOGO, COD_FAMILIA
INTO #TRAMA_SIGA_2_EXLCUSIVO
FROM (
SELECT NOMBRE_PLIEGO, RED,COD_ESTAB COD_OGEI, NOMBRE_CENTRO_COSTO NOMBRE_EESS,NOMBRE_FAMILIA,
ITEM_CATALOGO, NOMBRE_ITEM, DESC_ESTADO_CONSERVACION, CONTEO, ID, CAT_ESTAB, COD_FAMILIA
, ROW_NUMBER() OVER (PARTITION BY NOMBRE_PLIEGO, RED, COD_ESTAB, NOMBRE_ITEM ORDER BY NOMBRE_ITEM)
N
FROM #Trama_SIGA_filtrado
WHERE CONVERT(BIGINT,ITEM_CATALOGO) IN (602207380001,602282380001)
) AS T

--- BUSQUEDA NORMAL.


-- a.TIPO 2-A
SELECT DISTINCT CONVERT(BIGINT,CLAVE) CLAVE, CATEGORIA, GRUPO, COD_PROD INTO #TEMP_2_TIPOA
FROM TBL_DL1153_2022_IND15_FAMILIAEQUIPOS WHERE CATEGORIA IN ('34','TC','TR') and
LEN(CONVERT(BIGINT,CLAVE))=12
-- b.TIPO 2-B
SELECT DISTINCT CONVERT(BIGINT,CLAVE) CLAVE, CATEGORIA, GRUPO, COD_PROD INTO #TEMP_2_TIPOB
FROM TBL_DL1153_2022_IND15_FAMILIAEQUIPOS WHERE CATEGORIA IN ('34','TC','TR') and
LEN(CONVERT(BIGINT,CLAVE))=8

-- Union
--Trama SIGA tipo-a
SELECT DISTINCT A.NOMBRE_PLIEGO, A.RED, A.COD_ESTAB COD_OGEI, A.NOMBRE_CENTRO_COSTO NOMBRE_EESS,
A.NOMBRE_FAMILIA
, A.NOMBRE_ITEM, A.DESC_ESTADO_CONSERVACION, A.CONTEO, A.ID, A.CAT_ESTAB, B.COD_PROD, B.GRUPO,
a.ITEM_CATALOGO, A.COD_FAMILIA
INTO #TRAMA_SIGA_2_A
FROM #Trama_SIGA_filtrado A LEFT JOIN #TEMP_2_TIPOA B ON
CONVERT(BIGINT,A.ITEM_CATALOGO)=CONVERT(BIGINT,B.CLAVE)
WHERE B.COD_PROD IS NOT NULL AND A.ITEM_CATALOGO NOT IN (602207380001,602282380001)
--Trama SIGA tipo-b
SELECT DISTINCT A.NOMBRE_PLIEGO, A.RED, A.COD_ESTAB COD_OGEI, A.NOMBRE_CENTRO_COSTO NOMBRE_EESS,
A.NOMBRE_FAMILIA
, A.NOMBRE_ITEM, A.DESC_ESTADO_CONSERVACION, A.CONTEO, A.ID, A.CAT_ESTAB, B.COD_PROD, B.GRUPO ,
a.ITEM_CATALOGO, A.COD_FAMILIA
INTO #TRAMA_SIGA_2_B
FROM #Trama_SIGA_filtrado A LEFT JOIN #TEMP_2_TIPOB B ON
CONVERT(BIGINT,A.COD_FAMILIA)=CONVERT(BIGINT,B.CLAVE)
WHERE B.COD_PROD IS NOT NULL AND A.ID NOT IN (SELECT DISTINCT ID FROM #TRAMA_SIGA_2_A) AND
A.ITEM_CATALOGO NOT IN (602207380001,602282380001)

--- TRAMA FINAL


SELECT * INTO #TRAMA_SIGA_2
FROM #TRAMA_SIGA_2_A union all
SELECT * FROM #TRAMA_SIGA_2_B union all
SELECT * FROM #TRAMA_SIGA_2_EXLCUSIVO

--===============
-- UNION FINAL
--===============
SELECT NOMBRE_PLIEGO, RED, COD_OGEI, NOMBRE_EESS, NOMBRE_FAMILIA, NOMBRE_ITEM,
DESC_ESTADO_CONSERVACION, CONTEO, CAT_ESTAB
, COD_PROD, GRUPO, ITEM_CATALOGO, COD_FAMILIA
INTO #TRAMA_SIGA_FINAL
FROM #TRAMA_SIGA_1
UNION ALL
SELECT NOMBRE_PLIEGO, RED, COD_OGEI, NOMBRE_EESS, NOMBRE_FAMILIA, NOMBRE_ITEM,
DESC_ESTADO_CONSERVACION, CONTEO, CAT_ESTAB
, COD_PROD, GRUPO , ITEM_CATALOGO, COD_FAMILIA
FROM #TRAMA_SIGA_2

--======================================================
-- busqueda de Balanza, talimetro, Balanza y talimetro
--======================================================
select *
, IIF(pr4_pr5_pr6=0 and balanza_talimetro>=1 and balanza=0 and talimetro=0,1,0) pr4
, IIF(pr4_pr5_pr6=0 and balanza_talimetro=0 and balanza>=1 and talimetro=0,1,0) pr5
, IIF(pr4_pr5_pr6=0 and balanza_talimetro=0 and balanza=0 and talimetro>=1,1,0) pr6
, IIF(pr4_pr5_pr6=0 and balanza_talimetro>=1 and balanza>=1 and talimetro=0,1,0) pr4_pr5
, IIF(pr4_pr5_pr6=0 and balanza_talimetro=0 and balanza>=1 and talimetro>=1,1,0) pr5_pr6
, IIF(pr4_pr5_pr6=0 and balanza_talimetro>=1 and balanza=0 and talimetro>=1,1,0) pr4_pr6
into #actualizacion_grupos
from (
select *
, case when balanza_talimetro>=3 then 1 -- criterio: Si tiene de 3 a mas balanza con talimetro - se
contabiliza para el grupo PR4 , PR5 y PR6.
when balanza_talimetro=2 and (balanza=0 or talimetro=0) then 1-- Criterio: si tiene 2 balanza con
talimetro y no cuenta con balanza o con talimetro
when balanza_talimetro>=1 and balanza>=1 and talimetro>=1 then 1 else 0 end pr4_pr5_pr6 -- Crterio:
Tiene balanza con talimetro, balanza y talimetro
from (
SELECT COD_OGEI
,sum(iif(convert(bigint,COD_FAMILIA)=60220652,1,0)) balanza_talimetro --GRUPO PR4
,sum(iif(convert(bigint,ITEM_CATALOGO) in
(602206160001,602206160067,602206160066,602206720001,602206160052,602206160026,602207850001,602206160
072,602206160023,602206160063,602206160064,602206720014,

602206160077,602206160050,602206160044,602206860001,602206160016,602207850014,602207380001,602207380
009,602206720006,602207380003,602206160065,602206720002,

602206720010,602206860006,602206160031,602206520005,602206520002,602208420003,602207850021,602206520
006) and substring(cod_prod,1,2)='pr' ,1,0)) balanza --GRUPO PR5
,sum(iif(convert(bigint,ITEM_CATALOGO) in
(602282380021,602282380001,602282380008,140900010010,602282380004,
602282380011,602282380020,602282380023,646200050053)and substring(cod_prod,1,2)='pr' ,1,0)) talimetro
--GRUPO PR6
FROM #TRAMA_SIGA_FINAL group by COD_OGEI
) as t
) as t

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

-- Calcular valores de los Items.


SELECT *, IIF(SUMA>=1,1,0) VALOR
INTO #TEMP_REPORT_1
FROM (
SELECT NOMBRE_PLIEGO, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB, COD_PROD, GRUPO, SUM(CONTEO) SUMA
FROM #TRAMA_SIGA_FINAL GROUP BY NOMBRE_PLIEGO, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB, COD_PROD, GRUPO
) AS T

-- Pivotear las Tablas


SELECT NOMBRE_PLIEGO, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB
, CF1,CF2,CF3,CF4,CR1,CR2,CR3,CR4,CR5,CR6,PR1,PR2,PR3,PR4,PR5,PR6,PR7,PR8,PR9
INTO #TEMP_REPORT_2
FROM #TEMP_REPORT_1
PIVOT
(
COUNT(VALOR)
for COD_PROD in (CF1,CF2,CF3,CF4,CR1,CR2,CR3,CR4,CR5,CR6,PR1,PR2,PR3,PR4,PR5,PR6,PR7,PR8,PR9)
) AS T

-- Trama de Reporte
SELECT NOMBRE_PLIEGO, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB
,MAX(CF1) CF1, MAX(CF2) CF2, MAX(CF3) CF3, MAX(CF4) CF4, MAX(CR1) CR1, MAX(CR2) CR2, MAX(CR3) CR3,
MAX(CR4) CR4,MAX(CR5) CR5,MAX(CR6) CR6
,MAX(PR1) PR1,MAX(PR2) PR2,MAX(PR3) PR3,MAX(PR4) PR4,MAX(PR5) PR5,MAX(PR6) PR6,MAX(PR7) PR7,MAX(PR8)
PR8,MAX(PR9) PR9
INTO #TEMP_REPORT_3
FROM #TEMP_REPORT_2
GROUP BY NOMBRE_PLIEGO, RED, COD_OGEI, NOMBRE_EESS, CAT_ESTAB

--- ACTUALIZACION GRUPO PR4, GRUPO PR5, GRUPO PR6


UPDATE #TEMP_REPORT_3
SET PR4=0, PR5=0, PR6=0

UPDATE #TEMP_REPORT_3
SET PR4=1, PR5=1, PR6=1 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr4_pr5_pr6=1)

UPDATE #TEMP_REPORT_3
SET PR4=1, PR5=0, PR6=0 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr4=1)

UPDATE #TEMP_REPORT_3
SET PR4=0, PR5=1, PR6=0 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr5=1)

UPDATE #TEMP_REPORT_3
SET PR4=0, PR5=0, PR6=1 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr6=1)

UPDATE #TEMP_REPORT_3
SET PR4=1, PR5=1, PR6=0 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr4_pr5=1)

UPDATE #TEMP_REPORT_3
SET PR4=1, PR5=0, PR6=1 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr4_pr6=1)

UPDATE #TEMP_REPORT_3
SET PR4=0, PR5=1, PR6=1 WHERE CONVERT(INT,COD_OGEI) IN (SELECT DISTINCT CONVERT(INT,COD_OGEI) FROM
#actualizacion_grupos WHERE pr5_pr6=1)

-- REPORTE FINAL
SELECT *, IIF(CR5>0,1,0) HMG
, CF1+CF2+CF3+CF4+CR1+CR2+CR3+CR4+CR5+CR6+PR1+PR2+PR3+PR4+PR5+PR6+PR7+PR8+PR9 TOTAL
, IIF(CAT_ESTAB IN ('I-1','I-2'),16,19) UMBRAL
INTO #REPORTE
FROM #TEMP_REPORT_3

-- EESS DEL RENAES QUE NO SE ENCUENTRAN EN EL SIGA!!!


SELECT CASE
WHEN DIRIS='AMAZONAS' THEN '440 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE AMAZONAS'
WHEN DIRIS='ANCASH' THEN '441 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE ANCASH'
WHEN DIRIS='APURIMAC' THEN '442 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE APURIMAC'
WHEN DIRIS='AREQUIPA' THEN '443 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE AREQUIPA'
WHEN DIRIS='AYACUCHO' THEN '444 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE AYACUCHO'
WHEN DIRIS='CAJAMARCA' THEN '445 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE CAJAMARCA'
WHEN DIRIS='CALLAO' THEN '464 - GOBIERNO REGIONAL DE LA PROVINCIA CONSTITUCIONAL DEL CALLAO'
WHEN DIRIS='CUSCO' THEN '446 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE CUSCO'
WHEN DIRIS='HUANCAVELICA' THEN '447 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE HUANCAVELICA'
WHEN DIRIS='HUANUCO' THEN '448 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE HUANUCO'
WHEN DIRIS='ICA' THEN '449 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE ICA'
WHEN DIRIS='JUNIN' THEN '450 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE JUNIN'
WHEN DIRIS='LA LIBERTAD' THEN '451 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE LA LIBERTAD'
WHEN DIRIS='LAMBAYEQUE' THEN '452 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE LAMBAYEQUE'
WHEN DIRIS='LIMA' THEN '463 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE LIMA'
WHEN DIRIS='LORETO' THEN '453 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE LORETO'
WHEN DIRIS='MADRE DE DIOS' THEN '454 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE MADRE DE DIOS'
WHEN DIRIS='MOQUEGUA' THEN '455 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE MOQUEGUA'
WHEN DIRIS='PASCO' THEN '456 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE PASCO'
WHEN DIRIS='PIURA' THEN '457 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE PIURA'
WHEN DIRIS='PUNO' THEN '458 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE PUNO'
WHEN DIRIS='SAN MARTIN' THEN '459 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE SAN MARTIN'
WHEN DIRIS='TACNA' THEN '460 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE TACNA'
WHEN DIRIS='TUMBES' THEN '461 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE TUMBES'
WHEN DIRIS='UCAYALI' THEN '462 - GOBIERNO REGIONAL DEL DEPARTAMENTO DE UCAYALI'
END NOMBRE_PLIEGO
, RED,COD_ESTAB COD_OGEI, NOMBRE_CENTRO_COSTO NOMBRE_EESS, CAT_ESTAB
, CF1=0, CF2=0, CF3=0, CF4=0, CR1=0, CR2=0, CR3=0, CR4=0, CR5=0, CR6=0
, PR1=0, PR2=0, PR3=0, PR4=0, PR5=0, PR6=0, PR7=0, PR8=0, PR9=0
, HMG=0, TOTAL=0, IIF(CAT_ESTAB IN ('I-1','I-2'),16,19) UMBRAL
INTO #REPORTE_NOSIGA
FROM #Trama_SIGA_filtrado WHERE NOMBRE_PLIEGO IS NULL

-- REPORTE FINAL
SELECT *
,ROUND(CONVERT(FLOAT,TOTAL)/CONVERT(FLOAT,UMBRAL),2)*100 CUMPLIMIENTO
, IIF( (ROUND(CONVERT(FLOAT,TOTAL)/CONVERT(FLOAT,UMBRAL),2)*100) >=75 AND HMG=1,1,0) IND_CUMPLIMIENTO
FROM (
SELECT * FROM #REPORTE UNION ALL SELECT * FROM #REPORTE_NOSIGA ) AS T
Ficha N° 16: Porcentaje de Disponibilidad de Medicamentos Esenciales (DME)

/*==============================================================================
FICHA: Indicador N°16 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - DIGEMID
==============================================================================*/
USE BD_DIGEMID
GO

IF EXISTS(SELECT *
FROM dbo.XXXX_DISPO_EJECUTORAS_CONSOLIDA_1_MES_2021)
DROP TABLE dbo.XXXX_DISPO_EJECUTORAS_CONSOLIDA_1_MES_2021
GO

IF EXISTS(SELECT *
FROM dbo.XXXX_DISPO_REGIONES_CONSOLIDA_1_MES_2021)
DROP TABLE dbo.XXXX_DISPO_REGIONES_CONSOLIDA_1_MES_2021
GO

IF EXISTS(SELECT *
FROM dbo.XXXX_DISPO_REDES_CONSOLIDA_1_MES_2021)
DROP TABLE dbo.XXXX_DISPO_REDES_CONSOLIDA_1_MES_2021

GO

IF EXISTS(SELECT *
FROM dbo.XXXX_DISPO_REGIONES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021)
DROP TABLE dbo.XXXX_DISPO_REGIONES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021
GO

IF EXISTS(SELECT *
FROM dbo.XXXX_DISPO_REDES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021)
DROP TABLE dbo.XXXX_DISPO_REDES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021
GO

---------DISPONIBILIDAD A 1 MES UNIDADES EJECUTORAS----------


SELECT *
INTO XXXX_DISPO_EJECUTORAS_CONSOLIDA_1_MES_2021
FROM
(
SELECT F.[CODDISA], F.[NOMDISA],F.[CODIGO_PRE], F.[ESTABLEC],F.UE,F.SOBRESTOCK,
F.NORMOSTOCK,F.SINROTACION, F.SUBSTOCK, F.DESABASTECIDO, F.TOTAL, ISNULL(CONVERT(FLOAT,F.DIPO),0)
AS DISPO,F.MESANO

FROM
(
SELECT [CODDISA], [NOMDISA],[CODIGO_PRE], [ESTABLEC],UE,MESANO,
ISNULL([SOBRESTOCK],0) [SOBRESTOCK],
ISNULL([NORMOSTOCK],0) [NORMOSTOCK],
ISNULL([SUBSTOCK],0) [SUBSTOCK],
ISNULL([DESABASTECIDO],0) [DESABASTECIDO],
ISNULL([SINROTACION],0) [SINROTACION],
ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ ISNULL([DESABASTECIDO],0)),0) [TOTAL],
CASE WHEN ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) + ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0)+ISNULL([SINROTACION],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0)
+ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ISNULL([DESABASTECIDO],0)),0.0),4) END DIPO,
CASE WHEN ISNULL(SUM (ISNULL([SUBSTOCK],0)),0) > 0
THEN ROUND(SUM (ISNULL([SUBSTOCK],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) +
ISNULL([DESABASTECIDO],0)),0.0),4) END SUBSTOC,
CASE WHEN ISNULL(SUM (ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([DESABASTECIDO],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0) +ISNULL([SINROTACION],0)+
ISNULL([DESABASTECIDO],0)),0.0),4) END DESABASTECI
FROM
(
SELECT [CODDISA], [NOMDISA],[CODIGO_PRE],[ESTABLEC],UE,MESANO, Indicador FROM
[dbo].[DISPO12_CONVENIOS]
WHERE UE='U' AND ESTADO='A'
) T

PIVOT ( COUNT (T.indicador) FOR T.indicador IN ([SOBRESTOCK], [NORMOSTOCK],


[SUBSTOCK],[SINROTACION], [DESABASTECIDO], [TOTAL], [DIPO] )) AS PIVOTTABLE
GROUP BY [CODDISA], [NOMDISA],[CODIGO_PRE],ESTABLEC,UE,MESANO,[SOBRESTOCK], [NORMOSTOCK],
[SUBSTOCK],[SINROTACION],[DESABASTECIDO], [TOTAL]

)F

) G

---------DISPONIBILIDAD A 1 MES REGIONES NIVEL NACIONAL ----------

SELECT CODDISA, NOMDISA,AVG(DISPO) AS PROMEDIO,MESANO


INTO XXXX_DISPO_REGIONES_CONSOLIDA_1_MES_2021
FROM
(
SELECT *

FROM
(
SELECT F.[CODDISA], F.[NOMDISA],F.[CODIGO_PRE], F.[ESTABLEC],F.[ALMTIPO_COMPLETO],F.UE,
F.SOBRESTOCK, F.NORMOSTOCK, F.SINROTACION, F.SUBSTOCK, F.DESABASTECIDO, F.TOTAL,
ISNULL(CONVERT(FLOAT,F.DIPO),0) AS DISPO,F.MESANO

FROM
(
SELECT [CODDISA], [NOMDISA],[CODIGO_PRE], [ESTABLEC],[ALMTIPO_COMPLETO],UE,MESANO,
ISNULL([SOBRESTOCK],0) [SOBRESTOCK],
ISNULL([NORMOSTOCK],0) [NORMOSTOCK],
ISNULL([SUBSTOCK],0) [SUBSTOCK],
ISNULL([DESABASTECIDO],0) [DESABASTECIDO],
ISNULL([SINROTACION],0) [SINROTACION],
ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ ISNULL([DESABASTECIDO],0)),0) [TOTAL],
CASE WHEN ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) + ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0)+ISNULL([SINROTACION],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0)
+ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ISNULL([DESABASTECIDO],0)),0.0),4) END DIPO,
CASE WHEN ISNULL(SUM (ISNULL([SUBSTOCK],0)),0) > 0
THEN ROUND(SUM (ISNULL([SUBSTOCK],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) +
ISNULL([DESABASTECIDO],0)),0.0),4) END SUBSTOC,
CASE WHEN ISNULL(SUM (ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([DESABASTECIDO],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0) +ISNULL([SINROTACION],0)+
ISNULL([DESABASTECIDO],0)),0.0),4) END DESABASTECI

FROM
(
SELECT [CODDISA], [NOMDISA],[CODIGO_PRE], [ESTABLEC],[ALMTIPO_COMPLETO],UE,MESANO, Indicador FROM
[dbo].[DISPO12_CONVENIOS]
WHERE [ALMTIPO_COMPLETO] IN('INSTITUTO','HOSPITAL','C.S.','P.S.') AND UE NOT IN('U') AND
ESTADO='A'
) T

PIVOT ( COUNT (T.indicador) FOR T.indicador IN ([SOBRESTOCK], [NORMOSTOCK],[SINROTACION],


[SUBSTOCK], [DESABASTECIDO], [TOTAL], [DIPO] )) AS PIVOTTABLE
GROUP BY [CODDISA], [NOMDISA],[CODIGO_PRE],ESTABLEC,[ALMTIPO_COMPLETO],UE,MESANO,[SOBRESTOCK],
[NORMOSTOCK],[SINROTACION], [SUBSTOCK], [DESABASTECIDO], [TOTAL]
)F
)G
)X GROUP BY CODDISA, NOMDISA,MESANO

---------DISPONIBILIDAD A 1 MES REDES NIVEL NACIONAL ----------

SELECT CODDISA, NOMDISA,CODRED,RED,UE,AVG(DISPO) AS PROMEDIO,MESANO


INTO XXXX_DISPO_REDES_CONSOLIDA_1_MES_2021
FROM
(

SELECT *

FROM
(
SELECT F.[CODDISA], F.[NOMDISA],CODIGO_PRE,ESTABLEC,F.[CODRED],
F.[RED],F.[ALMTIPO_COMPLETO],F.UE, F.SOBRESTOCK, F.NORMOSTOCK,F.SINROTACION, F.SUBSTOCK,
F.DESABASTECIDO, F.TOTAL,ISNULL(CONVERT(FLOAT,F.DIPO),0) AS DISPO,f.mesano

FROM
(
SELECT [CODDISA], [NOMDISA],CODIGO_PRE,ESTABLEC,[ALMTIPO_COMPLETO],codred,RED,UE,mesano,
ISNULL([SOBRESTOCK],0) [SOBRESTOCK],
ISNULL([NORMOSTOCK],0) [NORMOSTOCK],
ISNULL([SUBSTOCK],0) [SUBSTOCK],
ISNULL([DESABASTECIDO],0) [DESABASTECIDO],
ISNULL([SINROTACION],0) [SINROTACION],
ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ ISNULL([DESABASTECIDO],0)),0) [TOTAL],
CASE WHEN ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) + ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0)+ISNULL([SINROTACION],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0)
+ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ISNULL([DESABASTECIDO],0)),0.0),4) END DIPO,
CASE WHEN ISNULL(SUM (ISNULL([SUBSTOCK],0)),0) > 0
THEN ROUND(SUM (ISNULL([SUBSTOCK],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) +
ISNULL([DESABASTECIDO],0)),0.0),4) END SUBSTOC,
CASE WHEN ISNULL(SUM (ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([DESABASTECIDO],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0) +ISNULL([SINROTACION],0)+
ISNULL([DESABASTECIDO],0)),0.0),4) END DESABASTECI

FROM
(
SELECT [CODDISA],
[NOMDISA],codigo_pre,ESTABLEC,codred,RED,[ALMTIPO_COMPLETO],UE,mesano,Indicador FROM
[dbo].[DISPO12_CONVENIOS]
WHERE [ALMTIPO_COMPLETO] IN('INSTITUTO','HOSPITAL','C.S.','P.S.') AND UE NOT IN('U') AND
ESTADO='A'
) T

PIVOT ( COUNT (T.indicador) FOR T.indicador IN ([SOBRESTOCK], [NORMOSTOCK],[SINROTACION],


[SUBSTOCK], [DESABASTECIDO], [TOTAL], [DIPO] )) AS PIVOTTABLE
GROUP BY [CODDISA],
[NOMDISA],CODIGO_PRE,ESTABLEC,codred,RED,UE,mesano,[ALMTIPO_COMPLETO],[SOBRESTOCK],
[NORMOSTOCK],[SINROTACION], [SUBSTOCK], [DESABASTECIDO], [TOTAL]

)F
)G

)X GROUP BY CODDISA, NOMDISA,CODRED,RED,UE,MESANO

----- GENERAR DISPONIBILIDAD DETALLADA REGIONES-------------


SELECT F.[CODDISA], F.[NOMDISA],F.[CODIGO_PRE], F.[ESTABLEC],F.[ALMTIPO_COMPLETO],F.UE,
F.SOBRESTOCK, F.NORMOSTOCK, F.SINROTACION, F.SUBSTOCK, F.DESABASTECIDO, F.TOTAL,
ISNULL(CONVERT(FLOAT,F.DIPO),0) AS DISPO,F.MESANO
INTO XXXX_DISPO_REGIONES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021

FROM
(
SELECT [CODDISA], [NOMDISA],[CODIGO_PRE], [ESTABLEC],[ALMTIPO_COMPLETO],UE,MESANO,
ISNULL([SOBRESTOCK],0) [SOBRESTOCK],
ISNULL([NORMOSTOCK],0) [NORMOSTOCK],
ISNULL([SUBSTOCK],0) [SUBSTOCK],
ISNULL([DESABASTECIDO],0) [DESABASTECIDO],
ISNULL([SINROTACION],0) [SINROTACION],
ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ ISNULL([DESABASTECIDO],0)),0) [TOTAL],
CASE WHEN ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) + ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0)+ISNULL([SINROTACION],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0)
+ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ISNULL([DESABASTECIDO],0)),0.0),4) END DIPO,
CASE WHEN ISNULL(SUM (ISNULL([SUBSTOCK],0)),0) > 0
THEN ROUND(SUM (ISNULL([SUBSTOCK],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) +
ISNULL([DESABASTECIDO],0)),0.0),4) END SUBSTOC,
CASE WHEN ISNULL(SUM (ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([DESABASTECIDO],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0) +ISNULL([SINROTACION],0)+
ISNULL([DESABASTECIDO],0)),0.0),4) END DESABASTECI

FROM
(
SELECT [CODDISA], [NOMDISA],[CODIGO_PRE], [ESTABLEC],[ALMTIPO_COMPLETO],UE,MESANO, Indicador FROM
[dbo].[DISPO12_CONVENIOS]
WHERE [ALMTIPO_COMPLETO] IN('INSTITUTO','HOSPITAL','C.S.','P.S.') AND UE NOT IN('U') AND
ESTADO='A'
) T

PIVOT ( COUNT (T.indicador) FOR T.indicador IN ([SOBRESTOCK], [NORMOSTOCK],[SINROTACION],


[SUBSTOCK], [DESABASTECIDO], [TOTAL], [DIPO] )) AS PIVOTTABLE
GROUP BY [CODDISA], [NOMDISA],[CODIGO_PRE],ESTABLEC,[ALMTIPO_COMPLETO],UE,MESANO,[SOBRESTOCK],
[NORMOSTOCK],[SINROTACION], [SUBSTOCK], [DESABASTECIDO], [TOTAL]

)F

----- GENERAR DISPONIBILIDAD DETALLADA POR REDES -------------

SELECT *
INTO XXXX_DISPO_REDES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021 -- drop table
XXXX_DISPO_REDES_CONSOLIDA_1_MES_DETALLE_202101
FROM
(
SELECT F.[CODDISA], F.[NOMDISA],CODIGO_PRE,ESTABLEC,F.[CODRED],
F.[RED],F.[ALMTIPO_COMPLETO],F.UE, F.SOBRESTOCK, F.NORMOSTOCK,F.SINROTACION, F.SUBSTOCK,
F.DESABASTECIDO, F.TOTAL,ISNULL(CONVERT(FLOAT,F.DIPO),0) AS DISPO,f.mesano

FROM
(
SELECT [CODDISA], [NOMDISA],CODIGO_PRE,ESTABLEC,[ALMTIPO_COMPLETO],codred,RED,UE,mesano,
ISNULL([SOBRESTOCK],0) [SOBRESTOCK],
ISNULL([NORMOSTOCK],0) [NORMOSTOCK],
ISNULL([SUBSTOCK],0) [SUBSTOCK],
ISNULL([DESABASTECIDO],0) [DESABASTECIDO],
ISNULL([SINROTACION],0) [SINROTACION],
ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ ISNULL([DESABASTECIDO],0)),0) [TOTAL],
CASE WHEN ISNULL(SUM (ISNULL([SOBRESTOCK],0) + ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) + ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0)+ISNULL([SINROTACION],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0)
+ISNULL([NORMOSTOCK],0) +
ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0)+ISNULL([DESABASTECIDO],0)),0.0),4) END DIPO,
CASE WHEN ISNULL(SUM (ISNULL([SUBSTOCK],0)),0) > 0
THEN ROUND(SUM (ISNULL([SUBSTOCK],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0)+ISNULL([SINROTACION],0) +
ISNULL([DESABASTECIDO],0)),0.0),4) END SUBSTOC,
CASE WHEN ISNULL(SUM (ISNULL([DESABASTECIDO],0)),0) > 0
THEN ROUND(SUM (ISNULL([DESABASTECIDO],0))*100.0/NULLIF(SUM (ISNULL([SOBRESTOCK],0) +
ISNULL([NORMOSTOCK],0) + ISNULL([SUBSTOCK],0) +ISNULL([SINROTACION],0)+
ISNULL([DESABASTECIDO],0)),0.0),4) END DESABASTECI

FROM
(
SELECT [CODDISA],
[NOMDISA],codigo_pre,ESTABLEC,codred,RED,[ALMTIPO_COMPLETO],UE,mesano,Indicador FROM
[dbo].[DISPO12_CONVENIOS]
WHERE [ALMTIPO_COMPLETO] IN('INSTITUTO','HOSPITAL','C.S.','P.S.') AND UE NOT IN('U') AND
ESTADO='A'
) T

PIVOT ( COUNT (T.indicador) FOR T.indicador IN ([SOBRESTOCK], [NORMOSTOCK],[SINROTACION],


[SUBSTOCK], [DESABASTECIDO], [TOTAL], [DIPO] )) AS PIVOTTABLE
GROUP BY [CODDISA],
[NOMDISA],CODIGO_PRE,ESTABLEC,codred,RED,UE,mesano,[ALMTIPO_COMPLETO],[SOBRESTOCK],
[NORMOSTOCK],[SINROTACION], [SUBSTOCK], [DESABASTECIDO], [TOTAL]

)F
)G
GO

SELECT *, SOBRESTOCK+NORMOSTOCK+SINROTACION NUMERADOR FROM


XXXX_DISPO_EJECUTORAS_CONSOLIDA_1_MES_2021
SELECT *, SOBRESTOCK+NORMOSTOCK+SINROTACION NUMERADOR FROM
XXXX_DISPO_REDES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021
SELECT *, SOBRESTOCK+NORMOSTOCK+SINROTACION NUMERADOR FROM
XXXX_DISPO_REGIONES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021

---- REPORTE A NIVEL DE RED


select *, CONVERT(float, dispo)/CONVERT(float,conteo) as promedio
FROM (
select CODDISA, NOMDISA, CODRED, RED, mesano, SUM(dispo) dispo, COUNT(distinct codigo_pre) conteo
from BD_DIGEMID.dbo.XXXX_DISPO_REDES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021
group by CODDISA, NOMDISA, CODRED, RED, mesano
) AS T order by CODDISA, NOMDISA, CODRED, RED, mesano

---- REPORTE A NIVEL DE DISA


select *, CONVERT(float, dispo)/CONVERT(float,conteo) as promedio
FROM (
select CODDISA, NOMDISA, mesano, SUM(dispo) dispo, COUNT(distinct codigo_pre) conteo
from BD_DIGEMID.dbo.XXXX_DISPO_REGIONES_CONSOLIDA_1_MES_DETALLE_CONSOLIDO_2021
group by CODDISA, NOMDISA, mesano
) AS T order by CODDISA, NOMDISA, mesano
Ficha N° 17: Implementación y Uso de Telemedicina

 Implementación del servicio de Telemedicina

/*==============================================================================
FICHA: Indicador N°17 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - SUSALUD
--------------------------------------------------------------------------------
Listado de cartera de servicio considerados para el cálculo del indicador:
Atención con radioterapia externa (teleterapia)
Teleanatomopatología
Teleanatomopatología en Centro Consultante
Telecografía
Telecografía en Centro Consultante
Teleconsulta (DL 1490)
Teleconsulta médica en servicios subespecializados (especificar)
Teleconsulta por médico
Teleconsulta por médico especialista (especificar)
Teleinterconsulta (DL 1490)
Telemamografía
Telemamografía en Centro Consultante
Telemergencias en servicios subespecializados
Telemergencias por médico especialista
Telemonitoreo (DL 1490)
Teleorientación (DL 1490)
Telepatología clínica
Telepatología clínica en Centro Consultante
Teleradiología convencional
Teleradiología Convencional Simple
.==============================================================================*/
USE BD_HISINDICADORES
go

select *, (convert(float,ConCarteraServicio)/convert(float,Total_ES)) * 100 as indicador


from(
select AUTORIDAD_SANITARIA, sum(Total_ES) as Total_ES, sum(ConCarteraServicio) as
ConCarteraServicio
from
(
select aus.de_nombre as AUTORIDAD_SANITARIA
,case when i.ti_tipoestabl in (1,2) then 1 else 0 end as Total_ES
,case when (select distinct ic.co_idipress from rnitm_ipress_cartera ic
INNER join rnitm_cartera_servicios cs on convert(int,ic.co_idcartera) =
convert(int,cs.co_idcartera) where upper(cs.de_nombre) like '%TELE%'
and convert(int,i.co_idipress) = convert(int,ic.co_idipress) and convert(int,i.ti_tipoestabl)
in (1,2)) is null then 0 else 1 end as ConCarteraServicio
from rnitm_ipress i
left join rnitv_direccion d on convert(int,i.co_iddireccionestabl) =
convert(int,d.co_iddireccion)
left join rnitm_ubigeo u on convert(int,d.co_idubigeo) = convert(int,u.co_idubigeo)
left join rnitm_autor_sanitaria_ubigeo asu on
convert(int,asu.co_ubigeo)=convert(int,U.CO_INEI)
left join rnitm_autor_sanitaria aus on convert(int,asu.co_idautorsanitaria) =
convert(int,aus.CO_IDAUTORIDADSANIT)
where i.es_estado = 1 and i.CO_IDINSTITUCIONESTABL in (1,7)
) a
group by AUTORIDAD_SANITARIA
) as t order by AUTORIDAD_SANITARIA

 Uso del servicio de Telemedicina

/*==============================================================================
FICHA: Indicador N°17 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
.==============================================================================*/
USE [BD_HISINDICADORES]
GO

create table #TRAMA_IND_TELEMEDICINA_15


(
renaes int,
EESS varchar(100),
Cat_estab varchar(6),
ubigeo varchar(6),
departamento varchar(100),
provincia varchar(100),
distrito varchar(100),
red varchar(100),
microred varchar(100),
diris varchar(100),
anio varchar(4),
mes varchar(2),
ambito float,
CPMS varchar(8),
Estado varchar(15),
Casos int
)

--- REDUCCION DE BASES DE DATOS.


select *
into #his_minsa
from TramaHisMinsa_202109_20211020
where ltrim(rtrim(cod_item)) in ('99499.11','99499.12')
and sw=1

select *
into #renaes
from Renaes_20211020
---------------------------

declare @anio_eval int, @mes_eval int, @mes_final int


set @anio_eval=2021
set @mes_eval=1
set @mes_final=9

while @mes_eval <= @mes_final


begin

------------------------
--- Teleconsultante(1) y Teleconsultor(2) para teleinterconsulta (99499.11,99499.12)
select distinct renaes, id_cita, cod_item,
Estado=
case
when ltrim(rtrim(cod_item)) in ('99499.11','99499.12') and try_convert(int,valor_lab)='1' then
'Consultante'
when ltrim(rtrim(cod_item)) in ('99499.11','99499.12') and try_convert(int,valor_lab)='2' then
'Consultora'
end
into #TEMP
from #his_minsa t with (nolock)
where (
ltrim(rtrim(t.id_tipitem))='D' and ltrim(rtrim(t.cod_item)) in ('99499.11','99499.12')
and ltrim(rtrim(t.valor_lab)) in ('1','2')
and ( try_convert(int, SUBSTRING(t.periodo,1,4))=@anio_eval and
try_convert(int, SUBSTRING(t.periodo,5,2))=@mes_eval )
)

------------------------
------------------------

select renaes, cod_item CPMS, Estado, anio=@anio_eval, mes=@mes_eval, count(*) Casos into #NUMER
from #TEMP
group by renaes, cod_item , Estado
drop table #TEMP

----- INSERCION
insert into #TRAMA_IND_TELEMEDICINA_15
select t.renaes, r.DESC_ESTAB EESS, r.CAT_ESTAB , r.UBIGEO, r.DESC_DPTO departamento,
r.DESC_PROV provincia, r.DESC_DIST distrito, r.DESC_RED Red, r.DESC_MRED microred,
r.DIRIS, @anio_eval anio , @mes_eval mes, r.AMBITO, t.CPMS, t.Estado, t.Casos
from #NUMER t
left join #renaes r on t.renaes=r.COD_ESTAB
where r.CAT_ESTAB in ('I-1','I-2','I-3','I-4', 'II-1','II-2','II-E','III-1','III-2','III-E') and
r.ambito=1

drop table #NUMER

set @mes_eval = @mes_eval + 1

end

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

select anio, mes, renaes, EESS, Cat_estab, ubigeo, departamento, provincia, distrito, red,
microred, diris, ambito
, iif(ltrim(rtrim(CPMS)) in ('99499.11','99499.12'),casos,0) casos_teleinterconsulta
, iif(ltrim(rtrim(CPMS)) in ('99499.11','99499.12') and
ltrim(rtrim(estado))='Consultora',casos,0) casos_teleinterconsulta_consultora
, iif(ltrim(rtrim(CPMS)) in ('99499.11','99499.12') and
ltrim(rtrim(estado))='Consultante',casos,0) casos_teleinterconsulta_consultante
into #temFFF
from #TRAMA_IND_TELEMEDICINA_15

select anio, mes, renaes, EESS, Cat_estab, ubigeo, departamento, provincia, distrito, red,
microred, diris, ambito
, sum(casos_teleinterconsulta) casos_inter
, sum(casos_teleinterconsulta_consultante) casos_inter1, sum( casos_teleinterconsulta_consultora)
casos_inter2
into #TRAMA_IND_TELEMEDICINA_15_2021_CONSOLIDADO
from #temFFF
group by anio, mes, renaes, EESS, Cat_estab, ubigeo, departamento, provincia, distrito, red,
microred, diris, ambito
Ficha N° 18: Referencias y Contrarreferencias en el aplicativo REFCON en el marco de la continuidad
del cuidado integral de salud para las personas usuarias de los servicios de salud.

/*==============================================================================
FICHA: Indicador N°18 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
==============================================================================*/

use BD_HISINDICADORES
go

---- TABLAS INTERMEDIAS.


Select *
into #tramarefcon
from TramaEqhali_Refcon_202109_20211020
where sw=1

select *
into #renaes
from Renaes_20211020
---========================================

declare @anio_eval int, @mes_eval int


-- Parametros
set @anio_eval=2021
set @mes_eval=9

--///////////////////////////////////
-- REFERENCIAS.
--///////////////////////////////////
select distinct a.id_referencia, a.num_doc, convert(int,a.cod_unico) renaes, cod_unico_d
, year(a.fecha_envio) año, month(a.fecha_envio) mes, a.tipo_traslado, a.desc_estado
into #tempref
from #tramarefcon a
inner join #renaes b on convert(int,a.cod_unico)=convert(int,b.COD_ESTAB)
where ltrim(rtrim(b.CAT_ESTAB)) in ('I-2','I-3','I-4','II-1','II-2','II-E','III-1','III-2','III-
E')
and ltrim(rtrim(a.tipo_traslado))='REFERENCIA'
and ltrim(rtrim(a.desc_estado)) in ('ACEPTADO','PACIENTE CITADO','PACIENTE RECIBIDO') -->
Referencias de los estados aceptado, paciente citado y paciente recibido del aplicativo
informático REFCON.
and year(a.fecha_envio)=@anio_eval and month(a.fecha_envio)<=@mes_eval

-- CONTEO
select renaes, mes, año, count(*) ref
into #ref
from #tempref
group by renaes, mes, año

--///////////////////////////////////
-- CONTRAREFERENCIAS
--///////////////////////////////////

-- Condicion Traslado=referencia y estado=Contrareferido.


select distinct a.id_referencia, a.num_doc, convert(int,a.cod_unico_d) renaes,
year(a.fecha_envio) año, month(a.fecha_envio) mes
into #tempcref1
from #tramarefcon a
inner join #renaes b on convert(int,a.cod_unico_d)=convert(int,b.COD_ESTAB)
where ltrim(rtrim(b.CAT_ESTAB)) in ('I-2','I-3','I-4','II-1','II-2','II-E','III-1','III-2','III-
E')
and ltrim(rtrim(a.tipo_traslado))='REFERENCIA' and ltrim(rtrim(a.desc_estado))='CONTRAREFERIDO'
--> Contrarreferencias de los estados del paciente contrarreferido
and year(a.fecha_envio)=@anio_eval and month(a.fecha_envio)<=@mes_eval

-- Condicion de contrareferencia aceptada que no se encuentre en la primera condicion (No


contabilizar doble).
select distinct a.id_referencia, a.num_doc, convert(int,a.cod_unico) renaes, year(a.fecha_envio)
año, month(a.fecha_envio) mes
into #tempcref2
from
(
select a.*, isnull(b.id,0) id from #tramarefcon a
left join
(select distinct id_referencia , id=1 from #tempcref1) b on
convert(int,a.id_refcon)=convert(int,b.id_Referencia)
) a
inner join #renaes b on convert(int,a.cod_unico)=convert(int,b.COD_ESTAB)
where ltrim(rtrim(b.CAT_ESTAB)) in ('I-2','I-3','I-4','II-1','II-2','II-E','III-1','III-2','III-
E')
and ltrim(rtrim(a.tipo_traslado))='CONTRAREFERENCIA' and ltrim(rtrim(a.desc_estado)) in
('ACEPTADO','PACIENTE CITADO') --> Contrarreferencias de los estados aceptado, paciente citado
and year(a.fecha_envio)=@anio_eval and month(a.fecha_envio)<=@mes_eval
and a.id=0 -- No se contabilizan las contrareferencias aceptadas.

-- CONTEO
select renaes, mes, año, count(*) cref
into #cref
from (
select distinct renaes, mes, año, num_doc, id_referencia
from (
select * from #tempcref1
union
select * from #tempcref2
) as t0
) as t1
group by renaes, mes, año

drop table #tempcref1


drop table #tempcref2

--///////////////////////////////////
-- INDICADOR.
--///////////////////////////////////

select distinct renaes, mes, año


into #temp
from (
select renaes, mes, año from #ref
union all
select renaes, mes, año from #cref
) as t

select a.*
, isnull(b.ref,0) ref_tot
, isnull(c.cref,0) cref_tot
into #ind_refcon
from #temp a
left join #ref b on convert(int,a.renaes)=convert(int,b.renaes) and
convert(int,a.mes)=converT(int,b.mes) and convert(int,a.año)=convert(int,b.año)
left join #cref c on convert(int,a.renaes)=convert(int,c.renaes) and
convert(int,a.mes)=converT(int,c.mes) and convert(int,a.año)=convert(int,c.año)

--------------------------------------------------
-- Cálculo por Nivel de Atencion
---------------------------------------------------
select tipo='PRIMER NIVEL'
, a.renaes , b.DESC_ESTAB est_nombre, b.CAT_ESTAB cat_estab, b.UBIGEO ubigeo, b.DESC_DPTO
departamento, b.DESC_PROV provincia, b.DESC_DIST distrito
, b.DESC_RED red, b.DESC_MRED micro_red, b.diris, a.año
, case when a.mes=1 then 'Enero' when a.mes=2 then 'Febrero' when a.mes=3 then 'Marzo' when
a.mes=4 then 'Abril' when a.mes=5 then 'Mayo' when a.mes=6 then 'Junio'
when a.mes=7 then 'Julio' when a.mes=8 then 'Agosto' when a.mes=9 then 'Setiembre' when a.mes=10
then 'Octubre' when a.mes=11 then 'Noviembre' when a.mes=12 then 'Diciembre' end mes
, cref_tot cref_apy, ref_tot ref_apy
, case when ref_tot=0 then 0
when cref_tot=0 then 0
when (convert(float,cref_tot)/convert(float,ref_tot) between 0 and 1) then
round(convert(float,cref_tot)/convert(float,ref_tot),2)
when (convert(float,cref_tot)/convert(float,ref_tot))>1 then 1 end cumplimiento
into #refcon_primernivel
from #ind_refcon a
inner join #renaes b on convert(int,a.renaes)=convert(int,b.cod_estab)
where b.cat_estab in ('I-2','I-3','I-4')

select tipo='SEGUNDO NIVEL'


, a.renaes , b.DESC_ESTAB est_nombre, b.CAT_ESTAB cat_estab, b.UBIGEO ubigeo, b.DESC_DPTO
departamento, b.DESC_PROV provincia, b.DESC_DIST distrito
, b.DESC_RED red, b.DESC_MRED micro_red, b.diris, a.año
, case when a.mes=1 then 'Enero' when a.mes=2 then 'Febrero' when a.mes=3 then 'Marzo' when
a.mes=4 then 'Abril' when a.mes=5 then 'Mayo' when a.mes=6 then 'Junio'
when a.mes=7 then 'Julio' when a.mes=8 then 'Agosto' when a.mes=9 then 'Setiembre' when a.mes=10
then 'Octubre' when a.mes=11 then 'Noviembre' when a.mes=12 then 'Diciembre' end mes
, a.cref_tot cref_apy, a.ref_tot ref_apy
, case when a.refcon<6 then 0
when (a.refcon between 6 and 9) then 0.3
when (a.refcon between 10 and 13) then 0.5
when (a.refcon between 14 and 19) then 0.7
when a.refcon>=20 then 1 end cumplimiento
into #refcon_segundonivel
from (
select * ,
case when cref_tot>=ref_tot then ref_tot
when ref_tot>cref_tot then cref_tot end refcon
from #ind_refcon
) a
inner join #renaes b on convert(int,a.renaes)=convert(int,b.cod_estab)
where b.cat_estab in ('II-1','II-2','II-E','III-1','III-2','III-E')

--===================
-- REPORTE
--===================
select * into #REFCON from #refcon_segundonivel
union all
select * from #refcon_primernivel

select distinct a.DIRIS diris, a.desc_red red, a.cat_estab, a.desc_estab, eess=1, iif(b.renaes is
null,0,1) eess_refcon
into #EESS_REFCON
from #renaes a
left join #REFCON b on convert(int,a.cod_estab)=convert(int,b.renaes)
where A.cat_estab in ('I-2','I-3','I-4') and a.ambito=1

select * from #EESS_REFCON


select * from #REFCON
Ficha N°19. Promedio de permanencia cama

/*==============================================================================
FICHA: Indicador N°19 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
--=============================================================
*/
USE BD_HISINDICADORES

SELECT *
INTO #EGRESOS
FROM BD_HISINDICADORES.DBO.TramaEgresos_202109_20211020
where coddiag1 is not null and coddiag1 not in ('null','')
and TRY_CONVERT(DATE,FECEGR)>=TRY_CONVERT(DATE,FECING)

SELECT *
INTO #RENAES
FROM BD_HISINDICADORES.DBO.Renaes_20211020
--===========================================================

DECLARE @MES_INICIO INT ,


@MES_FINAL INT ,
@YEAR INT

SET @MES_INICIO=1 -- <========= CAMBIAR MES INICIO


SET @MES_FINAL=9 -- <========= CAMBIAR MES FINAL
SET @YEAR=2021 -- <========= CAMBIAR AÑO.

SELECT A.RENIPRESS
, B.desc_Estab EESS_NOMBRE
, B.CAT_ESTAB EESS_CAT
, ISNULL(CONVERT(INT,B.CAMAS),0) CAMAS
, A.UPS
, IIF(D.DESCRIP_UPS02 IS NULL,'SIN REGISTRO',D.DESCRIP_UPS02) DESC_UPS
, B.DESC_DISA DIRESA
, B.DESC_DPTO DEPARTAMENTO
, B.DESC_PROV PROVINCIA
, B.DESC_DIST DISTRITO
, AÑO=@YEAR
, MONTH(TRY_CONVERT(DATE,A.FECEGR)) MES
, TRY_CONVERT(DATE,A.FECEGR) FECHA_EGRESO
, TRY_CONVERT(DATE,A.FECING) FECHA_INGRESO
, A.CONDICION
, CODDIAG1 DX1 -- DIAGNOSTICO1.
, CODDIAG2 DX2 -- DIAGNOSTICO2.
, CODDIAG3 DX3 -- DIAGNOSTICO3.
, CODDIAG4 DX4 -- DIAGNOSTICO4.
INTO #DATA_EGRESO
FROM #EGRESOS A
INNER JOIN #RENAES B ON CONVERT(INT,A.RENIPRESS)=CONVERT(INT,B.COD_ESTAB)
LEFT JOIN EGRESOS_RES_UPS D ON CONVERT(INT,A.UPS)=CONVERT(INT,D.COD_UPS)
WHERE YEAR(TRY_CONVERT(DATE,A.FECEGR))=@YEAR AND MONTH(TRY_CONVERT(DATE,A.FECEGR))>=@MES_INICIO
AND MONTH(TRY_CONVERT(DATE,A.FECEGR))<=@MES_FINAL
AND B.AMBITO='1' --> ESTABLECIMIENTOS DE SALUD DEL MINSA.
AND A.CONDICION IN ('1' --> EGRESO: ALTA MEDICA
,'2' --> EGRESO: ALTA VOLUNTARIA
,'3' --> EGRESO: TRANSFERIDO
,'4' --> EGRESO: FUGADO
,'5' --> EGRESO: FALLECIDO.
)
AND (
(LTRIM(RTRIM(B.CAT_ESTAB)) IN ('II-1','II-2','II-E') AND ISNULL(CONVERT(INT,B.CAMAS),0)>50) --
HOSPITAL DE II NIVEL CON MAS DE 50 CAMAS.
OR
LTRIM(RTRIM(B.CAT_ESTAB)) IN ('III-1','III-2','III-E') -- HOSPITAL DE III NIVEL E INSTITUOS
ESPECIALIZADOS.
)

/*-------------- EXLCUIR REGISTROS ------- */


delete from #DATA_EGRESO where DX1 in ('U071','U072') -- <= DIAGNOSTICO COVID.
delete from #DATA_EGRESO where DX2 in ('U071','U072') -- <= DIAGNOSTICO COVID.
delete from #DATA_EGRESO where DX3 in ('U071','U072') -- <= DIAGNOSTICO COVID.
delete from #DATA_EGRESO where DX4 in ('U071','U072') -- <= DIAGNOSTICO COVID.

delete from #DATA_EGRESO where LTRIM(RTRIM(SUBSTRING(UPS,1,4))) IN ('2501', '2502', '2503', '2504')


-- <= UNIDAD DE CUIDADOS INTENSIVOS (INCLUYE CUIDADOS INTERMEDIOS)
delete from #DATA_EGRESO where LTRIM(RTRIM(UPS)) IN ('250500') -- <= UNIDAD DE CUIDADOS INTENSIVOS
(INCLUYE CUIDADOS INTERMEDIOS)
delete from #DATA_EGRESO where LTRIM(RTRIM(UPS)) IN ('250501') -- <= UNIDAD DE TRAUMA SHOCk.
(HOSPITALIZACIÓN-REUMATOLOGÍA PEDIÁTRICA-)
delete from #DATA_EGRESO where LTRIM(RTRIM(SUBSTRING(UPS,1,2))) IN ('23') -- <= CAMAS DE
EMERGENCIA.

/* --================================
-- DENOMINADOR
--=============================== */
SELECT RENIPRESS, EESS_NOMBRE, EESS_CAT, CAMAS, UPS, DESC_UPS, DIRESA, DEPARTAMENTO, PROVINCIA,
DISTRITO, AÑO, MES
, COUNT(*) DENOMINADOR
INTO #DENOMINADOR
FROM #DATA_EGRESO
GROUP BY RENIPRESS, EESS_NOMBRE, EESS_CAT, CAMAS, UPS, DESC_UPS, DIRESA, DEPARTAMENTO, PROVINCIA,
DISTRITO, AÑO, MES
---

/* --================================
-- NUMERADOR
--=============================== */
SELECT RENIPRESS, UPS, AÑO, MES, SUM(NUM) NUMERADOR
INTO #NUMERADOR
FROM(
SELECT *
, ISNULL(DATEDIFF(DD, FECHA_INGRESO, FECHA_EGRESO),0) NUM
FROM #DATA_EGRESO
) AS T0
GROUP BY RENIPRESS, UPS, AÑO, MES

--===================
-- REPORTE
--===================
SELECT A.*
, IIF(B.NUMERADOR IS NULL,0,B.NUMERADOR) NUMERADOR
FROM #DENOMINADOR A
LEFT JOIN #NUMERADOR B ON A.RENIPRESS=B.RENIPRESS AND A.UPS=B.UPS AND A.MES=B.MES
Ficha N° 20: Densidad de Incidencia /Incidencia Acumulada de las Infecciones Asociadas a la Atención en
Salud (IAAS) seleccionadas.

/*==============================================================================
FICHA: Indicador N°20 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - CDC
--=============================================================
*/
use BD_CDC_INDICADORES
go

DECLARE @anio int


declare @anio_ant int
DECLARE @anio_ref int

set @anio=2021
set @anio_ref =2020
set @anio_ant = @anio-1

select
x.nombre as diresa,i.hospital as codigo,anio,y.raz_soc as hospital, y.categoria,
round(iif(sum(pv_pacientes)>0,CONVERT(FLOAT,sum(pv_endometritis))/CONVERT(FLOAT,sum(pv_pacientes)
),0.00)*100,2) as pv_tasa,
round(iif(sum(pc_pacientes)>0,CONVERT(FLOAT,sum(pc_endometritis))/CONVERT(FLOAT,sum(pc_pacientes)
),0.00)*100,2) as pc_tasa,
round(iif(sum(pc_pacientes)>0,CONVERT(FLOAT,sum(pc_iho))/CONVERT(FLOAT,sum(pc_pacientes)),0.00)*1
00,2) as tasa_iho
into #iih_mes_gineco_ant
FROM iih_mes_gineco i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est
where anio=@anio_ant and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria
/*--------------------------------------------------------------------------------------------*/

SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,
round(iif(sum(dias_cvc)>0,CONVERT(FLOAT,sum(cvc_its))/CONVERT(FLOAT,sum(dias_cvc)),0.00)*1000,2)
as cvc_tasa,
round(iif(sum(dias_cvp)>0,CONVERT(FLOAT,sum(cvp_its))/CONVERT(FLOAT,sum(dias_cvp)),0.00)*1000,2)
as cvp_tasa,
round(iif(sum(dias_vm)>0,CONVERT(FLOAT,sum(vm_neumonia))/CONVERT(FLOAT,sum(dias_vm)),0.00)*1000,2
) as vm_tasa

into #iih_mes_neonato_ant
FROM iih_mes_neonato i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est

where anio=@anio_ant and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*------------------------------------------------------------------------------------------*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,

round(iif(sum(cvc_expo)>0,CONVERT(FLOAT,sum(cvc_its))/CONVERT(FLOAT,sum(cvc_expo)),0.00)*1000,2)
as cvc_tasa,
round(iif(sum(cup_expo)>0,CONVERT(FLOAT,sum(cup_its))/CONVERT(FLOAT,sum(cup_expo)),0.00)*1000,2)
as cup_tasa,
round(iif(sum(vm_expo)>0,CONVERT(FLOAT,sum(vm_neumonia))/CONVERT(FLOAT,sum(vm_expo)),0.00)*1000,2
) as vm_tasa
into #iih_mes_uci_ant
FROM iih_mes_uci i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est
where anio=@anio_ant and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
AND i.servicio IN(select id_servicio from dbo.uci_adultos_servicio)
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*---------------------------------------------------------------------------------------------*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,

round(iif(sum(cvc_expo)>0,CONVERT(FLOAT,sum(cvc_its))/CONVERT(FLOAT,sum(cvc_expo)),0.00)*1000,2)
as cvc_tasa,
round(iif(sum(cup_expo)>0,CONVERT(FLOAT,sum(cup_its))/CONVERT(FLOAT,sum(cup_expo)),0.00)*1000,2)
as cup_tasa,
round(iif(sum(vm_expo)>0,CONVERT(FLOAT,sum(vm_neumonia))/CONVERT(FLOAT,sum(vm_expo)),0.00)*1000,2
) as vm_tasa
into #iih_mes_uci_pediatrica_ant
FROM iih_mes_uci i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est

where anio=@anio_ant and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
AND i.SERVICIO IN(select id_servicio from dbo.uci_pediatricas_servicio)
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*--------------------------------------------------------------------------------------------*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,
round(iif(sum(dia_cup)>0,CONVERT(FLOAT,sum(med_cup_itu))/CONVERT(FLOAT,sum(dia_cup)),0.00)*1000,2
) as cup_itu
into #iih_mes_medicina_ant
FROM iih_mes_medicina i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est

where anio=@anio_ant and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*--------------------------------------------------------------------------------------*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,

round(iif(sum(med_cup_paci)>0,CONVERT(FLOAT,sum(med_cup_itu))/CONVERT(FLOAT,sum(med_cup_paci)),0.
00)*1000,2) as tasa_itu,
round(iif(sum(cir_coles_paci)>0,CONVERT(FLOAT,sum(cir_coles_iho))/CONVERT(FLOAT,sum(cir_coles_pac
i)),0.00)*100,2) as tasa_coles,
round(iif(sum(cir_hernio_paci)>0,CONVERT(FLOAT,sum(cir_hernio_iho))/CONVERT(FLOAT,sum(cir_hernio_
paci)),0.00)*100,2) as tasa_hernio
into #iih_mes_cirugia_ant

FROM iih_mes_cirugia i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est

where anio=@anio_ant and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*-----------------------------------------------------------------------------------------------
Tablas @anio
--------------------------------------------------------------------------------------------*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,
round(iif(sum(pv_pacientes)>0,CONVERT(FLOAT,sum(pv_endometritis))/CONVERT(FLOAT,sum(pv_pacientes)
),0.00)*100,2) as pv_tasa,
round(iif(sum(pc_pacientes)>0,CONVERT(FLOAT,sum(pc_endometritis))/CONVERT(FLOAT,sum(pc_pacientes)
),0.00)*100,2) as pc_tasa,
round(iif(sum(pc_pacientes)>0,CONVERT(FLOAT,sum(pc_iho))/CONVERT(FLOAT,sum(pc_pacientes)),0.00)*1
00,2) as tasa_iho
into #iih_mes_gineco
FROM iih_mes_gineco i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est

where anio=@anio and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*-------------------------------------------------------------------------------------------*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,
round(iif(sum(dias_cvc)>0,CONVERT(FLOAT,sum(cvc_its))/CONVERT(FLOAT,sum(dias_cvc)),0.00)*1000,2)
as cvc_tasa,
round(iif(sum(dias_cvp)>0,CONVERT(FLOAT,sum(cvp_its))/CONVERT(FLOAT,sum(dias_cvp)),0.00)*1000,2)
as cvp_tasa,
round(iif(sum(dias_vm)>0,CONVERT(FLOAT,sum(vm_neumonia))/CONVERT(FLOAT,sum(dias_vm)),0.00)*1000,2
) as vm_tasa
into #iih_mes_neonato
FROM iih_mes_neonato i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est
where anio=@anio and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*-------------------------------------------------------------------------------------------*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,
round(iif(sum(cvc_expo)>0,CONVERT(FLOAT,sum(cvc_its))/CONVERT(FLOAT,sum(cvc_expo)),0.00)*1000,2)
as cvc_tasa,
round(iif(sum(cup_expo)>0,CONVERT(FLOAT,sum(cup_its))/CONVERT(FLOAT,sum(cup_expo)),0.00)*1000,2)
as cup_tasa,
round(iif(sum(vm_expo)>0,CONVERT(FLOAT,sum(vm_neumonia))/CONVERT(FLOAT,sum(vm_expo)),0.00)*1000,2
) as vm_tasa
into #iih_mes_uci
FROM iih_mes_uci i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est
where anio=@anio and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
AND i.servicio IN(select id_servicio from dbo.uci_adultos_servicio)
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria
/*-----------------------------------------------------------------------------------------------
--*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,
round(iif(sum(cvc_expo)>0,CONVERT(FLOAT,sum(cvc_its))/CONVERT(FLOAT,sum(cvc_expo)),0.00)*1000,2)
as cvc_tasa,
round(iif(sum(cup_expo)>0,CONVERT(FLOAT,sum(cup_its))/CONVERT(FLOAT,sum(cup_expo)),0.00)*1000,2)
as cup_tasa,
round(iif(sum(vm_expo)>0,CONVERT(FLOAT,sum(vm_neumonia))/CONVERT(FLOAT,sum(vm_expo)),0.00)*1000,2
) as vm_tasa
into #iih_mes_uci_pediatrica
FROM iih_mes_uci i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est
where anio=@anio and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
AND i.SERVICIO IN(select id_servicio from dbo.uci_pediatricas_servicio)
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*-------------------------------------------------------------------------------------------*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,
round(iif(sum(dia_cup)>0,CONVERT(FLOAT,sum(med_cup_itu))/CONVERT(FLOAT,sum(dia_cup)),0.00)*1000,2
) as cup_itu
into #iih_mes_medicina
FROM iih_mes_medicina i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est
where anio=@anio and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*-------------------------------------------------------------------------------------------*/
SELECT
x.nombre as diresa, i.hospital as codigo,
y.raz_soc as hospital, y.categoria,
anio,
round(iif(sum(med_cup_paci)>0,CONVERT(FLOAT,sum(med_cup_itu))/CONVERT(FLOAT,sum(med_cup_paci)),0.
00)*1000,2) as tasa_itu,
round(iif(sum(cir_coles_paci)>0,CONVERT(FLOAT,sum(cir_coles_iho))/CONVERT(FLOAT,sum(cir_coles_pac
i)),0.00)*100,2) as tasa_coles,
round(iif(sum(cir_hernio_paci)>0,CONVERT(FLOAT,sum(cir_hernio_iho))/CONVERT(FLOAT,sum(cir_hernio_
paci)),0.00)*100,2) as tasa_hernio
into #iih_mes_cirugia
FROM iih_mes_cirugia i
left join diresas x on i.diresa = x.codigo
left join renace y on i.hospital = y.cod_est
where anio=@anio and categoria in ('II-1', 'II-E', 'II-2', 'III-1', 'III-E', 'III-2')
group by x.nombre,i.hospital,y.raz_soc, anio ,y.categoria

/*-----------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------*/
DROP TABLE trama_resultado_previo

select renipress, establecimiento, categoria, camas,


cvc_tasa_neo_ant, cvp_tasa_neo_ant, vm_tasa_neo_ant, cvc_tasa_uci_ant, cup_tasa_uci_ant,
vm_tasa_uci_ant, tasa_itu_cir_ant, tasa_coles_cir_ant, tasa_hernio_cir_ant, cup_itu_med_ant,
pv_tasa_gin_ant, pc_tasa_gin_ant, tasa_iho_gin_ant,
cvc_tasa_neo_act, cvp_tasa_neo_act, vm_tasa_neo_act, cvc_tasa_uci_act, cup_tasa_uci_act,
vm_tasa_uci_act, tasa_itu_cir_act, tasa_coles_cir_act, tasa_hernio_cir_act, cup_itu_med_act,
pv_tasa_gin_act, pc_tasa_gin_act, tasa_iho_gin_act,
cvc_tasa_uci_pediatrica_ant,
cup_tasa_uci_pediatrica_ant,
cvc_tasa_uci_pediatrica_act,
cup_tasa_uci_pediatrica_act,
vm_tasa_uci_pediatrica_ant,
vm_tasa_uci_pediatrica_act,
prom_neo_cvc as ref_neo_cvc, prom_neo_cvp as ref_neo_cvp, prom_neo_vm as ref_neo_vm,
prom_uci_cvc as ref_uci_cvc, prom_uci_cup as ref_uci_cup, prom_uci_vm as ref_uci_vm,
prom_cir_itu as ref_cir_itu, prom_cir_col as ref_cir_col, prom_cir_her as ref_cir_her,
prom_med_cup as ref_med_cup, prom_gin_epv as ref_gin_epv, prom_gin_epc as ref_gin_epc,
prom_gin_iho as ref_gin_iho,
prom_uci_vm_ped as ref_uci_vm_ped
,prom_uci_cvc_ped as ref_uci_cvc_ped
,prom_uci_cup_ped as ref_uci_cup_ped
into trama_resultado_previo
from
(
select x.renipress, x.raz_soc as establecimiento, x.categoria, x.camas,
coalesce(z1.cvc_tasa, 0.00) as cvc_tasa_neo_ant,
coalesce(z1.cvp_tasa, 0.00) as cvp_tasa_neo_ant,
coalesce(z1.vm_tasa, 0.00) as vm_tasa_neo_ant,
coalesce(a1.cvc_tasa, 0.00) as cvc_tasa_uci_ant,
coalesce(a1.cup_tasa, 0.00) as cup_tasa_uci_ant,
coalesce(a1.vm_tasa, 0.00) as vm_tasa_uci_ant,
coalesce(y1.tasa_itu,0.00) as tasa_itu_cir_ant,
coalesce(y1.tasa_coles, 0.00) as tasa_coles_cir_ant,
coalesce(y1.tasa_hernio, 0.00) as tasa_hernio_cir_ant,
coalesce(w1.cup_itu, 0.00) as cup_itu_med_ant,
coalesce(v1.pv_tasa, 0.00) as pv_tasa_gin_ant,
coalesce(v1.pc_tasa, 0.00) as pc_tasa_gin_ant,
coalesce(v1.tasa_iho, 0.00) as tasa_iho_gin_ant,
coalesce(z.cvc_tasa, 0.00) as cvc_tasa_neo_act,
coalesce(z.cvp_tasa, 0.00) as cvp_tasa_neo_act,
coalesce(z.vm_tasa, 0.00) as vm_tasa_neo_act,
coalesce(a.cvc_tasa, 0.00) as cvc_tasa_uci_act,
coalesce(a.cup_tasa, 0.00) as cup_tasa_uci_act,
coalesce(a.vm_tasa, 0.00) as vm_tasa_uci_act,
coalesce(y.tasa_itu,0.00) as tasa_itu_cir_act,
coalesce(y.tasa_coles, 0.00) as tasa_coles_cir_act,
coalesce(y.tasa_hernio, 0.00) as tasa_hernio_cir_act,
coalesce(w.cup_itu, 0.00) as cup_itu_med_act,
coalesce(v.pv_tasa, 0.00) as pv_tasa_gin_act,
coalesce(v.pc_tasa, 0.00) as pc_tasa_gin_act,
coalesce(v.tasa_iho, 0.00) as tasa_iho_gin_act,
coalesce(a2.cvc_tasa, 0.00) as cvc_tasa_uci_pediatrica_ant,
coalesce(a2.cup_tasa, 0.00) as cup_tasa_uci_pediatrica_ant,
coalesce(a2.vm_tasa, 0.00) as vm_tasa_uci_pediatrica_ant,
coalesce(a3.cvc_tasa, 0.00) as cvc_tasa_uci_pediatrica_act,
coalesce(a3.cup_tasa, 0.00) as cup_tasa_uci_pediatrica_act,
coalesce(a3.vm_tasa, 0.00) as vm_tasa_uci_pediatrica_act,
b.prom_neo_cvc, b.prom_neo_cvp, b.prom_neo_vm,
b.prom_uci_cvc, b.prom_uci_cup, b.prom_uci_vm,
b.prom_cir_itu, b.prom_cir_col, b.prom_cir_her,
b.prom_med_cup, b.prom_gin_epv, b.prom_gin_epc,
b.prom_gin_iho,
convert(float,b.prom_uci_vm_ped) prom_uci_vm_ped,
convert(float,b.prom_uci_cvc_ped) prom_uci_cvc_ped,
convert(float,b.prom_uci_cup_ped) prom_uci_cup_ped
from
(select x.id, x.cod_est, y.renaes as renipress, x.raz_soc, x.subregion, x.red,
x.microred,x.notifica, x.tipo, x.nivel, x.iih, z.categoria, z.camas
from renace x
left join renace_noti y on x.cod_est = y.cod_est
left join iih_camas z on y.renaes = z.codigo
where x.iih = '1') x
left join #iih_mes_cirugia_ant y1 on x.cod_est = y1.codigo
left join #iih_mes_gineco_ant v1 on x.cod_est = v1.codigo
left join #iih_mes_medicina_ant w1 on x.cod_est = w1.codigo
left join #iih_mes_neonato_ant z1 on x.cod_est = z1.codigo
left join #iih_mes_uci_ant a1 on x.cod_est = a1.codigo
left join #iih_mes_cirugia y on x.cod_est = y.codigo
left join #iih_mes_gineco v on x.cod_est = v.codigo
left join #iih_mes_medicina w on x.cod_est = w.codigo
left join #iih_mes_neonato z on x.cod_est = z.codigo
left join #iih_mes_uci a on x.cod_est = a.codigo
left join promedios_iih b on x.categoria = b.categoria
left join #iih_mes_uci_pediatrica_ant a2 on x.cod_est = a2.codigo
left join #iih_mes_uci_pediatrica a3 on x.cod_est = a3.codigo
where x.iih = '1' and x.cod_est like '%A%'
and b.anio = @anio_ref
)a
where (cvc_tasa_neo_act+cvp_tasa_neo_act+vm_tasa_neo_act+cvc_tasa_uci_act+cup_tasa_uci_act+
vm_tasa_uci_act+tasa_itu_cir_act+tasa_coles_cir_act+tasa_hernio_cir_act+cup_itu_med_act+
pv_tasa_gin_act+pc_tasa_gin_act+tasa_iho_gin_act) != 0.00 and
(cvc_tasa_neo_ant+cvp_tasa_neo_ant+vm_tasa_neo_ant+cvc_tasa_uci_ant+cup_tasa_uci_ant+
vm_tasa_uci_ant+tasa_itu_cir_ant+tasa_coles_cir_ant+tasa_hernio_cir_ant+cup_itu_med_ant+
pv_tasa_gin_ant+pc_tasa_gin_ant+tasa_iho_gin_ant) != 0.00
order by renipress

DROP TABLE trama_resultado_previo_final


select
renipress ,establecimiento ,categoria ,camas ,cvc_tasa_neo_ant ,cvp_tasa_neo_ant
,vm_tasa_neo_ant ,cvc_tasa_uci_ant ,
cup_tasa_uci_ant ,vm_tasa_uci_ant ,tasa_itu_cir_ant ,tasa_coles_cir_ant
,tasa_hernio_cir_ant ,cup_itu_med_ant ,
pv_tasa_gin_ant ,pc_tasa_gin_ant ,tasa_iho_gin_ant ,cvc_tasa_neo_act
,cvp_tasa_neo_act ,vm_tasa_neo_act ,cvc_tasa_uci_act ,
cup_tasa_uci_act ,vm_tasa_uci_act ,tasa_itu_cir_act ,tasa_coles_cir_act
,tasa_hernio_cir_act ,cup_itu_med_act ,pv_tasa_gin_act ,
pc_tasa_gin_act ,tasa_iho_gin_act ,cvc_tasa_uci_pediatrica_ant
,cup_tasa_uci_pediatrica_ant ,cvc_tasa_uci_pediatrica_act ,cup_tasa_uci_pediatrica_act
,
vm_tasa_uci_pediatrica_ant ,vm_tasa_uci_pediatrica_act ,
ref_neo_cvc ,ref_neo_cvp ,ref_neo_vm ,ref_uci_cvc ,ref_uci_cup ,ref_uci_vm ,ref_cir_itu
,ref_cir_col ,ref_cir_her ,ref_med_cup ,
ref_gin_epv ,ref_gin_epc ,ref_gin_iho ,ref_uci_vm_ped ,ref_uci_cvc_ped
,ref_uci_cup_ped ,
iif(umbral1=0,null, tasa1_desc)as tasa1_desc,iif(umbral1=0,null, umbral1)as umbral1
,iif(umbral2=0,null, tasa2_desc)as tasa2_desc,iif(umbral2=0,null, umbral2)as umbral2 ,
iif(logro_esperado1=0,null, logro_esperado1)as logro_esperado1,iif(logro_esperado2=0,null,
logro_esperado2)as logro_esperado2,
logro_alcanzado1, logro_alcanzado2,
iif(logro_esperado1-umbral1=0,null,((logro_alcanzado1-umbral1)/(logro_esperado1-umbral1))*100) as
cumplimiento1,
iif(logro_esperado2-umbral2=0,null, ((logro_alcanzado2-umbral2)/(logro_esperado2-umbral2))*100) as
cumplimiento2
into trama_resultado_previo_final
from
(
SELECT *
,dbo.selecciona_tasa_desc(renipress,0) tasa1_desc,dbo.selecciona_tasa(renipress,0)umbral1
,dbo.selecciona_tasa_desc(renipress,1) tasa2_desc,dbo.selecciona_tasa(renipress,1)umbral2
,dbo.logro_esperado(renipress,0)logro_esperado1,dbo.logro_esperado(renipress,1)logro_esperado2,
logro_alcanzado1 =
CASE dbo.selecciona_tasa_desc(renipress,0)
WHEN 'cvc_tasa_neo_ant' THEN cvc_tasa_neo_act
WHEN 'cvp_tasa_neo_ant' THEN cvp_tasa_neo_act
WHEN 'vm_tasa_neo_ant' THEN vm_tasa_neo_act
WHEN 'cvc_tasa_uci_ant' THEN cvc_tasa_uci_act
WHEN 'cup_tasa_uci_ant' THEN cup_tasa_uci_act
WHEN 'vm_tasa_uci_ant' THEN vm_tasa_uci_act
WHEN 'tasa_itu_cir_ant' THEN tasa_itu_cir_act
WHEN 'tasa_coles_cir_ant' THEN tasa_coles_cir_act
WHEN 'tasa_hernio_cir_ant' THEN tasa_hernio_cir_act
WHEN 'cup_itu_med_ant' THEN cup_itu_med_act
WHEN 'pv_tasa_gin_ant' THEN pv_tasa_gin_act
WHEN 'pc_tasa_gin_ant' THEN pc_tasa_gin_act
WHEN 'tasa_iho_gin_ant' THEN tasa_iho_gin_act
WHEN 'vm_tasa_uci_pediatrica_ant' THEN vm_tasa_uci_pediatrica_act
WHEN 'cvc_tasa_uci_pediatrica_ant' THEN cvc_tasa_uci_pediatrica_act
WHEN 'cup_tasa_uci_pediatrica_ant' THEN cup_tasa_uci_pediatrica_act
ELSE null
END,
logro_alcanzado2 =
CASE dbo.selecciona_tasa_desc(renipress,1)
WHEN 'cvc_tasa_neo_ant' THEN cvc_tasa_neo_act
WHEN 'cvp_tasa_neo_ant' THEN cvp_tasa_neo_act
WHEN 'vm_tasa_neo_ant' THEN vm_tasa_neo_act
WHEN 'cvc_tasa_uci_ant' THEN cvc_tasa_uci_act
WHEN 'cup_tasa_uci_ant' THEN cup_tasa_uci_act
WHEN 'vm_tasa_uci_ant' THEN vm_tasa_uci_act
WHEN 'tasa_itu_cir_ant' THEN tasa_itu_cir_act
WHEN 'tasa_coles_cir_ant' THEN tasa_coles_cir_act
WHEN 'tasa_hernio_cir_ant' THEN tasa_hernio_cir_act
WHEN 'cup_itu_med_ant' THEN cup_itu_med_act
WHEN 'pv_tasa_gin_ant' THEN pv_tasa_gin_act
WHEN 'pc_tasa_gin_ant' THEN pc_tasa_gin_act
WHEN 'tasa_iho_gin_ant' THEN tasa_iho_gin_act
WHEN 'vm_tasa_uci_pediatrica_ant' THEN vm_tasa_uci_pediatrica_act
WHEN 'cvc_tasa_uci_pediatrica_ant' THEN cvc_tasa_uci_pediatrica_act
WHEN 'cup_tasa_uci_pediatrica_ant' THEN cup_tasa_uci_pediatrica_act
ELSE null
END
from trama_resultado_previo
)x order by renipress

select *,
cumplimiento_final =
CASE
WHEN
round((isnull(cumplimiento1,cumplimiento2)+isnull(cumplimiento2,cumplimiento1))/2,2) >=100 THEN
100
WHEN round((isnull(cumplimiento1,cumplimiento2)+isnull(cumplimiento2,cumplimiento1))/2,2) <=0
THEN 0
ELSE
round((isnull(cumplimiento1,cumplimiento2)+isnull(cumplimiento2,cumplimiento1))/2,2)
END
from trama_resultado_previo_final order by renipress

FUNCIONES GENERADAS PARA SU USO EN EL SCRIPT

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create FUNCTION [dbo].[logro_esperado](@cod varchar(10),@puntero int)
RETURNS float
as
BEGIN
declare @v float
set @v=null
select @v=vtasa from (
select cvc_tasa_neo_ant - ref_neo_cvc as valor, 'cvc_tasa_neo_ant' as tasa,cvc_tasa_neo_ant -
(ref_neo_cvc *0.15) as vtasa from trama_resultado_previo where renipress=@cod union all
select cvp_tasa_neo_ant - ref_neo_cvp as valor, 'cvp_tasa_neo_ant' as tasa,cvp_tasa_neo_ant -
(ref_neo_cvp *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select vm_tasa_neo_ant - ref_neo_vm as valor, 'vm_tasa_neo_ant' as tasa,vm_tasa_neo_ant -
(ref_neo_vm *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select cvc_tasa_uci_ant - ref_uci_cvc as valor, 'cvc_tasa_uci_ant' as tasa,cvc_tasa_uci_ant
+(ref_uci_cvc *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select cup_tasa_uci_ant - ref_uci_cup as valor, 'cup_tasa_uci_ant' as tasa,cup_tasa_uci_ant
+(ref_uci_cup *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select vm_tasa_uci_ant - ref_uci_vm as valor, 'vm_tasa_uci_ant' as tasa,vm_tasa_uci_ant
+(ref_uci_vm *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select tasa_itu_cir_ant - ref_cir_itu as valor, 'tasa_itu_cir_ant' as tasa,tasa_itu_cir_ant -
(ref_cir_itu *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select tasa_coles_cir_ant - ref_cir_col as valor, 'tasa_coles_cir_ant' as tasa,tasa_coles_cir_ant
-(ref_cir_col *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select tasa_hernio_cir_ant - ref_cir_her as valor, 'tasa_hernio_cir_ant' as
tasa,tasa_hernio_cir_ant-(ref_cir_her *0.15) as vtasa from trama_resultado_previo where
renipress=@cod union all
select cup_itu_med_ant - ref_med_cup as valor, 'cup_itu_med_ant' as tasa,cup_itu_med_ant -
(ref_med_cup *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select pv_tasa_gin_ant - ref_gin_epv as valor, 'pv_tasa_gin_ant' as tasa,pv_tasa_gin_ant -
(ref_gin_epv *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select pc_tasa_gin_ant - ref_gin_epc as valor, 'pc_tasa_gin_ant' as tasa,pc_tasa_gin_ant-
(ref_gin_epc *0.15) as vtasa from trama_resultado_previo where renipress=@cod union all
select tasa_iho_gin_ant - ref_gin_iho as valor, 'tasa_iho_gin_ant' as tasa,tasa_iho_gin_ant -
(ref_gin_iho *0.15)as vtasa from trama_resultado_previo where renipress=@cod union all
select vm_tasa_uci_pediatrica_ant - ref_uci_vm_ped as valor, 'vm_tasa_uci_pediatrica_ant' as tasa
,vm_tasa_uci_pediatrica_ant-(ref_uci_vm_ped *0.15) as vtasa from trama_resultado_previo where
renipress=@cod union all
select cvc_tasa_uci_pediatrica_ant - ref_uci_cvc_ped as valor, 'cvc_tasa_uci_pediatrica_ant' as
tasa , cvc_tasa_uci_pediatrica_ant-(ref_uci_cvc_ped *0.15) as vtasa from trama_resultado_previo
where renipress=@cod union all
select cup_tasa_uci_pediatrica_ant - ref_uci_cup_ped as valor, 'cup_tasa_uci_pediatrica_ant' as
tasa , cup_tasa_uci_pediatrica_ant -(ref_uci_cup_ped *0.15) as vtasa from trama_resultado_previo
where renipress=@cod
) x
order by valor desc
OFFSET @puntero ROWS FETCH NEXT 1 ROWS ONLY
return @v
end
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[selecciona_tasa](@cod varchar(10),@puntero integer )
RETURNS float
as
BEGIN
declare @v float
set @v=null
select @v=vtasa from (
select cvc_tasa_neo_ant - ref_neo_cvc as valor, 'cvc_tasa_neo_ant' as tasa,cvc_tasa_neo_ant as
vtasa from trama_resultado_previo where renipress=@cod union all
select cvp_tasa_neo_ant - ref_neo_cvp as valor, 'cvp_tasa_neo_ant' as tasa,cvp_tasa_neo_ant as
vtasa from trama_resultado_previo where renipress=@cod union all
select vm_tasa_neo_ant - ref_neo_vm as valor, 'vm_tasa_neo_ant' as tasa,vm_tasa_neo_ant as vtasa
from trama_resultado_previo where renipress=@cod union all
select cvc_tasa_uci_ant - ref_uci_cvc as valor, 'cvc_tasa_uci_ant' as tasa,cvc_tasa_uci_ant as
vtasa from trama_resultado_previo where renipress=@cod union all
select cup_tasa_uci_ant - ref_uci_cup as valor, 'cup_tasa_uci_ant' as tasa,cup_tasa_uci_ant as
vtasa from trama_resultado_previo where renipress=@cod union all
select vm_tasa_uci_ant - ref_uci_vm as valor, 'vm_tasa_uci_ant' as tasa,vm_tasa_uci_ant as vtasa
from trama_resultado_previo where renipress=@cod union all
select tasa_itu_cir_ant - ref_cir_itu as valor, 'tasa_itu_cir_ant' as tasa,tasa_itu_cir_ant as
vtasa from trama_resultado_previo where renipress=@cod union all
select tasa_coles_cir_ant - ref_cir_col as valor, 'tasa_coles_cir_ant' as tasa,tasa_coles_cir_ant
as vtasa from trama_resultado_previo where renipress=@cod union all
select tasa_hernio_cir_ant - ref_cir_her as valor, 'tasa_hernio_cir_ant' as
tasa,tasa_hernio_cir_ant as vtasa from trama_resultado_previo where renipress=@cod union all
select cup_itu_med_ant - ref_med_cup as valor, 'cup_itu_med_ant' as tasa,cup_itu_med_ant as vtasa
from trama_resultado_previo where renipress=@cod union all
select pv_tasa_gin_ant - ref_gin_epv as valor, 'pv_tasa_gin_ant' as tasa,pv_tasa_gin_ant as vtasa
from trama_resultado_previo where renipress=@cod union all
select pc_tasa_gin_ant - ref_gin_epc as valor, 'pc_tasa_gin_ant' as tasa,pc_tasa_gin_ant as vtasa
from trama_resultado_previo where renipress=@cod union all
select tasa_iho_gin_ant - ref_gin_iho as valor, 'tasa_iho_gin_ant' as tasa,tasa_iho_gin_ant as
vtasa from trama_resultado_previo where renipress=@cod union all
select vm_tasa_uci_pediatrica_ant - ref_uci_vm_ped as valor, 'vm_tasa_uci_pediatrica_ant' as tasa
,vm_tasa_uci_pediatrica_ant as vtasa from trama_resultado_previo where renipress=@cod union all
select cvc_tasa_uci_pediatrica_ant - ref_uci_cvc_ped as valor, 'cvc_tasa_uci_pediatrica_ant' as
tasa , cvc_tasa_uci_pediatrica_ant as vtasa from trama_resultado_previo where renipress=@cod union
all
select cup_tasa_uci_pediatrica_ant - ref_uci_cup_ped as valor, 'cup_tasa_uci_pediatrica_ant' as
tasa , cup_tasa_uci_pediatrica_ant as vtasa from trama_resultado_previo where renipress=@cod
) x
order by valor desc
OFFSET @puntero ROWS FETCH NEXT 1 ROWS ONLY
return @v
end
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[selecciona_tasa_desc](@cod varchar(10),@puntero int ) RETURNS varchar(50)
as
BEGIN
declare @v varchar(50)
set @v=null
select @v=tasa from (
select cvc_tasa_neo_ant - ref_neo_cvc as valor, 'cvc_tasa_neo_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select cvp_tasa_neo_ant - ref_neo_cvp as valor, 'cvp_tasa_neo_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select vm_tasa_neo_ant - ref_neo_vm as valor, 'vm_tasa_neo_ant' as tasa from trama_resultado_previo
where renipress=@cod union all
select cvc_tasa_uci_ant - ref_uci_cvc as valor, 'cvc_tasa_uci_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select cup_tasa_uci_ant - ref_uci_cup as valor, 'cup_tasa_uci_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select vm_tasa_uci_ant - ref_uci_vm as valor, 'vm_tasa_uci_ant' as tasa from trama_resultado_previo
where renipress=@cod union all
select tasa_itu_cir_ant - ref_cir_itu as valor, 'tasa_itu_cir_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select tasa_coles_cir_ant - ref_cir_col as valor, 'tasa_coles_cir_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select tasa_hernio_cir_ant - ref_cir_her as valor, 'tasa_hernio_cir_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select cup_itu_med_ant - ref_med_cup as valor, 'cup_itu_med_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select pv_tasa_gin_ant - ref_gin_epv as valor, 'pv_tasa_gin_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select pc_tasa_gin_ant - ref_gin_epc as valor, 'pc_tasa_gin_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select tasa_iho_gin_ant - ref_gin_iho as valor, 'tasa_iho_gin_ant' as tasa from
trama_resultado_previo where renipress=@cod union all
select vm_tasa_uci_pediatrica_ant - ref_uci_vm_ped as valor, 'vm_tasa_uci_pediatrica_ant' as tasa
from trama_resultado_previo where renipress=@cod union all
select cvc_tasa_uci_pediatrica_ant - ref_uci_cvc_ped as valor, 'cvc_tasa_uci_pediatrica_ant' as
tasa from trama_resultado_previo where renipress=@cod union all
select cup_tasa_uci_pediatrica_ant - ref_uci_cup_ped as valor, 'cup_tasa_uci_pediatrica_ant' as
tasa from trama_resultado_previo where renipress=@cod
) x
order by valor desc
OFFSET @puntero ROWS FETCH NEXT 1 ROWS ONLY
return @v
END
GO

You might also like