Skip to content

Commit

Permalink
Merge branch 'main' into action-test-dbt-model
Browse files Browse the repository at this point in the history
  • Loading branch information
laura-l-amaral authored Mar 26, 2024
2 parents 80a72cd + e7ff52f commit cab56dd
Show file tree
Hide file tree
Showing 8 changed files with 559 additions and 11 deletions.
3 changes: 3 additions & 0 deletions dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,9 @@ models:
br_ms_cnes:
+materialized: table
+schema: br_ms_cnes
br_ms_sia:
+materialized: table
+schema: br_ms_sia
br_ms_sim:
+materialized: table
+schema: br_ms_sim
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{{ config(alias="proposicao_autor", schema="br_camara_dados_abertos") }}

select
select distinct
safe_cast(idproposicao as string) id_proposicao,
replace(safe_cast(iddeputadoautor as string), ".0", "") id_deputado,
initcap(safe_cast(tipoautor as string)) tipo_autor,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,6 @@ with
url_ultimo_status,
from table
)
select *
select distinct *
from query_total
where not (ano = 2011 and id_proposicao = '510035')
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,17 @@
)
}}

select
safe_cast(replace(ano, ".0", "") as int64) ano,
regexp_extract(uriproposicao, r'/proposicoes/(\d+)') as id_proposicao,
safe_cast(siglatipo as string) tipo_proposicao,
safe_cast(numero as string) numero,
safe_cast(codtema as string) tema,
safe_cast(relevancia as int64) relevancia,
from `basedosdados-staging.br_camara_dados_abertos_staging.proposicao_tema` as t
with
tables as (
select
safe_cast(replace(ano, ".0", "") as int64) as ano,
regexp_extract(uriproposicao, r'/proposicoes/(\d+)') as id_proposicao,
safe_cast(siglatipo as string) as tipo_proposicao,
safe_cast(numero as string) as numero,
safe_cast(tema as string) as tema,
safe_cast(relevancia as int64) as relevancia
from `basedosdados-staging.br_camara_dados_abertos_staging.proposicao_tema`
)
select *
from tables
where not (ano = 2011 and id_proposicao = '510035')
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,77 @@ with
safe_cast(forma_de_declaracao_da_idade as string) forma_declaracao_idade,
safe_cast(sexo as string) sexo,
safe_cast(idade as string) idade,
case
when idade = 'Menos de 1 mês'
then 0
when regexp_contains(idade, r'[0-9]+ mês')
then safe_cast(regexp_extract(idade, r'[0-9]+ mês') as int64) / 12
when regexp_contains(idade, r'[0-9]+ meses')
then safe_cast(regexp_extract(idade, r'([0-9])+ meses') as int64) / 12
when regexp_contains(idade, r'[0-9]+ anos')
then cast(regexp_extract(idade, r'([0-9]+) anos') as int64)
when regexp_contains(idade, r'[0-9]+ ano')
then cast(regexp_extract(idade, r'([0-9]+) ano') as int64)
end as idade_num,
safe_cast(populacao_residente_pessoas_ as int64) populacao_residente,
from
`basedosdados-staging.br_ibge_censo_2022_staging.populacao_residente_municipio` t
)
select t2.cod as id_municipio, ibge.* except (municipio, nome_municipio, sigla_uf)
select
t2.cod as id_municipio,
ibge.* except (municipio, nome_municipio, sigla_uf, idade_num, populacao_residente),
idade_num as idade_anos,
case
when idade_num between 0 and 4
then '0 a 4 anos'
when idade_num between 5 and 9
then '5 a 9 anos'
when idade_num between 10 and 14
then '10 a 14 anos'
when idade_num between 15 and 19
then '15 a 19 anos'
when idade_num between 20 and 24
then '20 a 24 anos'
when idade_num between 25 and 29
then '25 a 29 anos'
when idade_num between 30 and 34
then '30 a 34 anos'
when idade_num between 35 and 39
then '35 a 39 anos'
when idade_num between 40 and 44
then '40 a 44 anos'
when idade_num between 45 and 49
then '45 a 49 anos'
when idade_num between 50 and 54
then '50 a 54 anos'
when idade_num between 55 and 59
then '55 a 59 anos'
when idade_num between 60 and 64
then '60 a 64 anos'
when idade_num between 65 and 69
then '65 a 69 anos'
when idade_num between 70 and 74
then '70 a 74 anos'
when idade_num between 75 and 79
then '75 a 79 anos'
when idade_num between 80 and 84
then '80 a 84 anos'
when idade_num between 85 and 89
then '85 a 89 anos'
when idade_num between 90 and 94
then '90 a 94 anos'
when idade_num between 95 and 99
then '95 a 99 anos'
else '100 anos ou mais'
end as grupo_idade,
populacao_residente
from ibge
left join
`basedosdados-dev.br_ibge_censo_2022_staging.auxiliary_table` t2
on ibge.municipio = t2.municipio
where
not (
idade like '% a %'
or idade like '100 anos ou mais'
or idade like 'Menos de 1 ano'
)
16 changes: 16 additions & 0 deletions models/br_ms_sia/br_ms_sia__dicionario.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{{
config(
alias="dicionario",
schema="br_ms_sia",
materialized="table",
)
}}


select
safe_cast(id_tabela as string) id_tabela,
safe_cast(nome_coluna as string) nome_coluna,
safe_cast(chave as string) chave,
safe_cast(replace(cobertura_temporal, '-1', '(1)') as string) cobertura_temporal,
safe_cast(valor as string) valor
from `basedosdados-staging.br_ms_sia_staging.dicionario`
203 changes: 203 additions & 0 deletions models/br_ms_sia/br_ms_sia__producao_ambulatorial.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
{{
config(
alias="producao_ambulatorial",
schema="br_ms_sia",
materialized="incremental",
partition_by={
"field": "ano",
"data_type": "int64",
"range": {"start": 2005, "end": 2024, "interval": 1},
},
cluster_by=["mes", "sigla_uf"],
)
}}

with
sia_add_municipios as (
-- Adicionar id_municipio de 7 dígitos
select *
from
`basedosdados-staging.br_ms_sia_staging.producao_ambulatorial`
as producao_ambulatorial

left join
(
select id_municipio, id_municipio_6,
from `basedosdados.br_bd_diretorios_brasil.municipio`
) as mun
on producao_ambulatorial.pa_ufmun = mun.id_municipio_6
)

select
safe_cast(ano as int64) ano,
safe_cast(mes as int64) mes,
safe_cast(sigla_uf as string) sigla_uf,
safe_cast(id_municipio as string) id_municipio,
safe_cast(pa_coduni as string) id_estabelecimento_cnes,
-- seguintes colunas foram omitidas pois podem ser obtidas ao cruzar o
-- id_estabelecimento_cnes
-- com a tabela estabelecimento do conjunto br_ms_cnes
-- safe_cast(pa_nat_jur as string) natureza_juridica_estabelecimento,
-- safe_cast(pa_tpups as string) tipo_unidade,
-- safe_cast(pa_tippre as string) tipo_prestador,
-- safe_cast(pa_cnpjcpf as string) cnpj_estabelecimento_executante,
-- safe_cast(
-- regexp_replace(pa_cnpjmnt, '0{14}', '') as string
-- ) cnpj_mantenedora_estabalecimento,
-- safe_cast(regexp_replace(pa_cnpj_cc, '0{14}', '') as string) cnpj_orgao,
-- safe_cast(pa_mn_ind as string) tipo_mantenedor_estabelecimento,
-- safe_cast(pa_gestao as string) id_gestao,
-- safe_cast(pa_condic as string) tipo_gestao,
safe_cast(pa_regct as string) tipo_regra_contratual,
safe_cast(pa_ine as string) id_equipe,
safe_cast(pa_srv_c as string) id_servico_especializado,
safe_cast(pa_proc_id as string) id_processamento_ambulatorial,
safe_cast(regexp_replace(pa_cnsmed, '0{15}', '') as string) id_cns_executante,
safe_cast(replace(pa_cbocod, '', null) as string) id_cbo_2002,
safe_cast(
regexp_replace(pa_autoriz, '0{13}', '') as string
) codigo_autorizacao_apac,
safe_cast(pa_codoco as string) codigo_ocorrencia,
case
when pa_tpfin = '00' then '0' else cast(ltrim(pa_tpfin, '0') as string)
end as tipo_financiamento_producao,
case
when pa_subfin = '0000' then '0' else cast(ltrim(pa_subfin, '0') as string)
end as subtipo_financiamento_producao,
-- - parse e criar ano mes data é yyyy-mm
safe_cast(substr(pa_mvm, 1, 4) as int64) as ano_processamento_procedimento,
safe_cast(substr(pa_mvm, 5, 2) as int64) as mes_processamento_procedimento,
safe_cast(substr(pa_cmp, 1, 4) as int64) as ano_realizacao_procedimento,
safe_cast(substr(pa_cmp, 5, 2) as int64) as mes_realizacao_procedimento,
safe_cast(
trim(
case when length(trim(pa_cidpri)) = 3 then pa_cidpri else null end
) as string
) as cid_principal_categoria,
safe_cast(
trim(
case
when length(trim(pa_cidpri)) = 4 and pa_cidpri != '0000'
then pa_cidpri
when
length(trim(pa_cidpri)) = 3
and pa_cidpri in (
select subcategoria
from `basedosdados.br_bd_diretorios_brasil.cid_10`
where length(subcategoria) = 3
)
then pa_cidpri
else null
end
) as string
) as cid_principal_subcategoria,
safe_cast(
trim(
case when length(trim(pa_cidsec)) = 3 then pa_cidsec else null end
) as string
) as cid_secundario_categoria,
safe_cast(
trim(
case
when length(trim(pa_cidsec)) = 4 and pa_cidsec != '0000'
then pa_cidsec
when
length(trim(pa_cidsec)) = 3
and pa_cidsec in (
select subcategoria
from `basedosdados.br_bd_diretorios_brasil.cid_10`
where length(subcategoria) = 3
)
then pa_cidsec
else null
end
) as string
) as cid_secundario_subcategoria,
safe_cast(
trim(
case when length(trim(pa_cidcas)) = 3 then pa_cidcas else null end
) as string
) as cid_causas_associadas_categoria,
safe_cast(
trim(
case
when length(trim(pa_cidcas)) = 4 and pa_cidcas != '0000'
then pa_cidcas
when
length(trim(pa_cidcas)) = 3
and pa_cidcas in (
select subcategoria
from `basedosdados.br_bd_diretorios_brasil.cid_10`
where length(subcategoria) = 3
)
then pa_cidcas
else null
end
) as string
) as cid_causas_associadas_subcategoria,
case
when pa_catend = '00' then '0' else cast(ltrim(pa_catend, '0') as string)
end as carater_atendimento,
safe_cast(regexp_replace(pa_munpcn, '9{6}', '') as string) id_paciente_proto,
safe_cast(replace(pa_sexo, '0', '') as string) sexo_paciente,
safe_cast(regexp_replace(pa_idade, '9{3}', '') as int64) idade_paciente,
case
when pa_racacor = '00' then '0' else cast(ltrim(pa_racacor, '0') as string)
end as raca_cor_paciente,
safe_cast(pa_etnia as string) etnia_paciente,
safe_cast(idademin as int64) idade_minima_paciente,
safe_cast(idademax as int64) idade_maxima_paciente,
case
when pa_flidade = '00' then '0' else cast(ltrim(pa_flidade, '0') as string)
end as compatibilidade_idade_procedimento,
case
when pa_nivcpl = '00' then '0' else cast(ltrim(pa_nivcpl, '0') as string)
end as complexidade_procedimento,
case
when pa_docorig = '00' then '0' else cast(ltrim(pa_docorig, '0') as string)
end as instrumento_registro,
safe_cast(pa_valapr as float64) valor_aprovado_procedimento,
safe_cast(pa_qtdapr as int64) quantidade_aprovada_procedimento,
safe_cast(pa_valpro as float64) valor_produzido_procedimento,
safe_cast(pa_qtdpro as int64) quantidade_produzida_procedimento,
safe_cast(nu_vpa_tot as float64) valor_unitario_procedimento_vpa,
safe_cast(nu_pa_tot as float64) valor_unitario_procedimento_sigtap,
safe_cast(pa_dif_val as float64) diferenca_valor_unitario,
safe_cast(pa_vl_cf as float64) valor_complemento_federal,
safe_cast(pa_vl_cl as float64) valor_complemento_local,
safe_cast(pa_vl_inc as float64) valor_incremento,
case
when pa_motsai = '00' then '0' else cast(ltrim(pa_motsai, '0') as string)
end as motivo_saida_paciente,
-- - em uf e muicipio replace de
safe_cast(
regexp_replace(pa_ufdif, '9{1}', '') as int64
) indicador_uf_residencia_paciente,
safe_cast(
regexp_replace(pa_mndif, '9{1}', '') as int64
) indicador_municipio_residencia_paciente,
--
safe_cast(
case
when pa_incout = '0000' then '0' else regexp_replace(pa_incout, '[^0]', '1')
end as int64
) as indicador_incrementos_outros,
safe_cast(
case
when pa_incurg = '0000' then '0' else regexp_replace(pa_incurg, '[^0]', '1')
end as int64
) as indicador_incrementos_urgencia,
safe_cast(pa_obito as int64) indicador_obito,
safe_cast(pa_encerr as int64) indicador_encerramento,
safe_cast(pa_perman as int64) indicador_permanencia,
safe_cast(pa_alta as int64) indicador_alta,
safe_cast(pa_transf as int64) indicador_transferencia,
safe_cast(pa_indica as string) tipo_situacao_produzida,
safe_cast(pa_flqt as string) tipo_erro_quantidade_produzida,
safe_cast(pa_fler as string) flag_erro_corpo_apac,
from sia_add_municipios
{% if is_incremental() %}
where
date(cast(ano as int64), cast(mes as int64), 1)
> (select max(date(cast(ano as int64), cast(mes as int64), 1)) from {{ this }})
{% endif %}
Loading

0 comments on commit cab56dd

Please sign in to comment.