From b4cead835fe03f08f5f3167ed6707e18372efd93 Mon Sep 17 00:00:00 2001 From: ThiagoTrabach Date: Tue, 2 Jan 2024 16:50:26 -0300 Subject: [PATCH] wip --- dbt_project.yml | 2 + .../dim_estabelecimento_historico.sql | 97 ++++++ ...chema.yml => _mart_treinamento_schema.yml} | 0 .../mart_treinamento__estoque_movimento.sql | 15 + .../mart_treinamento__estoque_posicao.sql | 14 + models/raw/cnes/_cnes_sources.yml | 18 +- models/raw/cnes/raw_cnes__equipamento.sql | 21 ++ models/raw/cnes/raw_cnes__estabelecimento.sql | 293 +++++++++++++----- models/raw/cnes/raw_cnes__habilitacao.sql | 25 ++ models/raw/cnes/raw_cnes__leito.sql | 19 ++ models/raw/cnes/raw_cnes__profissional.sql | 30 ++ .../raw/{cnes => cnes_old}/_cnes_schema.yml | 0 models/raw/cnes_old/_cnes_sources.yml | 14 + .../old_raw_cnes__estabelecimento.sql | 77 +++++ .../old_raw_cnes__gestao_nivel_atencao.sql} | 0 .../old_raw_cnes__tipo_nivel_atencao.sql} | 0 .../old_raw_cnes__tipo_unidade.sql} | 0 .../old_raw_cnes__turno_atendimento.sql} | 0 ...tuario_vitai_staging_estoque_movimento.sql | 34 ++ ...aw_prontuario_vitai__estoque_movimento.sql | 3 + models/raw/sheets/_sheets_schema.yml | 9 +- models/raw/sheets/_sheets_sources.yml | 2 +- 22 files changed, 582 insertions(+), 91 deletions(-) create mode 100644 models/marts/core/dimensions/dim_estabelecimento_historico.sql rename models/marts/treinamento/{_mart_estoque_schema.yml => _mart_treinamento_schema.yml} (100%) create mode 100644 models/marts/treinamento/mart_treinamento__estoque_movimento.sql create mode 100644 models/marts/treinamento/mart_treinamento__estoque_posicao.sql create mode 100644 models/raw/cnes/raw_cnes__equipamento.sql create mode 100644 models/raw/cnes/raw_cnes__habilitacao.sql create mode 100644 models/raw/cnes/raw_cnes__leito.sql create mode 100644 models/raw/cnes/raw_cnes__profissional.sql rename models/raw/{cnes => cnes_old}/_cnes_schema.yml (100%) create mode 100644 models/raw/cnes_old/_cnes_sources.yml create mode 100644 models/raw/cnes_old/old_raw_cnes__estabelecimento.sql rename models/raw/{cnes/raw_cnes__gestao_nivel_atencao.sql => cnes_old/old_raw_cnes__gestao_nivel_atencao.sql} (100%) rename models/raw/{cnes/raw_cnes__tipo_nivel_atencao.sql => cnes_old/old_raw_cnes__tipo_nivel_atencao.sql} (100%) rename models/raw/{cnes/raw_cnes__tipo_unidade.sql => cnes_old/old_raw_cnes__tipo_unidade.sql} (100%) rename models/raw/{cnes/raw_cnes__turno_atendimento.sql => cnes_old/old_raw_cnes__turno_atendimento.sql} (100%) create mode 100644 models/raw/prontuario_vitai/base_brutos_prontuario_vitai_staging_estoque_movimento.sql diff --git a/dbt_project.yml b/dbt_project.yml index 23652a9c..f22a9042 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -54,6 +54,8 @@ models: +materialized: table cnes: +schema: brutos_cnes + cnes_novo: + +schema: brutos_cnes_novo estoque_central_tpc: +schema: brutos_estoque_central_tpc prontuario_vitacare: diff --git a/models/marts/core/dimensions/dim_estabelecimento_historico.sql b/models/marts/core/dimensions/dim_estabelecimento_historico.sql new file mode 100644 index 00000000..21fe3672 --- /dev/null +++ b/models/marts/core/dimensions/dim_estabelecimento_historico.sql @@ -0,0 +1,97 @@ +{{ + config( + materialized="table", + alias="estabelecimento_historico", + ) +}} + + +with + + estabelecimento as ( + select * + from {{ ref("raw_cnes___estabelecimento") }}) + + 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") }}), + + estab_final as ( + select + estab_sms.*, + estab_aux.tipo_sms, + estab_aux.tipo_sms_simplificado, + estab_aux.nome_limpo, + 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) + ) + + +select + -- Primary key + est.id_unidade, + + -- Foreign keys + est.id_cnes, + est.id_tipo_unidade, + est.id_distrito_sanitario_corrigido as area_programatica, + + -- Common fields + IF (est.id_motivo_desativacao is null, "sim", "não") as ativa, + unidade.descricao as tipo , # TODO: renomear para tipo_cnes + est.tipo_sms, + est.tipo_sms_simplificado, + est.nome_limpo, + est.nome_sigla, + 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, + est.telefone, + est.fax, + est.email, + est.aberto_sempre, + turno.descricao as turno_atendimento, + est.diretor_clinico_cpf, + est.diretor_clinico_conselho, + + -- Metadata + data_atualizao_registro, + usuario_atualizador_registro, + est.mes_particao, + est.data_carga, + est.data_snapshot, + +from estab_final as est +left join turno using (id_turno_atendimento) +left join unidade using (id_tipo_unidade) + +order by ativa desc, est.id_tipo_unidade asc, area_programatica asc, est.endereco_bairro asc, est.nome_fantasia asc diff --git a/models/marts/treinamento/_mart_estoque_schema.yml b/models/marts/treinamento/_mart_treinamento_schema.yml similarity index 100% rename from models/marts/treinamento/_mart_estoque_schema.yml rename to models/marts/treinamento/_mart_treinamento_schema.yml diff --git a/models/marts/treinamento/mart_treinamento__estoque_movimento.sql b/models/marts/treinamento/mart_treinamento__estoque_movimento.sql new file mode 100644 index 00000000..964c67fc --- /dev/null +++ b/models/marts/treinamento/mart_treinamento__estoque_movimento.sql @@ -0,0 +1,15 @@ +{{ + config( + alias="estoque_movimento", + schema="projeto_treinamento_escritorio", + ) +}} + + +with source as (select * from `rj-sms`.`projeto_estoque`.`estoque_movimento`) + +select * +from source +where + estabelecimento_area_programatica = "31" + and data_particao between "2023-12-03" and "2023-12-09" diff --git a/models/marts/treinamento/mart_treinamento__estoque_posicao.sql b/models/marts/treinamento/mart_treinamento__estoque_posicao.sql new file mode 100644 index 00000000..9c6f31c0 --- /dev/null +++ b/models/marts/treinamento/mart_treinamento__estoque_posicao.sql @@ -0,0 +1,14 @@ +{{ + config( + alias="estoque_posicao_atual", + schema="projeto_treinamento_escritorio", + ) +}} + + +with source as (select * from `rj-sms`.`projeto_estoque`.`estoque_posicao_atual`) + +select * from source +where estabelecimento_area_programatica = "31" +and lote_dias_para_vencer > -10 +-- order by lote_dias_para_vencer diff --git a/models/raw/cnes/_cnes_sources.yml b/models/raw/cnes/_cnes_sources.yml index 1e20c11a..71e00acb 100644 --- a/models/raw/cnes/_cnes_sources.yml +++ b/models/raw/cnes/_cnes_sources.yml @@ -1,14 +1,14 @@ version: 2 sources: - - name: brutos_cnes_staging - database: rj-sms - schema: brutos_cnes_staging + - name: br_ms_cnes + database: basedosdados + schema: br_ms_cnes tables: - - name: rlEstabProgFundo - - name: tbEstabelecimento - - name: tbTipoUnidade - - name: tbTipoEstabelecimento - - name: tbGestao - - name: tbTurnoAtendimento + - name: estabelecimento + - name: equipamento + - name: habilitacao + - name: leito + - name: profissional + diff --git a/models/raw/cnes/raw_cnes__equipamento.sql b/models/raw/cnes/raw_cnes__equipamento.sql new file mode 100644 index 00000000..c77f3e3d --- /dev/null +++ b/models/raw/cnes/raw_cnes__equipamento.sql @@ -0,0 +1,21 @@ +with source as ( + select * from {{ source('br_ms_cnes', 'equipamento') }} +), +renamed as ( + select + {{ adapter.quote("ano") }}, + {{ adapter.quote("mes") }}, + {{ adapter.quote("sigla_uf") }}, + {{ adapter.quote("id_municipio") }}, + {{ adapter.quote("id_estabelecimento_cnes") }}, + {{ adapter.quote("id_equipamento") }}, + {{ adapter.quote("tipo_equipamento") }}, + {{ adapter.quote("quantidade_equipamentos") }}, + {{ adapter.quote("quantidade_equipamentos_ativos") }}, + {{ adapter.quote("indicador_equipamento_disponivel_sus") }}, + {{ adapter.quote("indicador_equipamento_indisponivel_sus") }} + + from source +) +select * from renamed + \ No newline at end of file diff --git a/models/raw/cnes/raw_cnes__estabelecimento.sql b/models/raw/cnes/raw_cnes__estabelecimento.sql index 9e3cae13..9f245cde 100644 --- a/models/raw/cnes/raw_cnes__estabelecimento.sql +++ b/models/raw/cnes/raw_cnes__estabelecimento.sql @@ -1,77 +1,222 @@ -{{ - config( - alias="estabelecimento", - ) -}} - -with source as (select * from {{ source("brutos_cnes_staging", "tbEstabelecimento") }}) +with source as ( + select * from {{ source('br_ms_cnes', 'estabelecimento') }} +), +renamed as ( + select + {{ adapter.quote("ano") }}, + {{ adapter.quote("mes") }}, + {{ adapter.quote("sigla_uf") }}, + {{ adapter.quote("ano_atualizacao") }}, + {{ adapter.quote("mes_atualizacao") }}, + {{ adapter.quote("id_municipio") }}, + {{ adapter.quote("id_municipio_6") }}, + {{ adapter.quote("id_regiao_saude") }}, + {{ adapter.quote("id_microrregiao_saude") }}, + {{ adapter.quote("id_distrito_sanitario") }}, + {{ adapter.quote("id_distrito_administrativo") }}, + {{ adapter.quote("cep") }}, + {{ adapter.quote("id_estabelecimento_cnes") }} as id_cnes, + {{ adapter.quote("tipo_pessoa") }}, + {{ adapter.quote("cpf_cnpj") }}, + {{ adapter.quote("tipo_grau_dependencia") }}, + {{ adapter.quote("cnpj_mantenedora") }}, + {{ adapter.quote("tipo_retencao_tributos_mantenedora") }}, + {{ adapter.quote("indicador_vinculo_sus") }}, + {{ adapter.quote("tipo_gestao") }}, + {{ adapter.quote("tipo_esfera_administrativa") }}, + {{ adapter.quote("tipo_retencao_tributos") }}, + {{ adapter.quote("tipo_atividade_ensino_pesquisa") }}, + {{ adapter.quote("tipo_natureza_administrativa") }}, + {{ adapter.quote("id_natureza_juridica") }}, + {{ adapter.quote("tipo_fluxo_atendimento") }}, + {{ adapter.quote("tipo_unidade") }}, + {{ adapter.quote("tipo_turno") }}, + {{ adapter.quote("tipo_nivel_hierarquia") }}, + {{ adapter.quote("tipo_prestador") }}, + {{ adapter.quote("banco") }}, + {{ adapter.quote("agencia") }}, + {{ adapter.quote("conta_corrente") }}, + {{ adapter.quote("id_contrato_municipio_sus") }}, + {{ adapter.quote("data_publicacao_contrato_municipal") }}, + {{ adapter.quote("data_publicacao_contrato_estadual") }}, + {{ adapter.quote("id_contrato_estado_sus") }}, + {{ adapter.quote("numero_alvara") }}, + {{ adapter.quote("data_expedicao_alvara") }}, + {{ adapter.quote("tipo_orgao_expedidor") }}, + {{ adapter.quote("tipo_avaliacao_acreditacao_hospitalar") }}, + {{ adapter.quote("tipo_classificacao_acreditacao_hospitalar") }}, + {{ adapter.quote("ano_acreditacao") }}, + {{ adapter.quote("mes_acreditacao") }}, + {{ adapter.quote("tipo_avaliacao_pnass") }}, + {{ adapter.quote("ano_avaliacao_pnass") }}, + {{ adapter.quote("mes_avaliacao_pnass") }}, + {{ adapter.quote("indicador_atencao_ambulatorial") }}, + {{ adapter.quote("indicador_gestao_basica_ambulatorial_estadual") }}, + {{ adapter.quote("indicador_gestao_basica_ambulatorial_municipal") }}, + {{ adapter.quote("indicador_gestao_media_ambulatorial_estadual") }}, + {{ adapter.quote("indicador_gestao_media_ambulatorial_municipal") }}, + {{ adapter.quote("indicador_gestao_alta_ambulatorial_estadual") }}, + {{ adapter.quote("indicador_gestao_alta_ambulatorial_municipal") }}, + {{ adapter.quote("indicador_atencao_hospitalar") }}, + {{ adapter.quote("indicador_gestao_media_hospitalar_estadual") }}, + {{ adapter.quote("indicador_gestao_media_hospitalar_municipal") }}, + {{ adapter.quote("indicador_gestao_alta_hospitalar_estadual") }}, + {{ adapter.quote("indicador_gestao_alta_hospitalar_municipal") }}, + {{ adapter.quote("indicador_gestao_hospitalar_estadual") }}, + {{ adapter.quote("indicador_gestao_hospitalar_municipal") }}, + {{ adapter.quote("indicador_leito_hospitalar") }}, + {{ adapter.quote("quantidade_leito_cirurgico") }}, + {{ adapter.quote("quantidade_leito_clinico") }}, + {{ adapter.quote("quantidade_leito_complementar") }}, + {{ adapter.quote("quantidade_leito_repouso_pediatrico_urgencia") }}, + {{ adapter.quote("quantidade_leito_repouso_feminino_urgencia") }}, + {{ adapter.quote("quantidade_leito_repouso_masculino_urgencia") }}, + {{ adapter.quote("quantidade_leito_repouso_indiferenciado_urgencia") }}, + {{ adapter.quote("indicador_instalacao_urgencia") }}, + {{ adapter.quote("quantidade_consultorio_pediatrico_urgencia") }}, + {{ adapter.quote("quantidade_consultorio_feminino_urgencia") }}, + {{ adapter.quote("quantidade_consultorio_masculino_urgencia") }}, + {{ adapter.quote("quantidade_consultorio_indiferenciado_urgencia") }}, + {{ adapter.quote("quantidade_consultorio_odontologia_urgencia") }}, + {{ adapter.quote("quantidade_sala_repouso_pediatrico_urgencia") }}, + {{ adapter.quote("quantidade_sala_repouso_feminino_urgencia") }}, + {{ adapter.quote("quantidade_sala_repouso_masculino_urgencia") }}, + {{ adapter.quote("quantidade_sala_repouso_indiferenciado_urgencia") }}, + {{ adapter.quote("quantidade_equipos_odontologia_urgencia") }}, + {{ adapter.quote("quantidade_sala_higienizacao_urgencia") }}, + {{ adapter.quote("quantidade_sala_gesso_urgencia") }}, + {{ adapter.quote("quantidade_sala_curativo_urgencia") }}, + {{ adapter.quote("quantidade_sala_pequena_cirurgia_urgencia") }}, + {{ adapter.quote("quantidade_consultorio_medico_urgencia") }}, + {{ adapter.quote("indicador_instalacao_ambulatorial") }}, + {{ adapter.quote("quantidade_consultorio_clinica_basica_ambulatorial") }}, + {{ adapter.quote("quantidade_consultorio_clinica_especializada_ambulatorial") }}, + {{ adapter.quote("quantidade_consultorio_clinica_indiferenciada_ambulatorial") }}, + {{ adapter.quote("quantidade_consultorio_nao_medico_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_repouso_feminino_ambulatorial") }}, + {{ adapter.quote("quantidade_leito_repouso_feminino_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_repouso_masculino_ambulatorial") }}, + {{ adapter.quote("quantidade_leito_repouso_masculino_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_repouso_pediatrico_ambulatorial") }}, + {{ adapter.quote("quantidade_leito_repouso_pediatrico_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_repouso_indiferenciado_ambulatorial") }}, + {{ adapter.quote("quantidade_leito_repouso_indiferenciado_ambulatorial") }}, + {{ adapter.quote("quantidade_consultorio_odontologia_ambulatorial") }}, + {{ adapter.quote("quantidade_equipos_odontologia_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_pequena_cirurgia_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_enfermagem_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_imunizacao_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_nebulizacao_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_gesso_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_curativo_ambulatorial") }}, + {{ adapter.quote("quantidade_sala_cirurgia_ambulatorial") }}, + {{ adapter.quote("indicador_instalacao_hospitalar") }}, + {{ adapter.quote("indicador_instalacao_hospitalar_centro_cirurgico") }}, + {{ adapter.quote("quantidade_sala_cirurgia_centro_cirurgico") }}, + {{ adapter.quote("quantidade_sala_recuperacao_centro_cirurgico") }}, + {{ adapter.quote("quantidade_leito_recuperacao_centro_cirurgico") }}, + {{ adapter.quote("quantidade_sala_cirurgia_ambulatorial_centro_cirurgico") }}, + {{ adapter.quote("indicador_instalacao_hospitalar_centro_obstetrico") }}, + {{ adapter.quote("quantidade_sala_pre_parto_centro_obstetrico") }}, + {{ adapter.quote("quantidade_leito_pre_parto_centro_obstetrico") }}, + {{ adapter.quote("quantidade_sala_parto_normal_centro_obstetrico") }}, + {{ adapter.quote("quantidade_sala_curetagem_centro_obstetrico") }}, + {{ adapter.quote("quantidade_sala_cirurgia_centro_obstetrico") }}, + {{ adapter.quote("indicador_instalacao_hospitalar_neonatal") }}, + {{ adapter.quote("quantidade_leito_recem_nascido_normal_neonatal") }}, + {{ adapter.quote("quantidade_leito_recem_nascido_patologico_neonatal") }}, + {{ adapter.quote("quantidade_leito_conjunto_neonatal") }}, + {{ adapter.quote("indicador_servico_apoio") }}, + {{ adapter.quote("indicador_servico_same_spp_proprio") }}, + {{ adapter.quote("indicador_servico_same_spp_terceirizado") }}, + {{ adapter.quote("indicador_servico_social_proprio") }}, + {{ adapter.quote("indicador_servico_social_terceirizado") }}, + {{ adapter.quote("indicador_servico_farmacia_proprio") }}, + {{ adapter.quote("indicador_servico_farmacia_terceirizado") }}, + {{ adapter.quote("indicador_servico_esterilizacao_proprio") }}, + {{ adapter.quote("indicador_servico_esterilizacao_terceirizado") }}, + {{ adapter.quote("indicador_servico_nutricao_proprio") }}, + {{ adapter.quote("indicador_servico_nutricao_terceirizado") }}, + {{ adapter.quote("indicador_servico_lactario_proprio") }}, + {{ adapter.quote("indicador_servico_lactario_terceirizado") }}, + {{ adapter.quote("indicador_servico_banco_leite_proprio") }}, + {{ adapter.quote("indicador_servico_banco_leite_terceirizado") }}, + {{ adapter.quote("indicador_servico_lavanderia_proprio") }}, + {{ adapter.quote("indicador_servico_lavanderia_terceirizado") }}, + {{ adapter.quote("indicador_servico_manutencao_proprio") }}, + {{ adapter.quote("indicador_servico_manutencao_terceirizado") }}, + {{ adapter.quote("indicador_servico_ambulancia_proprio") }}, + {{ adapter.quote("indicador_servico_ambulancia_terceirizado") }}, + {{ adapter.quote("indicador_servico_necroterio_proprio") }}, + {{ adapter.quote("indicador_servico_necroterio_terceirizado") }}, + {{ adapter.quote("indicador_coleta_residuo") }}, + {{ adapter.quote("indicador_coleta_residuo_biologico") }}, + {{ adapter.quote("indicador_coleta_residuo_quimico") }}, + {{ adapter.quote("indicador_coleta_rejeito_radioativo") }}, + {{ adapter.quote("indicador_coleta_rejeito_comum") }}, + {{ adapter.quote("indicador_comissao") }}, + {{ adapter.quote("indicador_comissao_etica_medica") }}, + {{ adapter.quote("indicador_comissao_etica_enfermagem") }}, + {{ adapter.quote("indicador_comissao_farmacia_terapeutica") }}, + {{ adapter.quote("indicador_comissao_controle_infeccao") }}, + {{ adapter.quote("indicador_comissao_apropriacao_custos") }}, + {{ adapter.quote("indicador_comissao_cipa") }}, + {{ adapter.quote("indicador_comissao_revisao_prontuario") }}, + {{ adapter.quote("indicador_comissao_revisao_documentacao") }}, + {{ adapter.quote("indicador_comissao_analise_obito_biopisias") }}, + {{ adapter.quote("indicador_comissao_investigacao_epidemiologica") }}, + {{ adapter.quote("indicador_comissao_notificacao_doencas") }}, + {{ adapter.quote("indicador_comissao_zoonose_vetores") }}, + {{ adapter.quote("indicador_atendimento_prestado") }}, + {{ adapter.quote("indicador_atendimento_internacao_sus") }}, + {{ adapter.quote("indicador_atendimento_internacao_particular") }}, + {{ adapter.quote("indicador_atendimento_internacao_plano_seguro_proprio") }}, + {{ adapter.quote("indicador_atendimento_internacao_plano_seguro_terceiro") }}, + {{ adapter.quote("indicador_atendimento_internacao_plano_saude_publico") }}, + {{ adapter.quote("indicador_atendimento_internacao_plano_saude_privado") }}, + {{ adapter.quote("indicador_atendimento_ambulatorial_sus") }}, + {{ adapter.quote("indicador_atendimento_ambulatorial_particular") }}, + {{ adapter.quote("indicador_atendimento_ambulatorial_plano_seguro_proprio") }}, + {{ adapter.quote("indicador_atendimento_ambulatorial_plano_seguro_terceiro") }}, + {{ adapter.quote("indicador_atendimento_ambulatorial_plano_saude_publico") }}, + {{ adapter.quote("indicador_atendimento_ambulatorial_plano_saude_privado") }}, + {{ adapter.quote("indicador_atendimento_sadt_sus") }}, + {{ adapter.quote("indicador_atendimento_sadt_privado") }}, + {{ adapter.quote("indicador_atendimento_sadt_plano_seguro_proprio") }}, + {{ adapter.quote("indicador_atendimento_sadt_plano_seguro_terceiro") }}, + {{ adapter.quote("indicador_atendimento_sadt_plano_saude_publico") }}, + {{ adapter.quote("indicador_atendimento_sadt_plano_saude_privado") }}, + {{ adapter.quote("indicador_atendimento_urgencia_sus") }}, + {{ adapter.quote("indicador_atendimento_urgencia_privado") }}, + {{ adapter.quote("indicador_atendimento_urgencia_plano_seguro_proprio") }}, + {{ adapter.quote("indicador_atendimento_urgencia_plano_seguro_terceiro") }}, + {{ adapter.quote("indicador_atendimento_urgencia_plano_saude_publico") }}, + {{ adapter.quote("indicador_atendimento_urgencia_plano_saude_privado") }}, + {{ adapter.quote("indicador_atendimento_outros_sus") }}, + {{ adapter.quote("indicador_atendimento_outros_privado") }}, + {{ adapter.quote("indicador_atendimento_outros_plano_seguro_proprio") }}, + {{ adapter.quote("indicador_atendimento_outros_plano_seguro_terceiro") }}, + {{ adapter.quote("indicador_atendimento_outros_plano_saude_publico") }}, + {{ adapter.quote("indicador_atendimento_outros_plano_saude_privado") }}, + {{ adapter.quote("indicador_atendimento_vigilancia_sus") }}, + {{ adapter.quote("indicador_atendimento_vigilancia_privado") }}, + {{ adapter.quote("indicador_atendimento_vigilancia_plano_seguro_proprio") }}, + {{ adapter.quote("indicador_atendimento_vigilancia_plano_seguro_terceiro") }}, + {{ adapter.quote("indicador_atendimento_vigilancia_plano_saude_publico") }}, + {{ adapter.quote("indicador_atendimento_vigilancia_plano_saude_privado") }}, + {{ adapter.quote("indicador_atendimento_regulacao_sus") }}, + {{ adapter.quote("indicador_atendimento_regulacao_privado") }}, + {{ adapter.quote("indicador_atendimento_regulacao_plano_seguro_proprio") }}, + {{ adapter.quote("indicador_atendimento_regulacao_plano_seguro_terceiro") }}, + {{ adapter.quote("indicador_atendimento_regulacao_plano_saude_publico") }}, + {{ adapter.quote("indicador_atendimento_regulacao_plano_saude_privado") }} + from source +) select - -- Primary Key - safe_cast(co_unidade as string) as id_unidade, - - -- Foreign Keys - safe_cast(co_cnes as string) as id_cnes, - safe_cast(tp_unidade as string) as id_tipo_unidade, - safe_cast(co_tipo_estabelecimento as string) as id_tipo_estabelecimento, - safe_cast(co_atividade_principal as string) as id_atividade_principal, - safe_cast(co_estado_gestor as string) as id_estado_gestor, - safe_cast(co_municipio_gestor as string) as id_municipio_gestor, - safe_cast(co_regiao_saude as string) as id_regiao_saude, - safe_cast(co_micro_regiao as string) as id_micro_regiao, - safe_cast(co_distrito_sanitario as string) as id_distrito_sanitario, - safe_cast(co_distrito_administrativo as string) as id_distrito_administrativo, - safe_cast(co_atividade as string) as id_atividade_ensino_pesquisa, - safe_cast(co_clientela as string) as id_clientela, - safe_cast(co_turno_atendimento as string) as id_turno_atendimento, - safe_cast(co_motivo_desab as string) as id_motivo_desativacao, - safe_cast(co_natureza_jur as string) as id_natureza_juridica, + id_cnes, + tipo_unidade, - -- Common fields - safe_cast(nu_cnpj_mantenedora as string) as cnpj_mantenedora, - safe_cast(tp_gestao as string) as tipo_gestao, - safe_cast(tp_pfpj as string) as tipo_pfpj, - safe_cast(nivel_dep as string) as dependencia_nivel, - safe_cast(st_contrato_formalizado as string) as contrato_sus, - safe_cast(no_razao_social as string) as nome_razao_social, - safe_cast(no_fantasia as string) as nome_fantasia, - 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, - 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, - safe_cast(nu_telefone as string) as telefone, - safe_cast(nu_fax as string) as fax, - safe_cast(no_email as string) as email, - safe_cast(no_url as string) as url, - safe_cast(nu_cpf as string) as cpf, - safe_cast(nu_cnpj as string) as cnpj, - safe_cast(tp_estab_sempre_aberto as string) as aberto_sempre, - safe_cast(st_conexao_internet as string) as conexao_internet, - safe_cast(nu_alvara as string) as alvara_numero, - safe_cast(dt_expedicao as string) as alvara_data_expedicao, -- data - safe_cast(tp_orgao_expedidor as string) as alvara_orgao_expedidor, - safe_cast(dt_val_lic_sani as string) as licenca_sanitaria_data_validade, - safe_cast(tp_lic_sani as string) as licenca_sanitaria_tipo, - safe_cast(co_cpfdiretorcln as string) as diretor_clinico_cpf, - safe_cast(reg_diretorcln as string) as diretor_clinico_conselho, - safe_cast(st_adesao_filantrop as string) as adesao_hospital_filantropico, - safe_cast(st_geracredito_gerente_sgif as string) as gera_credito_gerente_sgif, - -- safe_cast(CO_TIPO_UNIDADE as string), -- campo sem uso (fonte: CNES) - -- safe_cast(NO_FANTASIA_ABREV as string), -- campo sem uso (fonte: CNES) - -- Metadata - safe_cast( - dt_atualizacao_origem as date format 'DD/MM/YYYY' - ) as data_entrada_sistema, - safe_cast(dt_atualizacao as date format 'DD/MM/YYYY') as data_atualizao_registro, - safe_cast(co_usuario as string) as usuario_atualizador_registro, - safe_cast( - dt_atu_geo as date format 'DD/MM/YYYY' - ) as data_atualizacao_geolocalizacao, - safe_cast(no_usuario_geo as string) as usuario_atualizador_geolocalizacao, - safe_cast(mes_particao as string) as mes_particao, - safe_cast(_data_carga as datetime) as data_carga, - safe_cast(_data_snapshot as datetime) as data_snapshot -from source + +from renamed + \ No newline at end of file diff --git a/models/raw/cnes/raw_cnes__habilitacao.sql b/models/raw/cnes/raw_cnes__habilitacao.sql new file mode 100644 index 00000000..d5b98f94 --- /dev/null +++ b/models/raw/cnes/raw_cnes__habilitacao.sql @@ -0,0 +1,25 @@ +with source as ( + select * from {{ source('br_ms_cnes', 'habilitacao') }} +), +renamed as ( + select + {{ adapter.quote("ano") }}, + {{ adapter.quote("mes") }}, + {{ adapter.quote("sigla_uf") }}, + {{ adapter.quote("id_municipio") }}, + {{ adapter.quote("id_estabelecimento_cnes") }}, + {{ adapter.quote("quantidade_leitos") }}, + {{ adapter.quote("ano_competencia_inicial") }}, + {{ adapter.quote("mes_competencia_inicial") }}, + {{ adapter.quote("ano_competencia_final") }}, + {{ adapter.quote("mes_competencia_final") }}, + {{ adapter.quote("tipo_habilitacao") }}, + {{ adapter.quote("nivel_habilitacao") }}, + {{ adapter.quote("data_portaria") }}, + {{ adapter.quote("ano_portaria") }}, + {{ adapter.quote("mes_portaria") }} + + from source +) +select * from renamed + \ No newline at end of file diff --git a/models/raw/cnes/raw_cnes__leito.sql b/models/raw/cnes/raw_cnes__leito.sql new file mode 100644 index 00000000..caeef4fe --- /dev/null +++ b/models/raw/cnes/raw_cnes__leito.sql @@ -0,0 +1,19 @@ +with source as ( + select * from {{ source('br_ms_cnes', 'leito') }} +), +renamed as ( + select + {{ adapter.quote("ano") }}, + {{ adapter.quote("mes") }}, + {{ adapter.quote("sigla_uf") }}, + {{ adapter.quote("id_estabelecimento_cnes") }}, + {{ adapter.quote("tipo_especialidade_leito") }}, + {{ adapter.quote("tipo_leito") }}, + {{ adapter.quote("quantidade_total") }}, + {{ adapter.quote("quantidade_contratado") }}, + {{ adapter.quote("quantidade_sus") }} + + from source +) +select * from renamed + \ No newline at end of file diff --git a/models/raw/cnes/raw_cnes__profissional.sql b/models/raw/cnes/raw_cnes__profissional.sql new file mode 100644 index 00000000..8f05248f --- /dev/null +++ b/models/raw/cnes/raw_cnes__profissional.sql @@ -0,0 +1,30 @@ +with source as ( + select * from {{ source('br_ms_cnes', 'profissional') }} +), +renamed as ( + select + {{ adapter.quote("ano") }}, + {{ adapter.quote("mes") }}, + {{ adapter.quote("sigla_uf") }}, + {{ adapter.quote("id_estabelecimento_cnes") }}, + {{ adapter.quote("id_municipio_6_residencia") }}, + {{ adapter.quote("nome") }}, + {{ adapter.quote("id_vinculo") }}, + {{ adapter.quote("id_registro_conselho") }}, + {{ adapter.quote("id_conselho") }}, + {{ adapter.quote("cartao_nacional_saude") }}, + {{ adapter.quote("cbo_2002") }}, + {{ adapter.quote("indicador_estabelecimento_terceiro") }}, + {{ adapter.quote("indicador_vinculo_contratado_sus") }}, + {{ adapter.quote("indicador_vinculo_autonomo_sus") }}, + {{ adapter.quote("indicador_vinculo_outros") }}, + {{ adapter.quote("indicador_atende_sus") }}, + {{ adapter.quote("indicador_atende_nao_sus") }}, + {{ adapter.quote("carga_horaria_outros") }}, + {{ adapter.quote("carga_horaria_hospitalar") }}, + {{ adapter.quote("carga_horaria_ambulatorial") }} + + from source +) +select * from renamed + \ No newline at end of file diff --git a/models/raw/cnes/_cnes_schema.yml b/models/raw/cnes_old/_cnes_schema.yml similarity index 100% rename from models/raw/cnes/_cnes_schema.yml rename to models/raw/cnes_old/_cnes_schema.yml diff --git a/models/raw/cnes_old/_cnes_sources.yml b/models/raw/cnes_old/_cnes_sources.yml new file mode 100644 index 00000000..1e20c11a --- /dev/null +++ b/models/raw/cnes_old/_cnes_sources.yml @@ -0,0 +1,14 @@ +version: 2 + +sources: + - name: brutos_cnes_staging + database: rj-sms + schema: brutos_cnes_staging + tables: + - name: rlEstabProgFundo + - name: tbEstabelecimento + - name: tbTipoUnidade + - name: tbTipoEstabelecimento + - name: tbGestao + - name: tbTurnoAtendimento + diff --git a/models/raw/cnes_old/old_raw_cnes__estabelecimento.sql b/models/raw/cnes_old/old_raw_cnes__estabelecimento.sql new file mode 100644 index 00000000..9e3cae13 --- /dev/null +++ b/models/raw/cnes_old/old_raw_cnes__estabelecimento.sql @@ -0,0 +1,77 @@ +{{ + config( + alias="estabelecimento", + ) +}} + +with source as (select * from {{ source("brutos_cnes_staging", "tbEstabelecimento") }}) + +select + -- Primary Key + safe_cast(co_unidade as string) as id_unidade, + + -- Foreign Keys + safe_cast(co_cnes as string) as id_cnes, + safe_cast(tp_unidade as string) as id_tipo_unidade, + safe_cast(co_tipo_estabelecimento as string) as id_tipo_estabelecimento, + safe_cast(co_atividade_principal as string) as id_atividade_principal, + safe_cast(co_estado_gestor as string) as id_estado_gestor, + safe_cast(co_municipio_gestor as string) as id_municipio_gestor, + safe_cast(co_regiao_saude as string) as id_regiao_saude, + safe_cast(co_micro_regiao as string) as id_micro_regiao, + safe_cast(co_distrito_sanitario as string) as id_distrito_sanitario, + safe_cast(co_distrito_administrativo as string) as id_distrito_administrativo, + safe_cast(co_atividade as string) as id_atividade_ensino_pesquisa, + safe_cast(co_clientela as string) as id_clientela, + safe_cast(co_turno_atendimento as string) as id_turno_atendimento, + safe_cast(co_motivo_desab as string) as id_motivo_desativacao, + safe_cast(co_natureza_jur as string) as id_natureza_juridica, + + -- Common fields + safe_cast(nu_cnpj_mantenedora as string) as cnpj_mantenedora, + safe_cast(tp_gestao as string) as tipo_gestao, + safe_cast(tp_pfpj as string) as tipo_pfpj, + safe_cast(nivel_dep as string) as dependencia_nivel, + safe_cast(st_contrato_formalizado as string) as contrato_sus, + safe_cast(no_razao_social as string) as nome_razao_social, + safe_cast(no_fantasia as string) as nome_fantasia, + 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, + 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, + safe_cast(nu_telefone as string) as telefone, + safe_cast(nu_fax as string) as fax, + safe_cast(no_email as string) as email, + safe_cast(no_url as string) as url, + safe_cast(nu_cpf as string) as cpf, + safe_cast(nu_cnpj as string) as cnpj, + safe_cast(tp_estab_sempre_aberto as string) as aberto_sempre, + safe_cast(st_conexao_internet as string) as conexao_internet, + safe_cast(nu_alvara as string) as alvara_numero, + safe_cast(dt_expedicao as string) as alvara_data_expedicao, -- data + safe_cast(tp_orgao_expedidor as string) as alvara_orgao_expedidor, + safe_cast(dt_val_lic_sani as string) as licenca_sanitaria_data_validade, + safe_cast(tp_lic_sani as string) as licenca_sanitaria_tipo, + safe_cast(co_cpfdiretorcln as string) as diretor_clinico_cpf, + safe_cast(reg_diretorcln as string) as diretor_clinico_conselho, + safe_cast(st_adesao_filantrop as string) as adesao_hospital_filantropico, + safe_cast(st_geracredito_gerente_sgif as string) as gera_credito_gerente_sgif, + -- safe_cast(CO_TIPO_UNIDADE as string), -- campo sem uso (fonte: CNES) + -- safe_cast(NO_FANTASIA_ABREV as string), -- campo sem uso (fonte: CNES) + -- Metadata + safe_cast( + dt_atualizacao_origem as date format 'DD/MM/YYYY' + ) as data_entrada_sistema, + safe_cast(dt_atualizacao as date format 'DD/MM/YYYY') as data_atualizao_registro, + safe_cast(co_usuario as string) as usuario_atualizador_registro, + safe_cast( + dt_atu_geo as date format 'DD/MM/YYYY' + ) as data_atualizacao_geolocalizacao, + safe_cast(no_usuario_geo as string) as usuario_atualizador_geolocalizacao, + safe_cast(mes_particao as string) as mes_particao, + safe_cast(_data_carga as datetime) as data_carga, + safe_cast(_data_snapshot as datetime) as data_snapshot +from source diff --git a/models/raw/cnes/raw_cnes__gestao_nivel_atencao.sql b/models/raw/cnes_old/old_raw_cnes__gestao_nivel_atencao.sql similarity index 100% rename from models/raw/cnes/raw_cnes__gestao_nivel_atencao.sql rename to models/raw/cnes_old/old_raw_cnes__gestao_nivel_atencao.sql diff --git a/models/raw/cnes/raw_cnes__tipo_nivel_atencao.sql b/models/raw/cnes_old/old_raw_cnes__tipo_nivel_atencao.sql similarity index 100% rename from models/raw/cnes/raw_cnes__tipo_nivel_atencao.sql rename to models/raw/cnes_old/old_raw_cnes__tipo_nivel_atencao.sql diff --git a/models/raw/cnes/raw_cnes__tipo_unidade.sql b/models/raw/cnes_old/old_raw_cnes__tipo_unidade.sql similarity index 100% rename from models/raw/cnes/raw_cnes__tipo_unidade.sql rename to models/raw/cnes_old/old_raw_cnes__tipo_unidade.sql diff --git a/models/raw/cnes/raw_cnes__turno_atendimento.sql b/models/raw/cnes_old/old_raw_cnes__turno_atendimento.sql similarity index 100% rename from models/raw/cnes/raw_cnes__turno_atendimento.sql rename to models/raw/cnes_old/old_raw_cnes__turno_atendimento.sql diff --git a/models/raw/prontuario_vitai/base_brutos_prontuario_vitai_staging_estoque_movimento.sql b/models/raw/prontuario_vitai/base_brutos_prontuario_vitai_staging_estoque_movimento.sql new file mode 100644 index 00000000..93134409 --- /dev/null +++ b/models/raw/prontuario_vitai/base_brutos_prontuario_vitai_staging_estoque_movimento.sql @@ -0,0 +1,34 @@ +with source as ( + select * from {{ source('brutos_prontuario_vitai_staging', 'estoque_movimento') }} +), +renamed as ( + select + {{ adapter.quote("produtoId") }} as id_material_vitai, + {{ adapter.quote("estabelecimentoId") }} id_estabelecimento_vitai, + {{ adapter.quote("cnes") }} as id_cnes, + {{ adapter.quote("sigla") }} as estabelecimento_sigla, + {{ adapter.quote("produtoCodigo") }} as id_material, + {{ adapter.quote("descricao") }} as material_descricao, + {{ adapter.quote("grupo") }} as material_grupo, + {{ adapter.quote("subGrupo") }} as material_subgrupo, + {{ adapter.quote("categoria") }} as material_categoria, + {{ adapter.quote("apresentacao") }} as material_unidade, + {{ adapter.quote("tipoMovimento") }} as estoque_movimento_tipo, + {{ adapter.quote("justificativaMovimentacao") }} as estoque_movimento_justificativa, + {{ adapter.quote("secaoOrigem") }} as estoque_secao_origem, + {{ adapter.quote("secaoDestino") }} as estoque_secao_destino, + {{ adapter.quote("pacienteCpf") }} as dispensacao_paciente_cpf, + {{ adapter.quote("pacienteCns") }} as dispensacao_paciente_cns, + {{ adapter.quote("prescritorCpf") }} as dispensacao_prescritor_cpf, + {{ adapter.quote("quantidade") }} as material_quantidade, + {{ adapter.quote("valor") }} as material_valor_total, + {{ adapter.quote("dataMovimentacao") }} as estoque_movimento_data_hora, + {{ adapter.quote("dataHora") }} as data_atualizacao, + {{ adapter.quote("_data_carga") }} as data_carga, + {{ adapter.quote("ano_particao") }}, + {{ adapter.quote("mes_particao") }}, + {{ adapter.quote("data_particao") }} + + from source +) +select * from renamed diff --git a/models/raw/prontuario_vitai/raw_prontuario_vitai__estoque_movimento.sql b/models/raw/prontuario_vitai/raw_prontuario_vitai__estoque_movimento.sql index 3bc271a3..1fa74ff7 100644 --- a/models/raw/prontuario_vitai/raw_prontuario_vitai__estoque_movimento.sql +++ b/models/raw/prontuario_vitai/raw_prontuario_vitai__estoque_movimento.sql @@ -28,6 +28,9 @@ select safe_cast( safe_cast(datamovimentacao as datetime) as date ) as estoque_movimento_data, + pacienteCpf + pacienteCns + prescritorCpf safe_cast(quantidade as float64) as material_quantidade, safe_cast(valor as float64) as material_valor_total, diff --git a/models/raw/sheets/_sheets_schema.yml b/models/raw/sheets/_sheets_schema.yml index cd7084aa..3db95759 100644 --- a/models/raw/sheets/_sheets_schema.yml +++ b/models/raw/sheets/_sheets_schema.yml @@ -42,19 +42,14 @@ models: - name: raw_sheets__material_remume description: Tabela contendo os medicamentos e insumos que compõem a Relação Municipal de Medicamentos Essenciais (REMUME) - tests: - - dbt_utils.unique_combination_of_columns: - name: raw_sheets__material_remume__unique_combination_of_columns - combination_of_columns: - - id_material - - remume_grupo - - estabelecimento_disponibilidade_string columns: - name: id_material description: Código de identificação do material cadastrado no prontuário policy_tags: - '{{ var ("TAG_MATERIAL") }}' tests: + - unique: + name: raw_sheets__material_remume__id_material__unique - relationships: name: raw_sheets__material_remume__id_material__relationship to: ref('dim_material') diff --git a/models/raw/sheets/_sheets_sources.yml b/models/raw/sheets/_sheets_sources.yml index b7624939..8a7f1fd4 100644 --- a/models/raw/sheets/_sheets_sources.yml +++ b/models/raw/sheets/_sheets_sources.yml @@ -2,7 +2,7 @@ version: 2 sources: - name: brutos_sheets_staging - database: rj-sms-dev + database: rj-sms schema: brutos_sheets_staging tables: - name: estabelecimento_auxiliar