Creating a new Questionnaire
The KKSys includes a programmatic system for creating and managing Questionnaires. This has been carefully designed to enable a range of fairly complex programmatic features to be added to the questionnaires while they are actually being used.
When first encountered, the system will appear complicated and unwieldy. However the different components are designed to work together well, and once understood will reveal how powerful they are.
Using the system, KKFU staff can create and manage complex multi-section, multi-question Questionnaires on a wide range of topics and immediately incorporate the answers into a database directly linked to their Societies, Staff, Farmers and Members.
Technical Introduction
The technical details of the data-structure of the Questionaire system can be found here:
Questionnaire related database elements
Technical details of the data-tables of the Questionnaire system are found here:
The Questionnaires data-object
The QuestionSections data-object
The NonConformities data-object
Data-Structure for Questionnaires: Why are there so many data-tables?
Questionnaires, QuestionSections, Questions, Answers, NonConformities
In Orixa's relational database model, data is separated into separate "atoms" of data as far as possible, as this makes data management far more fast and efficient. The data structure appears complicated on the surface, but in fact it is less complex than it appears once the .
Each "Questionnaire" as used by an ICO officer consists of one "heading" record from the Questionnaires data-table, which just provides a name for the questionnaire, and acts as a unit to link to all the questions. Each Question is a separate record in the Questions data-table, and all Questions with one "QuestionnairesID" will be returned when the Questionnaire is run.
Each "Inspection" is a record of the data gathered by the ICO Officer. It consists of one "heading" record from the Inspections data-table, which links to one farmer, and one Questionnaire. The Inspection then links to a number of "Answers" records. There should be one "answer" for each "question" in the Questionnaire.
Stated like this the data-model does not look so complicated. There are 2 extra data-tables:
- QuestionSections: This just provides the ability to separate a Questionniare into sub-sets in a particular order.
- NonConformities: Any Answer may be good in itself. However, sometimes farmers may infringe on norms or practices. In other words they may do something (such as using proscribed chemicals, or employing child-labour) which is not allowed. In such cases ICO officers can add a NonConformity record to the answer record in a particular questionnaire. KKFU staff can then run reports returning the NonConformity records for one Society or Zone, allowing ICO Officers to return to particular farmers and check that they no longer infringe on norms or practices.
Steps to create a new Questionnaire
- Create a new "master" Questionnaire record with the name of the Questionnaire. If the Questionnaire needs to be reviewed at some point in the future set the "DateValid" to the date at which the Questionnaire will stop being valid and should be checked. If the questionnaire contains links to a particular Farmer be sure to tick the "IncludeFarmerFieldData" tick-box.
- If the new Questionnaire includes multiple sections, add "QuestionSection" records with the names for the sections. Ensure that each of these has the "QuestionnairesID" set to the new Questionnaire.
- Add Questions. Type in the Question, and set the QuestionnaireID to the new Questionnaire. If the Questionnaire contains sections, set the QuestionSectionID. Complete other fields in the Questions record, following the rules set out in the Questions Data-Object help-document.
- Run the Inspections Questionnaire form, and jump through the Questions to check that they display correctly. If special features such as skipping questions or checking for particular answers forms part of a questionnaire, provide some test values to check that it operates as expected.