Skip to content

Commit

Permalink
Merge pull request #561 from basedosdados/feat/br_ms_sih
Browse files Browse the repository at this point in the history
[dbt]: add `br_ms_sih` models
  • Loading branch information
arthurfg authored May 2, 2024
2 parents b9154a7 + c40387a commit 3369507
Show file tree
Hide file tree
Showing 5 changed files with 290 additions and 0 deletions.
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

0 comments on commit 3369507

Please sign in to comment.