Administrar Formulário de Diagnósticos do SIGI

As perguntas dos diagnósticos, por serem dinâmicas foram desenvolvidas com uma lib que implementa o modelo de Entidade-Atributo-Valor e adiciona campos aos diagnósticos sem a necessidade de modificar código ou modificar a versão dos servidores. Com isso a gestão de perguntas e respostas pode ser feita diretamente da interface de administração.

Mais informações sobre eav-django

A documentação completa dessa lib pode ser encontrada em https://bitbucket.org/neithere/eav-django/

A instalação pode ser feita atravéz dos comandos:

pip install django-autoslug
pip install django-eav

O ambiente administrativo dos Diagnósticos

A barra de navegação do ambiente administrativo do SIGI tem um link para acessar os diagnósticos gravados. Entretanto, para editar a estrutura do diagnóstico, isto é, suas perguntas e escolhas e necessário ser um superusuário do sistema pois algumas modificações como exclusão de perguntas podem necessitar uma migração ou backup dos dados.

O link para administração de perguntas será exibido no menu administrativo direito como mostra a figura abaixo.

http://colab.interlegis.gov.br/raw-attachment/wiki/AdministrarFormularioSigi/Screen%20shot%202011-12-15%20at%204.49.26%20PM.png

Ao acessar esse link poderão ser administrado as categorias, perguntas e escolhas dos diagnósticos. As próximas seções explicarão cada uma delas com mais detalhes.

Administração de Perguntas

Os elementos básicos de uma pergunta ilustrada na imagem são:

  • Título: Titulo da questão que será utilizado para apresentar a pergunta para o usuário
  • Nome: Nome para acessar a questão a partir de um diagnostico, por ser utilizado como um atributo de objeto python essa informação deve conter apenas letras e numeros.
  • Datatype: Tipo da resposta para essa pergunta, define como esse dado será apresentado e salvo no banco de dados. Os tipos de dados utilizado para as perguntas são:
    • text: Texto simples é apresentado como um input de texto;
    • number: Aceita apenas numeros reais é apresentado com um input de texto porem valida o conteúdo;
    • data: Formato de data dd/mm/aaaa também é apresentado com um input de texto e valida o formato da data;
    • choice: Permite registrar escolhas para a pergunta. Na apresentação utiliza um radio para limitar a apenas uma escolha
    • multiple choice: Permite registrar escolhas para a pergunta. Na apresentação utiliza checkbox permitindo a seleção de uma ou mais escolha

Os outros tipos de dados não são utilizados no projeto.

http://colab.interlegis.gov.br/raw-attachment/wiki/AdministrarFormularioSigi/Screen%20shot%202011-12-15%20at%205.15.28%20PM.png

É possível incluir a pergunta em uma categoria para separa-las no momento de exibir para o usuário. A categoria é um modelo simples com o nome da categoria. Assim como as perguntas são exibidas para o usuário em ordem alfabética. Por conta disso, a numeração que precede esses textos são importantes para definir a posição das categorias e perguntas.

O campo required não é utilizado pois como as questões são salvas a cada modificação via AJAX não seria possível validar o diagnóstico na interface mobile.

Administração de Escolhas

Para as perguntas dos tipos choice e multiple choice deve-se relacionar duas ou mais escolhas. A tela abaixo ilustra o cadastro de uma escolha:

http://colab.interlegis.gov.br/raw-attachment/wiki/AdministrarFormularioSigi/Screen%20shot%202011-12-15%20at%205.16.52%20PM.png

Esse formulário contem o título da escolha e a pergunta relacionada. O campo opcional 'pergunta para abrir' é utilizado para otimizar a interface mobile, exibindo algumas questões apenas no caso de uma escolha ter sido seleciona. Isso permite criar perguntas condicionais ou para especificar uma escolha genérica, como por exemplo, 'outros'.

Notas sobre remoção e migração

Por facilitar a criação de perguntas dinamicamente optou-se por restringir esse registro apenas para superusuários, isto porque, a remoção de uma pergunta poderia causar perda de dados. Para evitar isso aconselha-se a fazer um bakup antes de modificar perguntas ou escolhas e em alguns casos fazer uma migração antes de excluir algum registro dessas tabelas.

Uma maneira simples de fazer backup desses dados e restaurar é utilizar os jobs do django como exemplificado abaixo:

  python manage.py dumpdata diagnosticos > /tmp/diagnosticos.json
  python manage.py loaddata /tmp/diagnosticos.json
Última modificação 8 anos atrás Última modificação em 15/12/2011 17:44:27

Anexos (3)

Download de todos os anexos como .zip

 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.