From c9bcfcae3205029da61496e3fdc67bdc55ff04f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Wed, 22 May 2024 11:55:37 -0300 Subject: [PATCH 1/6] feat: add aihs_reduzidas --- .../br_ms_sih/br_ms_sih__aihs_reduzidas.sql | 325 +++++++++++++++++ models/br_ms_sih/schema.yml | 329 ++++++++++++++++++ 2 files changed, 654 insertions(+) create mode 100644 models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql diff --git a/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql b/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql new file mode 100644 index 00000000..b9b9a49d --- /dev/null +++ b/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql @@ -0,0 +1,325 @@ +{{ + config( + alias="aihs_reduzidas", + schema="br_ms_sih", + materialized="incremental", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2008, "end": 2024, "interval": 1}, + }, + cluster_by=["mes", "sigla_uf"], + ) +}} +select + safe_cast(ano as int64) ano, + safe_cast(mes as int64) mes, + safe_cast(sigla_uf as int64) sigla_uf, + safe_cast(n_aih as int64) id_aih, + safe_cast(ident as int64) tipo_aih, + safe_cast(gestor_cod as int64) motivo_autorizacao_aih, + safe_cast(ltrim(sequencia) as string) sequencial_aih, + safe_cast(espec as int64) especialidade_leito, + safe_cast(cobranca as int64) motivo_saida, + safe_cast(marca_uti as int64) tipo_uti, + safe_cast(marca_uci as int64) tipo_uci, + safe_cast(car_int as int64) carater_internacao, + safe_cast( + format_date('%Y-%m-%d', safe.parse_date('%Y%m%d', dt_inter)) as date + ) data_internacao, + safe_cast( + format_date('%Y-%m-%d', safe.parse_date('%Y%m%d', dt_saida)) as date + ) data_saida, + safe_cast(munic_mov as string) id_municipio_estabelecimento, + safe_cast(cnes as string) id_estabelecimento_cnes, + safe_cast(nat_jur as int64) natureza_juridica_estabelecimento, + safe_cast(natureza as int64) natureza_juridica_estabelecimento_ate_2012, + safe_cast(regexp_replace(cgc_hosp, r'^0', '') as string) cnpj_estabelecimento, + safe_cast(gestao as string) tipo_gestao_estabelecimento, + safe_cast( + trim( + case + when trim(uf_zi) like '%0000%' + then null + when trim(uf_zi) like '%9999%' + then null + else uf_zi + end + ) as string + ) id_municipio_gestor, + safe_cast(gestor_tp as string) tipo_gestor, + safe_cast(gestor_cpf as string) cpf_gestor, + safe_cast( + format_date('%Y-%m-%d', safe.parse_date('%Y%m%d', gestor_dt)) as date + ) data_autorizacao_gestor, + safe_cast(regexp_replace(cnpj_mant, r'^0', '') as string) cnpj_mantenedora, + safe_cast(munic_res as string) id_municipio_paciente, + safe_cast(cep as string) cep_paciente, + safe_cast( + format_date('%Y-%m-%d', safe.parse_date('%Y%m%d', nasc)) as date + ) data_nascimento_paciente, + safe_cast(idade as int64) idade_paciente, + safe_cast(cod_idade as string) unidade_medida_idade_paciente, + case + safe_cast(sexo as int64) + when 0 + then 'Ignorado' + when 9 + then 'Não definida' + when 1 + then 'Masculino' + when 2 + then 'Feminino' + when 3 + then 'Feminino' + end as sexo_paciente, + case + safe_cast(raca_cor as int64) + when 0 + then 'Sem Informação' + when 99 + then 'Sem Informação' + when 1 + then 'Branca' + when 2 + then 'Preta' + when 3 + then 'Parda' + when 4 + then 'Amarela' + when 5 + then 'Indígena' + end as raca_cor_paciente, + safe_cast(etnia as int64) etnia_paciente, + safe_cast(nacional as int64) codigo_nacionalidade_paciente, + safe_cast( + trim(case when trim(cbor) = '000000' then null else cbor end) as string + ) cbo_2002_paciente, + safe_cast(homonimo as int64) indicador_paciente_homonimo, + safe_cast(instru as int64) grau_instrucao_paciente, + safe_cast(num_filhos as int64) quantidade_filhos_paciente, + safe_cast(cnaer as string) id_acidente_trabalho, + safe_cast(vincprev as int64) indicador_vinculo_previdencia, + safe_cast(insc_pn as string) id_gestante_pre_natal, + safe_cast(gestrisco as int64) indicador_gestante_risco, + safe_cast(contracep1 as int64) tipo_contraceptivo_principal, + safe_cast(contracep2 as int64) tipo_contraceptivo_secundario, + safe_cast(seq_aih5 as string) sequencial_longa_permanencia, + safe_cast(regexp_replace(proc_solic, r'^0', '') as int64) procedimento_solicitado, + safe_cast(regexp_replace(proc_rea, r'^0', '') as int64) procedimento_realizado, + safe_cast(infehosp as int64) indicador_infeccao_hospitalar, + safe_cast(complex as int64) complexidade, + safe_cast(ind_vdrl as string) indicador_exame_vdrl, + safe_cast(financ as string) tipo_financiamento, + safe_cast(faec_tp as string) subtipo_financiamento, + safe_cast(regct as string) regra_contratual, + safe_cast( + trim( + case when length(trim(cid_notif)) = 3 then cid_notif else null end + ) as string + ) as cid_notificacao_categoria, + safe_cast( + trim( + case + when length(trim(cid_notif)) = 4 and trim(cid_notif) not like '0000' + then cid_notif + else null + end + ) as string + ) cid_notificacao_subcategoria, + safe_cast( + trim(case when length(trim(cid_asso)) = 3 then cid_asso else null end) as string + ) as cid_causa_categoria, + safe_cast( + trim( + case + when length(trim(cid_asso)) = 4 and trim(cid_asso) not like '0000' + then cid_asso + else null + end + ) as string + ) as cid_causa_subcategoria, + safe_cast( + trim( + case when length(trim(diag_princ)) = 3 then diag_princ else null end + ) as string + ) as cid_principal_categoria, + safe_cast( + trim( + case + when length(trim(diag_princ)) = 4 and trim(diag_princ) not like '0000' + then diag_princ + else null + end + ) as string + ) as cid_principal_subcategoria, + safe_cast( + trim( + case when length(trim(diag_secun)) = 3 then diag_secun else null end + ) as string + ) as cid_secundario_categoria, + safe_cast( + trim( + case + when length(trim(diag_secun)) = 4 and trim(diag_secun) not like '0000' + then diag_secun + else null + end + ) as string + ) as cid_secundario_subcategoria, + safe_cast( + trim(case when length(trim(diagsec1)) = 3 then diagsec1 else null end) as string + ) as cid_diagnostico_secundario_1_categoria, + safe_cast( + trim( + case + when length(trim(diagsec1)) = 4 and trim(diagsec1) not like '0000' + then diagsec1 + else null + end + ) as string + ) as cid_diagnostico_secundario_1_subcategoria, + safe_cast( + trim(case when length(trim(diagsec2)) = 3 then diagsec2 else null end) as string + ) as cid_diagnostico_secundario_2_categoria, + safe_cast( + trim( + case + when length(trim(diagsec2)) = 4 and trim(diagsec2) not like '0000' + then diagsec2 + else null + end + ) as string + ) as cid_diagnostico_secundario_2_subcategoria, + safe_cast( + trim(case when length(trim(diagsec3)) = 3 then diagsec3 else null end) as string + ) as cid_diagnostico_secundario_3_categoria, + safe_cast( + trim( + case + when length(trim(diagsec3)) = 4 and trim(diagsec3) not like '0000' + then diagsec3 + else null + end + ) as string + ) as cid_diagnostico_secundario_3_subcategoria, + safe_cast( + trim(case when length(trim(diagsec4)) = 3 then diagsec4 else null end) as string + ) as cid_diagnostico_secundario_4_categoria, + safe_cast( + trim( + case + when length(trim(diagsec4)) = 4 and trim(diagsec4) not like '0000' + then diagsec4 + else null + end + ) as string + ) as cid_diagnostico_secundario_4_subcategoria, + safe_cast( + trim(case when length(trim(diagsec5)) = 3 then diagsec5 else null end) as string + ) as cid_diagnostico_secundario_5_categoria, + safe_cast( + trim( + case + when length(trim(diagsec5)) = 4 and trim(diagsec5) not like '0000' + then diagsec5 + else null + end + ) as string + ) as cid_diagnostico_secundario_5_subcategoria, + safe_cast( + trim(case when length(trim(diagsec6)) = 3 then diagsec6 else null end) as string + ) as cid_diagnostico_secundario_6_categoria, + safe_cast( + trim( + case + when length(trim(diagsec6)) = 4 and trim(diagsec6) not like '0000' + then diagsec6 + else null + end + ) as string + ) as cid_diagnostico_secundario_6_subcategoria, + safe_cast( + trim(case when length(trim(diagsec7)) = 3 then diagsec7 else null end) as string + ) as cid_diagnostico_secundario_7_categoria, + safe_cast( + trim( + case + when length(trim(diagsec7)) = 4 and trim(diagsec7) not like '0000' + then diagsec7 + else null + end + ) as string + ) as cid_diagnostico_secundario_7_subcategoria, + safe_cast( + trim(case when length(trim(diagsec8)) = 3 then diagsec8 else null end) as string + ) as cid_diagnostico_secundario_8_categoria, + safe_cast( + trim( + case + when length(trim(diagsec8)) = 4 and trim(diagsec8) not like '0000' + then diagsec8 + else null + end + ) as string + ) as cid_diagnostico_secundario_8_subcategoria, + safe_cast( + trim(case when length(trim(diagsec9)) = 3 then diagsec9 else null end) as string + ) as cid_diagnostico_secundario_9_categoria, + safe_cast( + trim( + case + when length(trim(diagsec9)) = 4 and trim(diagsec9) not like '0000' + then diagsec9 + else null + end + ) as string + ) as cid_diagnostico_secundario_9_subcategoria, + safe_cast(tpdisec1 as int64) tipo_diagnostico_secundario_1, + safe_cast(tpdisec2 as int64) tipo_diagnostico_secundario_2, + safe_cast(tpdisec3 as int64) tipo_diagnostico_secundario_3, + safe_cast(tpdisec4 as int64) tipo_diagnostico_secundario_4, + safe_cast(tpdisec5 as int64) tipo_diagnostico_secundario_5, + safe_cast(tpdisec6 as int64) tipo_diagnostico_secundario_6, + safe_cast(tpdisec7 as int64) tipo_diagnostico_secundario_7, + safe_cast(tpdisec8 as int64) tipo_diagnostico_secundario_8, + safe_cast(tpdisec9 as int64) tipo_diagnostico_secundario_9, + safe_cast( + trim( + case when length(trim(cid_morte)) = 3 then cid_morte else null end + ) as string + ) as cid_morte_categoria, + safe_cast( + trim( + case + when length(trim(cid_morte)) = 4 and trim(diagsec9) not like '0000' + then cid_morte + else null + end + ) as string + ) as cid_morte_subcategoria, + safe_cast(morte as int64) indicador_obito, + safe_cast(remessa as string) remessa, + safe_cast(aud_just as string) justificativa_auditor, + safe_cast(sis_just as string) justificativa_estabelecimento, + safe_cast(uti_mes_to as int64) quantidade_dias_uti_mes, + safe_cast(uti_int_to as int64) quantidade_dias_unidade_intermediaria, + safe_cast(diar_acom as int64) quantidade_dias_acompanhate, + safe_cast(qt_diarias as int64) quantidade_dias, + safe_cast(dias_perm as int64) quantidade_dias_permanencia, + safe_cast(val_sh_fed as float64) valor_complemento_federal_servicos_hospitalares, + safe_cast(val_sp_fed as float64) valor_complemento_federal_servicos_profissionais, + safe_cast(val_sh_ges as float64) valor_complemento_gestor_servicos_hospitalares, + safe_cast(val_sp_ges as float64) valor_complemento_gestor_servicos_profissionais, + safe_cast(val_uci as float64) valor_uci, + safe_cast(val_sh as float64) valor_serivico_hospitalar, + safe_cast(val_sp as float64) valor_servico_profissional, + safe_cast(val_uti as float64) valor_uti, + safe_cast(us_tot as float64) valor_dolar, + safe_cast(val_tot as float64) valor_aih, +from `basedosdados-dev.br_ms_sih_staging.aihs_reduzidas` as t +{% 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_sih/schema.yml b/models/br_ms_sih/schema.yml index d55d8d44..16b4a871 100644 --- a/models/br_ms_sih/schema.yml +++ b/models/br_ms_sih/schema.yml @@ -159,3 +159,332 @@ models: description: Cobertura Temporal - name: valor description: Valor + - name: br_ms_sih__aihs_reduzidas + description: Movimento de AIH - Arquivos Reduzidos + tests: + - custom_dictionary_coverage: + columns_covered_by_dictionary: + - tipo_aih + - motivo_autorizacao_aih + - motivo_saida + - tipo_uti + - carater_internacao + - natureza_juridica_estabelecimento_ate_2012 + - etnia_paciente + - grau_instrucao_paciente + - indicador_vinculo_previdencia + - indicador_gestante_risco + - procedimento_solicitado + - procedimento_realizado + - indicador_infeccao_hospitalar + - complexidade + dictionary_model: ref('br_ms_sih__dicionario') + columns: + - name: ano + description: Ano de processamento da AIH, no formato aaaa + tests: + - not_null: + config: + where: __most_recent_year_month__ + - name: mes + description: Mês de processamento da AIH, no formato mm + tests: + - not_null: + config: + where: __most_recent_year_month__ + - name: id_aih + description: Número da AIH. + tests: + - not_null: + config: + where: __most_recent_year_month__ + - name: tipo_aih + description: Identificação do tipo da AIH. + - name: motivo_autorizacao_aih + description: Motivo de autorização da AIH pelo Gestor. + - name: sequencial_aih + description: Sequencial da AIH na remessa. + - name: especialidade_leito + description: Especialidade do Leito + - name: motivo_saida + description: Motivo de Saída/Permanência + - name: tipo_uti + description: Indica qual o tipo de UTI utilizada pelo paciente. + - name: tipo_uci + description: Tipo de Unidade de Cuidados Intensivos (UCI) utilizada pelo paciente. + - name: carater_internacao + description: Caráter da internação. + - name: data_internacao + description: Data de internação no formato aaammdd. + - name: data_saida + description: Data de saída, no formato aaaammdd. + - name: id_municipio_estabelecimento + description: ID Município IBGE 6 dígitos do estabelecimento. + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio_6 + config: + where: __most_recent_year_month__ + - name: id_estabelecimento_cnes + description: Código CNES do hospital. + - name: natureza_juridica_estabelecimento + description: Natureza jurídica do estabelecimento, conforme a Comissão Nacional + de Classificação - CONCLA + - name: natureza_juridica_estabelecimento_ate_2012 + description: Natureza jurídica do hospital (com conteúdo até maio/12). + Era utilizada a classificação de Regime e Natureza. + - name: cnpj_estabelecimento + description: CNPJ do estabelecimento. + - name: tipo_gestao_estabelecimento + description: Indica o tipo de gestão do hospital. + - name: id_municipio_gestor + description: ID Município IBGE 6 dígitos do município gestor + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio_6 + - name: tipo_gestor + description: Tipo de gestor. + - name: cpf_gestor + description: Número do CPF do gestor. + - name: data_autorizacao_gestor + description: Data da autorização dada pelo gestor (aaaammdd). + - name: cnpj_mantenedora + description: CNPJ da mantenedora. + - name: id_municipio_paciente + description: ID Município IBGE 6 dígitos do município de Residência do Paciente + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio_6 + - name: cep_paciente + description: CEP do paciente. + - name: data_nascimento_paciente + description: Data de nascimento do paciente (aaaammdd). + - name: idade_paciente + description: Idade + - name: unidade_medida_idade_paciente + description: Unidade de medida da idade + - name: sexo_paciente + description: Sexo do paciente. + - name: raca_cor_paciente + description: Raça/Cor do paciente. + - name: etnia_paciente + description: Etnia do paciente, se raça cor for indígena. + - name: codigo_nacionalidade_paciente + description: Código da nacionalidade do paciente + - name: cbo_2002_paciente + description: Ocupação do paciente, segundo a Classificação Brasileira de Ocupações + – CBO. + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__cbo_2002') + field: cbo_2002.cbo_2002 + config: + where: __most_recent_year_month__ + - name: indicador_paciente_homonimo + description: Indicador se o paciente da AIH é homônimo do paciente de outra + AIH. + - name: grau_instrucao_paciente + description: Grau de instrução do paciente. + - name: quantidade_filhos_paciente + description: Número de filhos do paciente. + - name: id_acidente_trabalho + description: Código de acidente de trabalho. + - name: indicador_vinculo_previdencia + description: Vínculo com a previdência. + - name: id_gestante_pre_natal + description: Número da gestante no pré-natal. + - name: indicador_gestante_risco + description: Indicador se é gestante de risco. + - name: tipo_contraceptivo_principal + description: Tipo de contraceptivo utilizado. + - name: tipo_contraceptivo_secundario + description: Segundo tipo de contraceptivo utilizado. + - name: sequencial_longa_permanencia + description: Sequencial de longa permanência (AIH tipo 5). + - name: procedimento_solicitado + description: Procedimento solicitado + - name: procedimento_realizado + description: Procedimento realizado. + - name: indicador_infeccao_hospitalar + description: Status de infecção hospitalar. + - name: complexidade + description: Complexidade. + - name: indicador_exame_vdrl + description: Indica exame VDRL. + - name: tipo_financiamento + description: Tipo de financiamento. + - name: subtipo_financiamento + description: Subtipo de financiamento FAEC. + - name: regra_contratual + description: Regra contratual. + - name: cid_notificacao_categoria + description: Categoria do CID de Notificação. + - name: cid_notificacao_subcategoria + description: Subcategoria do CID de Notificação. + # tests: + # - 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: cid_causa_categoria + description: Categoria do CID de causa. + - name: cid_causa_subcategoria + description: Subcategoria do CID de causa. + # tests: + # - 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: cid_principal_categoria + description: Código da categoria do diagnóstico principal (CID10). + - name: cid_principal_subcategoria + description: Código da subcategoria diagnóstico principal (CID10). + # tests: + # - 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: cid_secundario_categoria + description: Código da categoria do diagnostico secundário (CID10). Preenchido com zeros + a partir de 201501. + - name: cid_secundario_subcategoria + description: Código da subcategoria do diagnostico secundário (CID10). Preenchido com zeros + a partir de 201501. + # tests: + # - 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: cid_diagnostico_secundario_1_categoria + description: Categoria do CID do Diagnóstico secundário 1. + - name: cid_diagnostico_secundario_1_subcategoria + description: Categoria do CID do Diagnóstico secundário 1. + # tests: + # - 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: cid_diagnostico_secundario_2_categoria + description: Categoria do CID do Diagnóstico secundário 2. + - name: cid_diagnostico_secundario_2_subcategoria + description: Categoria do CID do Diagnóstico secundário 2. + - name: cid_diagnostico_secundario_3_categoria + description: Categoria do CID do Diagnóstico secundário 3. + - name: cid_diagnostico_secundario_3_subcategoria + description: Categoria do CID do Diagnóstico secundário 3. + - name: cid_diagnostico_secundario_4_categoria + description: Categoria do CID do Diagnóstico secundário 4. + - name: cid_diagnostico_secundario_4_subcategoria + description: Categoria do CID do Diagnóstico secundário 4. + - name: cid_diagnostico_secundario_5_categoria + description: Categoria do CID do Diagnóstico secundário 5. + - name: cid_diagnostico_secundario_5_subcategoria + description: Categoria do CID do Diagnóstico secundário 5. + - name: cid_diagnostico_secundario_6_categoria + description: Categoria do CID do Diagnóstico secundário 6. + - name: cid_diagnostico_secundario_6_subcategoria + description: Categoria do CID do Diagnóstico secundário 6. + - name: cid_diagnostico_secundario_7_categoria + description: Categoria do CID do Diagnóstico secundário 7. + - name: cid_diagnostico_secundario_7_subcategoria + description: Categoria do CID do Diagnóstico secundário 7. + - name: cid_diagnostico_secundario_8_categoria + description: Categoria do CID do Diagnóstico secundário 8. + - name: cid_diagnostico_secundario_8_subcategoria + description: Categoria do CID do Diagnóstico secundário 8. + - name: cid_diagnostico_secundario_9_categoria + description: Categoria do CID do Diagnóstico secundário 9. + - name: cid_diagnostico_secundario_9_subcategoria + description: Categoria do CID do Diagnóstico secundário 9. + - name: tipo_diagnostico_secundario_1 + description: Tipo de diagnóstico secundário 1. + - name: tipo_diagnostico_secundario_2 + description: Tipo de diagnóstico secundário 2 + - name: tipo_diagnostico_secundario_3 + description: Tipo de diagnóstico secundário 3 + - name: tipo_diagnostico_secundario_4 + description: Tipo de diagnóstico secundário 4 + - name: tipo_diagnostico_secundario_5 + description: Tipo de diagnóstico secundário 5 + - name: tipo_diagnostico_secundario_6 + description: Tipo de diagnóstico secundário 6 + - name: tipo_diagnostico_secundario_7 + description: Tipo de diagnóstico secundário 7 + - name: tipo_diagnostico_secundario_8 + description: Tipo de diagnóstico secundário 8 + - name: tipo_diagnostico_secundario_9 + description: Tipo de diagnóstico secundário 9 + - name: cid_morte_categoria + description: Categoria do CID da morte. + - name: cid_morte_subcategoria + description: Subcategoria do CID da morte. + # tests: + # - 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: indicador_obito + description: Indica Óbito + - name: remessa + description: Número da remessa. + - name: justificativa_auditor + description: Justificativa do auditor para aceitação da AIH sem o número do + Cartão Nacional de Saúde. + - name: justificativa_estabelecimento + description: Justificativa do estabelecimento para aceitação da AIH sem o + número do Cartão Nacional de Saúde. + - name: quantidade_dias_uti_mes + description: Quantidade de dias de UTI no mês. + - name: quantidade_dias_unidade_intermediaria + description: Quantidade de diárias em unidade intermediaria. + - name: quantidade_dias_acompanhate + description: Quantidade de diárias de acompanhante + - name: quantidade_dias + description: Quantidade de diárias + - name: quantidade_dias_permanencia + description: Dias de permanência. + - name: valor_complemento_federal_servicos_hospitalares + description: Valor do complemento federal de serviços hospitalares. Está incluído + no valor total da AIH. + - name: valor_complemento_federal_servicos_profissionais + description: Valor do complemento federal de serviços profissionais. Está + incluído no valor total da AIH. + - name: valor_complemento_gestor_servicos_hospitalares + description: Valor do complemento do gestor (estadual ou municipal) de serviços + hospitalares. Está incluído no valor total da AIH. + - name: valor_complemento_gestor_servicos_profissionais + description: Valor do complemento do gestor (estadual ou municipal) de serviços + profissionais. Está incluído no valor total da AIH. + - name: valor_uci + description: Valor de Unidade de Cuidados Intensivos (UCI). + - name: valor_serivico_hospitalar + description: Valor de serviços hospitalares + - name: valor_servico_profissional + description: Valor de serviços profissionais + - name: valor_uti + description: Valor de UTI. + - name: valor_dolar + description: Valor total, em dólar. + - name: valor_aih + description: Valor total da AIH. From dbcbc0229398d115887e42e406eedb2a3b4d9455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Wed, 22 May 2024 11:57:47 -0300 Subject: [PATCH 2/6] fix: fix project name --- models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql b/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql index b9b9a49d..f868bb9d 100644 --- a/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql +++ b/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql @@ -317,7 +317,7 @@ select safe_cast(val_uti as float64) valor_uti, safe_cast(us_tot as float64) valor_dolar, safe_cast(val_tot as float64) valor_aih, -from `basedosdados-dev.br_ms_sih_staging.aihs_reduzidas` as t +from `basedosdados-staging.br_ms_sih_staging.aihs_reduzidas` as t {% if is_incremental() %} where date(cast(ano as int64), cast(mes as int64), 1) From 6a5a59fb36b1c613a67b8a738f5cf50c61036b8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Wed, 22 May 2024 19:10:53 -0300 Subject: [PATCH 3/6] feat: add aihs_reduzidas v.1 --- .../br_bd_diretorios_brasil__cid_10.sql | 19 ++ models/br_bd_diretorios_brasil/schema.yml | 27 +++ models/br_ms_sih/schema.yml | 185 ++++++++---------- 3 files changed, 129 insertions(+), 102 deletions(-) create mode 100644 models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cid_10.sql diff --git a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cid_10.sql b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cid_10.sql new file mode 100644 index 00000000..2c36c533 --- /dev/null +++ b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cid_10.sql @@ -0,0 +1,19 @@ +{{ + config( + alias="cid_10", + schema="br_bd_diretorios_brasil", + materialized="table", + ) +}} + +select + safe_cast(subcategoria as string) subcategoria, + safe_cast(descricao_subcategoria as string) descricao_subcategoria, + safe_cast(categoria as string) categoria, + safe_cast(descricao_categoria as string) descricao_categoria, + safe_cast(capitulo as string) capitulo, + safe_cast(descricao_capitulo as string) descricao_capitulo, + safe_cast(causa_violencia as int64) causa_violencia, + safe_cast(causa_overdose as int64) causa_overdose, + safe_cast(cid_datasus as int64) cid_datasus, +from `basedosdados-dev.br_bd_diretorios_brasil_staging.cid_10` as t diff --git a/models/br_bd_diretorios_brasil/schema.yml b/models/br_bd_diretorios_brasil/schema.yml index 19377247..e35046dc 100644 --- a/models/br_bd_diretorios_brasil/schema.yml +++ b/models/br_bd_diretorios_brasil/schema.yml @@ -334,3 +334,30 @@ models: description: ID da Concentração Urbana - name: nome_concentracao_urbana description: Nome da Concentração Urbana + - name: br_bd_diretorios_brasil__cid_10 + description: Diretório da Classificação Internacional de Doenças (CID) 10. + columns: + - name: subcategoria + description: Subcategoria da CID-10 + - name: descricao_subcategoria + description: Descrição da Subcategoria da CID-10 + - name: categoria + description: Categoria da CID-10 + - name: descricao_categoria + description: Descrição da Categoria da CID-10 + - name: capitulo + description: Capítulo da CID-10 + - name: descricao_capitulo + description: Descrição do Capítulo da CID-10 + - name: causa_violencia + description: Causa - Violência (Categorias W32 W33 W34 X85 X86 X87 X88 X89 + X90 X91 X92 X93 X94 X95 X96 X97 X98 X99 Y00 Y01 Y02 Y03 Y04 Y05 Y06 Y07 + Y08 Y09 Y10 Y11 Y12 Y13 Y14 Y15 Y16 Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24 Y25 + Y26 Y27 Y28 Y29 Y30 Y31 Y32 Y33 Y34 Y35 Y87 Y89) + - name: causa_overdose + description: Causa - Overdose (Categorias F10 F11 F12 F14 F16 F19 T40 T41 + T42 T43 T44 T45 T46 T47 T48 T49 T50 X42 X43 X44 X45 X46 X47 X48 X49 X60 + X61 X62 X63 X64 X65 X66 X67 X68 X69 Y12 Y13 Y14 Y15 Y16 Y49 Y50 Y51 Z64 + Z65) + - name: cid_datasus + description: Indica se a origem do CID-10 vem do DATASUS diff --git a/models/br_ms_sih/schema.yml b/models/br_ms_sih/schema.yml index 16b4a871..564eab1c 100644 --- a/models/br_ms_sih/schema.yml +++ b/models/br_ms_sih/schema.yml @@ -161,43 +161,25 @@ models: description: Valor - name: br_ms_sih__aihs_reduzidas description: Movimento de AIH - Arquivos Reduzidos - tests: - - custom_dictionary_coverage: - columns_covered_by_dictionary: - - tipo_aih - - motivo_autorizacao_aih - - motivo_saida - - tipo_uti - - carater_internacao - - natureza_juridica_estabelecimento_ate_2012 - - etnia_paciente - - grau_instrucao_paciente - - indicador_vinculo_previdencia - - indicador_gestante_risco - - procedimento_solicitado - - procedimento_realizado - - indicador_infeccao_hospitalar - - complexidade - dictionary_model: ref('br_ms_sih__dicionario') columns: - name: ano description: Ano de processamento da AIH, no formato aaaa tests: - not_null: - config: - where: __most_recent_year_month__ + config: + where: __most_recent_year_month__ - name: mes description: Mês de processamento da AIH, no formato mm tests: - not_null: - config: - where: __most_recent_year_month__ + config: + where: __most_recent_year_month__ - name: id_aih description: Número da AIH. tests: - not_null: - config: - where: __most_recent_year_month__ + config: + where: __most_recent_year_month__ - name: tipo_aih description: Identificação do tipo da AIH. - name: motivo_autorizacao_aih @@ -219,31 +201,33 @@ models: - name: data_saida description: Data de saída, no formato aaaammdd. - name: id_municipio_estabelecimento - description: ID Município IBGE 6 dígitos do estabelecimento. + description: Município do estabelecimento. tests: - relationships: - to: ref('br_bd_diretorios_brasil__municipio') - field: id_municipio_6 - config: - where: __most_recent_year_month__ + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio_6 + config: + where: __most_recent_year_month__ - name: id_estabelecimento_cnes description: Código CNES do hospital. - name: natureza_juridica_estabelecimento description: Natureza jurídica do estabelecimento, conforme a Comissão Nacional - de Classificação - CONCLA + de Classificação - CONCLA - name: natureza_juridica_estabelecimento_ate_2012 description: Natureza jurídica do hospital (com conteúdo até maio/12). - Era utilizada a classificação de Regime e Natureza. + Era utilizada a classificação de Regime e Natureza. - name: cnpj_estabelecimento description: CNPJ do estabelecimento. - name: tipo_gestao_estabelecimento description: Indica o tipo de gestão do hospital. - name: id_municipio_gestor - description: ID Município IBGE 6 dígitos do município gestor + description: Município gestor tests: - relationships: - to: ref('br_bd_diretorios_brasil__municipio') - field: id_municipio_6 + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio_6 + config: + where: __most_recent_year_month__ - name: tipo_gestor description: Tipo de gestor. - name: cpf_gestor @@ -253,11 +237,32 @@ models: - name: cnpj_mantenedora description: CNPJ da mantenedora. - name: id_municipio_paciente - description: ID Município IBGE 6 dígitos do município de Residência do Paciente + description: Município de Residência do Paciente tests: - - relationships: - to: ref('br_bd_diretorios_brasil__municipio') - field: id_municipio_6 + - custom_relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio_6 + ignore_values: + - '530180' + - '530140' + - '530040' + - '530050' + - '530110' + - '530080' + - '530130' + - '530060' + - '530070' + - '530135' + - '530160' + - '530100' + - '530150' + - '530090' + - '530170' + - '530120' + - '530020' + - '530030' + config: + where: __most_recent_year_month__ - name: cep_paciente description: CEP do paciente. - name: data_nascimento_paciente @@ -276,16 +281,16 @@ models: description: Código da nacionalidade do paciente - name: cbo_2002_paciente description: Ocupação do paciente, segundo a Classificação Brasileira de Ocupações - – CBO. + – CBO. tests: - relationships: - to: ref('br_bd_diretorios_brasil__cbo_2002') - field: cbo_2002.cbo_2002 - config: - where: __most_recent_year_month__ + to: ref('br_bd_diretorios_brasil__cbo_2002') + field: cbo_2002.cbo_2002 + config: + where: __most_recent_year_month__ - name: indicador_paciente_homonimo description: Indicador se o paciente da AIH é homônimo do paciente de outra - AIH. + AIH. - name: grau_instrucao_paciente description: Grau de instrução do paciente. - name: quantidade_filhos_paciente @@ -324,64 +329,42 @@ models: description: Categoria do CID de Notificação. - name: cid_notificacao_subcategoria description: Subcategoria do CID de Notificação. - # tests: - # - 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__ + tests: + - custom_relationships: + to: ref('br_bd_diretorios_brasil__cid_10') + field: subcategoria + config: + where: __most_recent_year_month__ - name: cid_causa_categoria description: Categoria do CID de causa. - name: cid_causa_subcategoria description: Subcategoria do CID de causa. - # tests: - # - 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__ + tests: + - custom_relationships: + to: ref('br_bd_diretorios_brasil__cid_10') + field: subcategoria + config: + where: __most_recent_year_month__ - name: cid_principal_categoria description: Código da categoria do diagnóstico principal (CID10). - name: cid_principal_subcategoria description: Código da subcategoria diagnóstico principal (CID10). - # tests: - # - 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__ + tests: + - custom_relationships: + to: ref('br_bd_diretorios_brasil__cid_10') + field: subcategoria + config: + where: __most_recent_year_month__ - name: cid_secundario_categoria - description: Código da categoria do diagnostico secundário (CID10). Preenchido com zeros - a partir de 201501. + description: Código da categoria do diagnostico secundário (CID10). Preenchido + com zeros a partir de 201501. - name: cid_secundario_subcategoria - description: Código da subcategoria do diagnostico secundário (CID10). Preenchido com zeros - a partir de 201501. - # tests: - # - 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__ + description: Código da subcategoria do diagnostico secundário (CID10). Preenchido + com zeros a partir de 201501. - name: cid_diagnostico_secundario_1_categoria description: Categoria do CID do Diagnóstico secundário 1. - name: cid_diagnostico_secundario_1_subcategoria description: Categoria do CID do Diagnóstico secundário 1. - # tests: - # - 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: cid_diagnostico_secundario_2_categoria description: Categoria do CID do Diagnóstico secundário 2. - name: cid_diagnostico_secundario_2_subcategoria @@ -436,24 +419,22 @@ models: description: Categoria do CID da morte. - name: cid_morte_subcategoria description: Subcategoria do CID da morte. - # tests: - # - 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__ + tests: + - custom_relationships: + to: ref('br_bd_diretorios_brasil__cid_10') + field: subcategoria + config: + where: __most_recent_year_month__ - name: indicador_obito description: Indica Óbito - name: remessa description: Número da remessa. - name: justificativa_auditor description: Justificativa do auditor para aceitação da AIH sem o número do - Cartão Nacional de Saúde. + Cartão Nacional de Saúde. - name: justificativa_estabelecimento description: Justificativa do estabelecimento para aceitação da AIH sem o - número do Cartão Nacional de Saúde. + número do Cartão Nacional de Saúde. - name: quantidade_dias_uti_mes description: Quantidade de dias de UTI no mês. - name: quantidade_dias_unidade_intermediaria @@ -466,16 +447,16 @@ models: description: Dias de permanência. - name: valor_complemento_federal_servicos_hospitalares description: Valor do complemento federal de serviços hospitalares. Está incluído - no valor total da AIH. + no valor total da AIH. - name: valor_complemento_federal_servicos_profissionais description: Valor do complemento federal de serviços profissionais. Está - incluído no valor total da AIH. + incluído no valor total da AIH. - name: valor_complemento_gestor_servicos_hospitalares description: Valor do complemento do gestor (estadual ou municipal) de serviços - hospitalares. Está incluído no valor total da AIH. + hospitalares. Está incluído no valor total da AIH. - name: valor_complemento_gestor_servicos_profissionais description: Valor do complemento do gestor (estadual ou municipal) de serviços - profissionais. Está incluído no valor total da AIH. + profissionais. Está incluído no valor total da AIH. - name: valor_uci description: Valor de Unidade de Cuidados Intensivos (UCI). - name: valor_serivico_hospitalar From 628cff38e4cb6d52710db80c8791ff44d91f3759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Wed, 22 May 2024 19:12:21 -0300 Subject: [PATCH 4/6] feat: add aihs_reduzidas v.2 --- .../br_bd_diretorios_brasil/br_bd_diretorios_brasil__cid_10.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cid_10.sql b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cid_10.sql index 2c36c533..f7696715 100644 --- a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cid_10.sql +++ b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cid_10.sql @@ -16,4 +16,4 @@ select safe_cast(causa_violencia as int64) causa_violencia, safe_cast(causa_overdose as int64) causa_overdose, safe_cast(cid_datasus as int64) cid_datasus, -from `basedosdados-dev.br_bd_diretorios_brasil_staging.cid_10` as t +from `basedosdados-staging.br_bd_diretorios_brasil_staging.cid_10` as t From 7a71c01e232d6b1e5699b8218480988fb2ca61b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Thu, 23 May 2024 17:48:32 -0300 Subject: [PATCH 5/6] fix: making requested changes --- models/br_bd_diretorios_brasil/schema.yml | 10 ++-------- models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/models/br_bd_diretorios_brasil/schema.yml b/models/br_bd_diretorios_brasil/schema.yml index e35046dc..5c5ab029 100644 --- a/models/br_bd_diretorios_brasil/schema.yml +++ b/models/br_bd_diretorios_brasil/schema.yml @@ -350,14 +350,8 @@ models: - name: descricao_capitulo description: Descrição do Capítulo da CID-10 - name: causa_violencia - description: Causa - Violência (Categorias W32 W33 W34 X85 X86 X87 X88 X89 - X90 X91 X92 X93 X94 X95 X96 X97 X98 X99 Y00 Y01 Y02 Y03 Y04 Y05 Y06 Y07 - Y08 Y09 Y10 Y11 Y12 Y13 Y14 Y15 Y16 Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24 Y25 - Y26 Y27 Y28 Y29 Y30 Y31 Y32 Y33 Y34 Y35 Y87 Y89) + description: Causa - Violência - name: causa_overdose - description: Causa - Overdose (Categorias F10 F11 F12 F14 F16 F19 T40 T41 - T42 T43 T44 T45 T46 T47 T48 T49 T50 X42 X43 X44 X45 X46 X47 X48 X49 X60 - X61 X62 X63 X64 X65 X66 X67 X68 X69 Y12 Y13 Y14 Y15 Y16 Y49 Y50 Y51 Z64 - Z65) + description: Causa - Overdose - name: cid_datasus description: Indica se a origem do CID-10 vem do DATASUS diff --git a/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql b/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql index f868bb9d..5f298f17 100644 --- a/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql +++ b/models/br_ms_sih/br_ms_sih__aihs_reduzidas.sql @@ -98,13 +98,21 @@ select safe_cast(homonimo as int64) indicador_paciente_homonimo, safe_cast(instru as int64) grau_instrucao_paciente, safe_cast(num_filhos as int64) quantidade_filhos_paciente, - safe_cast(cnaer as string) id_acidente_trabalho, + safe_cast( + trim(case when trim(cnaer) = '000' then null else cnaer end) as string + ) id_acidente_trabalho, safe_cast(vincprev as int64) indicador_vinculo_previdencia, - safe_cast(insc_pn as string) id_gestante_pre_natal, + safe_cast( + trim( + case when trim(insc_pn) = '0000000000' then null else insc_pn end + ) as string + ) id_gestante_pre_natal, safe_cast(gestrisco as int64) indicador_gestante_risco, safe_cast(contracep1 as int64) tipo_contraceptivo_principal, safe_cast(contracep2 as int64) tipo_contraceptivo_secundario, - safe_cast(seq_aih5 as string) sequencial_longa_permanencia, + safe_cast( + trim(case when trim(seq_aih5) = '000' then null else seq_aih5 end) as string + ) sequencial_longa_permanencia, safe_cast(regexp_replace(proc_solic, r'^0', '') as int64) procedimento_solicitado, safe_cast(regexp_replace(proc_rea, r'^0', '') as int64) procedimento_realizado, safe_cast(infehosp as int64) indicador_infeccao_hospitalar, @@ -292,7 +300,7 @@ select safe_cast( trim( case - when length(trim(cid_morte)) = 4 and trim(diagsec9) not like '0000' + when length(trim(cid_morte)) = 4 and trim(cid_morte) not like '0000' then cid_morte else null end From 356095d17ca1783262b0e927ebbb4405bdcdd712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Thu, 23 May 2024 18:45:59 -0300 Subject: [PATCH 6/6] feat: new schema version --- models/br_ms_sih/schema.yml | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/models/br_ms_sih/schema.yml b/models/br_ms_sih/schema.yml index 564eab1c..09fe2f9f 100644 --- a/models/br_ms_sih/schema.yml +++ b/models/br_ms_sih/schema.yml @@ -333,18 +333,13 @@ models: - custom_relationships: to: ref('br_bd_diretorios_brasil__cid_10') field: subcategoria + ignore_values: ["0000"] config: where: __most_recent_year_month__ - name: cid_causa_categoria description: Categoria do CID de causa. - name: cid_causa_subcategoria description: Subcategoria do CID de causa. - tests: - - custom_relationships: - to: ref('br_bd_diretorios_brasil__cid_10') - field: subcategoria - config: - where: __most_recent_year_month__ - name: cid_principal_categoria description: Código da categoria do diagnóstico principal (CID10). - name: cid_principal_subcategoria @@ -353,6 +348,7 @@ models: - custom_relationships: to: ref('br_bd_diretorios_brasil__cid_10') field: subcategoria + ignore_values: ["0000"] config: where: __most_recent_year_month__ - name: cid_secundario_categoria @@ -419,12 +415,6 @@ models: description: Categoria do CID da morte. - name: cid_morte_subcategoria description: Subcategoria do CID da morte. - tests: - - custom_relationships: - to: ref('br_bd_diretorios_brasil__cid_10') - field: subcategoria - config: - where: __most_recent_year_month__ - name: indicador_obito description: Indica Óbito - name: remessa