Export hard-copy overview of questions (including answer options)

As supporting materials for enumerators I’d like to prepare a hard-copy version of the questionnaire. It does not need to be usable as a questionnaire to fill in questions, but it should be able to give a good overview.

Has onyone done that is there a tool or any recommendation how to approach this?

Hi @Simon_Hess!

I’m attaching an example of how I do this – we essentially build a linked excel questionnaire as a series of comment columns to the left of the programming on the survey sheet. This takes some initial setup of formulas and very diligent cross-referencing in excel, but then it is fairly easy to format and print the comment columns to use for training, etc. In really big projects with lots of files and sections I actually get Stata to automate some of this, can share a do file if you’re a Stata user. c212d94bf04de16353bfd56289b2bb983028de10.xlsx (55.2 KB)

Thanks for sharingProcessing: Untitled.ipynb…
this. I ended up writing my own jupyter notebook for this, which works well too. Sadly I cannot upload the notebook here, so i’m just pasting the essential bits of the code.


import json
import re
with open("formDef.json") as f:
    formDef = json.load(f)

spec = formDef['specification']['sections']['survey']['prompts']
for x in spec:
    if ('display' in x.keys()):
        if 'required' in x.keys():
            rest = str(x['required']).replace("data('consent') === 1","").replace(" ? true : false","").replace("data('comId') === \"\"","")
            if "data('hhHead') === 1" in rest:
                rest = "[IF HOUSEHOLD HEAD]: "
            elif "data('hhHead') === 0" in rest:
                rest = "[IF NOT HEAD]: "
            else:
                rest =""
        print(rest+ re.sub("<.?b>","",x['display']['prompt']['text'].replace("{{data.comName}}","{village}")).replace("<p>","\n").replace("</p>","\n").replace("</br>","\n"))
        print("\t"+x['type'].replace("note","").replace("select_one_dropdown","select one:").replace("select_one_integer","select one:").replace("select_one","select one:"), end=" ")
        if 'values_list' in x.keys():
            try:
                choices = formDef['specification']['choices'][x['values_list']]
                print("; ".join([zz['display']['title']['text'] for zz in choices]), end="")
            except:
                print(x['values_list'], "")
        print("")
    else:
        print("========")

it’s not pretty but it works