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

[SUBGERAL] Schema, documentation, tags #233

Closed
wants to merge 18 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
b95a563
fixing the logic in the join on health units (getting more matchs)
miloskimatheus Feb 5, 2025
1a639f3
Merge branch 'subgeral_monitorareg' of https://github.com/prefeitura-…
miloskimatheus Feb 5, 2025
22dcc1f
Merge branch 'cnes_subgeral' into subgeral_monitorareg
miloskimatheus Feb 5, 2025
6ab0832
Merge pull request #220 from prefeitura-rio/cnes_subgeral
TanookiVerde Feb 5, 2025
4e4163f
Merge pull request #221 from prefeitura-rio/subgeral_monitorareg
TanookiVerde Feb 5, 2025
e2c30cf
Update .gitignore with Cursor IDE-related files
ThiagoTrabach Feb 9, 2025
0b94845
Update dbt profile configuration from 'default' to 'sms'
ThiagoTrabach Feb 9, 2025
219d814
Removes accents
miloskimatheus Feb 10, 2025
f75cec0
Merge branch 'master' into subgeral_monitorareg
miloskimatheus Feb 10, 2025
031ec9f
Merge pull request #226 from prefeitura-rio/subgeral_monitorareg
TanookiVerde Feb 10, 2025
af2438d
Merge remote-tracking branch 'origin/master' into subgeral_monitorareg
miloskimatheus Feb 11, 2025
091822f
Merge pull request #225 from prefeitura-rio/refact/credentials-name
TanookiVerde Feb 13, 2025
013ca5b
feat: adding bairros_aps model
TanookiVerde Feb 17, 2025
5bb8f65
feat: add usuarios_permitidos_hci model for HCI user access management
TanookiVerde Feb 18, 2025
a34a3bf
Merge branch 'master' into subgeral_monitorareg
miloskimatheus Feb 18, 2025
3653502
feat: AP information (and fixing neighborhood errors)
miloskimatheus Feb 18, 2025
b423268
adds coordinates raw model; improves ap model; adds geolocation on mv…
miloskimatheus Feb 21, 2025
6f33a76
feat: fix profile config
TanookiVerde Feb 21, 2025
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
2 changes: 1 addition & 1 deletion .github/workflows/dbt-compile.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@ jobs:
run: dbt deps

- name: Compile dbt models
run: dbt compile --profiles-dir . --profile default --target dev
run: dbt compile --profiles-dir . --profile sms --target dev

4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ credentials/
target-base/
*.DS_Store
/dbt_packages
.state/
.state/
.cursorignore
.cursor/
22 changes: 18 additions & 4 deletions dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ version: "1.0.0"
config-version: 2

# This setting configures which "profile" dbt uses for this project.
profile: "default"
profile: "sms"

# These configurations specify where dbt should look for different types of files.
# The `source-paths` config, for example, states that models in this project can be
Expand Down Expand Up @@ -107,6 +107,20 @@ models:
dado_publico: sim
dado_pessoal: sim
dado_sensivel: nao
area_programatica:
+schema: brutos_area_programatica
+tags: ["weekly", "subgeral", "monitora_reg", "cnes_subgeral"]
+labels:
dado_publico: sim
dado_pessoal: nao
dado_sensivel: nao
geo_pgeo3:
+schema: brutos_geo_pgeo3
+tags: ["weekly", "subgeral", "monitora_reg", "cnes_subgeral"]
+labels:
dado_publico: sim
dado_pessoal: nao
dado_sensivel: nao
ergon:
+schema: brutos_ergon
+tags: ["daily", "ergon"]
Expand Down Expand Up @@ -232,15 +246,15 @@ models:
dado_sensivel: nao
rio:
+schema: saude_rio
+tags: ["weekly", "saude_rio", "subgeral"]
+tags: ["weekly", "saude_rio", "subgeral", "cnes_subgeral"]
+labels:
dado_publico: sim
dado_pessoal: sim
dado_sensivel: nao
facts:
sisreg:
+schema: saude_sisreg
+tags: "daily"
+tags: ["daily", "cnes", "sisreg"]
+labels:
dado_publico: nao
dado_pessoal: nao
Expand Down Expand Up @@ -318,7 +332,7 @@ models:
dominio: subgeral
sisreg_reports:
+schema: projeto_sisreg_reports
+tags: ["weekly", "subgeral", "sisreg_reports"]
+tags: ["weekly", "subgeral", "sisreg", "sisreg_reports"]
+labels:
dado_publico: nao
dado_pessoal: sim
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,29 @@ with
from {{ ref("raw_sheets__estabelecimento_auxiliar") }}
),

-- Obtendo informações sobre as áreas programáticas
aps_tb as (
select bairro, ap, ap_titulo
from {{ ref("raw_area_programatica__bairros_aps") }}
),

-- Obtendo latitudes e longitudes dos estabelecimentos de saúde
coordenadas as (
select id_cnes, latitude_api, longitude_api
from
(
select
id_cnes,
latitude_api,
longitude_api,
row_number() over (
partition by id_cnes order by data_extracao desc
) as rn
from {{ ref("raw_geo_pgeo3__estabelecimentos_coordenadas") }}
)
where rn = 1
),

-- Obtendo atributos de contato para os estabelecimentos
contatos_aps as (
select id_cnes, telefone, email, facebook, instagram, twitter
Expand Down Expand Up @@ -149,8 +172,12 @@ with
cnes_web.endereco_logradouro,
cnes_web.endereco_numero,
cnes_web.endereco_complemento,
cnes_web.endereco_latitude,
cnes_web.endereco_longitude,
coalesce(
cnes_web.endereco_latitude, coordenadas.latitude_api
) as endereco_latitude,
coalesce(
cnes_web.endereco_longitude, coordenadas.longitude_api
) as endereco_longitude,
cnes_web.id_motivo_desativacao,
cnes_web.id_unidade,
cnes_web.aberto_sempre,
Expand All @@ -173,8 +200,13 @@ with
estabelecimentos_atributos.tipo_unidade_agrupado_subgeral
as tipo_unidade_agrupado,
estabelecimentos_atributos.esfera_subgeral as esfera,
estabelecimentos_atributos.area_programatica as id_ap,
estabelecimentos_atributos.area_programatica_descr as ap,
coalesce(
estabelecimentos_atributos.area_programatica,
safe_cast(aps_tb.ap as string)
) as id_ap,
coalesce(
estabelecimentos_atributos.area_programatica_descr, aps_tb.ap_titulo
) as ap,
estabelecimentos_atributos.agrupador_sms,
estabelecimentos_atributos.tipo_sms,
estabelecimentos_atributos.tipo_sms_simplificado,
Expand Down Expand Up @@ -236,6 +268,11 @@ with
contatos_aps
on cast(brutos.id_estabelecimento_cnes as int64)
= cast(contatos_aps.id_cnes as int64)
left join aps_tb on cnes_web.endereco_bairro = aps_tb.bairro
left join
coordenadas
on cast(brutos.id_estabelecimento_cnes as int64)
= cast(coordenadas.id_cnes as int64)
),

-- Seleção final
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,11 +194,12 @@ with
left join
estabelecimentos as estab
-- ma prática temporária (convertendo o tipo durante o join)
on safe_cast(ofer.ano_competencia as int)
on safe_cast(coalesce(ofer.ano_competencia, prof.ano_competencia) as int)
= safe_cast(estab.ano_competencia as int)
and safe_cast(ofer.mes_competencia as int)
and safe_cast(coalesce(ofer.mes_competencia, prof.mes_competencia) as int)
= safe_cast(estab.mes_competencia as int)
and safe_cast(ofer.id_cnes as int) = safe_cast(estab.id_cnes as int)
and safe_cast(coalesce(ofer.id_cnes, prof.id_cnes) as int)
= safe_cast(estab.id_cnes as int)
),

iqr as (
Expand All @@ -212,7 +213,7 @@ with
group by ano_competencia, mes_competencia, id_procedimento
),

final as (
iqr_label as (
select
mva.*,

Expand Down Expand Up @@ -244,6 +245,57 @@ with
and safe_cast(mva.id_cnes as int) = safe_cast(estab.id_cnes as int)

where estab.vinculo_sus_indicador = 1
),

final as (
select
cpf,
cns,
{{ remove_accents_upper("profissional") }} as profissional,
id_cbo_2002,
{{ remove_accents_upper("ocupacao") }} as ocupacao,
{{ remove_accents_upper("ocupacao_agg") }} as ocupacao_agg,
id_cbo_2002_qtd_sisreg,
id_cbo_2002_todos_sisreg,
id_cnes,
{{ remove_accents_upper("estabelecimento") }} as estabelecimento,
ano_competencia,
mes_competencia,
id_procedimento,
{{ remove_accents_upper("procedimento") }} as procedimento,
carga_horaria_ambulatorial_mensal,
carga_horaria_procedimento_esperada_mensal,
vagas_programadas_mensal_todas,
vagas_programadas_mensal_primeira_vez,
vagas_programadas_mensal_retorno,
vagas_esperadas_mensal,
vagas_esperadas_mensal_primeira_vez,
vagas_esperadas_mensal_retorno,
vagas_diferenca_ofertado_esperado,
procedimento_distribuicao,
procedimento_consultas_hora,
procedimento_proporcao_reservas,
procedimento_proporcao_retornos,
{{ remove_accents_upper("tipo_estabelecimento") }} as tipo_estabelecimento,
{{ remove_accents_upper("tipo_estabelecimento_agrupado") }}
as tipo_estabelecimento_agrupado,
{{ remove_accents_upper("turno_estabelecimento") }}
as turno_estabelecimento,
{{ remove_accents_upper("tipo_gestao_estabelecimento") }}
as tipo_gestao_estabelecimento,
{{ remove_accents_upper("esfera_estabelecimento") }}
as esfera_estabelecimento,
{{ remove_accents_upper("natureza_juridica_estabelecimento") }}
as natureza_juridica_estabelecimento,
id_ap_estabelecimento,
{{ remove_accents_upper("ap_estabelecimento") }} as ap_estabelecimento,
{{ remove_accents_upper("endereco_bairro_estabelecimento") }}
as endereco_bairro_estabelecimento,
procedimento_ppi,
sisreg_dados,
cnes_dados,
{{ remove_accents_upper("status_oferta") }} as status_oferta
from iqr_label
)

select *
Expand Down
16 changes: 16 additions & 0 deletions models/raw/area_programatica/_area_programatica_schema.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
models:
- name: raw_area_programatica__bairros_aps
description: As Áreas Programáticas de Saúde do Rio de Janeiro são 10 grandes regiões que dividem a cidade para fins de planejamento e gestão. Essa divisão facilita a organização do sistema de saúde e permite identificar e abordar problemas específicos de cada área.
columns:
- name: bairro
description: A coluna 'bairro' representa o nome do bairro na cidade do Rio de Janeiro.
data_type: string
quote: true
- name: ap
description: A coluna 'ap' representa o código da Área Programática, um identificador único para cada uma das 10 Áreas Programáticas da cidade do Rio de Janeiro.
data_type: int64
quote: true
- name: ap_titulo
description: A coluna 'ap_titulo' representa o nome ou título da Área Programática correspondente.
data_type: string
quote: true
8 changes: 8 additions & 0 deletions models/raw/area_programatica/_area_programatica_sources.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: 2

sources:
- name: brutos_area_programatica_staging
database: rj-sms
schema: brutos_area_programatica_staging
tables:
- name: bairros_aps
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{{ config(alias="bairros_aps", schema="brutos_area_programatica") }}

with
source as (
select bairro, ap, ap_titulo
from {{ source("brutos_area_programatica_staging", "bairros_aps") }}
)

select *
from source
27 changes: 26 additions & 1 deletion models/raw/cnes_web/raw_cnes_web__estabelecimento.sql
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,32 @@ select
safe_cast(no_logradouro as string) as endereco_logradouro,
safe_cast(nu_endereco as string) as endereco_numero,
safe_cast(no_complemento as string) as endereco_complemento,
safe_cast(no_bairro as string) as endereco_bairro,

-- Handling typos and a few other errors
CASE
WHEN safe_cast(no_bairro as string) = 'SAO FRANCISCO XAVEIR' THEN 'SAO FRANCISCO XAVIER'
WHEN safe_cast(no_bairro as string) = 'BRAS DE PINA' THEN 'BRAZ DE PINA'
WHEN safe_cast(no_bairro as string) = 'CAMPO GRNADE' THEN 'CAMPO GRANDE'
WHEN safe_cast(no_bairro as string) = 'TAQUARA JACAREPAGU' THEN 'TAQUARA'
WHEN safe_cast(no_bairro as string) = 'CENTRO RJ' THEN 'CENTRO'
WHEN safe_cast(no_bairro as string) = 'QUINTINO' THEN 'QUINTINO BOCAIUVA'
WHEN safe_cast(no_bairro as string) = 'COCOTA ILHA DO GOVER' THEN 'COCOTA'
WHEN safe_cast(no_bairro as string) = 'SANTA TEREZA' THEN 'SANTA TERESA'
WHEN safe_cast(no_bairro as string) = 'MAL HERMES' THEN 'MARECHAL HERMES'
WHEN safe_cast(no_bairro as string) = 'TANQUE JACAREPAGUA' THEN 'TANQUE'
WHEN safe_cast(no_bairro as string) = 'ILHA DO FUNDAO' THEN 'CIDADE UNIVERSITARIA'
WHEN safe_cast(no_bairro as string) = 'SENADOR VASCONCELLOS' THEN 'SENADOR VASCONCELOS'
WHEN safe_cast(no_bairro as string) = 'RICARDO DE ALBUQUERQ' THEN 'RICARDO DE ALBUQUERQUE'
WHEN safe_cast(no_bairro as string) = 'RECREIO DOS BANDEIRA' THEN 'RECREIO DOS BANDEIRANTES'
WHEN safe_cast(no_bairro as string) = 'FUNDAO' THEN 'CIDADE UNIVERSITARIA'
WHEN safe_cast(no_bairro as string) = 'CASTELO' THEN 'CENTRO'
WHEN safe_cast(no_bairro as string) = 'TANGUE' THEN 'TANQUE'
WHEN safe_cast(no_bairro as string) = 'VILA MANGUINHOS' THEN 'MANGUINHOS'
WHEN safe_cast(no_bairro as string) = 'CAIS DO PORTO' THEN 'CENTRO'
WHEN safe_cast(co_cnes as string) = "2269767" THEN 'MEIER'
ELSE safe_cast(no_bairro as string)
END AS endereco_bairro,

safe_cast(co_cep as string) as endereco_cep,
safe_cast(nu_latitude as float64) as endereco_latitude,
safe_cast(nu_longitude as float64) as endereco_longitude,
Expand Down
64 changes: 64 additions & 0 deletions models/raw/geo_pgeo3/_geo_pgeo3_schema.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
models:
- name: raw_geo_pgeo3__estabelecimentos_coordenadas
description: O modelo raw_geo_pgeo3__estabelecimentos_coordenadas contém dados geográficos relacionados a estabelecimentos de saúde. Estes dados são municipais, provenientes da API do IPP.
columns:
- name: id_cnes
description: Esta coluna representa o identificador único do estabelecimento de saúde. É um número de sete dígitos, preenchido com zeros à esquerda caso o número original tenha menos de sete dígitos.
data_type: string
quote: true
- name: endereco_cep
description: Esta coluna representa o Código de Endereçamento Postal (CEP) do endereço do estabelecimento de saúde. É um número de oito dígitos, preenchido com zeros à esquerda caso o número original tenha menos de oito dígitos.
data_type: string
quote: true
- name: endereco_bairro
description: Esta coluna representa o bairro do endereço do estabelecimento de saúde.
data_type: string
quote: true
- name: endereco_logradouro
description: Esta coluna contém o nome da rua do estabelecimento.
data_type: string
quote: true
- name: endereco_numero
description: Esta coluna contém o número do endereço do estabelecimento.
data_type: string
quote: true
- name: latitude_cep
description: Esta coluna contém a latitude do estabelecimento com base no CEP.
data_type: float64
quote: true
- name: longitude_cep
description: Esta coluna representa a longitude do CEP do estabelecimento.
data_type: float64
quote: true
- name: latitude_addr
description: Esta coluna representa a latitude do endereço do estabelecimento.
data_type: float64
quote: true
- name: longitude_addr
description: Esta coluna representa a longitude do endereço do estabelecimento.
data_type: float64
quote: true
- name: latitude_api
description: Latitude final à ser considerada (Tenta preencher com addr, e caso não consiga, tenta preencher com cep).
data_type: float64
quote: true
- name: longitude_api
description: Longitude final à ser considerada (Tenta preencher com addr, e caso não consiga, tenta preencher com cep).
data_type: float64
quote: true
- name: data_extracao
description: A data e hora em que os dados foram extraídos.
data_type: datetime
quote: true
- name: ano_particao
description: Esta coluna representa o ano da partição.
data_type: int64
quote: true
- name: mes_particao
description: Esta coluna representa o mês da partição.
data_type: int64
quote: true
- name: data_particao
description: Esta coluna representa a data da partição. É baseada na data_extração, e é utilizada para fins de organização dos dados e consultas mais rápidas.
data_type: date
quote: true
8 changes: 8 additions & 0 deletions models/raw/geo_pgeo3/_geo_pgeo3_sources.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: 2

sources:
- name: brutos_geo_pgeo3_staging
database: rj-sms
schema: brutos_geo_pgeo3_staging
tables:
- name: estabelecimentos_coordenadas
Loading
Loading