Scripts DL1153 Conveniosdegestion2022
Scripts DL1153 Conveniosdegestion2022
--====================================
-- 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
----------------------------------------------------
----------------------------------------------------
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
)
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.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
--===================
-- 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
--===================
-- 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)
--------------------------------------------------
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
)
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))
--================
-- 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) )
--================
-- 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
-- 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)
-- 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)
-- 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)
--================
-- 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
--================
-- 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
----------------------------
-- 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
--================
-- TABLA FINAL
--================
--===================
-- 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
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
------------------------------------------------------------
---REDUCCION PADRON NOMINAL.
select *
into #Padron_Nominal
from Padron_Nominal_20210930 with (nolock)
where (sw_pn=1 or sw_cnv=1)
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
--===================
-- 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
-- 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.
--==================================
--========================================
--- 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
--=====================================
-- 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 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
-- 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
--================
-- 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
--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
--================================================================
-- INDICADORES
--================================================================
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
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 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'
--=================
-- DENOMINADOR
--=================
select * INTO #TEMP_SREBK
from #TABLA
WHERE INDICADOR='SRExBK(+)'
--===================
-- 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
SELECT *
INTO #RENAES
FROM Renaes_20211020
--=================================================================
-- INDICADOR
--==================================================================
---- DENOMINADOR.
-- 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
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) )
---------------------------------------------------------------------------
-- 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
-- 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
--===================
-- 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
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 *
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
--==========================
-- 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
-- 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
--===================
-- 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
/*==============================================================================
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
--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
---- 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
-- 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
-- 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
-- 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
-- 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
-- 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
-- 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)
/*==============================================================================
FICHA: Indicador N°15 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA
- Jhonatan Lavi Casilla
----------------------------------------------------------------------- */
USE BD_HISINDICADORES
GO
-- AGREGAR ID
ALTER TABLE #Trama_SIGA_filtrado ADD ID int identity
-- 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
--===============
-- 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
-- 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)
--===============
-- 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
--===============
-- 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
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
-- 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
-- AGREGAR ID
ALTER TABLE #Trama_SIGA_filtrado ADD ID int identity
-- 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
--===============
-- 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
-- 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)
--===============
-- 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
--===============
-- 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
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
-- 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
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
)F
) G
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
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
)F
)G
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
)F
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
)F
)G
GO
/*==============================================================================
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
/*==============================================================================
FICHA: Indicador N°17 - DL 1153 2022
ELABORACION: OGTI/ OGEI - MINSA - JL
.==============================================================================*/
USE [BD_HISINDICADORES]
GO
select *
into #renaes
from Renaes_20211020
---------------------------
------------------------
--- 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
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
select *
into #renaes
from Renaes_20211020
---========================================
--///////////////////////////////////
-- 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
--///////////////////////////////////
-- 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
--///////////////////////////////////
-- INDICADOR.
--///////////////////////////////////
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')
--===================
-- 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
/*==============================================================================
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
--===========================================================
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.
)
/* --================================
-- 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
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 *,
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
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