= Survey Tool Blue Print - Assessment Data Analysis Tool (ADAT) = == Introduction == ADAT will provide IFRC with a flexible tool to create assessments and analyse the data. == Features == * Easily create customised assessments * Reusable list of questions which can be used in multiple assessments * Ability to compare the same questions from different assessments == Back Ground == This blue print describes the extensions to use the Survey Tool to implement the ADAT project for IFRC. It is based on the initial specification from the GSoC project: http://wiki.sahanafoundation.org/doku.php/foundation:surveytool_spec, although reflecting changes due to improvements to the Sahana Eden Framework and lessons learned from the GSoC project. == Data Model == [[Image(data_model.png)]][[BR]] [http://yuml.me/diagram/scruffy/class/edit/%23%20Cool%20UML%20Diagram,%20%5BTemplate%5D+1-%3E0..*%5BSections%5D,%20%5BSections%5D+1-%20%3E0..*%5BSurvey%20Question%5D,%20%5BQuestion%5D+1-%3E0..*%5BSurvey%20Question%5D%20%20,%20%5BTemplate%5D+1-%3E0..*%5BSeries%5D,%20%5BSeries%5D+1-%3E0..*%5BTable%20for%20Survey%20Answers%5D,%20%5BTemplate%5Dused%20to%20define-.-%3E%5BTables%20for%20Survey%20Answers%5D.] === Template === Table to store all the information about an assessment === Series === Table to store data related to a specific "instance" of a template: * Title * Conducted By (Person & Organisation) * Logo (Default from Org Logo) * Language * Duration === Sections === Used to split an assessment up into different sections * Reuse the existing 'subheadings' functionality to split a create form into different "sections" (with headings) * see rat() in {{{controllers/assess.py}}} === Section Question === Table to link questions with sections === Question === Library of questions which can be reused on numerous assessment templates. This table will have to store all information needed to construct the questions (widget definition). [[BR]] See http://wiki.sahanafoundation.org/doku.php/foundation:surveytool_spec#question_data_types for types of questions. === Tables for Survey Answers === Table to store data for completed assessments will be defined dynamically when that assessment is first filled. The name of this table will be stored in the template table. The Survey will be accessed via the REST Controller to be filled out, analysed, exported, etc. == Work Flow == === Create Assessment Template === 1. Enter basic data for the Template 1. Add a Section to the Template 1. Add a Question to the Section, by either: 1. Creating a new Question 1. Reusing an existing Question 1. Repeat steps 2. & 3. as required === Fill Assessment === 1. Select a Assessment Template to complete 1. ''If this is a new template'' 1. Create a table based on data in the Template, Sections, Section Questions and Question. 1. Lock all of the records in these tables (Template can't be modified after it's been used. 1. Optional: Create a copy of the template (and components) so that it can be modified at a later date. 1. Open the table for the Assessment Template in a regular Create view === Analyse Assessment === ==== Basic ==== 1. Select an Assessment Template which has been completed 1. Select a range of completed assessments by: 1. Using the existing search method 1. Selecting rows in the table (new feature) 1. View all the results for that Assessment Template using 1. Tables (& PDF & Excel) 1. Plots (Graphs) 1. Map (As a pin which will open the survey results) 1. Statistical (Sum, Average, Min, Max) - this could be an extension to our Datatables ==== Advanced ==== 1. Select a question (or range of questions) 1. Select a range of completed assessments by: 1. Using the existing search method 1. Selecting rows in the table (new feature) 1. View all the results for that question from ALL Assessment Template using 1. Tables (& PDF & Excel) 1. Plots (Graphs) 1. Map (As different coloured pins or highlighted areas on the map) 1. Statistical (Sum, Average, Min, Max) - this could be an extension to our Datatables == Additional Functionality == === Translation === Implement a generic UI feature which allows the translation of strings which are stored in the database. This could be based on the web2py admin UI. == Tasks == To be completed...