Skip to content

Commit

Permalink
Merge pull request #202 from prefeitura-rio/subgeral_monitorareg
Browse files Browse the repository at this point in the history
[MONITORA REG] MVA: Changes agg level
  • Loading branch information
miloskimatheus authored Jan 21, 2025
2 parents 3f6df72 + d810d36 commit 6a127b4
Show file tree
Hide file tree
Showing 7 changed files with 120 additions and 110 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ with
select
-- identificadores
profissional__cpf as cpf,
string_agg(distinct profissional__cns, ', ') as cns,
string_agg(distinct profissional__nome, ', ') as profissional,
profissional__id_cbo as id_cbo_2002,
string_agg(distinct profissional__cbo, ', ') as ocupacao,
string_agg(distinct profissional__cbo_familia, ', ') as ocupacao_agg,
array_agg(distinct profissional__cns ignore nulls) as cns,
array_agg(distinct profissional__nome ignore nulls) as profissional,
array_agg(distinct profissional__id_cbo ignore nulls) as id_cbo_2002,
array_agg(distinct profissional__cbo ignore nulls) as ocupacao,
array_agg(distinct profissional__cbo_familia ignore nulls) as ocupacao_agg,

-- carga horaria mensal APROXIMADA
round(
Expand All @@ -32,22 +32,24 @@ select

-- dados dos estabelecimentos
estabelecimento__id_cnes as id_cnes,
string_agg(distinct estabelecimento__nome_fantasia, ', ') as estabelecimento,
string_agg(distinct estabelecimento__esfera, ', ') as esfera,
string_agg(
distinct estabelecimento__natureza_juridica_descr, ', '
array_agg(distinct estabelecimento__nome_fantasia ignore nulls) as estabelecimento,
array_agg(distinct estabelecimento__esfera ignore nulls) as esfera,
array_agg(
distinct estabelecimento__natureza_juridica_descr ignore nulls
) as natureza_juridica,
string_agg(distinct estabelecimento__tipo_gestao_descr, ', ') as tipo_gestao,
string_agg(distinct estabelecimento__turno_atendimento, ', ') as turno,
string_agg(
distinct estabelecimento__tipo_unidade_alternativo, ', '
array_agg(distinct estabelecimento__tipo_gestao_descr ignore nulls) as tipo_gestao,
array_agg(distinct estabelecimento__turno_atendimento ignore nulls) as turno,
array_agg(
distinct estabelecimento__tipo_unidade_alternativo ignore nulls
) as tipo_unidade_alternativo,
string_agg(
distinct estabelecimento__tipo_unidade_agrupado, ', '
array_agg(
distinct estabelecimento__tipo_unidade_agrupado ignore nulls
) as tipo_unidade_agrupado,
string_agg(distinct estabelecimento__id_ap, ', ') as id_ap,
string_agg(distinct estabelecimento__ap, ', ') as ap,
string_agg(distinct estabelecimento__endereco_bairro, ', ') as endereco_bairro,
array_agg(distinct estabelecimento__id_ap ignore nulls) as id_ap,
array_agg(distinct estabelecimento__ap ignore nulls) as ap,
array_agg(
distinct estabelecimento__endereco_bairro ignore nulls
) as endereco_bairro,

from versao_atual

Expand Down Expand Up @@ -75,4 +77,4 @@ where
)
and profissional__id_cbo not in ('225142', '225130', '223293', '223565', '322245') -- exclui saude da familia

group by cpf, id_cnes, id_cbo_2002, ano_competencia, mes_competencia
group by cpf, id_cnes, ano_competencia, mes_competencia
Original file line number Diff line number Diff line change
@@ -1,43 +1,62 @@
-- combina os modelos de contagens a nivel de procedimentos, com os totais a nivel de estabelecimentos, com os parametros dos procedimentos
-- combina os modelos de contagens a nivel de procedimentos, com os totais a nivel de
-- estabelecimentos, com os parametros dos procedimentos
-- view

select
-- identificadores
por_proced_cbo.cpf,
por_proced_cbo.id_cnes,
por_proced_cbo.id_procedimento,
por_proced_cbo.id_cbo_2002,
por_proced_cbo.ano as ano_competencia,
por_proced_cbo.mes as mes_competencia,
por_proced.cpf,
por_proced.id_cnes,
por_proced.id_procedimento,
por_proced.id_cbo_2002,
por_proced.ano as ano_competencia,
por_proced.mes as mes_competencia,

-- contagens de vagas a nivel de procedimentos
por_proced_cbo.vagas_programadas_mensal_primeira_vez,
por_proced_cbo.vagas_programadas_mensal_retorno,
por_proced_cbo.vagas_programadas_mensal_todas,
por_proced.vagas_programadas_mensal_primeira_vez,
por_proced.vagas_programadas_mensal_retorno,
por_proced.vagas_programadas_mensal_todas,

-- contagens de vagas a nivel de unidades
por_unidade.vagas_programadas_mensal_primeira_vez_unidade,
por_unidade.vagas_programadas_mensal_retorno_unidade,
por_unidade.vagas_programadas_mensal_todas_unidade,

-- proporcao de vagas para cada procedimento em relação ao total de vagas na unidade (definido pelo proprio profissional)
-- proporcao de vagas para cada procedimento em relação ao total de vagas na
-- unidade (definido pelo proprio profissional)
case
when por_unidade.vagas_programadas_mensal_todas_unidade = 0 then 0
else round(por_proced_cbo.vagas_programadas_mensal_todas / por_unidade.vagas_programadas_mensal_todas_unidade, 3)
when por_unidade.vagas_programadas_mensal_todas_unidade = 0
then 0
else
round(
por_proced.vagas_programadas_mensal_todas
/ por_unidade.vagas_programadas_mensal_todas_unidade,
3
)
end as procedimento_distribuicao,

-- parametros dos procedimentos
padr_proced.descricao as procedimento,
padr_proced.parametro_consultas_por_hora as procedimento_consultas_hora,
round(padr_proced.parametro_reservas / (padr_proced.parametro_reservas + padr_proced.parametro_retornos), 2) as procedimento_proporcao_reservas,
round(padr_proced.parametro_retornos / (padr_proced.parametro_reservas + padr_proced.parametro_retornos), 2) as procedimento_proporcao_retornos

from {{ ref('int_mva__oferta_programada_mensal_por_procedimento_cbo') }} as por_proced_cbo

left join {{ ref('int_mva__oferta_programada_mensal_por_unidade') }} as por_unidade
using (cpf, id_cnes, ano, mes)

left join {{ ref("raw_sheets__assistencial_procedimento") }} as padr_proced
using (id_procedimento)

where por_proced_cbo.cpf is not null
round(
padr_proced.parametro_reservas
/ (padr_proced.parametro_reservas + padr_proced.parametro_retornos),
2
) as procedimento_proporcao_reservas,
round(
padr_proced.parametro_retornos
/ (padr_proced.parametro_reservas + padr_proced.parametro_retornos),
2
) as procedimento_proporcao_retornos

from {{ ref("int_mva__oferta_programada_mensal_por_procedimento") }} as por_proced

left join
{{ ref("int_mva__oferta_programada_mensal_por_unidade") }} as por_unidade using (
cpf, id_cnes, ano, mes
)

left join
{{ ref("raw_sheets__assistencial_procedimento") }} as padr_proced using (
id_procedimento
)

where por_proced.cpf is not null
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
-- vagas programadas pelos profissionais por procedimento
-- view
with
versao_atual as (
select *
from {{ ref("fct_sisreg_oferta_programada_serie_historica") }}
where
data_particao = (
select max(data_particao)
from {{ ref("fct_sisreg_oferta_programada_serie_historica") }}
)
)

select
-- identificadores
profissional_executante_cpf as cpf,
id_estabelecimento_executante as id_cnes,
id_procedimento_interno as id_procedimento,
array_agg(distinct id_cbo2002 ignore nulls) as id_cbo_2002,
procedimento_vigencia_ano as ano,
procedimento_vigencia_mes as mes,

-- contagens de vagas
sum(
(vagas_primeira_vez_qtd + vagas_reserva_qtd)
) as vagas_programadas_mensal_primeira_vez,
sum(vagas_retorno_qtd) as vagas_programadas_mensal_retorno,
sum(vagas_todas_qtd) as vagas_programadas_mensal_todas

from versao_atual

where
-- filtrando periodo de interesse
procedimento_vigencia_ano >= 2020

-- filtrando ocupacoes de interesse
and regexp_contains(
id_cbo2002,
r'^(3222|2251|2235|2231|2252|2232|2236|2234|2237|2515|2253|3251|2238|5152|2239)'
)
and id_cbo2002 not in ('225142', '225130', '223293', '223565', '322245') -- exclui saude da familia

group by cpf, id_cnes, id_procedimento, ano, mes

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
-- vagas programadas pelos profissionais por unidade
-- view

select
-- identificadores
cpf,
Expand All @@ -9,14 +8,12 @@ select
mes,

-- contagens de vagas
sum(vagas_programadas_mensal_primeira_vez) as vagas_programadas_mensal_primeira_vez_unidade,
sum(
vagas_programadas_mensal_primeira_vez
) as vagas_programadas_mensal_primeira_vez_unidade,
sum(vagas_programadas_mensal_retorno) as vagas_programadas_mensal_retorno_unidade,
sum(vagas_programadas_mensal_todas) as vagas_programadas_mensal_todas_unidade

from {{ ref('int_mva__oferta_programada_mensal_por_procedimento_cbo') }}
from {{ ref("int_mva__oferta_programada_mensal_por_procedimento") }}

group by
cpf,
id_cnes,
ano,
mes
group by cpf, id_cnes, ano, mes
16 changes: 5 additions & 11 deletions models/marts/subgeral/monitora_reg/_mart_monitora_reg_schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ models:
- id_cnes
- ano_competencia
- mes_competencia
- id_cbo_2002
- id_procedimento
name: mart_monitora_reg__monitor_vagas_ambulatoriais__combination_of_columns

Expand All @@ -47,20 +46,12 @@ models:

- name: cns
description: "Número do Cartão Nacional de Saúde do profissional."
data_tests:
- dbt_expectations.expect_column_value_lengths_to_equal:
value: 15
name: mart_monitora_reg__monitor_vagas_ambulatoriais__cns__expect_column_value_lengths_to_equal

- name: profissional
description: "Nome do profissional de saúde."

- name: id_cbo_2002
description: "Código de ocupação profissional, unificado das duas fontes de dados."
data_tests:
- dbt_expectations.expect_column_value_lengths_to_equal:
value: 6
name: mart_monitora_reg__monitor_vagas_ambulatoriais__id_cbo_2002__expect_column_value_lengths_to_equal

- name: ocupacao
description: "Descrição da ocupação do profissional."
Expand Down Expand Up @@ -197,5 +188,8 @@ models:
- dbt_utils.not_constant:
name: mart_monitora_reg__monitor_vagas_ambulatoriais__cnes_dados__not_constant

- name: oferta_status
description: "Classifica o balanço de oferta como Adequado, Alto, Baixo ou Muito Baixo utilizando o Intervalo Interquartil (IQR), com base em ano_competencia, mes_competencia e id_procedimento."
- name: status_oferta
description: "Classifica o balanço de oferta como Adequado, Alto, Baixo ou Muito Baixo utilizando o Intervalo Interquartil (IQR), com base em ano_competencia, mes_competencia e id_procedimento."

- name: qtd_id_cbo_2002
description: "Quantidade de CBOs do profissional em determinado mes, ano e estabelecimento."
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,6 @@ with
= safe_cast(prof.ano_competencia as int64)
and safe_cast(ofer.mes_competencia as int64)
= safe_cast(prof.mes_competencia as int64)
and safe_cast(ofer.id_cbo_2002 as int64)
= safe_cast(prof.id_cbo_2002 as int64)
),

iqr as (
Expand Down Expand Up @@ -204,5 +202,5 @@ with
and mva.id_procedimento = iqr.id_procedimento
)

select *
select *, array_length(id_cbo_2002) as qtd_id_cbo_2002
from mva_with_status

0 comments on commit 6a127b4

Please sign in to comment.