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

Alterações nas estruturas dos modelos: estabelecimento_sus_rio_historico; estabelecimento_auxiliar. #92

Merged
merged 39 commits into from
Oct 9, 2024
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ef4deeb
Inicio da criação das tabelas mestres CNES referentes a toda a rede p…
miloskimatheus Sep 11, 2024
0fae740
Adição de uma vírgula; Adição das unidades antigas da SMSDC na flag SMS.
miloskimatheus Sep 11, 2024
ba0817f
Alterações na tabela histórica de municipios do mrj com vinculo com s…
miloskimatheus Sep 13, 2024
0576185
Merge remote-tracking branch 'origin/master' into cnes_subgeral
miloskimatheus Sep 13, 2024
5dafb2e
Alterações nas estruturas dos modelos: estabelecimento_sus_rio_histor…
miloskimatheus Sep 17, 2024
7511a92
Merge branch 'master' into cnes_subgeral
ThiagoTrabach Sep 18, 2024
1e84542
Merge branch 'cnes_subgeral' of https://github.com/prefeitura-rio/que…
ThiagoTrabach Sep 18, 2024
3fea421
Fix typo in dbt project
ThiagoTrabach Sep 18, 2024
9085cea
Correção de bugs
miloskimatheus Sep 20, 2024
47b22d9
Merge branch 'cnes_subgeral' of https://github.com/prefeitura-rio/que…
miloskimatheus Sep 20, 2024
2d8f338
Alterações na selação final do modelo historico. Tipagem e CTE.
miloskimatheus Sep 20, 2024
675b3cf
Criação do modelo CNES de leitos
miloskimatheus Sep 23, 2024
bdc6b88
chore: re-organiza arquivos, corige nome de dataset materializado e c…
ThiagoTrabach Sep 23, 2024
dc313aa
Merge branch 'cnes_subgeral' of https://github.com/prefeitura-rio/que…
ThiagoTrabach Sep 23, 2024
c1e75ff
Correção de bugs nos models de estabelecimentos e leitos. Comentei um…
miloskimatheus Sep 25, 2024
8fb9263
construcao do modelo de habilitacoes
miloskimatheus Sep 25, 2024
0005967
correção de regra de selecao / filtragem nos modelos de leito e habil…
miloskimatheus Sep 25, 2024
ea951a2
Criação do modelo de equipamento
miloskimatheus Sep 25, 2024
41463d0
refactor: folder structure
ThiagoTrabach Sep 26, 2024
4dd105b
Merge branch 'master' into cnes_subgeral
ThiagoTrabach Sep 26, 2024
8b13f63
refactor: folder structure
ThiagoTrabach Sep 26, 2024
2f8f628
Criação do modelo de profissionais e correção de um type no schema
miloskimatheus Sep 26, 2024
aeae269
Merge branch 'cnes_subgeral' of https://github.com/prefeitura-rio/que…
miloskimatheus Sep 26, 2024
d17371e
Modelo de profissionais
miloskimatheus Sep 26, 2024
5170a50
mudança no schema
miloskimatheus Sep 26, 2024
8c32716
corrigindo tipagem
miloskimatheus Sep 26, 2024
7013a6e
correção de queries que estavam gerando cardinalidade; criação de str…
miloskimatheus Sep 27, 2024
c9269a7
Remoção de registros duplicados e alteração da string "nan" nos para …
miloskimatheus Sep 30, 2024
ae1d8dd
minor changes
miloskimatheus Sep 30, 2024
eda06fc
Merge branch 'master' into cnes_subgeral
ThiagoTrabach Oct 1, 2024
03652af
Merge branch 'master' into cnes_subgeral
ThiagoTrabach Oct 7, 2024
77977d6
add policy tags
ThiagoTrabach Oct 7, 2024
5f08ef8
Disable deployment of non-validated models in production
ThiagoTrabach Oct 7, 2024
a1366f9
Correctly arrange metadata columns for improved data organization”
ThiagoTrabach Oct 7, 2024
6adc580
Remove legacy source freshness check for Vitacare paciente_historico
ThiagoTrabach Oct 8, 2024
59efd93
Remove legacy source freshness check for Vitacare paciente_historico
ThiagoTrabach Oct 8, 2024
d6d4c39
Merge branch 'cnes_subgeral' of https://github.com/prefeitura-rio/que…
ThiagoTrabach Oct 8, 2024
66e731d
Correção na conversão de data; alteração dos nomes ano e mes para ano…
miloskimatheus Oct 8, 2024
aac6ee7
Merge branch 'master' of https://github.com/prefeitura-rio/queries-rj…
ThiagoTrabach Oct 9, 2024
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
191 changes: 68 additions & 123 deletions models/marts/core/dimensions/dim_estabelecimento.sql
Original file line number Diff line number Diff line change
@@ -1,138 +1,83 @@
{{ config(materialized="table", alias="estabelecimento", tags=["daily"]) }}
{{ config(materialized='table', alias='estabelecimento', tags=['daily']) }}

with source as (
select * from {{ ref('dim_estabelecimento_sus_rio_historico') }}
),

with
versao_atual as (
select max(data_particao) as versao from {{ ref("raw_cnes_web__tipo_unidade") }}
),
current_year as (
select max(ano) as ano_atual from source
),

estabelecimento as (
select *
from {{ ref("raw_cnes_web__estabelecimento") }}
where data_particao = (select versao from versao_atual)
),

unidade as (
select *
from {{ ref("raw_cnes_web__tipo_unidade") }}
where data_particao = (select versao from versao_atual)
),

turno as (
select *
from {{ ref("raw_cnes_web__turno_atendimento") }}
where data_particao = (select versao from versao_atual)
),

estab_sms as (
select *
from estabelecimento
where
cnpj_mantenedora = "29468055000102" -- SMS-RIO
or id_cnes = "5456932" -- Fio Cruz
or (id_municipio_gestor = "330455" and id_natureza_juridica = "2011") -- Rio de Janeiro & Empresa Publica (Rio Saúde)
or (id_municipio_gestor = "330455" and id_natureza_juridica = "1031") -- Rio de Janeiro & Orgao Publico do Poder Executivo Municipal
),

estab_aux as (select * from {{ ref("raw_sheets__estabelecimento_auxiliar") }}),

contatos_aps as (
select * from {{ ref("raw_plataforma_smsrio__estabelecimento_contato") }}
),

estab_final as (
select
estab_sms.*,
split(estab_sms.telefone, "/") as telefone_cnes,
contatos_aps.telefone as telefone_aps,
estab_sms.email as email_cnes,
contatos_aps.email as email_aps,
contatos_aps.facebook,
contatos_aps.instagram,
contatos_aps.twitter,
estab_aux.agrupador_sms,
estab_aux.tipo_sms,
estab_aux.tipo_sms_simplificado,
estab_aux.nome_limpo,
regexp_replace(
estab_aux.nome_limpo,
r'(CF |CSE |CMS |UPA 24h |POLICLINICA |HOSPITAL MUNICIPAL |COORD DE EMERGENCIA REGIONAL CER |MATERNIDADE )',
''
) as nome_complemento,
estab_aux.nome_sigla,
estab_aux.prontuario_tem,
estab_aux.prontuario_versao,
estab_aux.responsavel_sms,
estab_aux.administracao,
estab_aux.prontuario_estoque_tem_dado,
estab_aux.prontuario_estoque_motivo_sem_dado,
coalesce(
estab_aux.area_programatica, estab_sms.id_distrito_sanitario
) as id_distrito_sanitario_corrigido, -- corrige registros que possuem algum erro no cadsus
from estab_sms
left join estab_aux using (id_cnes)
left join contatos_aps using (id_cnes)
)
current_period as (
select
miloskimatheus marked this conversation as resolved.
Show resolved Hide resolved
current_year.ano_atual,
max(mes) as competencia_atual
from source
join current_year on source.ano = current_year.ano_atual
group by current_year.ano_atual
)

select
-- Primary key
miloskimatheus marked this conversation as resolved.
Show resolved Hide resolved
est.id_unidade,
-- primary key
id_unidade,

-- Foreign keys
est.id_cnes,
est.id_tipo_unidade,
est.id_distrito_sanitario_corrigido as area_programatica,
est.cnpj_mantenedora,
-- foreign keys
id_cnes,
id_tipo_unidade,
area_programatica,
cnpj_mantenedora,

-- Common fields
if(est.id_motivo_desativacao = "", "sim", "não") as ativa,
est.agrupador_sms as tipo_sms_agrupado,
unidade.descricao as tipo, # TODO: renomear para tipo_cnes
est.tipo_sms,
est.tipo_sms_simplificado,
est.nome_limpo,
est.nome_sigla,
est.nome_complemento,
est.nome_fantasia,
est.responsavel_sms,
est.administracao,
est.prontuario_tem,
est.prontuario_versao,
est.prontuario_estoque_tem_dado,
est.prontuario_estoque_motivo_sem_dado,
est.endereco_bairro,
est.endereco_logradouro,
est.endereco_numero,
est.endereco_complemento,
est.endereco_cep,
est.endereco_latitude,
est.endereco_longitude,
coalesce(est.telefone_aps, est.telefone_cnes) as telefone,
coalesce(est.email_aps, est.email_cnes) as email,
est.facebook,
est.instagram,
est.twitter,
est.aberto_sempre,
turno.descricao as turno_atendimento,
est.diretor_clinico_cpf,
est.diretor_clinico_conselho,
-- common fields
ativa,
tipo_sms_agrupado,
tipo, -- trocar para tipo_cnes?
tipo_sms,
tipo_sms_simplificado,
nome_limpo,
nome_sigla,
nome_complemento,
nome_fantasia,
responsavel_sms,
administracao,
prontuario_tem,
prontuario_versao,
prontuario_estoque_tem_dado,
prontuario_estoque_motivo_sem_dado,
endereco_bairro,
endereco_logradouro,
endereco_numero,
endereco_complemento,
endereco_cep,
endereco_latitude,
endereco_longitude,
telefone,
email,
facebook,
instagram,
twitter,
aberto_sempre,
turno_atendimento,
diretor_clinico_cpf,
diretor_clinico_conselho,

-- Metadata
-- metadata
data_atualizao_registro,
usuario_atualizador_registro,
est.mes_particao,
est.ano_particao,
est.data_particao,
est.data_carga,
est.data_snapshot,
mes_particao,
ano_particao,
data_particao,
data_carga,
data_snapshot

from estab_final as est
left join turno using (id_turno_atendimento)
left join unidade using (id_tipo_unidade)
from
source
join current_period on source.ano = current_period.ano_atual and source.mes = current_period.competencia_atual
where
indicador_estabelecimento_sms = 1

order by
ativa desc,
est.id_tipo_unidade asc,
id_tipo_unidade asc,
area_programatica asc,
est.endereco_bairro asc,
est.nome_fantasia asc
endereco_bairro asc,
nome_fantasia asc
158 changes: 158 additions & 0 deletions models/marts/saude_cnes/_mart_saude_cnes_schema.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
version: 2

models:
- name: estabelecimento_sus_rio_historico
description: Esta tabela contém dados sobre todos os estabelecimentos de saúde do Município do Rio de Janeiro que possuem algum tipo de vínculo com o SUS.

columns:
# Identificação
- name: ano
description: "Ano de referência dos dados."
- name: mes
description: "Mês de referência dos dados."
- name: id_cnes
description: "Código Nacional de Estabelecimento de Saúde (CNES) do estabelecimento."
- name: id_unidade
description: "Identificador específico do estabelecimento de saúde"
- name: nome_razao_social
description: "Razão social do estabelecimento conforme registro oficial."
- name: nome_fantasia
description: "Nome fantasia do estabelecimento."
- name: nome_limpo
description: "Nome do estabelecimento formatado."
- name: nome_sigla
description: "Sigla do nome do estabelecimento."
- name: nome_complemento
description: "Detalhes adicionais que complementam o nome principal do estabelecimento."
- name: cnpj_mantenedora
description: "CNPJ da entidade mantenedora do estabelecimento, importante para identificação legal e financeira."

# Responsabilização
- name: esfera
description: "Classificação administrativa da esfera governamental (federal, estadual, municipal)."
- name: id_natureza_juridica
description: "Código da natureza jurídica do estabelecimento."
- name: natureza_juridica_descr
description: "Descrição da natureza jurídica do estabelecimento."
- name: tipo_gestao
description: "Código indicativo do tipo de gestão (e.g., municipal, estadual)."
- name: tipo_gestao_descr
description: "Descrição do tipo de gestão do estabelecimento."
- name: responsavel_sms
description: "Setor da SMS responsável pelo estabelecimento."
- name: administracao
description: "Administração do estabelecimento."
- name: diretor_clinico_cpf
description: "CPF do diretor clínico do estabelecimento."
- name: diretor_clinico_conselho
description: "Número de registro no conselho profissional do diretor clínico."

# Atributos
- name: tipo_turno
description: "Código indicativo do turno de atendimento (manhã, tarde, integral)."
- name: turno_atendimento
description: "Descrição do turno de atendimento."
- name: aberto_sempre
description: "Indica se o estabelecimento opera continuamente, 24 horas por dia."

# Tipagem dos Estabelecimentos (CNES)
- name: id_tipo_unidade
description: "Código do tipo de unidade de saúde."
- name: tipo
description: "Descrição do tipo de unidade de saúde."

# Tipagem dos Estabelecimentos (DIT)
- name: tipo_sms
description: "Categoria relacionada a serviços de saúde."
- name: tipo_sms_simplificado
description: "Versão simplificada da categoria de SMS, utilizada para classificação geral."
- name: tipo_sms_agrupado
description: "Variável de agrupamento relacionada a tipagem do estabelecimento."

# Tipagem dos Estabelecimentos (SUBGERAL)
- name: tipo_unidade_alternativo
description: "Classificação alternativa do tipo de unidade conforme categorização interna."
- name: tipo_unidade_agrupado
description: "Classificação agrupada do tipo de unidade de saúde."

# Localização
- name: id_ap
description: "Código da Área Programática."
- name: ap
description: "Descrição da Área Programática."
- name: endereco_cep
description: "CEP do estabelecimento."
- name: endereco_bairro
description: "Bairro onde o estabelecimento está localizado."
- name: endereco_logradouro
description: "Logradouro do endereço do estabelecimento."
- name: endereco_numero
description: "Número do endereço do estabelecimento."
- name: endereco_complemento
description: "Complemento do endereço do estabelecimento."
- name: endereco_latitude
description: "Latitude do estabelecimento para georreferenciamento."
- name: endereco_longitude
description: "Longitude do estabelecimento para georreferenciamento."

# Status
- name: ativa
description: "Indica o status operacional do estabelecimento ('sim' para ativo, 'não' para inativo)."

# Prontuário
- name: prontuario_tem
description: "Indica se o estabelecimento mantém prontuários dos pacientes."
- name: prontuario_versao
description: "Versão do prontuário utilizado pelo estabelecimento."
- name: prontuario_estoque_tem_dado
description: "Indica se os prontuários contêm dados disponíveis."
- name: prontuario_estoque_motivo_sem_dado
description: "Motivo pelo qual os prontuários não contêm dados."

# Informações de Contato
- name: telefone
description: "Número de telefone principal para contato com o estabelecimento."
- name: email
description: "Endereço de e-mail principal do estabelecimento."
- name: facebook
description: "Página do Facebook do estabelecimento."
- name: instagram
description: "Perfil do Instagram do estabelecimento."
- name: twitter
description: "Conta do Twitter do estabelecimento."

# Indicadores
- name: indicador_estabelecimento_sms
miloskimatheus marked this conversation as resolved.
Show resolved Hide resolved
description: "Indica se o estabelecimento faz parte da rede municipal de saúde."
- name: indicador_vinculo_sus
description: "Indica se o estabelecimento possui vínculo com o SUS."
- name: indicador_atendimento_internacao_sus
description: "Indica se o estabelecimento oferece serviços de internação pelo SUS."
- name: indicador_atendimento_ambulatorial_sus
description: "Indica se o estabelecimento oferece serviços ambulatoriais pelo SUS."
- name: indicador_atendimento_sadt_sus
description: "Indica se o estabelecimento oferece Serviços Auxiliares de Diagnóstico e Terapia (SADT) pelo SUS."
- name: indicador_atendimento_urgencia_sus
description: "Indica se o estabelecimento oferece serviços de urgência pelo SUS."
- name: indicador_atendimento_outros_sus
description: "Indica se o estabelecimento oferece outros tipos de serviços pelo SUS."
- name: indicador_atendimento_vigilancia_sus
description: "Indica se o estabelecimento oferece serviços de vigilância em saúde pelo SUS."
- name: indicador_atendimento_regulacao_sus
description: "Indica se o estabelecimento atua em atividades de regulação de serviços de saúde pelo SUS."

# Metadados
- name: data_atualizao_registro
description: "Data em que o registro foi atualizado pela última vez."
- name: usuario_atualizador_registro
description: "Identificador do usuário que atualizou o registro pela última vez."
- name: mes_particao
description: "Mês utilizado para fins de particionamento dos dados."
- name: ano_particao
description: "Ano utilizado para fins de particionamento dos dados."
- name: data_particao
description: "Data específica utilizada para particionamento dos dados."
- name: data_carga
description: "Data em que os dados foram carregados no banco de dados."
- name: data_snapshot
description: "Data em que o snapshot dos dados foi capturado."
13 changes: 13 additions & 0 deletions models/marts/saude_cnes/_mart_saude_cnes_sources.yml
miloskimatheus marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
sources:

- name: brutos_cnes_ftp
database: rj-sms
schema: brutos_cnes_ftp
tables:
- name: estabelecimento

- name: subgeral_padronizacoes
database: rj-sms-sandbox
schema: subgeral_padronizacoes
tables:
- name: padronizacao_estabelecimentos
Loading
Loading