From 81354e6b5f98722ae237a3b3d869e827e5fe995d Mon Sep 17 00:00:00 2001 From: vitmesquita Date: Wed, 5 Feb 2025 11:17:13 -0300 Subject: [PATCH 1/4] add docs and fixing fichaa --- .../_mart_historico_clinico_app_schema.yml | 139 +++++++++++++++++- .../raw_cnes_web__equipe_profissionais.sql | 6 +- ...prontuario_vitacare__ficha_a_historico.sql | 3 +- ...prontuario_vitacare__ficha_a_rotineiro.sql | 3 +- .../raw_prontuario_vitacare__ficha_a.sql | 3 +- 5 files changed, 145 insertions(+), 9 deletions(-) diff --git a/models/marts/dit/historico_clinico_app/_mart_historico_clinico_app_schema.yml b/models/marts/dit/historico_clinico_app/_mart_historico_clinico_app_schema.yml index 5251335d..6ebedada 100644 --- a/models/marts/dit/historico_clinico_app/_mart_historico_clinico_app_schema.yml +++ b/models/marts/dit/historico_clinico_app/_mart_historico_clinico_app_schema.yml @@ -8,6 +8,8 @@ models: - name: cpf description: > Cadastro de Pessoas Físicas do paciente. + policy_tags: + - '{{ var ("TAG_CPF") }}' - name: id_hci description: | Fingerprint determinístico para o atendimento. @@ -37,12 +39,18 @@ models: - name: clinical_exams.type description: | Tipo do exame realizado. + policy_tags: + - '{{ var ("TAG_DADO_CLINICO") }}' - name: clinical_exams.description description: | Descrição do exame realizado. + policy_tags: + - '{{ var ("TAG_DADO_CLINICO") }}' - name: procedures description: | Procedimentos realizados durante o episodio. + policy_tags: + - '{{ var ("TAG_DADO_CLINICO") }}' - name: measures description: > Medidas aferidas durante o episódio. @@ -129,30 +137,42 @@ models: - name: cids.description description: | Descrição do cid associados ao atendimento. + policy_tags: + - '{{ var ("TAG_DADO_CLINICO") }}' - name: cids.status description: | Situação do CID associado ao atendimento. Pode assumir os valores "ATIVO", "NAO ESPECIFICADO" OU "RESOLVIDO" - name: cids_summarized description: | Resumo dos cids associados ao atendimento. + policy_tags: + - '{{ var ("TAG_DADO_CLINICO") }}' - name: responsible description: | Lista dos profissionais de saúde responsáveis pelo atendimento. - name: responsible.name description: | Nome do proficional de saude responsavel pelo atendimento. + policy_tags: + - '{{ var ("TAG_NOME") }}' - name: responsible.role description: | Especialidade do proficional de saude responsavel pelo atendimento. - name: clinical_motivation description: | Motivo do atendimento. + policy_tags: + - '{{ var ("TAG_DADO_CLINICO") }}' - name: clinical_outcome description: | Desfecho do atendimento. + policy_tags: + - '{{ var ("TAG_DADO_CLINICO") }}' - name: deceased description: | Indicador de obito. + policy_tags: + - '{{ var ("TAG_DADO_CLINICO") }}' - name: filter_tags description: | Lista de tipos de estabelecimentos. @@ -186,6 +206,8 @@ models: - name: cpf_particao description: | Coluna de particionamento de CPF + policy_tags: + - '{{ var ("TAG_CPF") }}' - name: mart_historico_clinico_app__paciente description: > Tabela com uma visão consolidada dos pacientes atendidos em @@ -193,22 +215,36 @@ models: columns: - name: registration_name description: Nome de registro. + policy_tags: + - '{{ var ("TAG_NOME") }}' - name: social_name description: Nome social. + policy_tags: + - '{{ var ("TAG_NOME") }}' - name: cpf description: CPF do paciente. + policy_tags: + - '{{ var ("TAG_CPF") }}' - name: cns description: CNS do paciente. + policy_tags: + - '{{ var ("TAG_CNS") }}' - name: birth_date description: Data de nascimento. + policy_tags: + - '{{ var ("TAG_DATA_NASCIMENTO") }}' - name: gender description: "Gênero do paciente. Os valores possíveis são 'Masculino', 'Feminino' e nulo (não informado)." - name: race description: "Raça do paciente. Os valores possíveis são 'Amarela','Branca', 'Indigena', 'Parda', 'Preta' e nulo (não informado)." - name: deceased - description: Indica se o paciente foi a óbito no atendimento. + description: Indica se o paciente foi a óbito no atendimento. + policy_tags: + - '{{ var ("TAG_DADO_CLINICO") }}' - name: phone description: Telefone do paciente. + policy_tags: + - '{{ var ("TAG_TELEFONE") }}' - name: family_clinic description: Informaçõe sobre a clínica da família. - name: family_clinic.cnes @@ -229,18 +265,28 @@ models: description: Relação de médicos da equipe de saúde da família. - name: medical_responsible.registry description: Identificador do profissional de saúde no CNES. + policy_tags: + - '{{ var ("TAG_IDENTIFICADOR_SISTEMA") }}' - name: medical_responsible.name description: Nome do profissional de saúde. + policy_tags: + - '{{ var ("TAG_NOME") }}' - name: nursing_responsible description: Relação de enfermeiros da equipe de saúde da família. - name: nursing_responsible.registry description: Identificador do profissional de saúde no CNES. + policy_tags: + - '{{ var ("TAG_IDENTIFICADOR_SISTEMA") }}' - name: nursing_responsible.name description: Nome do profissional de saúde. + policy_tags: + - '{{ var ("TAG_NOME") }}' - name: validated description: Indica se a identidade do paciente foi validada em alguma base federal. - name: cpf_particao description: Coluna de particionamento de CPF + policy_tags: + - '{{ var ("TAG_CPF") }}' - name: exibicao description: Flags de exibicao. - name: exibicao.indicador @@ -257,17 +303,50 @@ models: em estabelecimentos de saúde. columns: - name: cpf - description: CPF do paciente. + description: CPF do paciente. + policy_tags: + - '{{ var ("TAG_CPF") }}' - name: allergies description: Lista de alergias do paciente. - name: continuous_use_medications description: Lista de medicamentos de uso continuo. - name: cpf_particao - description: CNS do paciente. + description: CPF do paciente. + policy_tags: + - '{{ var ("TAG_CPF") }}' - name: mart_historico_clinico_app__sistema description: > Tabela com uma visão consolidada do comportamendo dos usuários do HCI em termos de utilização do sistema. + columns: + - name: usuario_nome + description: Nome do usuário da consulta. + policy_tags: + - '{{ var ("TAG_NOME") }}' + - name: usuario_cpf + description: CPF do usuário da consulta. + policy_tags: + - '{{ var ("TAG_CPF") }}' + - name: iniciou_2fa + description: Indica se o usuário iniciou o processo de dupla verificação. + - name: ativou_2fa + description: Indica se o usuário ativou o login com processo de dupla verificação. + - name: bloqueado_no_2fa + description: Indica se o usuário foi bloqueado no processo de dupla verificação. + - name: usuario_cnes + description: Descreve o cnes associado ao usuário + - name: created_at + description: Data de criação do registro. + - name: updated_at + description: Data de ultima atualização. + - name: consultas + description: Agrupa as consultas feitas pelo usuário a pacientes dentro do HCI. + - name: consultas.cpf_alvo + description: CPF acessado pelo usuário. + policy_tags: + - '{{ var ("TAG_CPF") }}' + - name: consultas.momento_consulta + description: Data e hora do acesso. - name: mart_historico_clinico_app__indice description: > Tabela utilizada para busca por CNS e Nome no histórico clínico. @@ -279,3 +358,57 @@ models: name: mart_historico_clinico_app__indice__cns_particao__not_null - unique: name: mart_historico_clinico_app__indice__cns_particao__unique + policy_tags: + - '{{ var ("TAG_CNS") }}' + - name: nome + description: Nome do paciente + policy_tags: + - '{{ var ("TAG_NOME") }}' + - name: cpf + description: CPF do paciente + policy_tags: + - '{{ var ("TAG_CPF") }}' + - name: mart_historico_clinico_app__busca + description: > + Tabela utilizada para dar informações prévias na pagina de busca + columns: + - name: cpf_particao + description: CPF utilizado para particionamento da tabela. + policy_tags: + - '{{ var ("TAG_CPF") }}' + - name: cpf + description: CPF do paciente encontrado pela busca. + policy_tags: + - '{{ var ("TAG_CPF") }}' + - name: cns_lista + description: Lista de CNS relacionados ao paciente. + policy_tags: + - '{{ var ("TAG_CNS") }}' + - name: nome + description: Nome do paciente. + policy_tags: + - '{{ var ("TAG_NOME") }}' + - name: data_nascimento + description: Data de nascimento. + policy_tags: + - '{{ var ("TAG_DATA_NASCIMENTO") }}' + - name: idade + description: Idade do paciente, calculada a partir da data de nascimento. + - name: genero + description: Genero do paciente. Preenchido como "masculino", "feminino" ou "outro". + - name: nome_mae + description: Nome da mãe do paciente. + policy_tags: + - '{{ var ("TAG_NOME_MAE") }}' + - name: quantidade_episodios + description: Quantidade de episódios que o paciente possui. + - name: exibicao + description: Reune informações de exibição do paciente. + - name: exibicao.indicador + description: Indica se o paciente pode ser exibido para o usuário que esta o buscando. + - name: exibicao.motivos + description: Descreve o motivo pelo qual o usuário não pode ter acesso ao paciente em questão. + - name: exibicao.ap_cadastro + description: Descreve a área programatica do paciente em questão. + - name: exibicao.unidades_cadastro + description: Descreve quais unidades o paciente em questão tem cadastro. diff --git a/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql b/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql index b94844cf..cbad552f 100644 --- a/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql +++ b/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql @@ -15,12 +15,12 @@ select safe_cast(seq_equipe as string) as equipe_sequencial, safe_cast(co_unidade as string) as id_unidade, safe_cast(co_municipio as string) as id_municipio, - safe_cast(co_microarea as string) as id_microarea, + safe_cast({{process_null('co_microarea')}} as string) as id_microarea, safe_cast(co_area as string) as id_area, safe_cast(tp_sus_nao_sus as string) as tipo_sus_nao_sus, safe_cast(ind_vinculacao as string) as id_vinculo_profissional, - safe_cast(dt_entrada as string) as data_entrada_profissional, - safe_cast(dt_desligamento as string) as data_desligamento_profissional, + safe_cast({{process_null('dt_entrada')}} as string) as data_entrada_profissional, + safe_cast({{process_null('dt_desligamento')}} as string) as data_desligamento_profissional, safe_cast(co_cnes_outraequipe as string) as id_cnes_outra_equipe, safe_cast(co_municipio_outraequipe as string) as id_municipio_outra_equipe, safe_cast(co_area_outraequipe as string) as id_area_outra_equipe, diff --git a/models/raw/prontuario_vitacare/base/base_prontuario_vitacare__ficha_a_historico.sql b/models/raw/prontuario_vitacare/base/base_prontuario_vitacare__ficha_a_historico.sql index 094e33fb..d9fb864c 100644 --- a/models/raw/prontuario_vitacare/base/base_prontuario_vitacare__ficha_a_historico.sql +++ b/models/raw/prontuario_vitacare/base/base_prontuario_vitacare__ficha_a_historico.sql @@ -24,7 +24,8 @@ with select safe_cast(nullif(cpf, '') as string) as cpf, ut_id as id_paciente, - + npront as numero_prontuario, + cnes as unidade_cadastro, nullif(ap,'') as ap_cadastro, diff --git a/models/raw/prontuario_vitacare/base/base_prontuario_vitacare__ficha_a_rotineiro.sql b/models/raw/prontuario_vitacare/base/base_prontuario_vitacare__ficha_a_rotineiro.sql index d53730fa..240ab3ef 100644 --- a/models/raw/prontuario_vitacare/base/base_prontuario_vitacare__ficha_a_rotineiro.sql +++ b/models/raw/prontuario_vitacare/base/base_prontuario_vitacare__ficha_a_rotineiro.sql @@ -30,7 +30,8 @@ with select safe_cast(nullif(patient_cpf, '') as string) as cpf, id as id_paciente, - + data__nPront as numero_prontuario, + payload_cnes as unidade_cadastro, nullif(data__ap,'') as ap_cadastro, diff --git a/models/raw/prontuario_vitacare/raw_prontuario_vitacare__ficha_a.sql b/models/raw/prontuario_vitacare/raw_prontuario_vitacare__ficha_a.sql index 06f8cef2..12a97ad2 100644 --- a/models/raw/prontuario_vitacare/raw_prontuario_vitacare__ficha_a.sql +++ b/models/raw/prontuario_vitacare/raw_prontuario_vitacare__ficha_a.sql @@ -20,7 +20,8 @@ with ficha_a_padronizada as ( select safe_cast(cpf as string) as cpf, - safe_cast(id_paciente as string) as id_paciente, + REGEXP_REPLACE(CAST(id_paciente AS STRING), '\x00', '') AS id_paciente, + numero_prontuario, safe_cast(unidade_cadastro as string) as unidade_cadastro, regexp_replace(ap_cadastro,r'\.0','') as ap_cadastro, {{ proper_br('nome') }} as nome, From f79c03e5a0e26a9b547c3a1f84fc59442d8ecf69 Mon Sep 17 00:00:00 2001 From: vitmesquita Date: Mon, 10 Feb 2025 15:37:18 -0300 Subject: [PATCH 2/4] casting date to date fields --- models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql b/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql index cbad552f..5c9eb6e9 100644 --- a/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql +++ b/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql @@ -20,7 +20,7 @@ select safe_cast(tp_sus_nao_sus as string) as tipo_sus_nao_sus, safe_cast(ind_vinculacao as string) as id_vinculo_profissional, safe_cast({{process_null('dt_entrada')}} as string) as data_entrada_profissional, - safe_cast({{process_null('dt_desligamento')}} as string) as data_desligamento_profissional, + safe_cast({{process_null('dt_desligamento')}} as date format 'DD/MM/YYYY') as data_desligamento_profissional, safe_cast(co_cnes_outraequipe as string) as id_cnes_outra_equipe, safe_cast(co_municipio_outraequipe as string) as id_municipio_outra_equipe, safe_cast(co_area_outraequipe as string) as id_area_outra_equipe, From 777d8bcb2b7d60d37888f8e814aced602dc1599a Mon Sep 17 00:00:00 2001 From: vitmesquita Date: Mon, 10 Feb 2025 15:47:04 -0300 Subject: [PATCH 3/4] casting date to date fields --- models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql b/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql index 5c9eb6e9..a34a0744 100644 --- a/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql +++ b/models/raw/cnes_web/raw_cnes_web__equipe_profissionais.sql @@ -19,8 +19,8 @@ select safe_cast(co_area as string) as id_area, safe_cast(tp_sus_nao_sus as string) as tipo_sus_nao_sus, safe_cast(ind_vinculacao as string) as id_vinculo_profissional, - safe_cast({{process_null('dt_entrada')}} as string) as data_entrada_profissional, - safe_cast({{process_null('dt_desligamento')}} as date format 'DD/MM/YYYY') as data_desligamento_profissional, + safe_cast({{process_null('dt_entrada')}} as date format 'DD/MM/YYYY') as data_entrada_profissional, + safe_cast({{process_null('dt_desligamento')}} as date format 'DD/MM/YYYY') as data_desligamento_profissional, safe_cast(co_cnes_outraequipe as string) as id_cnes_outra_equipe, safe_cast(co_municipio_outraequipe as string) as id_municipio_outra_equipe, safe_cast(co_area_outraequipe as string) as id_area_outra_equipe, From 9cca7c0cf35a5d5d3476768a8143eba0ac71b2b0 Mon Sep 17 00:00:00 2001 From: vitmesquita Date: Thu, 13 Feb 2025 14:18:12 -0300 Subject: [PATCH 4/4] fixing deceased flag --- .../paciente/int_historico_clinico__paciente__smsrio.sql | 2 +- .../paciente/int_historico_clinico__paciente__vitai.sql | 2 +- profiles.yml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/models/intermediate/dit/historico_clinico/paciente/int_historico_clinico__paciente__smsrio.sql b/models/intermediate/dit/historico_clinico/paciente/int_historico_clinico__paciente__smsrio.sql index 0e00f45c..5976827c 100644 --- a/models/intermediate/dit/historico_clinico/paciente/int_historico_clinico__paciente__smsrio.sql +++ b/models/intermediate/dit/historico_clinico/paciente/int_historico_clinico__paciente__smsrio.sql @@ -415,7 +415,7 @@ with then false when obito_indicador = "1" then true - else null + else false end as obito_indicador, obito_data, case when mae_nome in ("NONE") then null else mae_nome end as mae_nome, diff --git a/models/intermediate/dit/historico_clinico/paciente/int_historico_clinico__paciente__vitai.sql b/models/intermediate/dit/historico_clinico/paciente/int_historico_clinico__paciente__vitai.sql index 7d871ccf..358fb82e 100644 --- a/models/intermediate/dit/historico_clinico/paciente/int_historico_clinico__paciente__vitai.sql +++ b/models/intermediate/dit/historico_clinico/paciente/int_historico_clinico__paciente__vitai.sql @@ -387,7 +387,7 @@ with then initcap("PRETA") else initcap(raca) end as raca, - case when obito_data is not null then true else null end as obito_indicador, + case when obito_data is not null then true else false end as obito_indicador, obito_data, case when mae_nome in ("NONE") then null else mae_nome end as mae_nome, pai_nome, diff --git a/profiles.yml b/profiles.yml index 2d077e27..1065e4cc 100644 --- a/profiles.yml +++ b/profiles.yml @@ -1,4 +1,5 @@ default: ++ sms: target: dev outputs: dev: