Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dbt]: add br_ms_sih models #561

Merged
merged 6 commits into from
May 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,9 @@ models:
br_ms_sia:
+materialized: table
+schema: br_ms_sia
br_ms_sih:
+materialized: table
+schema: br_ms_sih
br_ms_sim:
+materialized: table
+schema: br_ms_sim
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{{
config(
alias="cbo_2002",
schema="br_bd_diretorios_brasil",
materialized="table",
)
}}


select
safe_cast(cbo_2002 as string) cbo_2002,
safe_cast(descricao as string) descricao,
safe_cast(familia as string) familia,
safe_cast(descricao_familia as string) descricao_familia,
safe_cast(subgrupo as string) subgrupo,
safe_cast(initcap(descricao_subgrupo) as string) descricao_subgrupo,
safe_cast(subgrupo_principal as string) subgrupo_principal,
safe_cast(
initcap(descricao_subgrupo_principal) as string
) descricao_subgrupo_principal,
safe_cast(grande_grupo as string) grande_grupo,
safe_cast(initcap(descricao_grande_grupo) as string) descricao_grande_grupo
from `basedosdados-staging.br_bd_diretorios_brasil_staging.cbo_2002` as t
23 changes: 23 additions & 0 deletions models/br_bd_diretorios_brasil/schema.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
---
version: 2
models:
- name: br_bd_diretorios_brasil__cbo_2002
description: Diretório da Classificação Brasileira de Ocupações 2002.
columns:
- name: cbo_2002
description: Classificação Brasileira de Ocupações 2002
- name: descricao
description: Descrição da CBO2002
- name: familia
description: Família
- name: descricao_familia
description: Descrição da Família
- name: subgrupo
description: Subgrupo
- name: descricao_subgrupo
description: Descrição do Subgrupo
- name: subgrupo_principal
description: Subgrupo Principal
- name: descricao_subgrupo_principal
description: Descrição do Subgrupo Principal
- name: grande_grupo
description: Grande Grupo
- name: descricao_grande_grupo
description: Descrição do Grande Grupo
- name: br_bd_diretorios_brasil__empresa
description: A tabela apresenta informações do Cadastro Nacional da Pessoa Jurídica
(CNPJ), que é um banco de dados administrado pela Secretaria Especial da Receita
Expand Down
108 changes: 108 additions & 0 deletions models/br_ms_sih/br_ms_sih__servicos_profissionais.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
{{
config(
alias="servicos_profissionais",
schema="br_ms_sih",
materialized="incremental",
partition_by={
"field": "ano",
"data_type": "int64",
"range": {"start": 2005, "end": 2024, "interval": 1},
},
cluster_by=["mes", "sigla_uf"],
)
}}

select
safe_cast(ano as int64) ano,
safe_cast(mes as int64) mes,
safe_cast(sigla_uf as string) sigla_uf,
safe_cast(sp_aa as int64) ano_internacao,
safe_cast(sp_mm as int64) mes_internacao,
safe_cast(
format_date('%Y-%m-%d', safe.parse_date('%Y%m%d', sp_dtinter)) as date
) data_entrada_internacao,
safe_cast(
format_date('%Y-%m-%d', safe.parse_date('%Y%m%d', sp_dtsaida)) as date
) data_saida_iternacao,
safe_cast(id_municipio as string) id_municipio_estabelecimento_aih,
safe_cast(sp_m_pac as string) id_municipio_paciente,
safe_cast(sp_gestor as string) id_gestor,
safe_cast(sp_cnes as string) id_estabelecimento_cnes,
safe_cast(sp_naih as string) id_aih,
safe_cast(sp_procrea as string) id_procedimento_principal,
safe_cast(serv_cla as string) tipo_servico,
safe_cast(sp_cpfcgc as string) id_prestador_servico,
safe_cast(sp_atoprof as string) id_procedimento_secundario,
safe_cast(sp_pf_cbo as string) cbo_2002_profissional,
safe_cast(ltrim(sp_qt_proc) as int64) quantidade_procedimentos,
safe_cast(
trim(
case when length(trim(sp_cidpri)) = 3 then sp_cidpri else null end
) as string
) id_cid_principal,
safe_cast(
trim(
case
when length(trim(sp_cidpri)) = 4 and sp_cidpri != '0000'
then sp_cidpri
when
length(trim(sp_cidpri)) = 3
and sp_cidpri in (
select subcategoria
from `basedosdados.br_bd_diretorios_brasil.cid_10`
where length(subcategoria) = 3
)
then sp_cidpri
else null
end
) as string
) as id_cid_principal_subcategoria,
safe_cast(
trim(
case when length(trim(sp_cidsec)) = 3 then sp_cidsec else null end
) as string
) id_cid_secundario,
safe_cast(
trim(
case
when length(trim(sp_cidsec)) = 4 and sp_cidsec != '0000'
then sp_cidsec
when
length(trim(sp_cidsec)) = 3
and sp_cidsec in (
select subcategoria
from `basedosdados.br_bd_diretorios_brasil.cid_10`
where length(subcategoria) = 3
)
then sp_cidsec
else null
end
) as string
) as id_cid_secundario_subcategoria,
safe_cast(sp_complex as string) complexidade_ato_profissional,
safe_cast(ltrim(sp_qtd_ato) as int64) quantidade_atos_profissionais,
safe_cast(ltrim(sp_ptsp) as int64) quantidade_pontos,
safe_cast(sp_nf as string) nota_fiscal,
safe_cast(ltrim(sp_valato) as float64) valor_ato_profissional,
safe_cast(sp_des_hos as int64) indicador_uf_hospital,
safe_cast(sp_des_pac as int64) indicador_uf_paciente,
safe_cast(sp_u_aih as int64) indicador_id_aih,
safe_cast(sp_financ as string) tipo_financiamento_ato_profissional,
safe_cast(sp_co_faec as string) tipo_subtipo_financiamento_ato_profissional,
safe_cast(sp_pf_doc as string) tipo_documento_pf,
safe_cast(sp_pj_doc as string) tipo_documento_pj,
safe_cast(in_tp_val as string) tipo_valor,
safe_cast(ltrim(sequencia) as string) sequencia,
safe_cast(remessa as string) nome_remessa,
from `basedosdados-staging.br_ms_sih_staging.servicos_profissionais` as sih
left join
(
select id_municipio, id_municipio_6,
from `basedosdados.br_bd_diretorios_brasil.municipio`
) as mun
on sih.sp_m_hosp = mun.id_municipio_6
{% 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 %}
133 changes: 133 additions & 0 deletions models/br_ms_sih/schema.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
version: 2

models:
- name: br_ms_sih__servicos_profissionais
description: Sistema de Informações Hospitalares do SUS (SIH/SUS)
columns:
- name: ano
description: Ano
tests:
- not_null:
config:
where: __most_recent_year_month__
- name: mes
description: Mês
- name: ano_internacao
description: Ano da internação
- name: mes_internacao
description: Mes da internação
- name: data_entrada_internacao
description: Data do início da internação
- name: data_saida_iternacao
description: Data do final da internação
- name: sigla_uf
description: Sigla unidade da fedaração
tests:
- relationships:
to: ref('br_bd_diretorios_data_tempo__uf')
field: sigla
config:
where: __most_recent_year_month__
- name: id_municipio_estabelecimento_aih
description: Município de localização do Estabelecimento Executante da AIH
tests:
- relationships:
to: ref('br_bd_diretorios_brasil__municipio')
field: id_municipio
config:
where: __most_recent_year_month__
- name: id_municipio_paciente
description: Município de residência do paciente
tests:
- relationships:
to: ref('br_bd_diretorios_brasil__municipio')
field: id_municipio_6
config:
where: __most_recent_year_month__
- name: id_gestor
description: Unidade de Federação + Código Município de Gestão ou UF0000 se
o Estabelecimento Executante está sob Gestão Estadual.
- name: id_estabelecimento_cnes
description: ID do estabelecimento de saúde executante da Autorização de Internação
Hospitalar (AIH)
- name: id_aih
description: ID Autorização de Internação Hospitalar (AIH)
tests:
- not_null:
config:
where: __most_recent_year_month__
- name: id_procedimento_principal
description: Procedimento principal realizado na AIH.
- name: tipo_servico
description: Classificação do tipo de serviço
- name: id_prestador_servico
description: CNES, CPF ou CNPJ do prestador do serviço do ato profissional
- name: id_procedimento_secundario
description: Procedimento referente ao ato profissional
- name: cbo_2002_profissional
description: Identificador de Ocupação Brasileira do Profissional que realizou
o ato ou “00000” caso não tenha sido
tests:
- relationships:
to: ref('br_bd_diretorios_brasil__cbo_2002')
field: cbo_2002.cbo_2002
config:
where: __most_recent_year_month__
- name: quantidade_procedimentos
description: Quantidade de procedimentos realizados
- name: id_cid_principal
description: Identificador principal da Classificação Internacional de Doenças
e Problemas Relacionados com a Saúde (CID)
- name: id_cid_principal_subcategoria
description: Subcategoria do identificador principal da Classificação Internacional de Doenças
e Problemas Relacionados com a Saúde (CID)
tests:
- custom_relationships:
to: ref('br_bd_diretorios_brasil__cid_10')
field: subcategoria
ignore_values: ["'R501','Q314','S571','N182','U109','M723','M725','N975','N184','R500','N183','Q356','B501','N185','U099'"]
config:
where: __most_recent_year_month__
- name: id_cid_secundario
description: Identificador secundário da Classificação Internacional de Doenças
e Problemas Relacionados com a Saúde (CID)
- name: id_cid_secundario_subcategoria
description: Subcategoria do identificador secundário da Classificação Internacional de Doenças
e Problemas Relacionados com a Saúde (CID)
tests:
- relationships:
to: ref('br_bd_diretorios_brasil__cid_10')
field: subcategoria
config:
where: __most_recent_year_month__
- name: complexidade_ato_profissional
description: Complexidade do ato profissional
- name: quantidade_atos_profissionais
description: Quantidade de atos profissionais
- name: quantidade_pontos
description: Quantidade de pontos
- name: nota_fiscal
description: Nota fiscal do material empregado quando órtese/prótese, quando não, o campo representa a data do ato
- name: valor_ato_profissional
description: Valor do ato profissional
- name: indicador_uf_hospital
description: Indica se a UF de residência do hospital é diferente da UF de localização do estabelecimento
- name: indicador_uf_paciente
description: Indica se a UF de residência do paciente é diferente da UF de
localização do estabelecimento
- name: indicador_id_aih
description: Indica quais id_aih são únicos
- name: tipo_financiamento_ato_profissional
description: Tipo de financiamento do ato profissional
- name: tipo_subtipo_financiamento_ato_profissional
description: Tipo de financiamento (04-FAEC) + Subtipo de financiamento relacionado ao tipo de financiamento (04-FAEC) do ato profissional
- name: tipo_documento_pf
description: Documento de pessoa jurídica
- name: tipo_documento_pj
description: Documento de pessoa física
- name: tipo_valor
description: 'Tipo de valor: 1 - SP /2 –SH'
- name: sequencia
description: Código sequencial
- name: nome_remessa
description: Nome da remessa
Loading