Skip to content

Commit

Permalink
Merge branch 'master' into feat/dbt-bigquer-monitoring
Browse files Browse the repository at this point in the history
  • Loading branch information
ThiagoTrabach committed Jan 27, 2025
2 parents 9185bf7 + 86ae18f commit ca870fa
Show file tree
Hide file tree
Showing 59 changed files with 2,000 additions and 1,131 deletions.
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
rev: v5.0.0
hooks:
- id: check-added-large-files # prevents adding large files
- id: detect-private-key # detects private keys
Expand Down
9 changes: 9 additions & 0 deletions dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,15 @@ models:
dado_pessoal: sim
dado_sensivel: sim
dominio: historico_clinico_app
subpav:
indicadores_paciente:
+schema: projeto_subpav
+tags: ["weekly", "subpav"]
+labels:
dado_publico: nao
dado_pessoal: sim
dado_sensivel: sim
dominio: subpav
subgeral:
cnes:
+schema: projeto_cnes_subgeral
Expand Down
9 changes: 9 additions & 0 deletions macros/calculate_age.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{% macro calculate_age(date_of_birth) %}
DATE_DIFF(CURRENT_DATE(), {{ date_of_birth }}, YEAR)
- CASE
WHEN EXTRACT(MONTH FROM {{ date_of_birth }}) * 100 + EXTRACT(DAY FROM {{ date_of_birth }})
> EXTRACT(MONTH FROM CURRENT_DATE()) * 100 + EXTRACT(DAY FROM CURRENT_DATE())
THEN 1
ELSE 0
END
{% endmacro %}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,7 @@ with
-- Sources
remume as (
select
*,
split(
substr(
remume_disponibilidade_relacao,
1,
length(remume_disponibilidade_relacao) - 1
),
';'
) as remume_disponibilidade_relacao_array,
*
from {{ ref("raw_sheets__material_mestre") }}
where remume_indicador = "sim" and ativo_indicador = "sim"
),
Expand All @@ -27,14 +19,13 @@ with
est.prontuario_versao,
est.prontuario_estoque_tem_dado,
remume.cadastrado_sistema_vitacare_indicador,
remume.remume_disponibilidade_relacao_array,
remume.remume_disponibilidade_relacao,
remume.id_material,
remume.remume_listagem_relacao,
remume.remume_listagem_basico_indicador,
remume.remume_listagem_hospitalar_indicador,
remume.remume_listagem_uso_interno_indicador,
remume.remume_listagem_antiseptico_indicador,
remume.remume_listagem_estrategico_indicador
remume.remume_listagem_estrategico_indicador,
from estabelecimento as est
cross join remume
),
Expand All @@ -43,8 +34,8 @@ with
select *
from combinacao_estabelecimento_remume
where
tipo_sms_simplificado in unnest(remume_disponibilidade_relacao_array)
or id_cnes in unnest(remume_disponibilidade_relacao_array)
tipo_sms_simplificado in unnest(remume_disponibilidade_relacao)
or id_cnes in unnest(remume_disponibilidade_relacao)
order by id_cnes
),

Expand All @@ -64,47 +55,28 @@ with
remume_distintos as (
select
id_material,
remume_disponibilidade_relacao_array,
remume_listagem_relacao,
remume_listagem_basico_indicador,
remume_listagem_hospitalar_indicador,
remume_listagem_uso_interno_indicador,
remume_listagem_antiseptico_indicador,
remume_listagem_estrategico_indicador,
from remume
where
array_length(remume_disponibilidade_relacao_array) > 2
array_length(remume_disponibilidade_relacao) > 2
or (
array_length(remume_disponibilidade_relacao_array) = 1
array_length(remume_disponibilidade_relacao) = 1
and not (
contains_substr(
array_to_string(remume_disponibilidade_relacao_array, ','),
"HOSPITAL"
)
or (
contains_substr(
array_to_string(remume_disponibilidade_relacao_array, ','),
"MATERNIDADE"
)
)
'HOSPITAL' in unnest(remume_disponibilidade_relacao)
or 'MATERNIDADE' in unnest(remume_disponibilidade_relacao)
)
)
or (
array_length(remume_disponibilidade_relacao_array) = 2
array_length(remume_disponibilidade_relacao) = 2
and not (
contains_substr(
array_to_string(remume_disponibilidade_relacao_array, ','),
"HOSPITAL"
)
and (
contains_substr(
array_to_string(remume_disponibilidade_relacao_array, ','),
"MATERNIDADE"
)
)
'HOSPITAL' in unnest(remume_disponibilidade_relacao)
and 'MATERNIDADE' in unnest(remume_disponibilidade_relacao)
)
) -- TPC só abastece APS, então só considerar itens que não são exclusivos para hospitais e maternidades

),

relacao_remume_tpc as (
Expand All @@ -115,13 +87,12 @@ with
"" as prontuario_versao,
"" as prontuario_estoque_tem_dado,
"" as cadastrado_sistema_vitacare_indicador,
array["TPC"] as remume_disponibilidade_relacao_array,
array["TPC"] as remume_disponibilidade_relacao,
remume.id_material,
remume.remume_listagem_relacao,
remume.remume_listagem_basico_indicador,
remume.remume_listagem_hospitalar_indicador,
remume.remume_listagem_uso_interno_indicador,
remume.remume_listagem_antiseptico_indicador,
remume.remume_listagem_estrategico_indicador
from remume_distintos as remume
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,15 @@ models:
description: >
Tabela com uma visão consolidada dos atendimentos realizados em
estabelecimentos de saúde.
columns:
columns:
- name: id_hci
description: >
Identificador único para o atendimento
data_tests:
- not_null:
name: int_historico_clinico__episodio__vitai__id__not_null
- unique:
name: int_historico_clinico__episodio__vitai__id__unique
- name: paciente
description: >
Informações sobre os pacientes envolvidos no atendimento, incluindo
Expand Down Expand Up @@ -107,6 +115,9 @@ models:
- name: medicamentos_administrados.via_administracao
description: >
Indica qual via é feita a administração do medicamento.
- name: medicamentos_administrados.prescricao_data
description: >
Indica qual data foi prescrito o medicamento a ser administrado.
- name: alergias
description: >
Descrições das alergias associadas ao atendimento, extraídas dos
Expand Down Expand Up @@ -159,9 +170,9 @@ models:
description: >
Informações adicionais sobre o atendimento, como o fornecedor e o
identificador do atendimento.
- name: prontuario.id_atendimento
- name: prontuario.id_prontuario_global
description: |
ID do atendimento.
ID do atendimento utilizado no prontuário do qual ele vem.
data_tests:
- not_null:
name: int_historico_clinico__episodio__vitai__id_episodio__not_null
Expand Down Expand Up @@ -198,12 +209,9 @@ models:
Tabela com uma visão consolidada dos atendimentos realizados em
estabelecimentos de saúde.
columns:
- name: id
- name: id_hci
description: >
Identificador único para o atendimento, composto pelo CNES do
estabelecimento e pelo identificador do atendimento (`gid`).
Utilizado para diferenciar atendimentos entre diferentes
estabelecimentos.
Identificador único para o atendimento
data_tests:
- not_null:
name: int_historico_clinico__episodio__vitacare__id__not_null
Expand Down Expand Up @@ -440,9 +448,12 @@ models:
description: >
Informações adicionais sobre o atendimento, como o fornecedor e o
identificador do atendimento.
- name: prontuario.id_atendimento
- name: prontuario.id_prontuario_global
description: |
ID do atendimento.
ID do atendimento do prontuário do qual ele vem.
Composto pelo CNES do estabelecimento e pelo identificador do atendimento (`gid`).
Utilizado para diferenciar atendimentos entre diferentes
estabelecimentos.
- name: prontuario.fornecedor
description: |
Fornecedor do prontuário.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ with
),
condicoes as (
select distinct
id as fk_atendimento,
id_prontuario_global as fk_atendimento,

json_extract_scalar(condicao_json, "$.cod_cid10") as id,

Expand Down Expand Up @@ -101,7 +101,7 @@ with
-- -=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
procedimentos as (
select
id as fk_atendimento,
id_prontuario_global as fk_atendimento,
case
when
json_extract_scalar(procedimentos_json, '$.procedimento_clinico')
Expand Down Expand Up @@ -151,7 +151,7 @@ with
),
prescricoes as (
select
id as fk_atendimento,
id_prontuario_global as fk_atendimento,
replace(
json_extract_scalar(prescricoes_json, "$.cod_medicamento"), "-", ""
) as id,
Expand Down Expand Up @@ -207,7 +207,7 @@ with

medidas_padronizadas as (
select
id as fk_atendimento,
id_prontuario_global as fk_atendimento,
case
when
nome in (
Expand Down Expand Up @@ -324,7 +324,7 @@ with
-- -=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
fato_atendimento as (
select
atendimento.id,
atendimento.id_hci,

-- Paciente
atendimento.cpf,
Expand Down Expand Up @@ -391,7 +391,7 @@ with

-- Prontuário
struct(
atendimento.id as id_atendimento, 'vitacare' as fornecedor
atendimento.id_prontuario_global, 'vitacare' as fornecedor
) as prontuario,

-- Metadados
Expand All @@ -408,17 +408,17 @@ with
left join dim_profissional on atendimento.cns_profissional = dim_profissional.pk
left join
dim_condicoes_atribuidas
on atendimento.id = dim_condicoes_atribuidas.fk_atendimento
left join dim_medidas on atendimento.id = dim_medidas.fk_atendimento
on atendimento.id_prontuario_global = dim_condicoes_atribuidas.fk_atendimento
left join dim_medidas on atendimento.id_prontuario_global = dim_medidas.fk_atendimento
left join
dim_procedimentos_realizados
on atendimento.id = dim_procedimentos_realizados.fk_atendimento
on atendimento.id_prontuario_global = dim_procedimentos_realizados.fk_atendimento
left join
dim_prescricoes_atribuidas
on atendimento.id = dim_prescricoes_atribuidas.fk_atendimento
on atendimento.id_prontuario_global = dim_prescricoes_atribuidas.fk_atendimento
),

episodios_validos as (select * from fato_atendimento where id is not null)
episodios_validos as (select * from fato_atendimento where id_hci is not null)

-- -=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
-- Finalização
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ with
boletim as (
select
b.gid,
b.id_hci,
b.gid_paciente,
b.gid_estabelecimento,
estabelecimento_nome,
Expand Down Expand Up @@ -115,6 +116,7 @@ with
-- Prescrições VITAI
prescricoes_limpo as (
select distinct
gid_prescricao,
gid_boletim,
CASE
WHEN regexp_contains(upper(item_prescrito), 'MEDICAMENTO N[Ã|A]O PADRONIZADO') THEN upper(observacao)
Expand All @@ -129,7 +131,13 @@ with
via_administracao
from {{ ref("raw_prontuario_vitai__basecentral__item_prescricao") }}
where trim(tipo_produto) = 'MEDICACAO'
),
),
prescricao_datahora as (
select distinct
gid,
data_prescricao
from {{ ref("raw_prontuario_vitai__basecentral__prescricao") }}
),
prescricoes_agg as (
select
gid_boletim,
Expand All @@ -139,10 +147,14 @@ with
quantidade,
unidade_medida,
uso,
via_administracao
via_administracao,
data_prescricao as prescricao_data
)
order by data_prescricao desc
) as medicamentos_administrados
from prescricoes_limpo
left join prescricao_datahora
on gid = gid_prescricao
group by 1
),
-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Expand Down Expand Up @@ -344,6 +356,7 @@ with
exame as (
select
gid,
id_hci,
gid_paciente,
gid_estabelecimento,
estabelecimento_nome,
Expand Down Expand Up @@ -372,7 +385,7 @@ with
)
) as exames_realizados
from exame_dupl
group by 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
group by 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,19
),
-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Montagem do episódio e enriquecimento
Expand Down Expand Up @@ -418,6 +431,7 @@ with
-- Monta base do episódio para ser enriquecida
atendimento_struct as (
select
id_hci,
episodios_distinct.gid as id,
queixa_final.queixa as motivo_atendimento,
episodios_distinct.tipo,
Expand All @@ -439,7 +453,7 @@ with
estabelecimentos.tipo_sms_simplificado as estabelecimento_tipo
) as estabelecimento,
struct(
episodios_distinct.gid as id_atendimento, "vitai" as fornecedor
episodios_distinct.gid as id_prontuario_global, "vitai" as fornecedor
) as prontuario,
episodios_distinct.imported_at,
episodios_distinct.updated_at,
Expand All @@ -454,6 +468,7 @@ with
from
(
select distinct
id_hci,
gid,
gid_estabelecimento,
estabelecimento_nome,
Expand All @@ -479,6 +494,7 @@ with

final as (
select
id_hci,
-- Paciente
atendimento_struct.paciente.cpf as cpf,

Expand Down
Loading

0 comments on commit ca870fa

Please sign in to comment.