-- sumario do pcdtcreatetable db_sabeis.tf_pcdt asselect
co_pcdt,
'BR'as sg_uf,
min(nu_competencia) as nu_competencia_min,
max(nu_competencia) as nu_competencia_max,
count(distinct co_ibge_estabelecimento) as qt_municipios_atendimento,
count(distinct co_ibge_paciente) as qt_municipios_paciente,
count(distinct co_ibge_gestao) as qt_secretarias,
count(distinct co_cns_paciente) as qt_cns_pacientes,
sum(casewhen nu_idade_paciente < 21then1else0end) as qt_00a20,
sum(casewhen nu_idade_paciente between21and40then1else0end) as qt_21a40,
sum(casewhen nu_idade_paciente between41and60then1else0end) as qt_41a60,
sum(casewhen nu_idade_paciente > 60then1else0end) as qt_61a00,
sum(casewhen sg_sexo_paciente = 'F'then1else0end) as qt_sexoF,
sum(casewhen sg_sexo_paciente = 'M'then1else0end) as qt_sexoM,
sum(st_obito_paciente) as qt_obito_paciente,
count(distinct co_cid10_diagnostico_principal) as qt_cid,
count(distinct co_sigtap_procedimento) as qt_sigtap,
count(*) as qt_registros,
sum(qt_aprovada) as qt_aprovada,
sum(vl_aprovado_ipca) as vl_aprovado_ipca,
sum(casewhen st_redesbr=1then1else0end) as qt_redesbr1,
sum(casewhen st_redesbr=2then1else0end) as qt_redesbr2,
sum(casewhen st_redesbr=3then1else0end) as qt_redesbr3,
sum(casewhen st_redesbr=4then1else0end) as qt_redesbr4,
sum(casewhen st_redesbr=5then1else0end) as qt_redesbr5
from db_sabeis.tf_apac_medicamento
groupby1;
insertinto db_sabeis.tf_pcdt
select
co_pcdt,
substr(co_ibge_paciente::text,1,2) as sg_uf,
min(nu_competencia) as nu_competencia_min,
max(nu_competencia) as nu_competencia_max,
count(distinct co_ibge_estabelecimento) as qt_municipios_atendimento,
count(distinct co_ibge_paciente) as qt_municipios_paciente,
count(distinct co_ibge_gestao) as qt_secretarias,
count(distinct co_cns_paciente) as qt_cns_pacientes,
sum(casewhen nu_idade_paciente < 21then1else0end) as qt_00a20,
sum(casewhen nu_idade_paciente between21and40then1else0end) as qt_21a40,
sum(casewhen nu_idade_paciente between41and60then1else0end) as qt_41a60,
sum(casewhen nu_idade_paciente > 60then1else0end) as qt_61a00,
sum(casewhen sg_sexo_paciente = 'F'then1else0end) as qt_sexoF,
sum(casewhen sg_sexo_paciente = 'M'then1else0end) as qt_sexoM,
sum(st_obito_paciente) as qt_obito_paciente,
count(distinct co_cid10_diagnostico_principal) as qt_cid,
count(distinct co_sigtap_procedimento) as qt_sigtap,
count(*) as qt_registros,
sum(qt_aprovada) as qt_aprovada,
sum(vl_aprovado_ipca) as vl_aprovado_ipca,
sum(casewhen st_redesbr=1then1else0end) as qt_redesbr1,
sum(casewhen st_redesbr=2then1else0end) as qt_redesbr2,
sum(casewhen st_redesbr=3then1else0end) as qt_redesbr3,
sum(casewhen st_redesbr=4then1else0end) as qt_redesbr4,
sum(casewhen st_redesbr=5then1else0end) as qt_redesbr5
from db_sabeis.tf_apac_medicamento
groupby1,2;
insertinto db_sabeis.tf_pcdt
select'0',
'BR'as sg_uf,
min(nu_competencia) as nu_competencia_min,
max(nu_competencia) as nu_competencia_max,
count(distinct co_ibge_estabelecimento) as qt_municipios_atendimento,
count(distinct co_ibge_paciente) as qt_municipios_paciente,
count(distinct co_ibge_gestao) as qt_secretarias,
count(distinct co_cns_paciente) as qt_cns_pacientes,
sum(casewhen nu_idade_paciente < 21then1else0end) as qt_00a20,
sum(casewhen nu_idade_paciente between21and40then1else0end) as qt_21a40,
sum(casewhen nu_idade_paciente between41and60then1else0end) as qt_41a60,
sum(casewhen nu_idade_paciente > 60then1else0end) as qt_61a00,
sum(casewhen sg_sexo_paciente = 'F'then1else0end) as qt_sexoF,
sum(casewhen sg_sexo_paciente = 'M'then1else0end) as qt_sexoM,
sum(st_obito_paciente) as qt_obito_paciente,
count(distinct co_cid10_diagnostico_principal) as qt_cid,
count(distinct co_sigtap_procedimento) as qt_sigtap,
count(*) as qt_registros,
sum(qt_aprovada) as qt_aprovada,
sum(vl_aprovado_ipca) as vl_aprovado_ipca,
sum(casewhen st_redesbr=1then1else0end) as qt_redesbr1,
sum(casewhen st_redesbr=2then1else0end) as qt_redesbr2,
sum(casewhen st_redesbr=3then1else0end) as qt_redesbr3,
sum(casewhen st_redesbr=4then1else0end) as qt_redesbr4,
sum(casewhen st_redesbr=5then1else0end) as qt_redesbr5
from db_sabeis.tf_apac_medicamento;
update db_sabeis.tf_pcdt A
set sg_uf=B.sg_uf
from db_aux.tb_uf B
where A.sg_uf=B.co_uf_ibge;
-- perfil de usuarios por pdcbcreatetable tmp.tm_paciente asselect
A.co_cns_paciente,
A.co_cns_paciente,
A.co_cns_paciente,
A.co_cns_paciente,
A.co_pcdt,
B.sg_sexo_paciente,
B.nu_ano_nascimento,
casewhensum(A.st_obito_paciente) > 0then1else0endas st_obito_paciente,
substring(min(A.nu_competencia_min)::text,1,4)::intas nu_ano_min
from db_sabeis.tf_evento_medicamento A
leftjoin db_sabeis.tf_paciente B
on A.co_cns_paciente=B.co_cns_paciente
groupby1,2,3,4orderby1,2,3,4;
CREATEINDEX tf_tm_paciente_cns
ON tmp.tm_paciente (co_cns_paciente);
createtable tmp.tm_paciente_pcdt asselect co_pcdt, count(distinct co_cns_paciente) as qt_registros_pcdt from tmp.tm_paciente groupby1;
droptableifexists db_sabeis.tf_pcdt_paciente;
createtable db_sabeis.tf_pcdt_paciente asselect
A.co_pcdt,
sum(casewhen sg_sexo_paciente ='M'then1else0end) as qt_paciente_m,
sum(casewhen sg_sexo_paciente ='F'then1else0end) as qt_paciente_f,
sum(casewhen sg_sexo_paciente ='M'and st_obito_paciente=1then1else0end) as qt_obito_m,
sum(casewhen sg_sexo_paciente ='F'and st_obito_paciente=1then1else0end) as qt_obito_f,
casewhen nu_ano_min-nu_ano_nascimento between0and4then'00-04'when nu_ano_min-nu_ano_nascimento between5and9then'05-09'when nu_ano_min-nu_ano_nascimento between10and14then'10-14'when nu_ano_min-nu_ano_nascimento between15and19then'15-19'when nu_ano_min-nu_ano_nascimento between20and24then'20-24'when nu_ano_min-nu_ano_nascimento between25and29then'25-29'when nu_ano_min-nu_ano_nascimento between30and34then'30-34'when nu_ano_min-nu_ano_nascimento between35and39then'35-39'when nu_ano_min-nu_ano_nascimento between40and44then'40-44'when nu_ano_min-nu_ano_nascimento between45and49then'45-49'when nu_ano_min-nu_ano_nascimento between50and54then'50-54'when nu_ano_min-nu_ano_nascimento between55and59then'55-59'when nu_ano_min-nu_ano_nascimento between60and64then'60-64'when nu_ano_min-nu_ano_nascimento between65and69then'65-69'when nu_ano_min-nu_ano_nascimento between70and74then'70-74'when nu_ano_min-nu_ano_nascimento between75and79then'75-79'when nu_ano_min-nu_ano_nascimento between80and84then'80-84'when nu_ano_min-nu_ano_nascimento between85and89then'85-89'when nu_ano_min-nu_ano_nascimento >=90then'90+'else'SemInfo'endas sg_faixa_etaria,
qt_registros_pcdt
from tmp.tm_paciente A
leftjoin tmp.tm_paciente_pcdt B
on A.co_pcdt=B.co_pcdt
groupby1,6,qt_registros_pcdt
orderby1,6;
CREATEINDEX tf_pcdt_paciente_pcdt
ON db_sabeis.tf_pcdt_paciente (co_pcdt);
-- estabelecimentos por pcdtdroptableifexists db_sabeis.tf_pcdt_estabelecimento;
createtable db_sabeis.tf_pcdt_estabelecimento asselect
co_pcdt,
co_cnes_estabelecimento,
substr(co_ibge_estabelecimento::text,1,2)::intas co_uf_ibge_estabelecimento,
count(*) as qt_dispensacao,
count(distinct co_cns_paciente) as qt_cns_paciente,
min(nu_competencia) as nu_competencia_min,
max(nu_competencia) as nu_competencia_max
from db_sabeis.tf_apac_medicamento
where qt_aprovada > 0and co_cns_paciente > 0groupby1,2,3orderby1,3,2;
CREATEINDEX tf_pcdt_estabelecimento_pcdt
ON db_sabeis.tf_pcdt_estabelecimento (co_pcdt);
droptableifexists db_sabeis.tf_pcdt_estabelecimento_uf;
createtable db_sabeis.tf_pcdt_estabelecimento_uf asselect co_pcdt,
substr(co_ibge_estabelecimento::text,1,2)::intas co_uf_ibge_estabelecimento,
substr(nu_competencia::text,1,4)::intas nu_ano_competencia,
count(distinct co_cnes_estabelecimento) as qt_cnes_estabelecimento
from db_sabeis.tf_apac_medicamento
groupby1,2,3 ;
-- municipios de residencia por pcdt droptableifexists db_sabeis.tf_pcdt_municipio_residencia;
createtable db_sabeis.tf_pcdt_municipio_residencia asselect
co_pcdt,
co_ibge_paciente,
B.sg_uf,
B.nu_populacao_2010,
count(*) as qt_dispensacao,
count(distinct co_cns_paciente) as qt_cns_paciente,
min(nu_competencia) as nu_competencia_min,
max(nu_competencia) as nu_competencia_max
from db_sabeis.tf_apac_medicamento A
leftjoin db_sabeis.td_municipio B
on A.co_ibge_paciente=B.co_municipio_ibge
where qt_aprovada > 0and co_cns_paciente > 0groupby1,2,3,4orderby1,3,2;
CREATEINDEX tf_pcdt_municipio_residencia_pcdt
ON db_sabeis.tf_pcdt_municipio_residencia (co_pcdt);
update db_sabeis.tf_pcdt_municipio_residencia set co_pcdt = 0where co_pcdt isnull;
altertable db_sabeis.tf_pcdt_municipio_residencia
add sg_regiao_redes varchar(15) defaultnull,
add sg_regiao_pais varchar(2) defaultnull;
update db_sabeis.tf_pcdt_municipio_residencia A
set sg_uf = B.sg_uf,
nu_populacao_2010 = B.nu_populacao_2010,
sg_regiao_pais =
casewhen st_regiao_pais = '1'then'N'when st_regiao_pais = '2'then'NE'when st_regiao_pais = '3'then'SE'when st_regiao_pais = '4'then'S'when st_regiao_pais = '5'then'CO'else'ni'endfrom db_sabeis.tb_municipio_ibge B
where A.co_ibge_paciente=B.co_municipio_ibge;
update db_sabeis.tf_pcdt_municipio_residencia A
set sg_uf = B.sg_uf,
sg_regiao_pais = B.sg_regiao_pais
update db_sabeis.tf_pcdt_municipio_residencia A
set sg_uf = B.sg_uf,
nu_populacao_2010 = qt_populacao
from db_aux.tf_populacao_censo B
where co_ibge_paciente = B.co_municipio_ibge;
update db_sabeis.tf_pcdt_municipio_residencia A
set sg_regiao_redes =
casewhen B.st_grupo_regiao = '1'then'baixíssimo'when B.st_grupo_regiao = '2'then'baixo'when B.st_grupo_regiao = '3'then'médio'when B.st_grupo_regiao = '4'then'alto'when B.st_grupo_regiao = '5'then'altíssimo'else'ni'endfrom db_sabeis.td_redesbr B
where A.co_ibge_paciente=B.co_municipio_ibge;
altertable db_sabeis.tf_pcdt_municipio_residencia add qt_meses smallintdefaultnull;
update db_sabeis.tf_pcdt_municipio_residencia A
set qt_meses = B.qt_meses
from (
select
co_pcdt, co_ibge_paciente,
round(extract(yearfrom age(to_date(nu_competencia_max::text, 'YYYYMM'),to_date(nu_competencia_min::text, 'YYYYMM'))) * 12 +
extract(monthfrom age(to_date(nu_competencia_max::text, 'YYYYMM'),to_date(nu_competencia_min::text, 'YYYYMM')))+1)::intas qt_meses
from db_sabeis.tf_pcdt_municipio_residencia) B
where A.co_pcdt=B.co_pcdt and A.co_ibge_paciente = B.co_ibge_paciente;
altertable db_sabeis.tf_pcdt_municipio_residencia add qt_municipio_uf smallintdefaultnull;
update db_sabeis.tf_pcdt_municipio_residencia A
set qt_municipio_uf = B.qt_municipio_uf
from (
select sg_uf, count(*) as qt_municipio_uf
from (selectdistinct co_municipio_ibge, sg_uf from db_sabeis.tb_municipio_ibge) X
groupby1) B
where A.sg_uf=B.sg_uf
;
select
co_pcdt,
sg_uf,
-- count(distinct co_ibge_paciente)::float/qt_municipio_uf as qt_ibge_paciente,sum(qt_cns_paciente)::float/qt_meses/sum(nu_populacao_2010) as qt_cns_mes_hab
from db_sabeis.tf_pcdt_municipio_residencia
groupby1,2, qt_meses -- , qt_municipio_uf;createtable db_sabeis.tf_pcdt_municipio_residencia_cobertura ASselect
co_pcdt,
sg_uf,
ROUND(casewhen sg_uf='DF'then100elsecount(distinct co_ibge_paciente)::float/max(qt_municipio_uf)*100end)::INTas qt_cobertura_municipio_uf,
sum(qt_cns_paciente)::float/round(extract(yearfrom age(to_date(max(nu_competencia_max)::text, 'YYYYMM'),to_date(min(nu_competencia_min)::text, 'YYYYMM'))) * 12 +
extract(monthfrom age(to_date(max(nu_competencia_max)::text, 'YYYYMM'),to_date(min(nu_competencia_min)::text, 'YYYYMM')))+1)::int/max(nu_populacao_2010)*1000000as qt_cns_mes_habitante
from db_sabeis.tf_pcdt_municipio_residencia
groupby1,2;
-- produtos por pcdt droptableifexists db_sabeis.tf_pcdt_produto_ano;
createtable db_sabeis.tf_pcdt_produto_ano asselect X.*,
C.sg_forma_organizacao,
DENSE_RANK() OVER(PARTITIONby co_pcdt, nu_ano_competencia, sg_forma_organizacao ORDERBY qt_cns_paciente desc) as co_seq_qt_cns_forma_organizacao
from
(
select A.*,
DENSE_RANK() OVER(PARTITIONby A.co_pcdt, A.nu_ano_competencia ORDERBY A.qt_cns_paciente desc) as co_seq_qt_cns,
B.qt_cns_paciente as qt_cns_paciente_total,
B.qt_dispensacao as qt_dispensacao_total
from
(
selectcoalesce(A.co_pcdt,0) as co_pcdt,
B.sg_procedimento,
substring(nu_competencia::text,1,4)::intas nu_ano_competencia,
count(*) as qt_dispensacao,
count(distinct co_cns_paciente) as qt_cns_paciente
from db_sabeis.tf_apac_medicamento A
leftjoin db_sabeis.td_sigtap_medicamento_abrev B
on A.co_sigtap_procedimento=B.nu_sigtap
where qt_aprovada > 0and co_cns_paciente > 0groupby1,2,3orderby1,2,3
) A
leftjoin
(selectcoalesce(co_pcdt,0) as co_pcdt,
substring(nu_competencia::text,1,4)::intas nu_ano_competencia,
count(*) as qt_dispensacao,
count(distinct co_cns_paciente) as qt_cns_paciente
from db_sabeis.tf_apac_medicamento
where qt_aprovada > 0groupby1,2
) B
on A.co_pcdt=B.co_pcdt
and A.nu_ano_competencia=B.nu_ano_competencia
) X
leftjoin db_sabeis.td_sigtap_medicamento_abrev_cmpmax C
on X.sg_procedimento=C.sg_procedimento;
select * from db_sabeis.tf_pcdt_produto_ano where co_pcdt=10orderby nu_ano_competencia, co_seq_qt_cns;
droptableifexists db_sabeis.tf_pcdt_produto_ano_outros;
createtable db_sabeis.tf_pcdt_produto_ano_outros asselect A.*,
B.qt_cns_paciente_total,
B.qt_dispensacao_total,
round(A.qt_cns_paciente::float/B.qt_cns_paciente_total*100)::intas qt_cns_paciente_percentual,
round(A.qt_dispensacao::float/B.qt_dispensacao_total*100)::intas qt_dispensacao_percentual
from
(
select
A.co_pcdt,
A.nu_ano_competencia,
casewhen co_seq_cns_paciente <= 7then A.sg_procedimento else'outros'endas sg_procedimento,
'total'as sg_agregacao,
STRING_AGG(distinct sg_procedimento::text, ', ') as sg_procedimento_outros,
sum(qt_cns_paciente) as qt_cns_paciente,
sum(qt_dispensacao) as qt_dispensacao
from db_sabeis.tf_pcdt_produto_ano A
groupby1,2,3
) A
leftjoin
(select
co_pcdt,
nu_ano_competencia,
sum(qt_cns_paciente) as qt_cns_paciente_total,
sum(qt_dispensacao) as qt_dispensacao_total
from db_sabeis.tf_pcdt_produto_ano
groupby1,2
) B
on A.co_pcdt=B.co_pcdt and A.nu_ano_competencia=B.nu_ano_competencia
update db_sabeis.tf_pcdt_produto_ano_outros A
set qt_cns_paciente_percentual=B.qt_cns_paciente_percentual,
qt_dispensacao_percentual=B.qt_dispensacao_percentual
from
(
select
co_pcdt,
nu_ano_competencia,
100-sum(qt_cns_paciente_percentual) as qt_cns_paciente_percentual,
100-sum(qt_dispensacao_percentual) as qt_dispensacao_percentual
from db_sabeis.tf_pcdt_produto_ano_outros
where sg_procedimento <> 'outros'groupby1,2
) B
where A.co_pcdt=B.co_pcdt
and A.nu_ano_competencia=B.nu_ano_competencia
and A.sg_procedimento='outros';
altertable db_sabeis.tf_pcdt_produto_ano_outros add sg_forma_organizacao varchar(10) default'total';
update db_sabeis.tf_pcdt_produto_ano_outros A
set sg_forma_organizacao=B.sg_forma_organizacao
from db_sabeis.td_sigtap_medicamento_abrev B
where A.sg_procedimento=B.sg_procedimento and B.nu_competencia_max='201905';
-- doencas por pcdt droptableifexists db_sabeis.tf_pcdt_doenca_trimestre;
createtable db_sabeis.tf_pcdt_doenca_trimestre asselect
*,
DENSE_RANK() OVER(PARTITIONby co_pcdt, co_cid10_diagnostico_principal ORDERBY co_pcdt, nu_trimestre, co_cid10_diagnostico_principal) as co_seq_pcdt_cid10_trimestre
from (
select
co_pcdt,
co_cid10_diagnostico_principal,
extract(yearfromto_date(nu_competencia_min::text, 'YYYYMM'))::text || '0' || extract(quarter fromto_date(nu_competencia_min::text, 'YYYYMM'))::textas nu_trimestre,
count(distinct co_cns_paciente) as qt_cns_paciente
from
(
select
co_pcdt,
co_cns_paciente,
co_cid10_diagnostico_principal,
min(nu_competencia_min) as nu_competencia_min
from db_sabeis.tm_evento_cid
where co_pcdt > 0and co_cns_paciente > 0groupby1,2,3
) X
groupby1,2,3orderby1,2,3
) X;
-- sumario sigtap e cidcreatetable db_sabeis.tf_apac_medicamento_sumario asselect
co_pcdt,
co_cid10_diagnostico_principal,
co_sigtap_procedimento,
min(nu_competencia) as nu_competencia_min,
max(nu_competencia) as nu_competencia_max,
sum(qt_aprovada) as qt_aprovada,
count(distinct nu_autorizacao) as qt_autorizacao,
count(distinct co_cns_paciente) as qt_cns_paciente,
count(distinct co_ibge_paciente) as qt_municipios_paciente,
count(distinct co_cnes_estabelecimento) as qt_cnes
from db_sabeis.tf_apac_medicamento
where qt_aprovada > 0and co_cns_paciente > 0-- and co_sigtap_procedimento > 0-- and co_cid10_diagnostico_principal is not nullgroupby1,2,3;
altertable db_sabeis.tf_apac_medicamento_sumario
add sg_procedimento varchar(100) defaultnull,
add no_procedimento varchar(255) defaultnull,
add no_cid10_diagnostico_principal varchar(255) defaultnull;
update db_sabeis.tf_apac_medicamento_sumario A
set sg_procedimento = B.sg_procedimento,
no_procedimento = B.no_procedimento
from db_sabeis.td_sigtap_medicamento_abrev B
where A.co_sigtap_procedimento = B.nu_sigtap;
update db_sabeis.tf_apac_medicamento_sumario A
set no_cid10_diagnostico_principal = B.no_cid
from db_sabeis.td_cid10 B
where A.co_cid10_diagnostico_principal = B.co_cid;
select * from db_sabeis.tf_apac_medicamento_sumario;
droptableifexists db_sabeis.tf_pcdt_cns;
createtable db_sabeis.tf_pcdt_cns asselectdistinct Z.sg_uf, coalesce(no_pcdt,'outros') as no_pcdt, qt_cns_mes::float/qt_populacao as qt_cns_mes
from (
select
sg_uf,
casewhen co_seq > 7then0else co_pcdt endas co_pcdt,
round(sum(qt_cns_mes))::intas qt_cns_mes
from
(
select
*,
DENSE_RANK() OVER(PARTITIONby sg_uf ORDERBY qt_cns_mes desc) as co_seq
from
(
select
co_pcdt,
sg_uf,
qt_cns_pacientes::float/round(extract(yearfrom age(to_date(nu_competencia_max::text, 'YYYYMM'),to_date(nu_competencia_min::text, 'YYYYMM'))) * 12 +
extract(monthfrom age(to_date(nu_competencia_max::text, 'YYYYMM'),to_date(nu_competencia_min::text, 'YYYYMM')))+1)::intas qt_cns_mes
from db_sabeis.tf_pcdt
where sg_uf <> 'BR'
) X
where co_pcdt isnotnull
) Y
groupby1,2orderby1,3desc) Z
leftjoin db_sabeis.td_pcdt_cid C
on Z.co_pcdt = C.co_seq_pcdt
leftjoin db_aux.td_populacao_uf_2010 D
on Z.sg_uf = D.sg_uf;
droptableifexists db_sabeis.tf_pcdt_medicamento_trimestre;
createtable db_sabeis.tf_pcdt_medicamento_trimestre asselect
co_pcdt,
extract(
yearfromto_date(nu_competencia::text, 'YYYYMM'))::text ||
'0' ||
extract(quarter fromto_date(nu_competencia::text, 'YYYYMM'))::textas nu_trimestre,
sg_procedimento,
sum(casewhen sg_sexo_paciente = 'F'then1else0end) as qt_sexo_f,
sum(casewhen nu_idade_paciente > 60then1else0end) as qt_idade_paciente60,
sum(casewhen st_redesbr > 2then1else0end) as qt_st_redesbr3,
count(distinct co_ibge_gestao) as qt_ibge_gestao,
sum(qt_aprovada) as qt_aprovada,
count(*) as qt_dispensacao,
count(distinct co_cns_paciente) as qt_cns_paciente
from db_sabeis.tf_apac_medicamento A
leftjoin db_sabeis.tm_abrev B
on A.co_sigtap_procedimento=B.nu_sigtap
where A.qt_aprovada > 0and A.co_cns_paciente > 0groupby1,2,3;
droptableifexists db_sabeis.tf_medicamento_trimestre;
createtable db_sabeis.tf_medicamento_trimestre asselectextract(
yearfromto_date(nu_competencia::text, 'YYYYMM'))::text ||
'0' ||
extract(quarter fromto_date(nu_competencia::text, 'YYYYMM'))::textas nu_trimestre,
sg_procedimento,
sum(casewhen sg_sexo_paciente = 'F'then1else0end) as qt_sexo_f,
sum(casewhen nu_idade_paciente > 60then1else0end) as qt_idade_paciente60,
sum(casewhen st_redesbr > 2then1else0end) as qt_st_redesbr3,
count(distinct co_ibge_gestao) as qt_ibge_gestao,
sum(qt_aprovada) as qt_aprovada,
count(*) as qt_dispensacao,
count(distinct co_cns_paciente) as qt_cns_paciente
from db_sabeis.tf_apac_medicamento A
leftjoin db_sabeis.tm_abrev B
on A.co_sigtap_procedimento=B.nu_sigtap
where A.qt_aprovada > 0and A.co_cns_paciente > 0groupby1,2,3;
createtable tmp.tf_apac_medicamento_sumario asselect * from db_sabeis.tf_apac_medicamento_sumario
where co_sigtap_procedimento > 0and co_pcdt > 0and qt_cns_paciente > 0and no_cid10_diagnostico_principal isnotnullorderby1,2,3 ;
droptableifexists db_sabeis.td_pcdt_abrev;
createtable db_sabeis.td_pcdt_abrev asselectdistinct
A.co_pcdt,
A.sg_procedimento,
B.no_procedimento
from db_sabeis.tf_brasil_cid10_sigtap A
leftjoin db_sabeis.td_procedimento_abrev B
on A.sg_procedimento=B.sg_procedimento
where qt_cns_pacientes > 1000and co_pcdt >= 0orderby1,2;
-- troca de medicamentosdroptable db_sabeis.tf_troca;
createtable db_sabeis.tf_troca asselect
co_pcdt,
sg_procedimentoA,
casewhen co_seq > 10then'outros'else sg_procedimentoB endas sg_procedimentoB,
sum(qt_cns_paciente) as qt_cns_paciente,
STRING_AGG(distinct sg_procedimentoB::text, ', ') as sg_procedimentoB2
from
(
select *,
DENSE_RANK() OVER(PARTITIONby co_pcdt ORDERBY qt_cns_paciente desc) as co_seq
from
(
select co_pcdt,
sg_procedimentoA,
sg_procedimentoB,
sum(qt_cns_paciente) as qt_cns_paciente
from
(
select A.co_pcdt,
A.sg_procedimentoA,
B.sg_procedimentoB,
count(distinct A.co_cns_paciente) as qt_cns_paciente
from
(
select co_pcdt,
co_cns_paciente,
sg_procedimento as sg_procedimentoA
from db_sabeis.tf_evento_medicamento
where co_seq_evento=1
) A
leftjoin
(
select co_pcdt,
sg_procedimento as sg_procedimentoB,
co_cns_paciente
from db_sabeis.tf_evento_medicamento
where co_seq_evento=2
) B
on A.co_cns_paciente=B.co_cns_paciente
where sg_procedimentoB isnotnullgroupby1,2,3unionselect A.co_pcdt,
A.sg_procedimentoA,
B.sg_procedimentoB,
count(distinct A.co_cns_paciente) as qt_cns_paciente
from
(
select co_pcdt,
co_cns_paciente,
sg_procedimento as sg_procedimentoA
from db_sabeis.tf_evento_medicamento
where co_seq_evento=2
) A
leftjoin
(
select co_pcdt,
sg_procedimento as sg_procedimentoB,
co_cns_paciente
from db_sabeis.tf_evento_medicamento
where co_seq_evento=3
) B
on A.co_cns_paciente=B.co_cns_paciente
where sg_procedimentoB isnotnullgroupby1,2,3unionselect A.co_pcdt,
A.sg_procedimentoA,
B.sg_procedimentoB,
count(distinct A.co_cns_paciente) as qt_cns_paciente
from
(
select co_pcdt,
co_cns_paciente,
sg_procedimento as sg_procedimentoA
from db_sabeis.tf_evento_medicamento
where co_seq_evento=3
) A
leftjoin
(
select co_pcdt,
sg_procedimento as sg_procedimentoB,
co_cns_paciente
from db_sabeis.tf_evento_medicamento
where co_seq_evento=4
) B
on A.co_cns_paciente=B.co_cns_paciente
where sg_procedimentoB isnotnullgroupby1,2,3
) X
groupby1,2,3orderby1,4desc
) Y
) Z
where co_seq <=10groupby1,2,3
createtable db_sabeis.td_sigtap_medicamento_abrev_cmpmax asselect A.* from db_sabeis.td_sigtap_medicamento_abrev A,
(
select sg_procedimento,
max(nu_competencia_max) as nu_competencia_max
from db_sabeis.td_sigtap_medicamento_abrev
groupby1
) B
where A.sg_procedimento=B.sg_procedimento
and A.nu_competencia_max=B.nu_competencia_max
orderby1,2;
-- pareto de pacientes e medicamentosdroptableifexists
db_sabeis.tf_procedimento_paciente_tempo,
db_sabeis.tm_procedimento_paciente_tempo;
createtable db_sabeis.tm_procedimento_paciente_tempo asselect *,
DENSE_RANK() OVER(PARTITIONby co_pcdt, nu_ano_competencia ORDERBY qt_paciente_tempo desc) as co_seq_pcdt_ano
from (
select co_pcdt,
sg_procedimento,
nu_ano_competencia,
sum(qt_registros::float/12) as qt_paciente_tempo,
avg(qt_registros) as qt_registros_avg,
stddev(qt_registros) as qt_registros_std
from (
select
A.co_pcdt,
B.sg_procedimento,
substring(A.nu_competencia::text,1,4)::intas nu_ano_competencia,
co_cns_paciente,
count(*) as qt_registros
from db_sabeis.tf_apac_medicamento A
leftjoin db_sabeis.td_sigtap_medicamento_abrev B
on A.co_sigtap_procedimento=B.nu_sigtap
where qt_aprovada > 0and co_cns_paciente > 0groupby1,2,3,4
) X
groupby1,2,3
) X;
droptableifexists db_sabeis.tf_procedimento_paciente_tempo;
createtable db_sabeis.tf_procedimento_paciente_tempo asselect
*,
casewhen qt_acum > 0.8then'A'when qt_acum between0.5and0.8then'B'else'C'endas sg_abc
from
(
select
A.*,
sum(A.qt_paciente_tempo/qt_paciente_tempo_total) OVER (PARTITIONBY A.co_pcdt, A.nu_ano_competencia ORDERBY A.qt_paciente_tempo) as qt_acum
from db_sabeis.tm_procedimento_paciente_tempo A
leftjoin
(select co_pcdt, nu_ano_competencia, sum(qt_paciente_tempo) as qt_paciente_tempo_total
from db_sabeis.tm_procedimento_paciente_tempo groupby1,2) B
on A.co_pcdt=B.co_pcdt and A.nu_ano_competencia=B.nu_ano_competencia
) x
orderby1,3,4desc;
select * from db_sabeis.tf_procedimento_paciente_tempo where nu_ano_competencia=2018;
droptableifexists db_sabeis.tf_procedimento_paciente_tempo;
select sg_procedimento,
count(distinct A.co_cns_paciente) as qt_cns_paciente
from db_sabeis.tf_evento_medicamento A,
(
select co_cns_paciente
from db_sabeis.tf_evento_medicamento
where sg_procedimento like'%INFL%'and nu_competencia_min >= 201201and nu_competencia_max <= 201212
) B
where A.co_cns_paciente = B.co_cns_paciente
and A.nu_competencia_min >= 201201and A.nu_competencia_max <= 201312and sg_procedimento notlike'%INFL%'groupby1orderby2desc
createtable db_sabeis.tm_etl_am asselect * from db_sabeis.tm_etl where sg_sistema='SIA'and nu_competencia::int > 200800and sg_tabela in ('PA','AM') orderby sg_uf, nu_competencia::int;
select * from db_sabeis.tm_etl;
droptableifexists db_sabeis.tm_pcdt_qt;
createtable db_sabeis.tm_pcdt_qt asselect A.*, B.no_pcdt
from
(
select
co_pcdt,
count(*) as qt_registros,
count(distinct co_cns_paciente) as qt_cns
from db_sabeis.tf_apac_medicamento
where co_pcdt in (select co_pcdt from db_sabeis.td_pcdt_abrev)
groupby co_pcdt
havingcount(*) > 0orderby2desc
) A
leftjoin (selectdistinct co_seq_pcdt, no_pcdt from db_sabeis.td_pcdt_cid) B
on A.co_pcdt=B.co_seq_pcdt;
altertable db_sabeis.tf_apac_medicamento_sumario add st_td_pcdt_abrev smallintdefault0;
update db_sabeis.tf_apac_medicamento_sumario A
set st_td_pcdt_abrev = 1from db_sabeis.td_pcdt_abrev B
where A.co_pcdt=B.co_pcdt and A.sg_procedimento=B.sg_procedimento;