[Python] Problema com decodificação de campos em arquivos DBF

Discussão em 'Python' iniciado por Stack, Agosto 12, 2025.

  1. Stack

    Stack Membro Participativo

    Sou estágiária e estou auxiliando no desenvolvimento de uma aplicação em Python que importa arquivos DBF de notificações de saúde (SINAN) para um banco de dados PostgreSQL. Tenho dois problemas específicos relacionados à decodificação dos campos:

    Problema 1: Falha na decodificação de campos específicos

    O dicionário de decodificação está estruturado da seguinte forma:

    ```python
    # Arquivo: hiv_crianca_labels_decodes.py
    HIV_CRIANCA_LABELS = {
    "tp_rapido1": "Teste rápido 1",
    "tp_rapido2": "Teste rápido 2",
    "tp_rapido3": "Teste rápido 3",
    # outros campos...
    }

    HIV_CRIANCA_DECODES = {
    "tp_rapido1": {
    "1": "Positivo/reagente",
    "2": "Negativo/não reagente",
    "3": "Inconclusivo",
    "4": "Não realizado",
    "9": "Ignorado"
    },
    "tp_rapido2": {
    "1": "Positivo/reagente",
    "2": "Negativo/não reagente",
    "3": "Inconclusivo",
    "4": "Não realizado",
    "9": "Ignorado"
    },
    "tp_rapido3": {
    "1": "Positivo/reagente",
    "2": "Negativo/não reagente",
    "3": "Inconclusivo",
    "4": "Não realizado",
    "9": "Ignorado"
    },
    # outros campos...
    }


    Já confirmei que: Os campos existem no arquivo DBF Os dicionários de decodificação estão corretos Outros campos com o mesmo padrão de decodificação funcionam corretamente Suspeito que possa ser um problema com o formato dos valores no arquivo DBF (numéricos vs. strings).

    Problema 2: Campo "tpunitra" sem label/decode correspondente Ao processar os arquivos DBF de HIV Criança, notei que aparece um campo chamado "tpunitra" nos dados, mas ele não existe nos dicionários de labels e decodes.

    Questões:

    Este campo "tpunitra" é um campo padrão do SINAN para HIV Criança? Quais seriam os valores corretos para decodificação deste campo? O que já tentei Para o Problema 1:

    Verifiquei se os nomes dos campos correspondem exatamente Adicionei logs para verificar o formato dos valores vindos do DBF Tentei conversões de tipo explícitas (str, int) Para o Problema 2:

    Tentei encontrar documentação sobre este campo Adicionei uma definição temporária baseada em suposições Ambiente Python 3.8 Biblioteca dbfread para leitura dos arquivos DBF PostgreSQL como banco de dados FastAPI para a API REST Agradeço qualquer orientação sobre como resolver esses problemas!

    Continue reading...

Compartilhe esta Página