From fbb411832751230dcbbbd2570f823f558372f372 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Thu, 25 Apr 2024 12:00:07 -0300 Subject: [PATCH 1/6] feat: add br_ms_sih models --- dbt_project.yml | 3 + .../br_ms_sih__servicos_profissionais.sql | 103 +++++++++++++ models/br_ms_sih/schema.yml | 142 ++++++++++++++++++ 3 files changed, 248 insertions(+) create mode 100644 models/br_ms_sih/br_ms_sih__servicos_profissionais.sql create mode 100644 models/br_ms_sih/schema.yml diff --git a/dbt_project.yml b/dbt_project.yml index 93e7944a..a8f21f3c 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -249,6 +249,9 @@ models: br_ms_sia: +materialized: table +schema: br_ms_sia + br_ms_sih: + +materialized: table + +schema: br_ms_sih br_ms_sim: +materialized: table +schema: br_ms_sim diff --git a/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql b/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql new file mode 100644 index 00000000..e4bc5175 --- /dev/null +++ b/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql @@ -0,0 +1,103 @@ +{{ + config( + alias="servicos_profissionais", + schema="br_ms_sih", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2005, "end": 2024, "interval": 1}, + }, + cluster_by=["mes", "sigla_uf"], + ) +}} + +select + safe_cast(ano as int64) ano, + safe_cast(mes as int64) mes, + safe_cast(sp_aa as int64) ano_internacao, + safe_cast(sp_mm as int64) mes_internacao, + safe_cast( + format_date('%Y-%m-%d', safe.parse_date('%Y%m%d', sp_dtinter)) as date + ) data_entrada_internacao, + safe_cast( + format_date('%Y-%m-%d', safe.parse_date('%Y%m%d', sp_dtsaida)) as date + ) data_saida_iternacao, + safe_cast(sp_uf as string) sigla_uf, + safe_cast(id_municipio as string) id_municipio_estabelecimento_aih, + safe_cast(sp_m_pac as string) id_municipio_paciente, + safe_cast(sp_gestor as string) id_gestor, + safe_cast(sp_cnes as string) id_estabelecimento_cnes, + safe_cast(sp_naih as string) id_aih, + safe_cast(sp_procrea as string) id_procedimento_principal, + safe_cast(serv_cla as string) tipo_servico, + safe_cast(sp_cpfcgc as string) id_prestador_servico, + safe_cast(sp_atoprof as string) id_procedimento, + safe_cast(sp_pf_cbo as string) cbo_2002_profissional, + safe_cast(ltrim(sp_qt_proc) as int64) quantidade_procedimentos, + safe_cast( + trim( + case when length(trim(sp_cidpri)) = 3 then sp_cidpri else null end + ) as string + ) id_cid_principal, + safe_cast( + trim( + case + when length(trim(sp_cidpri)) = 4 and sp_cidpri != '0000' + then sp_cidpri + when + length(trim(sp_cidpri)) = 3 + and sp_cidpri in ( + select subcategoria + from `basedosdados.br_bd_diretorios_brasil.cid_10` + where length(subcategoria) = 3 + ) + then sp_cidpri + else null + end + ) as string + ) as id_cid_principal_subcategoria, + safe_cast( + trim( + case when length(trim(sp_cidsec)) = 3 then sp_cidsec else null end + ) as string + ) id_cid_secundario, + safe_cast( + trim( + case + when length(trim(sp_cidsec)) = 4 and sp_cidsec != '0000' + then sp_cidsec + when + length(trim(sp_cidsec)) = 3 + and sp_cidsec in ( + select subcategoria + from `basedosdados.br_bd_diretorios_brasil.cid_10` + where length(subcategoria) = 3 + ) + then sp_cidsec + else null + end + ) as string + ) as id_cid_secundario_subcategoria, + safe_cast(sp_complex as string) complexidade_ato_profissional, + safe_cast(ltrim(sp_qtd_ato) as int64) quantidade_atos_profissionais, + safe_cast(ltrim(sp_ptsp) as int64) quantidade_pontos, + safe_cast(sp_nf as string) nota_fiscal, + safe_cast(ltrim(sp_valato) as float64) valor_ato_profissional, + safe_cast(sp_des_hos as int64) indicador_uf_paciente, + safe_cast(sp_des_pac as int64) indicador_uf_paciente, + safe_cast(sp_u_aih as int64) indicador_id_aih, + safe_cast(sp_financ as string) tipo_financiamento_ato_profissional, + safe_cast(sp_co_faec as string) tipo_subtipo_financiamento_ato_profissional, + safe_cast(sp_pf_doc as string) tipo_documento_pf, + safe_cast(sp_pj_doc as string) tipo_documento_pj, + safe_cast(in_tp_val as string) tipo_valor, + safe_cast(ltrim(sequencia) as string) sequencia, + safe_cast(remessa as string) nome_remessa, +from `basedosdados-dev.br_ms_sih_staging.servicos_profissionais` as sih +left join + ( + select id_municipio, id_municipio_6, + from `basedosdados.br_bd_diretorios_brasil.municipio` + ) as mun + on sih.sp_m_hosp = mun.id_municipio_6 diff --git a/models/br_ms_sih/schema.yml b/models/br_ms_sih/schema.yml new file mode 100644 index 00000000..7b8e9238 --- /dev/null +++ b/models/br_ms_sih/schema.yml @@ -0,0 +1,142 @@ +version: 2 + +models: + - name: br_ms_sih__servicos_profissionais + description: Insert `servicos_profissionais` table description here + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - id_aih + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - name: mes + description: Mês + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: mes + - name: ano_internacao + description: Ano da internação + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - name: mes_internacao + description: Mes da internação + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: mes + - name: data_entrada_internacao + description: Data do início da internação + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_saida_iternacao + description: Data do final da internação + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: sigla_uf + description: Sigla unidade da fedaração + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__uf') + field: sigla + - name: id_municipio_estabelecimento_aih + description: Município de localização do Estabelecimento Executante da AIH + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio + - name: id_municipio_paciente + description: Município de residência do paciente + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio + - name: id_gestor + description: Unidade de Federação + Código Município de Gestão ou UF0000 se + o Estabelecimento Executante está sob Gestão Estadual. + - name: id_estabelecimento_cnes + description: ID do estabelecimento de saúde executante da Autorização de Internação + Hospitalar (AIH) + - name: id_aih + description: ID Autorização de Internação Hospitalar (AIH) + - name: id_procedimento_principal + description: Procedimento principal realizado na AIH. + - name: tipo_servico + description: Classificação do tipo de serviço + - name: id_prestador_servico + description: CNES, CPF ou CNPJ do prestador do serviço do ato profissional + - name: id_procedimento + description: Procedimento referente ao ato profissional + - name: cbo_2002_profissional + description: Identificador de Ocupação Brasileira do Profissional que realizou + o ato ou “00000” caso não tenha sido + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__cbo_2002') + field: cbo_2002.cbo_2002 + - name: quantidade_procedimentos + description: Quantidade de procedimentos realizados + - name: id_cid_principal + description: Identificador principal da Classificação Internacional de Doenças + e Problemas Relacionados com a Saúde (CID) + - name: id_cid_principal_subcategoria + description: Subcategoria do identificador principal da Classificação Internacional de Doenças + e Problemas Relacionados com a Saúde (CID) + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__cid_10') + field: subcategoria + - name: id_cid_secundario + description: Identificador secundário da Classificação Internacional de Doenças + e Problemas Relacionados com a Saúde (CID) + - name: id_cid_secundario_subcategoria + description: Subcategoria do identificador secundário da Classificação Internacional de Doenças + e Problemas Relacionados com a Saúde (CID) + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__cid_10') + field: subcategoria + - name: complexidade_ato_profissional + description: Complexidade do ato profissional + - name: quantidade_atos_profissionais + description: Quantidade de atos profissionais + - name: quantidade_pontos + description: Quantidade de pontos + - name: nota_fiscal + description: Nota fiscal do material empregado quando órtese/prótese, quando não, o campo representa a data do ato + - name: valor_ato_profissional + description: Valor do ato profissional + - name: indicador_uf_paciente + description: Indica se a UF de residência do paciente é diferente da UF de localização do estabelecimento + - name: indicador_uf_paciente + description: Indica se a UF de residência do paciente é diferente da UF de + localização do estabelecimento + - name: indicador_id_aih + description: Indica quais id_aih são únicos + - name: tipo_financiamento_ato_profissional + description: Tipo de financiamento do ato profissional + - name: tipo_subtipo_financiamento_ato_profissional + description: Tipo de financiamento (04-FAEC) + Subtipo de financiamento relacionado ao tipo de financiamento (04-FAEC) do ato profissional + - name: tipo_documento_pf + description: Documento de pessoa jurídica + - name: tipo_documento_pj + description: Documento de pessoa física + - name: tipo_valor + description: 'Tipo de valor: 1 - SP /2 –SH' + - name: sequencia + description: Código sequencial + - name: nome_remessa + description: Nome da remessa From 9b22be722e2f117fb8d58eca4d9569f110c9a951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Mon, 29 Apr 2024 11:48:07 -0300 Subject: [PATCH 2/6] feat: new query version --- .../br_ms_sih/br_ms_sih__servicos_profissionais.sql | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql b/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql index e4bc5175..3d3d9b96 100644 --- a/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql +++ b/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql @@ -2,7 +2,7 @@ config( alias="servicos_profissionais", schema="br_ms_sih", - materialized="table", + materialized="incremental", partition_by={ "field": "ano", "data_type": "int64", @@ -32,7 +32,7 @@ select safe_cast(sp_procrea as string) id_procedimento_principal, safe_cast(serv_cla as string) tipo_servico, safe_cast(sp_cpfcgc as string) id_prestador_servico, - safe_cast(sp_atoprof as string) id_procedimento, + safe_cast(sp_atoprof as string) id_procedimento_secundario, safe_cast(sp_pf_cbo as string) cbo_2002_profissional, safe_cast(ltrim(sp_qt_proc) as int64) quantidade_procedimentos, safe_cast( @@ -94,10 +94,15 @@ select safe_cast(in_tp_val as string) tipo_valor, safe_cast(ltrim(sequencia) as string) sequencia, safe_cast(remessa as string) nome_remessa, -from `basedosdados-dev.br_ms_sih_staging.servicos_profissionais` as sih +from `basedosdados-staging.br_ms_sih_staging.servicos_profissionais` as sih left join ( select id_municipio, id_municipio_6, from `basedosdados.br_bd_diretorios_brasil.municipio` ) as mun on sih.sp_m_hosp = mun.id_municipio_6 +{% if is_incremental() %} + where + date(cast(ano as int64), cast(mes as int64), 1) + > (select max(date(cast(ano as int64), cast(mes as int64), 1)) from {{ this }}) +{% endif %} From c28d363a4babcf55d236612dc008f4d4803e2f3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Tue, 30 Apr 2024 17:49:43 -0300 Subject: [PATCH 3/6] feat: new cbo_2002 query version --- .../br_bd_diretorios_brasil__cbo_2002.sql | 23 +++++++++++++++++++ models/br_bd_diretorios_brasil/schema.yml | 23 +++++++++++++++++++ .../br_ms_sih__servicos_profissionais.sql | 2 +- models/br_ms_sih/schema.yml | 4 +++- 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cbo_2002.sql diff --git a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cbo_2002.sql b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cbo_2002.sql new file mode 100644 index 00000000..bdf36288 --- /dev/null +++ b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cbo_2002.sql @@ -0,0 +1,23 @@ +{{ + config( + alias="cbo_2002", + schema="br_bd_diretorios_brasil", + materialized="table", + ) +}} + + +select + safe_cast(cbo_2002 as string) cbo_2002, + safe_cast(descricao as string) descricao, + safe_cast(familia as string) familia, + safe_cast(descricao_familia as string) descricao_familia, + safe_cast(subgrupo as string) subgrupo, + safe_cast(initcap(descricao_subgrupo) as string) descricao_subgrupo, + safe_cast(subgrupo_principal as string) subgrupo_principal, + safe_cast( + initcap(descricao_subgrupo_principal) as string + ) descricao_subgrupo_principal, + safe_cast(grande_grupo as string) grande_grupo, + safe_cast(initcap(descricao_grande_grupo) as string) descricao_grande_grupo +from `basedosdados-dev.br_bd_diretorios_brasil_staging.cbo_2002` as t diff --git a/models/br_bd_diretorios_brasil/schema.yml b/models/br_bd_diretorios_brasil/schema.yml index 9ff27243..e9bcd091 100644 --- a/models/br_bd_diretorios_brasil/schema.yml +++ b/models/br_bd_diretorios_brasil/schema.yml @@ -1,6 +1,29 @@ --- version: 2 models: + - name: br_bd_diretorios_brasil__cbo_2002 + description: Diretório da Classificação Brasileira de Ocupações 2002. + columns: + - name: cbo_2002 + description: Classificação Brasileira de Ocupações 2002 + - name: descricao + description: Descrição da CBO2002 + - name: familia + description: Família + - name: descricao_familia + description: Descrição da Família + - name: subgrupo + description: Subgrupo + - name: descricao_subgrupo + description: Descrição do Subgrupo + - name: subgrupo_principal + description: Subgrupo Principal + - name: descricao_subgrupo_principal + description: Descrição do Subgrupo Principal + - name: grande_grupo + description: Grande Grupo + - name: descricao_grande_grupo + description: Descrição do Grande Grupo - name: br_bd_diretorios_brasil__empresa description: A tabela apresenta informações do Cadastro Nacional da Pessoa Jurídica (CNPJ), que é um banco de dados administrado pela Secretaria Especial da Receita diff --git a/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql b/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql index 3d3d9b96..fd3cff49 100644 --- a/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql +++ b/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql @@ -84,7 +84,7 @@ select safe_cast(ltrim(sp_ptsp) as int64) quantidade_pontos, safe_cast(sp_nf as string) nota_fiscal, safe_cast(ltrim(sp_valato) as float64) valor_ato_profissional, - safe_cast(sp_des_hos as int64) indicador_uf_paciente, + safe_cast(sp_des_hos as int64) indicador_uf_hospital, safe_cast(sp_des_pac as int64) indicador_uf_paciente, safe_cast(sp_u_aih as int64) indicador_id_aih, safe_cast(sp_financ as string) tipo_financiamento_ato_profissional, diff --git a/models/br_ms_sih/schema.yml b/models/br_ms_sih/schema.yml index 7b8e9238..fa796e24 100644 --- a/models/br_ms_sih/schema.yml +++ b/models/br_ms_sih/schema.yml @@ -2,11 +2,13 @@ version: 2 models: - name: br_ms_sih__servicos_profissionais - description: Insert `servicos_profissionais` table description here + description: Sistema de Informações Hospitalares do SUS (SIH/SUS) tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - id_aih + - ano + - mes - not_null_proportion_multiple_columns: at_least: 0.05 columns: From a85ca10887576d3decedfcac48c1db421d5dd8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Tue, 30 Apr 2024 17:51:51 -0300 Subject: [PATCH 4/6] fix: project name --- .../br_bd_diretorios_brasil__cbo_2002.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cbo_2002.sql b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cbo_2002.sql index bdf36288..9c0296b5 100644 --- a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cbo_2002.sql +++ b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cbo_2002.sql @@ -20,4 +20,4 @@ select ) descricao_subgrupo_principal, safe_cast(grande_grupo as string) grande_grupo, safe_cast(initcap(descricao_grande_grupo) as string) descricao_grande_grupo -from `basedosdados-dev.br_bd_diretorios_brasil_staging.cbo_2002` as t +from `basedosdados-staging.br_bd_diretorios_brasil_staging.cbo_2002` as t From 50826cb10afcd6c6c81c156a541a6d0c09718f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Tue, 30 Apr 2024 18:38:59 -0300 Subject: [PATCH 5/6] feat: add incremental testing macro --- models/br_ms_sih/schema.yml | 50 ++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/models/br_ms_sih/schema.yml b/models/br_ms_sih/schema.yml index fa796e24..6adc29dd 100644 --- a/models/br_ms_sih/schema.yml +++ b/models/br_ms_sih/schema.yml @@ -9,63 +9,49 @@ models: - id_aih - ano - mes - - not_null_proportion_multiple_columns: - at_least: 0.05 + - sigla_uf + - id_municipio_estabelecimento_aih + config: + where: __most_recent_year_month__ columns: - name: ano description: Ano tests: - - relationships: - to: ref('br_bd_diretorios_data_tempo__ano') - field: ano.ano + - not_null - name: mes description: Mês - tests: - - relationships: - to: ref('br_bd_diretorios_data_tempo__ano') - field: mes - name: ano_internacao description: Ano da internação - tests: - - relationships: - to: ref('br_bd_diretorios_data_tempo__ano') - field: ano.ano - name: mes_internacao description: Mes da internação - tests: - - relationships: - to: ref('br_bd_diretorios_data_tempo__ano') - field: mes - name: data_entrada_internacao description: Data do início da internação - tests: - - relationships: - to: ref('br_bd_diretorios_data_tempo__data') - field: data.data - name: data_saida_iternacao description: Data do final da internação - tests: - - relationships: - to: ref('br_bd_diretorios_data_tempo__data') - field: data.data - name: sigla_uf description: Sigla unidade da fedaração tests: - relationships: to: ref('br_bd_diretorios_data_tempo__uf') field: sigla + config: + where: __most_recent_year_month__ - name: id_municipio_estabelecimento_aih description: Município de localização do Estabelecimento Executante da AIH tests: - relationships: to: ref('br_bd_diretorios_brasil__municipio') field: id_municipio + config: + where: __most_recent_year_month__ - name: id_municipio_paciente description: Município de residência do paciente tests: - relationships: to: ref('br_bd_diretorios_brasil__municipio') - field: id_municipio + field: id_municipio_6 + config: + where: __most_recent_year_month__ - name: id_gestor description: Unidade de Federação + Código Município de Gestão ou UF0000 se o Estabelecimento Executante está sob Gestão Estadual. @@ -80,7 +66,7 @@ models: description: Classificação do tipo de serviço - name: id_prestador_servico description: CNES, CPF ou CNPJ do prestador do serviço do ato profissional - - name: id_procedimento + - name: id_procedimento_secundario description: Procedimento referente ao ato profissional - name: cbo_2002_profissional description: Identificador de Ocupação Brasileira do Profissional que realizou @@ -89,6 +75,8 @@ models: - relationships: to: ref('br_bd_diretorios_brasil__cbo_2002') field: cbo_2002.cbo_2002 + config: + where: __most_recent_year_month__ - name: quantidade_procedimentos description: Quantidade de procedimentos realizados - name: id_cid_principal @@ -101,6 +89,8 @@ models: - relationships: to: ref('br_bd_diretorios_brasil__cid_10') field: subcategoria + config: + where: __most_recent_year_month__ - name: id_cid_secundario description: Identificador secundário da Classificação Internacional de Doenças e Problemas Relacionados com a Saúde (CID) @@ -111,6 +101,8 @@ models: - relationships: to: ref('br_bd_diretorios_brasil__cid_10') field: subcategoria + config: + where: __most_recent_year_month__ - name: complexidade_ato_profissional description: Complexidade do ato profissional - name: quantidade_atos_profissionais @@ -121,8 +113,8 @@ models: description: Nota fiscal do material empregado quando órtese/prótese, quando não, o campo representa a data do ato - name: valor_ato_profissional description: Valor do ato profissional - - name: indicador_uf_paciente - description: Indica se a UF de residência do paciente é diferente da UF de localização do estabelecimento + - name: indicador_uf_hospital + description: Indica se a UF de residência do hospital é diferente da UF de localização do estabelecimento - name: indicador_uf_paciente description: Indica se a UF de residência do paciente é diferente da UF de localização do estabelecimento From c40387a79b9295e3022a4b97f7e25d17f3a271ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Thu, 2 May 2024 19:03:04 -0300 Subject: [PATCH 6/6] feat: adding last version --- .../br_ms_sih__servicos_profissionais.sql | 2 +- models/br_ms_sih/schema.yml | 45 +++++++++---------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql b/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql index fd3cff49..caf288ce 100644 --- a/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql +++ b/models/br_ms_sih/br_ms_sih__servicos_profissionais.sql @@ -15,6 +15,7 @@ select safe_cast(ano as int64) ano, safe_cast(mes as int64) mes, + safe_cast(sigla_uf as string) sigla_uf, safe_cast(sp_aa as int64) ano_internacao, safe_cast(sp_mm as int64) mes_internacao, safe_cast( @@ -23,7 +24,6 @@ select safe_cast( format_date('%Y-%m-%d', safe.parse_date('%Y%m%d', sp_dtsaida)) as date ) data_saida_iternacao, - safe_cast(sp_uf as string) sigla_uf, safe_cast(id_municipio as string) id_municipio_estabelecimento_aih, safe_cast(sp_m_pac as string) id_municipio_paciente, safe_cast(sp_gestor as string) id_gestor, diff --git a/models/br_ms_sih/schema.yml b/models/br_ms_sih/schema.yml index 6adc29dd..f1f35913 100644 --- a/models/br_ms_sih/schema.yml +++ b/models/br_ms_sih/schema.yml @@ -3,21 +3,13 @@ version: 2 models: - name: br_ms_sih__servicos_profissionais description: Sistema de Informações Hospitalares do SUS (SIH/SUS) - tests: - - dbt_utils.unique_combination_of_columns: - combination_of_columns: - - id_aih - - ano - - mes - - sigla_uf - - id_municipio_estabelecimento_aih - config: - where: __most_recent_year_month__ columns: - name: ano description: Ano tests: - - not_null + - not_null: + config: + where: __most_recent_year_month__ - name: mes description: Mês - name: ano_internacao @@ -35,7 +27,7 @@ models: to: ref('br_bd_diretorios_data_tempo__uf') field: sigla config: - where: __most_recent_year_month__ + where: __most_recent_year_month__ - name: id_municipio_estabelecimento_aih description: Município de localização do Estabelecimento Executante da AIH tests: @@ -43,7 +35,7 @@ models: to: ref('br_bd_diretorios_brasil__municipio') field: id_municipio config: - where: __most_recent_year_month__ + where: __most_recent_year_month__ - name: id_municipio_paciente description: Município de residência do paciente tests: @@ -51,7 +43,7 @@ models: to: ref('br_bd_diretorios_brasil__municipio') field: id_municipio_6 config: - where: __most_recent_year_month__ + where: __most_recent_year_month__ - name: id_gestor description: Unidade de Federação + Código Município de Gestão ou UF0000 se o Estabelecimento Executante está sob Gestão Estadual. @@ -60,6 +52,10 @@ models: Hospitalar (AIH) - name: id_aih description: ID Autorização de Internação Hospitalar (AIH) + tests: + - not_null: + config: + where: __most_recent_year_month__ - name: id_procedimento_principal description: Procedimento principal realizado na AIH. - name: tipo_servico @@ -76,7 +72,7 @@ models: to: ref('br_bd_diretorios_brasil__cbo_2002') field: cbo_2002.cbo_2002 config: - where: __most_recent_year_month__ + where: __most_recent_year_month__ - name: quantidade_procedimentos description: Quantidade de procedimentos realizados - name: id_cid_principal @@ -86,11 +82,12 @@ models: description: Subcategoria do identificador principal da Classificação Internacional de Doenças e Problemas Relacionados com a Saúde (CID) tests: - - relationships: - to: ref('br_bd_diretorios_brasil__cid_10') - field: subcategoria - config: - where: __most_recent_year_month__ + - custom_relationships: + to: ref('br_bd_diretorios_brasil__cid_10') + field: subcategoria + ignore_values: ["'R501','Q314','S571','N182','U109','M723','M725','N975','N184','R500','N183','Q356','B501','N185','U099'"] + config: + where: __most_recent_year_month__ - name: id_cid_secundario description: Identificador secundário da Classificação Internacional de Doenças e Problemas Relacionados com a Saúde (CID) @@ -99,10 +96,10 @@ models: e Problemas Relacionados com a Saúde (CID) tests: - relationships: - to: ref('br_bd_diretorios_brasil__cid_10') - field: subcategoria - config: - where: __most_recent_year_month__ + to: ref('br_bd_diretorios_brasil__cid_10') + field: subcategoria + config: + where: __most_recent_year_month__ - name: complexidade_ato_profissional description: Complexidade do ato profissional - name: quantidade_atos_profissionais