Os dados dos arquivos que constituem os sistemas de informações do SUS estão normalmente codificados em números que representam códigos constantes de tabelas padronizadas, como Classificação Internacional de Doenças (CID), Tabela de Procedimentos de AIHs ou SIA-SUS, Código de Municípios do IBGE etc. É conveniente que tais códigos sejam traduzidos, tornando-os facilmente compreensíveis, exibindo a sua correspondente descrição.
Adicionalmente, é necessário produzir tabulações que agregam vários códigos dessas tabelas em uma única categoria para permitir a análise dos dados.
Para resolver estas duas situações, são usadas Tabelas de Conversão de Códigos, constituídas de arquivos tipo texto, com uma estrutura estabelecida para permitir que qualquer usuário, com um editor de texto, modifique as tabelas existentes ou crie novas tabelas necessárias à sua pesquisa.
Os tabelas são iguais para as variáveis de linhas, de colunas ou de seleção. Ao contrário do TAB e do TABWIN, as variáveis de coluna podem ter, também, até 50 posições de descrição; recomenda-se, porém, utilizar descrições mais curtas para tornar as tabulações de mais fácil leitura.
No caso de variáveis de seleção, as tabelas de conversão se destinam a relacionar que valor ou valores, correspondentes a cada descrição, podem ser marcados para serem aceitos na variável especificada para que cada registro seja considerado no processamento.
Para criar uma Tabela de Conversão de Código, é necessário criar um arquivo texto que, em sua primeira linha, tenha o número de categorias que resultará da conversão dos códigos, ou seja o número de linhas ou colunas que serão obtidos na tabulação e o número de caracteres que serão considerados para comparação no campo do arquivo de dados.
Exemplo:
5 4Aqui, a variável tem 5 categorias e o código tem 4 posições, a partir da posição indicada em CAMPO4 nos registros de tipo S, L, C, D, T ou X.
As demais linhas têm formato fixo, devendo ocorrer pelo menos uma vez para cada categoria, e tem sempre três campos que ocupam posições fixas, no formato abaixo:
- Seqüencial da categoria - numérico, alinhado à direita, colunas 4 a 7
- Descrição - texto, alinhado à esquerda, colunas 10 a 59
- Lista de Códigos - alfanumérico, da coluna 61 em diante
Seqüencial da Categoria - colunas 4 a 7
O Seqüencial da Categoria a que a descrição e a lista de códigos se referem é campo obrigatório e indica também a posição relativa que esta linha ocupará na seqüência de linhas, colunas ou quadros da tabulação gerada.
Descrição - colunas 10 a 59
A descrição contém, alinhado à esquerda, o texto que será exibido nas opções e na geração da tabulação.
Lista de Códigos - colunas 61 até o fim da linha
A lista de valores contém, separados por vírgulas, a relação dos códigos da variável, no arquivo de entrada, que serão considerados nesta linha da tabela. Vários códigos consecutivos poderão ter seu registro simplificado anotando-se o primeiro valor separado do final por um hífen. A cada referência a um valor, deverá ser utilizado o número de caracteres definidos na primeira linha deste arquivo e, caso o valor seja menor, deve-se utilizar a quantidade necessária de zeros a esquerda para completar o comprimento.
Se o espaço de uma linha (até 255 caracteres) for insuficiente para relacionar todos os códigos desta categoria, podemos criar uma nova linha, repetindo o mesmo seqüencial de categoria, dando, então, continuidade à lista de códigos na coluna 61.
As linhas não precisam estar codificadas na mesma seqüência das categorias. Assim, a última categoria pode estar antes das demais. Isto é particularmente útil para definir a categoria "Ignorado", como poderemos ver nos exemplos adiante.
Todo o texto que estiver após o caractere ';' é ignorado pelo programa e funciona apenas como comentário com a finalidade de documentar a tabela de conversão.
Exemplo do arquivo CAUSACAP.CNV:
17 3 ; ; Tabela para converter CID 9 a 3 dígitos em Capítulos ; 1 I. Doenças infecciosas e parasitárias 001-139 2 II. Neoplasmas 140-239 3 III. D glând endoc nutric metab e transt imunitar 240-279 4 IV. Doenças do sangue e órgãos hematopoéticos 280-289 5 V. Transtornos mentais 290-319 6 VI. Doenças do sist nervoso e dos órg sentidos 320-389 7 VII. Doenças do aparelho circulatório 390-459 8 VIII.Doenças do aparelho respiratório 460-519 9 IX. Doenças do aparelho digestivo 520-579 10 X. Doenças do aparelho geniturinário 580-629 11 XI. Complicações da gravidez parto e puerpério 630-676 12 XII. Doenças da pele e tecido celular subcutâneo 680-709 13 XIII.Doenças sist osteomuscular e tec conjuntivo 710-739 14 XIV. Anomalias congênitas 740-759 15 XV. Algumas afecções origin no período perinatal 760-779 16 XVI. Sintomas sinais e afecções mal definidas 780-799 17 XVII.Causas externas 800-999Neste exemplo, temos uma tabela para converter os códigos da Classificação Internacional de Doenças (CID), 9ª Revisão, em seu capítulos. Como os capítulos são 17, o número de categorias expresso na primeira linha é 17 e, como são utilizados apenas 3 dígitos, o número 3 aparece na segunda posição na primeira linha.
Exemplo do arquivo MESES.CNV:
13 2 ; Tabela de conversão para os meses do ano 13 Ignorado 00-99 ; ignorados 1 Janeiro 01 2 Fevereiro 02 3 Março 03 4 Abril 04 5 Maio 05 6 Junho 06 7 Julho 07 8 Agosto 08 9 Setembro 09 10 Outubro 10 11 Novembro 11 12 Dezembro 12Esta definição contém 13 categorias e o comprimento considerado da variável no arquivo de entrada é de 2 dígitos. Observe-se que, primeiro, definiu-se a categoria "Ignorado", com valores de 00 a 99, e, após, as categorias válidas. O código 01 é, primeiro considerado como ignorado. Como, porém, está relacionado, depois, à categoria "Janeiro", esta prevalece, por aparecer por último.
Variável Curta e Variável Longa
De acordo com o número de dígitos com que cada variável será considerada no arquivo .CNV, duas formas de indexação diferentes serão adotadas com impacto no tempo de processamento.
No caso de usarmos códigos de até quatro dígitos, sendo que somente o primeiro pode ser alfabético, será usada internamente uma indexação imediata, através de um vetor de conversão, que resulta em processamento mais rápido. Dentro desse limite de quatro dígitos, é possível aceitar códigos em que o primeiro caractere do campo de entrada seja uma letra de A a Z, maiúscula ou minúscula. Como as letras de A até J são mapeados sobre os dígitos de 0 a 9, é possível aceitar códigos que usem letras ou números na primeira posição mas não ambos.
No caso do código exceder a quatro dígitos, o mesmo será tratado internamente como literal, sendo necessária, para sua identificação, uma pesquisa binária nos códigos armazenados na memória, o que, naturalmente, resulta em processamento mais lento.
Eventualmente, pode ser necessário tratar como literais códigos menores do que quatro caracteres como, por exemplo, ao usarmos as siglas das Unidades da Federação, onde temos apenas dois caracteres, ambos alfabéticos e em letra maiúscula. Nesse caso, na primeira linha útil do .CNV, após o espaço que segue comprimento do código, colocamos a letra L.
Exemplo:
5 2 L ; Regiões do Brasil a partir das siglas das UFs 1 Norte AM,PA,AC,RO,RR,AP 1 Norte TO 2 Nordeste MA,PI,CE,RN,PB,AL 2 Nordeste PE,SE,BA 3 Centro-Oeste GO,MT,MS,DF 4 Sudeste MG,SP,RJ,ES 5 Sul RS,PR,SCVemos, no exemplo, duas linhas com o mesmo seqüencial da categoria, utilizado quando a lista de códigos não couber numa linha apenas, ou se quisermos separá-las para tornar o arquivo mais legível.
No caso de usarmos um arquivo .DBF para indexação, o código será sempre tratado como literal, independentemente do comprimento do campo.
Linhas de Subtotal
Em algumas ocasiões, é necessário apresentar tabulações em que algumas linhas são subtotais resultantes da soma parcial de outras linhas do relatório. Podemos utilizar, na tabela de conversão de código (.CNV), o campo Indicador de Subtotal, numérico alinhado à direita nas colunas de 1 a 3, que somente é interpretado para uma tabela de conversão quando a mesma é usada nas linhas.
A ocorrência de qualquer número de linha válido nesta posição vai determinar que, durante a geração da tabulação, o conteúdo desta linha seja adicionado ao da linha cujo número está aqui indicada, permitindo que aquela contenha, adicionado ao valor nela diretamente tabulado, a soma dos valores tabulados de todas as linhas que apontam para ela.
Estas posições (colunas 1 a 3) devem ser deixadas em branco no caso da tabela de conversão não incluir linhas de subtotal, o que é o mais comum.
Exemplo de .CNV com linhas de subtotal:
12 2 ; ; Natureza do prestador ; 1 Público 10,30,40,50 1 2 . Próprio 10 1 3 . Federal 30 1 4 . Estadual 40 1 5 . Municipal 50 6 Privado 20,60,80 6 7 . Contratado 20 6 8 . Filantrópico 60 6 9 . Sindicato 80 10 Universitário 70,90 10 11 . Universitário 70 10 12 . Pesquisas 90No exemplo acima, cada linha da tabela que é uma subcategoria aponta, nas posições 1 a 3, para a linha de subtotal a que pertence.
Não é obrigatório que sejam relacionadas todas as subcategorias possíveis. No exemplo acima, se tivesse sido omitida a subcategoria 12, a categoria 10 continuaria a apresentar a soma dos códigos 70 e 90.
Como, por definição, os browsers interpretam o HTML substituindo espaços em branco seguidos por apenas um espaço em branco, é conveniente marcar a indentação com um caractere qualquer. No exemplo acima, utilizou-se o ponto.
No caso de estarmos usando variáveis longas ou literais, devido ao fato do primeiro código encontrado entrar no índice em lugar dos seguintes, devemos colocar na linha de subtotal um código que não apareça nas linhas de detalhe, ou colocar a linha de subtotal após a linha de detalhe.
Exemplo de UF e Região:
32 2 L ; ; UF e Região ; 1 Norte XX 1 2 . Rondônia RO 1 3 . Acre AC 1 4 . Amazonas AM 1 5 . Roraima RR 1 6 . Pará PA 1 7 . Amapá AP 1 8 . Tocantins TO 9 Nordeste XX 9 10 . Maranhão MA 9 11 . Piauí PI 9 12 . Ceará CE 9 13 . Rio Grande do Norte RN 9 14 . Paraíba PB 9 15 . Pernambuco PE 9 16 . Alagoas AL 9 17 . Sergipe SE 9 18 . Bahia BA 19 Sudeste XX 19 20 . Minas Gerais MG 19 21 . Espírito Santo ES 19 22 . Rio de Janeiro RJ 19 23 . São Paulo SP 24 Sul XX 24 25 . Paraná PR 24 26 . Santa Catarina SC 24 27 . Rio Grande do Sul RS 28 Centro-Oeste XX 28 29 . Mato Grosso do Sul MS 28 30 . Mato Grosso MT 28 31 . Goiás GO 28 31 . Distrito Federal DFFaixas de Valor
Quando for necessário criar categorias a partir de faixas de valor de variáveis contínuas, acrescentamos à primeira linha do arquivo CNV, imediatamente após o comprimento do campo de código, a letra F, de Faixas, e colocamos no campo de código, alinhados pela direita, os limites superiores de cada faixa. O separador decimal deve ser o "ponto".
Exemplo de arquivo CNV com faixas de valor
; Faixas de Valor das AIHs 6 14 Faixas 1 Até 99,99 99.99 2 100,00 a 499,99 499.99 3 500,00 a 999,99 999.99 4 1000,00 a 2499,99 2499.99 5 2500,00 a 4999,99 4999.99 6 >= 5000,00 99999999999.99
![]() |
![]() |
![]() |