diff --git a/.user.yml b/.user.yml
new file mode 100644
index 00000000..416339dd
--- /dev/null
+++ b/.user.yml
@@ -0,0 +1,2 @@
+---
+id: cc3f54e0-fd01-4495-bd12-aa41f3b24444
diff --git a/dbt_project.yml b/dbt_project.yml
index 9433d440..65f01e8e 100644
--- a/dbt_project.yml
+++ b/dbt_project.yml
@@ -231,12 +231,18 @@ models:
+post-hook:
- REVOKE `roles/bigquery.dataViewer` ON TABLE {{ this }} FROM "specialGroup:allUsers"
- GRANT `roles/bigquery.dataViewer` ON TABLE {{ this }} TO "group:bd-pro@basedosdados.org"
+ br_mme_consumo_energia_eletrica:
+ +materialized: table
+ +schema: br_mme_consumo_energia_eletrica
br_mp_pep:
+materialized: table
+schema: br_mp_pep
br_ms_cnes:
+materialized: table
+schema: br_ms_cnes
+ br_ms_sia:
+ +materialized: table
+ +schema: br_ms_sia
br_ms_sim:
+materialized: table
+schema: br_ms_sim
diff --git a/models/br_camara_dados_abertos/br_camara_dados_abertos__orgao_deputado.sql b/models/br_camara_dados_abertos/br_camara_dados_abertos__orgao_deputado.sql
index f5f82eda..a1770fe0 100644
--- a/models/br_camara_dados_abertos/br_camara_dados_abertos__orgao_deputado.sql
+++ b/models/br_camara_dados_abertos/br_camara_dados_abertos__orgao_deputado.sql
@@ -1,12 +1,25 @@
{{ config(alias="orgao_deputado", schema="br_camara_dados_abertos") }}
-select distinct
- regexp_extract(uriorgao, r'/orgaos/(\d+)') as id_orgao,
- safe_cast(nomeorgao as string) nome,
- safe_cast(siglaorgao as string) sigla,
- safe_cast(nomedeputado as string) nome_deputado,
- safe_cast(cargo as string) cargo,
- safe_cast(siglauf as string) sigla_uf,
- safe_cast(datainicio as date) data_inicio,
- safe_cast(datafim as date) data_final,
- safe_cast(siglapartido as string) sigla_partido,
-from `basedosdados-staging.br_camara_dados_abertos_staging.orgao_deputado` as t
+with
+ orgao_deputado as (
+ select distinct
+ regexp_extract(uriorgao, r'/orgaos/(\d+)') as id_orgao,
+ safe_cast(nomeorgao as string) nome,
+ safe_cast(siglaorgao as string) sigla,
+ safe_cast(nomedeputado as string) nome_deputado,
+ safe_cast(cargo as string) cargo,
+ safe_cast(siglauf as string) sigla_uf,
+ safe_cast(datainicio as date) data_inicio,
+ safe_cast(datafim as date) data_final,
+ safe_cast(siglapartido as string) sigla_partido,
+ from `basedosdados-staging.br_camara_dados_abertos_staging.orgao_deputado`
+ )
+select *
+from orgao_deputado
+where
+ not (
+ nome_deputado = 'Hélio Leite'
+ and cargo = 'Titular'
+ and sigla_uf is null
+ and data_inicio = '2022-05-03'
+ and data_final = '2023-02-01'
+ )
diff --git a/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_autor.sql b/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_autor.sql
index c6214862..71387eca 100644
--- a/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_autor.sql
+++ b/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_autor.sql
@@ -1,6 +1,6 @@
{{ config(alias="proposicao_autor", schema="br_camara_dados_abertos") }}
-select
+select distinct
safe_cast(idproposicao as string) id_proposicao,
replace(safe_cast(iddeputadoautor as string), ".0", "") id_deputado,
initcap(safe_cast(tipoautor as string)) tipo_autor,
diff --git a/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_microdados.sql b/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_microdados.sql
index f99989ff..44f0c262 100644
--- a/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_microdados.sql
+++ b/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_microdados.sql
@@ -6,43 +6,88 @@
partition_by={
"field": "ano",
"data_type": "INT64",
- "range": {"start": 1935, "end": 2023, "interval": 1},
+ "range": {"start": 1935, "end": 2024, "interval": 1},
},
)
}}
-select
- safe_cast(ano as int64) ano,
- safe_cast(
- split(
- format_timestamp('%Y-%m-%dT%H:%M:%E*S', timestamp(dataapresentacao)), 'T'
- )[offset(0)] as date
- ) data,
- safe_cast(
- split(
- format_timestamp('%Y-%m-%dT%H:%M:%E*S', timestamp(dataapresentacao)), 'T'
- )[offset(1)] as time
- ) horario,
- safe_cast(id as string) id_proposicao,
- safe_cast(uri as string) url,
- safe_cast(numero as string) numero,
- safe_cast(siglatipo as string) sigla,
- safe_cast(descricaotipo as string) tipo,
- safe_cast(ementa as string) ementa,
- safe_cast(ementadetalhada as string) ementa_detalhada,
- safe_cast(keywords as string) palavra_chave,
- safe_cast(uriorgaonumerador as string) url_orgao_numerador,
- safe_cast(uripropprincipal as string) url_principal,
- safe_cast(uripropposterior as string) url_posterior,
- safe_cast(urlinteiroteor as string) url_teor_proposicao,
- safe_cast(ultimostatus_datahora as string) data_hora_ultimo_status,
- safe_cast(ultimostatus_urirelator as string) url_relator_ultimo_status,
- safe_cast(ultimostatus_siglaorgao as string) sigla_orgao_ultimo_status,
- safe_cast(ultimostatus_regime as string) regime_ultimo_status,
- safe_cast(ultimostatus_descricaotramitacao as string) tramitacao_ultimo_status,
- safe_cast(ultimostatus_descricaosituacao as string) situacao_ultimo_status,
- safe_cast(ultimostatus_despacho as string) despacho_ultimo_status,
- safe_cast(ultimostatus_apreciacao as string) apreciacao_ultimo_status,
- safe_cast(ultimostatus_sequencia as string) sequencia_ultimo_status,
- safe_cast(ultimostatus_url as string) url_ultimo_status,
-from `basedosdados-staging.br_camara_dados_abertos_staging.proposicao_microdados` as t
+with
+ table as (
+ select
+ safe_cast(ano as int64) ano,
+ safe_cast(
+ split(
+ format_timestamp(
+ '%Y-%m-%dT%H:%M:%E*S', timestamp(dataapresentacao)
+ ),
+ 'T'
+ )[offset (0)] as date
+ ) data,
+ safe_cast(
+ split(
+ format_timestamp(
+ '%Y-%m-%dT%H:%M:%E*S', timestamp(dataapresentacao)
+ ),
+ 'T'
+ )[offset (1)] as time
+ ) horario,
+ safe_cast(id as string) id_proposicao,
+ safe_cast(uri as string) url,
+ safe_cast(numero as string) numero,
+ safe_cast(siglatipo as string) sigla,
+ safe_cast(descricaotipo as string) tipo,
+ safe_cast(ementa as string) ementa,
+ safe_cast(ementadetalhada as string) ementa_detalhada,
+ safe_cast(keywords as string) palavra_chave,
+ safe_cast(uriorgaonumerador as string) url_orgao_numerador,
+ safe_cast(uripropprincipal as string) url_principal,
+ safe_cast(uripropposterior as string) url_posterior,
+ safe_cast(urlinteiroteor as string) url_teor_proposicao,
+ safe_cast(ultimostatus_datahora as string) data_hora_ultimo_status,
+ safe_cast(ultimostatus_urirelator as string) url_relator_ultimo_status,
+ safe_cast(ultimostatus_siglaorgao as string) sigla_orgao_ultimo_status,
+ safe_cast(ultimostatus_regime as string) regime_ultimo_status,
+ safe_cast(
+ ultimostatus_descricaotramitacao as string
+ ) tramitacao_ultimo_status,
+ safe_cast(ultimostatus_descricaosituacao as string) situacao_ultimo_status,
+ safe_cast(ultimostatus_despacho as string) despacho_ultimo_status,
+ safe_cast(ultimostatus_apreciacao as string) apreciacao_ultimo_status,
+ safe_cast(ultimostatus_sequencia as string) sequencia_ultimo_status,
+ safe_cast(ultimostatus_url as string) url_ultimo_status,
+ from
+ `basedosdados-staging.br_camara_dados_abertos_staging.proposicao_microdados`
+ as t
+ ),
+ query_total as (
+ select
+ ano,
+ case when data >= current_date() then null else data end as data,
+ horario,
+ id_proposicao,
+ url,
+ numero,
+ sigla,
+ tipo,
+ ementa,
+ ementa_detalhada,
+ palavra_chave,
+ url_orgao_numerador,
+ url_principal,
+ url_posterior,
+ url_teor_proposicao,
+ data_hora_ultimo_status,
+ url_relator_ultimo_status,
+ sigla_orgao_ultimo_status,
+ regime_ultimo_status,
+ tramitacao_ultimo_status,
+ situacao_ultimo_status,
+ despacho_ultimo_status,
+ apreciacao_ultimo_status,
+ sequencia_ultimo_status,
+ url_ultimo_status,
+ from table
+ )
+select distinct *
+from query_total
+where not (ano = 2011 and id_proposicao = '510035')
diff --git a/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_tema.sql b/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_tema.sql
index 10d0cc64..63bb9148 100644
--- a/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_tema.sql
+++ b/models/br_camara_dados_abertos/br_camara_dados_abertos__proposicao_tema.sql
@@ -11,11 +11,17 @@
)
}}
-select
- safe_cast(replace(ano, ".0", "") as int64) ano,
- regexp_extract(uriproposicao, r'/proposicoes/(\d+)') as id_proposicao,
- safe_cast(siglatipo as string) tipo_proposicao,
- safe_cast(numero as string) numero,
- safe_cast(codtema as string) tema,
- safe_cast(relevancia as int64) relevancia,
-from `basedosdados-staging.br_camara_dados_abertos_staging.proposicao_tema` as t
+with
+ tables as (
+ select
+ safe_cast(replace(ano, ".0", "") as int64) as ano,
+ regexp_extract(uriproposicao, r'/proposicoes/(\d+)') as id_proposicao,
+ safe_cast(siglatipo as string) as tipo_proposicao,
+ safe_cast(numero as string) as numero,
+ safe_cast(tema as string) as tema,
+ safe_cast(relevancia as int64) as relevancia
+ from `basedosdados-staging.br_camara_dados_abertos_staging.proposicao_tema`
+ )
+select *
+from tables
+where not (ano = 2011 and id_proposicao = '510035')
diff --git a/models/br_ibge_censo_2022/br_ibge_censo_2022__populacao_residente_municipio.sql b/models/br_ibge_censo_2022/br_ibge_censo_2022__populacao_residente_municipio.sql
index f9d473a7..386f6a00 100644
--- a/models/br_ibge_censo_2022/br_ibge_censo_2022__populacao_residente_municipio.sql
+++ b/models/br_ibge_censo_2022/br_ibge_censo_2022__populacao_residente_municipio.sql
@@ -12,12 +12,77 @@ with
safe_cast(forma_de_declaracao_da_idade as string) forma_declaracao_idade,
safe_cast(sexo as string) sexo,
safe_cast(idade as string) idade,
+ case
+ when idade = 'Menos de 1 mês'
+ then 0
+ when regexp_contains(idade, r'[0-9]+ mês')
+ then safe_cast(regexp_extract(idade, r'[0-9]+ mês') as int64) / 12
+ when regexp_contains(idade, r'[0-9]+ meses')
+ then safe_cast(regexp_extract(idade, r'([0-9])+ meses') as int64) / 12
+ when regexp_contains(idade, r'[0-9]+ anos')
+ then cast(regexp_extract(idade, r'([0-9]+) anos') as int64)
+ when regexp_contains(idade, r'[0-9]+ ano')
+ then cast(regexp_extract(idade, r'([0-9]+) ano') as int64)
+ end as idade_num,
safe_cast(populacao_residente_pessoas_ as int64) populacao_residente,
from
`basedosdados-staging.br_ibge_censo_2022_staging.populacao_residente_municipio` t
)
-select t2.cod as id_municipio, ibge.* except (municipio, nome_municipio, sigla_uf)
+select
+ t2.cod as id_municipio,
+ ibge.* except (municipio, nome_municipio, sigla_uf, idade_num, populacao_residente),
+ idade_num as idade_anos,
+ case
+ when idade_num between 0 and 4
+ then '0 a 4 anos'
+ when idade_num between 5 and 9
+ then '5 a 9 anos'
+ when idade_num between 10 and 14
+ then '10 a 14 anos'
+ when idade_num between 15 and 19
+ then '15 a 19 anos'
+ when idade_num between 20 and 24
+ then '20 a 24 anos'
+ when idade_num between 25 and 29
+ then '25 a 29 anos'
+ when idade_num between 30 and 34
+ then '30 a 34 anos'
+ when idade_num between 35 and 39
+ then '35 a 39 anos'
+ when idade_num between 40 and 44
+ then '40 a 44 anos'
+ when idade_num between 45 and 49
+ then '45 a 49 anos'
+ when idade_num between 50 and 54
+ then '50 a 54 anos'
+ when idade_num between 55 and 59
+ then '55 a 59 anos'
+ when idade_num between 60 and 64
+ then '60 a 64 anos'
+ when idade_num between 65 and 69
+ then '65 a 69 anos'
+ when idade_num between 70 and 74
+ then '70 a 74 anos'
+ when idade_num between 75 and 79
+ then '75 a 79 anos'
+ when idade_num between 80 and 84
+ then '80 a 84 anos'
+ when idade_num between 85 and 89
+ then '85 a 89 anos'
+ when idade_num between 90 and 94
+ then '90 a 94 anos'
+ when idade_num between 95 and 99
+ then '95 a 99 anos'
+ else '100 anos ou mais'
+ end as grupo_idade,
+ populacao_residente
from ibge
left join
`basedosdados-dev.br_ibge_censo_2022_staging.auxiliary_table` t2
on ibge.municipio = t2.municipio
+where
+ not (
+ idade like '% a %'
+ or idade like '100 anos ou mais'
+ or idade like 'Menos de 1 ano'
+ )
diff --git a/models/br_mme_consumo_energia_eletrica/br_mme_consumo_energia_eletrica__uf.sql b/models/br_mme_consumo_energia_eletrica/br_mme_consumo_energia_eletrica__uf.sql
new file mode 100644
index 00000000..620f7a43
--- /dev/null
+++ b/models/br_mme_consumo_energia_eletrica/br_mme_consumo_energia_eletrica__uf.sql
@@ -0,0 +1,19 @@
+{{
+ config(
+ alias="uf",
+ schema="br_mme_consumo_energia_eletrica",
+ materialized="table",
+ )
+}}
+select
+ safe_cast(ano as int64) as ano,
+ safe_cast(mes as int64) as mes,
+ safe_cast(sigla_uf as string) as sigla_uf,
+ safe_cast(tipo_consumo as string) as tipo_consumo,
+ case
+ when numero_consumidores = '0'
+ then null
+ else safe_cast(numero_consumidores as int64)
+ end as numero_consumidores,
+ safe_cast(consumo as int64) as consumo
+from `basedosdados-staging.br_mme_consumo_energia_eletrica_staging.uf` as t
diff --git a/models/br_mme_consumo_energia_eletrica/code/energia_eletrica.ipynb b/models/br_mme_consumo_energia_eletrica/code/energia_eletrica.ipynb
new file mode 100755
index 00000000..0aff9a8c
--- /dev/null
+++ b/models/br_mme_consumo_energia_eletrica/code/energia_eletrica.ipynb
@@ -0,0 +1,372 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import warnings\n",
+ "warnings.filterwarnings('ignore')\n",
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def tratamento_consumo(sheet_name):\n",
+ " meses = {\n",
+ " \"JAN\": 1,\n",
+ " \"FEV\": 2,\n",
+ " \"MAR\": 3,\n",
+ " \"ABR\": 4,\n",
+ " \"MAI\": 5,\n",
+ " \"JUN\": 6,\n",
+ " \"JUL\": 7,\n",
+ " \"AGO\": 8,\n",
+ " \"SET\": 9,\n",
+ " \"OUT\": 10,\n",
+ " \"NOV\": 11,\n",
+ " \"DEZ\": 12\n",
+ " }\n",
+ " ufs = {'Acre':'AC', 'Alagoas':'AL', 'Amazonas':'AM', 'Amapá':'AP', 'Bahia':'BA', 'Ceará':'CE', 'Distrito Federal':'DF', 'Espírito Santo':'ES', 'Goiás':'GO', \n",
+ " 'Maranhão':'MA', 'Minas Gerais':'MG', 'Mato Grosso do Sul':'MS', 'Mato Grosso':'MT', 'Pará':'PA', 'Paraíba':'PB', 'Pernambuco':'PE', 'Piauí':'PI', \n",
+ " 'Paraná':'PR', 'Rio de Janeiro':'RJ', 'Rio Grande do Norte':'RN', 'Rondônia':'RO', 'Roraima':'RR', 'Rio Grande do Sul':'RS', \n",
+ " 'Santa Catarina':'SC', 'Sergipe':'SE', 'São Paulo':'SP', 'Tocantins':'TO'}\n",
+ " \n",
+ " df = pd.read_excel('/mnt/x/dados/consumo_energia_eletrica/dados.xls', sheet_name, skiprows=4, skipfooter=1, usecols='A:IG')\n",
+ " df_transposta = df.T\n",
+ " df_transposta.reset_index(inplace=True)\n",
+ " df_transposta.drop(df_transposta[['index', 2]], inplace=True, axis=1)\n",
+ " df_transposta.columns = df_transposta.iloc[0]\n",
+ " df_transposta = df_transposta[1:]\n",
+ " df_transposta.columns = ['ano', 'mes', 'Rondônia', 'Acre', 'Amazonas', 'Roraima', 'Pará',\n",
+ " 'Amapá', 'Tocantins', 'Maranhão', 'Piauí', 'Ceará',\n",
+ " 'Rio Grande do Norte', 'Paraíba', 'Pernambuco', 'Alagoas', 'Sergipe',\n",
+ " 'Bahia', 'Minas Gerais', 'Espírito Santo', 'Rio de Janeiro',\n",
+ " 'São Paulo', 'Paraná', 'Santa Catarina', 'Rio Grande do Sul',\n",
+ " 'Mato Grosso do Sul', 'Mato Grosso', 'Goiás', 'Distrito Federal']\n",
+ " df_transposta_melted = pd.melt(df_transposta, id_vars=[\"ano\", 'mes'], var_name=\"Estado\", value_name=\"Valor\")\n",
+ " df_transposta_melted['ano'].ffill(inplace=True)\n",
+ " df_transposta_melted['mes'] = df_transposta_melted['mes'].map(meses)\n",
+ "\n",
+ " df_transposta_melted.rename(columns={'Estado' : 'sigla_uf', 'Valor':'consumo'}, inplace=True) \n",
+ " df_transposta_melted['sigla_uf'] = df_transposta_melted['sigla_uf'].map(ufs)\n",
+ " return df_transposta_melted\n",
+ "\n",
+ "tipos_consumo = [\"Total\", \"Cativo\", \"Residencial\", \"Industrial\", \"Comercial\", \"Outros\"]\n",
+ "dfs_consumo = []\n",
+ "\n",
+ "# Realizando o tratamento para cada tipo de consumo\n",
+ "for i, tipo in enumerate(tipos_consumo):\n",
+ " if i < 6:\n",
+ " df = tratamento_consumo(i + 9)\n",
+ " df['tipo_consumo'] = tipo\n",
+ " dfs_consumo.append(df)\n",
+ "\n",
+ "# Concatenando todos os DataFrames\n",
+ "df_consumo = pd.concat(dfs_consumo)\n",
+ "df_consumo = df_consumo[['ano', 'mes', 'sigla_uf','tipo_consumo', 'consumo']]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(38880, 5)"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_consumo.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def tratamento_consumidores(sheet_name):\n",
+ " meses = {\n",
+ " \"JAN\": 1,\n",
+ " \"FEV\": 2,\n",
+ " \"MAR\": 3,\n",
+ " \"ABR\": 4,\n",
+ " \"MAI\": 5,\n",
+ " \"JUN\": 6,\n",
+ " \"JUL\": 7,\n",
+ " \"AGO\": 8,\n",
+ " \"SET\": 9,\n",
+ " \"OUT\": 10,\n",
+ " \"NOV\": 11,\n",
+ " \"DEZ\": 12\n",
+ " }\n",
+ " ufs = {'Acre':'AC', 'Alagoas':'AL', 'Amazonas':'AM', 'Amapá':'AP', 'Bahia':'BA', 'Ceará':'CE', 'Distrito Federal':'DF', 'Espírito Santo':'ES', 'Goiás':'GO', \n",
+ " 'Maranhão':'MA', 'Minas Gerais':'MG', 'Mato Grosso do Sul':'MS', 'Mato Grosso':'MT', 'Pará':'PA', 'Paraíba':'PB', 'Pernambuco':'PE', 'Piauí':'PI', \n",
+ " 'Paraná':'PR', 'Rio de Janeiro':'RJ', 'Rio Grande do Norte':'RN', 'Rondônia':'RO', 'Roraima':'RR', 'Rio Grande do Sul':'RS', \n",
+ " 'Santa Catarina':'SC', 'Sergipe':'SE', 'São Paulo':'SP', 'Tocantins':'TO'}\n",
+ " \n",
+ " df = pd.read_excel('/mnt/x/dados/consumo_energia_eletrica/dados.xls', sheet_name, skiprows=4, skipfooter=1, usecols='A:IG')\n",
+ " df_transposta = df.T\n",
+ " df_transposta.reset_index(inplace=True)\n",
+ " df_transposta.drop(df_transposta[['index', 2]], inplace=True, axis=1)\n",
+ " df_transposta.columns = df_transposta.iloc[0]\n",
+ " df_transposta = df_transposta[1:]\n",
+ " df_transposta.columns = ['ano', 'mes', 'Rondônia', 'Acre', 'Amazonas', 'Roraima', 'Pará',\n",
+ " 'Amapá', 'Tocantins', 'Maranhão', 'Piauí', 'Ceará',\n",
+ " 'Rio Grande do Norte', 'Paraíba', 'Pernambuco', 'Alagoas', 'Sergipe',\n",
+ " 'Bahia', 'Minas Gerais', 'Espírito Santo', 'Rio de Janeiro',\n",
+ " 'São Paulo', 'Paraná', 'Santa Catarina', 'Rio Grande do Sul',\n",
+ " 'Mato Grosso do Sul', 'Mato Grosso', 'Goiás', 'Distrito Federal']\n",
+ " df_transposta_melted = pd.melt(df_transposta, id_vars=[\"ano\", 'mes'], var_name=\"Estado\", value_name=\"Valor\")\n",
+ " df_transposta_melted['ano'].ffill(inplace=True)\n",
+ " df_transposta_melted['mes'] = df_transposta_melted['mes'].map(meses)\n",
+ "\n",
+ " df_transposta_melted.rename(columns={'Estado' : 'sigla_uf', 'Valor':'numero_consumidores'}, inplace=True) \n",
+ " df_transposta_melted['sigla_uf'] = df_transposta_melted['sigla_uf'].map(ufs)\n",
+ " return df_transposta_melted\n",
+ "\n",
+ "tipos_consumidores = ['Residencial', 'Industrial', 'Comercial', 'Outros']\n",
+ "dfs_consumidores = []\n",
+ "\n",
+ "# Realizando o tratamento para cada tipo de consumidores\n",
+ "for i, tipo in enumerate(tipos_consumidores):\n",
+ " if i < 6:\n",
+ " df = tratamento_consumidores(i + 15)\n",
+ " df['tipo_consumo'] = tipo\n",
+ " dfs_consumidores.append(df)\n",
+ "\n",
+ "# Concatenando todos os DataFrames\n",
+ "df_consumidores = pd.concat(dfs_consumidores)\n",
+ "df_consumidores = df_consumidores[['ano', 'mes', 'sigla_uf','tipo_consumo', 'numero_consumidores']]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_total = pd.merge(df_consumo, df_consumidores, how= 'left', on=['ano', 'mes', 'sigla_uf', 'tipo_consumo'])\n",
+ "df_total = df_total[['ano', 'mes', 'sigla_uf', 'tipo_consumo', 'numero_consumidores', 'consumo']]\n",
+ "df_total['consumo'] = df_total['consumo'].astype(int)\n",
+ "df_total['numero_consumidores'] = df_total['numero_consumidores'].fillna(0).astype(int)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ano | \n",
+ " mes | \n",
+ " sigla_uf | \n",
+ " tipo_consumo | \n",
+ " numero_consumidores | \n",
+ " consumo | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 15840 | \n",
+ " 2004 | \n",
+ " 1 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 2001833 | \n",
+ " 228466 | \n",
+ "
\n",
+ " \n",
+ " 15841 | \n",
+ " 2004 | \n",
+ " 2 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 2004750 | \n",
+ " 217764 | \n",
+ "
\n",
+ " \n",
+ " 15842 | \n",
+ " 2004 | \n",
+ " 3 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 2018407 | \n",
+ " 225066 | \n",
+ "
\n",
+ " \n",
+ " 15843 | \n",
+ " 2004 | \n",
+ " 4 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 2026995 | \n",
+ " 232170 | \n",
+ "
\n",
+ " \n",
+ " 15844 | \n",
+ " 2004 | \n",
+ " 5 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 1972048 | \n",
+ " 210365 | \n",
+ "
\n",
+ " \n",
+ " 15845 | \n",
+ " 2004 | \n",
+ " 6 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 1963599 | \n",
+ " 198030 | \n",
+ "
\n",
+ " \n",
+ " 15846 | \n",
+ " 2004 | \n",
+ " 7 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 1954839 | \n",
+ " 192699 | \n",
+ "
\n",
+ " \n",
+ " 15847 | \n",
+ " 2004 | \n",
+ " 8 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 1949125 | \n",
+ " 189991 | \n",
+ "
\n",
+ " \n",
+ " 15848 | \n",
+ " 2004 | \n",
+ " 9 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 1989788 | \n",
+ " 224208 | \n",
+ "
\n",
+ " \n",
+ " 15849 | \n",
+ " 2004 | \n",
+ " 10 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 2022621 | \n",
+ " 212547 | \n",
+ "
\n",
+ " \n",
+ " 15850 | \n",
+ " 2004 | \n",
+ " 11 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 2046330 | \n",
+ " 226619 | \n",
+ "
\n",
+ " \n",
+ " 15851 | \n",
+ " 2004 | \n",
+ " 12 | \n",
+ " PE | \n",
+ " Residencial | \n",
+ " 2040413 | \n",
+ " 240852 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ano mes sigla_uf tipo_consumo numero_consumidores consumo\n",
+ "15840 2004 1 PE Residencial 2001833 228466\n",
+ "15841 2004 2 PE Residencial 2004750 217764\n",
+ "15842 2004 3 PE Residencial 2018407 225066\n",
+ "15843 2004 4 PE Residencial 2026995 232170\n",
+ "15844 2004 5 PE Residencial 1972048 210365\n",
+ "15845 2004 6 PE Residencial 1963599 198030\n",
+ "15846 2004 7 PE Residencial 1954839 192699\n",
+ "15847 2004 8 PE Residencial 1949125 189991\n",
+ "15848 2004 9 PE Residencial 1989788 224208\n",
+ "15849 2004 10 PE Residencial 2022621 212547\n",
+ "15850 2004 11 PE Residencial 2046330 226619\n",
+ "15851 2004 12 PE Residencial 2040413 240852"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_total[(df_total['ano'] == 2004) & (df_total['sigla_uf'] == 'PE') & (df_total['tipo_consumo'] == 'Residencial')]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_total.to_csv(\"/mnt/x/dados/consumo_energia_eletrica/consumo_energia.csv\", sep=',', index=False, encoding='utf-8')"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.13"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/models/br_mme_consumo_energia_eletrica/schema.yml b/models/br_mme_consumo_energia_eletrica/schema.yml
new file mode 100644
index 00000000..c20bb4e3
--- /dev/null
+++ b/models/br_mme_consumo_energia_eletrica/schema.yml
@@ -0,0 +1,38 @@
+---
+version: 2
+models:
+ - name: br_mme_consumo_energia_eletrica__uf
+ description: Consumo de energia elétrica em nível nacional e segmentado pelas
+ classes residencial, industrial, comercial e outros (rural, serviço público
+ e iluminação pública).
+ tests:
+ - not_null_proportion_multiple_columns:
+ at_least: 0.05
+ - dbt_utils.unique_combination_of_columns:
+ combination_of_columns: [ano, mes, sigla_uf, tipo_consumo]
+ 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__mes')
+ field: mes.mes
+ - name: sigla_uf
+ description: Sigla da Unidade da Federação
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__uf')
+ field: sigla
+ - name: tipo_consumo
+ description: Tipo de Consumo
+ - name: numero_consumidores
+ description: Número de consumidores de energia elétrica atendidos pela rede
+ - name: consumo
+ description: Consumo de energia elétrica na rede (MWh)
+ tests: [not_null]
diff --git a/models/br_ms_sia/br_ms_sia__dicionario.sql b/models/br_ms_sia/br_ms_sia__dicionario.sql
new file mode 100644
index 00000000..4e238467
--- /dev/null
+++ b/models/br_ms_sia/br_ms_sia__dicionario.sql
@@ -0,0 +1,16 @@
+{{
+ config(
+ alias="dicionario",
+ schema="br_ms_sia",
+ materialized="table",
+ )
+}}
+
+
+select
+ safe_cast(id_tabela as string) id_tabela,
+ safe_cast(nome_coluna as string) nome_coluna,
+ safe_cast(chave as string) chave,
+ safe_cast(replace(cobertura_temporal, '-1', '(1)') as string) cobertura_temporal,
+ safe_cast(valor as string) valor
+from `basedosdados-staging.br_ms_sia_staging.dicionario`
diff --git a/models/br_ms_sia/br_ms_sia__producao_ambulatorial.sql b/models/br_ms_sia/br_ms_sia__producao_ambulatorial.sql
new file mode 100644
index 00000000..62433139
--- /dev/null
+++ b/models/br_ms_sia/br_ms_sia__producao_ambulatorial.sql
@@ -0,0 +1,203 @@
+{{
+ config(
+ alias="producao_ambulatorial",
+ schema="br_ms_sia",
+ materialized="incremental",
+ partition_by={
+ "field": "ano",
+ "data_type": "int64",
+ "range": {"start": 2005, "end": 2024, "interval": 1},
+ },
+ cluster_by=["mes", "sigla_uf"],
+ )
+}}
+
+with
+ sia_add_municipios as (
+ -- Adicionar id_municipio de 7 dígitos
+ select *
+ from
+ `basedosdados-staging.br_ms_sia_staging.producao_ambulatorial`
+ as producao_ambulatorial
+
+ left join
+ (
+ select id_municipio, id_municipio_6,
+ from `basedosdados.br_bd_diretorios_brasil.municipio`
+ ) as mun
+ on producao_ambulatorial.pa_ufmun = mun.id_municipio_6
+ )
+
+select
+ safe_cast(ano as int64) ano,
+ safe_cast(mes as int64) mes,
+ safe_cast(sigla_uf as string) sigla_uf,
+ safe_cast(id_municipio as string) id_municipio,
+ safe_cast(pa_coduni as string) id_estabelecimento_cnes,
+ -- seguintes colunas foram omitidas pois podem ser obtidas ao cruzar o
+ -- id_estabelecimento_cnes
+ -- com a tabela estabelecimento do conjunto br_ms_cnes
+ -- safe_cast(pa_nat_jur as string) natureza_juridica_estabelecimento,
+ -- safe_cast(pa_tpups as string) tipo_unidade,
+ -- safe_cast(pa_tippre as string) tipo_prestador,
+ -- safe_cast(pa_cnpjcpf as string) cnpj_estabelecimento_executante,
+ -- safe_cast(
+ -- regexp_replace(pa_cnpjmnt, '0{14}', '') as string
+ -- ) cnpj_mantenedora_estabalecimento,
+ -- safe_cast(regexp_replace(pa_cnpj_cc, '0{14}', '') as string) cnpj_orgao,
+ -- safe_cast(pa_mn_ind as string) tipo_mantenedor_estabelecimento,
+ -- safe_cast(pa_gestao as string) id_gestao,
+ -- safe_cast(pa_condic as string) tipo_gestao,
+ safe_cast(pa_regct as string) tipo_regra_contratual,
+ safe_cast(pa_ine as string) id_equipe,
+ safe_cast(pa_srv_c as string) id_servico_especializado,
+ safe_cast(pa_proc_id as string) id_processamento_ambulatorial,
+ safe_cast(regexp_replace(pa_cnsmed, '0{15}', '') as string) id_cns_executante,
+ safe_cast(replace(pa_cbocod, '', null) as string) id_cbo_2002,
+ safe_cast(
+ regexp_replace(pa_autoriz, '0{13}', '') as string
+ ) codigo_autorizacao_apac,
+ safe_cast(pa_codoco as string) codigo_ocorrencia,
+ case
+ when pa_tpfin = '00' then '0' else cast(ltrim(pa_tpfin, '0') as string)
+ end as tipo_financiamento_producao,
+ case
+ when pa_subfin = '0000' then '0' else cast(ltrim(pa_subfin, '0') as string)
+ end as subtipo_financiamento_producao,
+ -- - parse e criar ano mes data é yyyy-mm
+ safe_cast(substr(pa_mvm, 1, 4) as int64) as ano_processamento_procedimento,
+ safe_cast(substr(pa_mvm, 5, 2) as int64) as mes_processamento_procedimento,
+ safe_cast(substr(pa_cmp, 1, 4) as int64) as ano_realizacao_procedimento,
+ safe_cast(substr(pa_cmp, 5, 2) as int64) as mes_realizacao_procedimento,
+ safe_cast(
+ trim(
+ case when length(trim(pa_cidpri)) = 3 then pa_cidpri else null end
+ ) as string
+ ) as cid_principal_categoria,
+ safe_cast(
+ trim(
+ case
+ when length(trim(pa_cidpri)) = 4 and pa_cidpri != '0000'
+ then pa_cidpri
+ when
+ length(trim(pa_cidpri)) = 3
+ and pa_cidpri in (
+ select subcategoria
+ from `basedosdados.br_bd_diretorios_brasil.cid_10`
+ where length(subcategoria) = 3
+ )
+ then pa_cidpri
+ else null
+ end
+ ) as string
+ ) as cid_principal_subcategoria,
+ safe_cast(
+ trim(
+ case when length(trim(pa_cidsec)) = 3 then pa_cidsec else null end
+ ) as string
+ ) as cid_secundario_categoria,
+ safe_cast(
+ trim(
+ case
+ when length(trim(pa_cidsec)) = 4 and pa_cidsec != '0000'
+ then pa_cidsec
+ when
+ length(trim(pa_cidsec)) = 3
+ and pa_cidsec in (
+ select subcategoria
+ from `basedosdados.br_bd_diretorios_brasil.cid_10`
+ where length(subcategoria) = 3
+ )
+ then pa_cidsec
+ else null
+ end
+ ) as string
+ ) as cid_secundario_subcategoria,
+ safe_cast(
+ trim(
+ case when length(trim(pa_cidcas)) = 3 then pa_cidcas else null end
+ ) as string
+ ) as cid_causas_associadas_categoria,
+ safe_cast(
+ trim(
+ case
+ when length(trim(pa_cidcas)) = 4 and pa_cidcas != '0000'
+ then pa_cidcas
+ when
+ length(trim(pa_cidcas)) = 3
+ and pa_cidcas in (
+ select subcategoria
+ from `basedosdados.br_bd_diretorios_brasil.cid_10`
+ where length(subcategoria) = 3
+ )
+ then pa_cidcas
+ else null
+ end
+ ) as string
+ ) as cid_causas_associadas_subcategoria,
+ case
+ when pa_catend = '00' then '0' else cast(ltrim(pa_catend, '0') as string)
+ end as carater_atendimento,
+ safe_cast(regexp_replace(pa_munpcn, '9{6}', '') as string) id_paciente_proto,
+ safe_cast(replace(pa_sexo, '0', '') as string) sexo_paciente,
+ safe_cast(regexp_replace(pa_idade, '9{3}', '') as int64) idade_paciente,
+ case
+ when pa_racacor = '00' then '0' else cast(ltrim(pa_racacor, '0') as string)
+ end as raca_cor_paciente,
+ safe_cast(pa_etnia as string) etnia_paciente,
+ safe_cast(idademin as int64) idade_minima_paciente,
+ safe_cast(idademax as int64) idade_maxima_paciente,
+ case
+ when pa_flidade = '00' then '0' else cast(ltrim(pa_flidade, '0') as string)
+ end as compatibilidade_idade_procedimento,
+ case
+ when pa_nivcpl = '00' then '0' else cast(ltrim(pa_nivcpl, '0') as string)
+ end as complexidade_procedimento,
+ case
+ when pa_docorig = '00' then '0' else cast(ltrim(pa_docorig, '0') as string)
+ end as instrumento_registro,
+ safe_cast(pa_valapr as float64) valor_aprovado_procedimento,
+ safe_cast(pa_qtdapr as int64) quantidade_aprovada_procedimento,
+ safe_cast(pa_valpro as float64) valor_produzido_procedimento,
+ safe_cast(pa_qtdpro as int64) quantidade_produzida_procedimento,
+ safe_cast(nu_vpa_tot as float64) valor_unitario_procedimento_vpa,
+ safe_cast(nu_pa_tot as float64) valor_unitario_procedimento_sigtap,
+ safe_cast(pa_dif_val as float64) diferenca_valor_unitario,
+ safe_cast(pa_vl_cf as float64) valor_complemento_federal,
+ safe_cast(pa_vl_cl as float64) valor_complemento_local,
+ safe_cast(pa_vl_inc as float64) valor_incremento,
+ case
+ when pa_motsai = '00' then '0' else cast(ltrim(pa_motsai, '0') as string)
+ end as motivo_saida_paciente,
+ -- - em uf e muicipio replace de
+ safe_cast(
+ regexp_replace(pa_ufdif, '9{1}', '') as int64
+ ) indicador_uf_residencia_paciente,
+ safe_cast(
+ regexp_replace(pa_mndif, '9{1}', '') as int64
+ ) indicador_municipio_residencia_paciente,
+ --
+ safe_cast(
+ case
+ when pa_incout = '0000' then '0' else regexp_replace(pa_incout, '[^0]', '1')
+ end as int64
+ ) as indicador_incrementos_outros,
+ safe_cast(
+ case
+ when pa_incurg = '0000' then '0' else regexp_replace(pa_incurg, '[^0]', '1')
+ end as int64
+ ) as indicador_incrementos_urgencia,
+ safe_cast(pa_obito as int64) indicador_obito,
+ safe_cast(pa_encerr as int64) indicador_encerramento,
+ safe_cast(pa_perman as int64) indicador_permanencia,
+ safe_cast(pa_alta as int64) indicador_alta,
+ safe_cast(pa_transf as int64) indicador_transferencia,
+ safe_cast(pa_indica as string) tipo_situacao_produzida,
+ safe_cast(pa_flqt as string) tipo_erro_quantidade_produzida,
+ safe_cast(pa_fler as string) flag_erro_corpo_apac,
+from sia_add_municipios
+{% 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 %}
diff --git a/models/br_ms_sia/schema.yml b/models/br_ms_sia/schema.yml
new file mode 100644
index 00000000..668c3598
--- /dev/null
+++ b/models/br_ms_sia/schema.yml
@@ -0,0 +1,254 @@
+---
+version: 2
+models:
+ - name: br_ms_sia__producao_ambulatorial
+ description: Esta tabela contém o registro de processos ambulatorias realizados
+ em todo sistema de saúde nacional - público e privado.
+ tests:
+ - dbt_utils.unique_combination_of_columns:
+ combination_of_columns:
+ - ano
+ - mes
+ - id_estabelecimento_cnes
+ - instrumento_registro
+ - id_processamento_ambulatorial
+ - id_cbo_2002
+ - 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
+ - name: sigla_uf
+ description: Sigla da Unidade da Federação
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__uf')
+ field: sigla
+ - name: id_municipio
+ description: ID Município - IBGE 7 Dígitos
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__municipio')
+ field: id_municipio
+ - name: id_estabelecimento_cnes
+ description: ID Estabelecimento - CNES
+ - name: natureza_juridica_estabelecimento
+ description: Natureza jurídica do operador do estabelecimento
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__natureza_juridica')
+ field: natureza_juridica.id_natureza_juridica
+ - name: tipo_unidade
+ description: Tipo de estabelecimento
+ - name: tipo_prestador
+ description: Tipo de Prestador
+ - name: cnpj_estabelecimento_executante
+ description: CNPJ do Estabelecimento executante
+ - name: cnpj_mantenedora_estabalecimento
+ description: CNPJ da Mantenedora do Estabelecimento
+ - name: cnpj_orgao
+ description: CNPJ do órgão que recebeu pela produção por cessão de crédito
+ - name: tipo_mantenedor_estabelecimento
+ description: Tipo de manutenção do estabelecimento
+ - name: id_gestao
+ description: ID do tipo de gestão do estabelecimento
+ - name: tipo_gestao
+ description: Tipo de gestão do estabelecimento
+ - name: tipo_regra_contratual
+ description: Código do tipo da regra contratual do estabalecimento
+ - name: id_equipe
+ description: Código de Identificação Nacional de Equipes10, para registrar
+ a atuação das equipes na execução de ações de saúde
+ - name: id_servico_especializado
+ description: Código do Serviço Especializado / Classificação CBO (de acordo
+ com o CNES)
+ - name: id_processamento_ambulatorial
+ description: Código de Procedimento Ambulatorial
+ - name: id_cns_executante
+ description: Identificador Cartão Nacional de Saúde (CNS) do profissional
+ de saúde executante
+ - name: id_cbo_2002
+ description: Identificador da classificação de Ocupação Brasileira do Profissional
+ (OCB)
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__cbo_2002')
+ field: cbo_2002.cbo_2002
+ - name: codigo_autorizacao_apac
+ description: Código da Autorização de Procedimento Ambulatorial de Alta complexidade
+ (APAC) e/ou custo ou número de autorização do Boletim de Produção Ambulatorial
+ Individualizado (BPA-I), conforme o caso. No BPA-I não é obrigatório, portanto,
+ não é criticado
+ - name: codigo_ocorrencia
+ description: Código de ocorrência
+ - name: tipo_financiamento_producao
+ description: Tipo de Financiamento da produção
+ - name: subtipo_financiamento_producao
+ description: Subtipo de Financiamento da produção
+ - name: ano_processamento_procedimento
+ description: Ano de processamento/movimento
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_data_tempo__ano')
+ field: ano.ano
+ - name: mes_processamento_procedimento
+ description: Mês de processamento/movimento
+ - name: ano_realizacao_procedimento
+ description: Ano da realização do procedimento/competência
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_data_tempo__ano')
+ field: ano.ano
+ - name: mes_realizacao_procedimento
+ description: Mês da realização do procedimento/competência
+ - name: cid_principal_categoria
+ description: Identificador da categoria da Classificação Internacional de
+ Doenças (CID10) principal da Autorização de Procedimento Ambulatorial de
+ Alta complexidade (APAC) ou do Boletim de Produção Ambulatorial Individualizado
+ (BPA-I)
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__cid_10')
+ field: categoria
+ - name: cid_principal_subcategoria
+ description: Identificador da subcategoria da Classificação Internacional
+ de Doenças (CID10) principal da Autorização de Procedimento Ambulatorial
+ de Alta complexidade (APAC) ou do Boletim de Produção Ambulatorial Individualizado
+ (BPA-I)
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__cid_10')
+ field: subcategoria
+ - name: cid_secundario_categoria
+ description: Identificador da categoria da Classificação Internacional de
+ Doenças (CID10) secundário da Autorização de Procedimento Ambulatorial de
+ Alta complexidade (APAC)
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__cid_10')
+ field: categoria
+ - name: cid_secundario_subcategoria
+ description: Identificador da subcategoria da Classificação Internacional
+ de Doenças (CID10) secundário da Autorização de Procedimento Ambulatorial
+ de Alta complexidade (APAC)
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__cid_10')
+ field: subcategoria
+ - name: cid_causas_associadas_categoria
+ description: Identificador da categoria da Classificação Internacional de
+ Doenças (CID10) causas associadas a Autorização de Procedimento Ambulatorial
+ de Alta complexidade (APAC)
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__cid_10')
+ field: categoria
+ - name: cid_causas_associadas_subcategoria
+ description: Identificador da subcategoria da Classificação Internacional
+ de Doenças (CID10) causas associadas a Autorização de Procedimento Ambulatorial
+ de Alta complexidade (APAC)
+ tests:
+ - relationships:
+ to: ref('br_bd_diretorios_brasil__cid_10')
+ field: subcategoria
+ - name: carater_atendimento
+ description: Caráter de atendimento (APAC ou BPA-I)
+ - name: id_paciente_proto
+ description: Em casos como procedimento BPA em que não se tem identificação
+ do paciente a variável é uma concatenação da Unidade da Federação, do município
+ de residência do paciente ou do estabelecimento de saúde
+ - name: sexo_paciente
+ description: Sexo do paciente
+ - name: idade_paciente
+ description: Idade do paciente
+ - name: raca_cor_paciente
+ description: Raça/cor do paciente
+ - name: etnia_paciente
+ description: Etnia do paciente
+ - name: idade_minima_paciente
+ description: Idade mínima do paciente para realização do procedimento
+ - name: idade_maxima_paciente
+ description: Idade máxima do paciente para realização do procedimento
+ - name: compatibilidade_idade_procedimento
+ description: Compatibilidade entre a idade do paciênte e faixa de idade necessária
+ para realização do procedimento. As definições tem origem no SIGTAP - Sistema
+ de Gerenciamento da Tabela de Procedimentos, Medicamentos e OPM do SUS.
+ - name: complexidade_procedimento
+ description: Complexidade do Procedimento
+ - name: instrumento_registro
+ description: Tipo de Instrumento de registro
+ - name: valor_aprovado_procedimento
+ description: Valor aprovado do procedimento
+ - name: quantidade_aprovada_procedimento
+ description: Quantidade aprovada do procedimento
+ - name: valor_produzido_procedimento
+ description: Valor produzido (apresentado) do procedimento
+ - name: quantidade_produzida_procedimento
+ description: Quantidade produzida (apresentada) do procedimento
+ - name: valor_unitario_procedimento_vpa
+ description: Valor Unitário do Procedimento da Tabela VPA
+ - name: valor_unitario_procedimento_sigtap
+ description: Valor unitário do procedimento na tabela SIGTAP - Sistema de
+ Gerenciamento da Tabela de Procedimentos, Medicamentos e OPM do SUS.
+ - name: diferenca_valor_unitario
+ description: Diferença do Valor Unitário do procedimento praticado na Tabela
+ Unificada com Valor Unitário praticado pelo Gestor da Produção multiplicado
+ pela Quantidade Aprovada
+ - name: valor_complemento_federal
+ description: Valor do complemento federal
+ - name: valor_complemento_local
+ description: Valor do complemento local
+ - name: valor_incremento
+ description: Valor do Incremento
+ - name: motivo_saida_paciente
+ description: Motivo de saída do paciente
+ - name: indicador_uf_residencia_paciente
+ description: Indica se a UF de residência do paciente é diferente da UF de
+ localização do estabelecimento
+ - name: indicador_municipio_residencia_paciente
+ description: Indica se o município de residência do paciente é diferente do
+ município de localização do estabelecimento
+ - name: indicador_incrementos_outros
+ description: Indica a ocorrência de outros incrementos
+ - name: indicador_incrementos_urgencia
+ description: Indica a ocorrência de incrementos de urgência
+ - name: indicador_obito
+ description: Indicador de óbito relativo ao Procedimento Ambulatorial de Alta
+ complexidade e/ou custo (APAC)
+ - name: indicador_encerramento
+ description: Indicador de encerramento relativo ao Procedimento Ambulatorial
+ de Alta complexidade e/ou custo (APAC)
+ - name: indicador_permanencia
+ description: Indicador de permanência relativo ao Procedimento Ambulatorial
+ de Alta complexidade e/ou custo (APAC)
+ - name: indicador_alta
+ description: Indicador de alta relativo ao Procedimento Ambulatorial de Alta
+ complexidade e/ou custo (APAC)
+ - name: indicador_transferencia
+ description: Indicador de transferência relativo ao Procedimento Ambulatorial
+ de Alta complexidade e/ou custo (APAC)
+ - name: tipo_situacao_produzida
+ description: Indicativo de situação da produção produzida
+ - name: tipo_erro_quantidade_produzida
+ description: Tipo de erro de Quantidade Produzida
+ - name: flag_erro_corpo_apac
+ description: FLAG de erro de corpo da APAC
+ - name: br_ms_sia__dicionario
+ description: Dicionário
+ columns:
+ - name: id_tabela
+ description: ID Tabela
+ - name: nome_coluna
+ description: Nome da coluna
+ - name: chave
+ description: Chave
+ - name: cobertura_temporal
+ description: Cobertura temporal
+ - name: valor
+ description: Valor