Пример #1
0
def PrintList(item, i):

    PrintQText(item, i)
    answer = Data.get(var=item['VariableName'] + "__0", obs=i)[0][0]
    if (answer == "##N/A##"):
        answer = "[NO ANSWER RECORDED]"
    else:
        count = item['MaxAnswerCount']
        for c in range(0, count - 1):
            vn = item['VariableName'] + "__" + str(c)
            eachanswer = Data.get(var=vn, obs=i)[0][0]
            if (eachanswer == "##N/A##"):
                break
            PrintAnswer("* " + eachanswer)
Пример #2
0
def PrintSingle(item, i):
    vn = item['VariableName']
    answer = Data.get(var=vn, obs=i)[0][0]
    sanswer = str(answer)
    if (answer == -999999999):
        sanswer = "[NO ANSWER RECORDED]"
    if (answer < 1.0e300):
        # need to get the value label here from Stata
        sanswer = Data.get(var=vn, obs=i, valuelabel=True)[0][0]
        PrintQText(item, i)
        if (item['LinkedToRosterId'] != None
                or item['LinkedToQuestionId'] != None):
            print("Linked questions not supported, skipping")
        else:
            PrintAnswer("✓ " + sanswer)
Пример #3
0
def PrintGPS(item, i):
    vn = item['VariableName']
    latitude = Data.get(var=vn + "__Latitude", obs=i)[0][0]

    if (Missing.isMissing(latitude)):
        return ()

    PrintQText(item, i)

    sanswer = ""
    if (latitude == -999999999):
        sanswer = "[NO ANSWER RECORDED]"
    else:
        longitude = Data.get(var=vn + "__Longitude", obs=i)[0][0]
        sanswer = "Lat=" + str(latitude) + "; Lon=" + str(longitude)

    PrintAnswer(sanswer)
Пример #4
0
def PrintDate(item, i):
    vn = item['VariableName']
    answer = Data.get(var=vn, obs=i)[0][0]
    if (answer == "##N/A##"):
        answer = "[NO ANSWER RECORDED]"
    if (answer != ''):
        PrintQText(item, i)
        PrintAnswer(answer)
Пример #5
0
def PrintMulti(item, i):
    vn = item['VariableName']
    PrintQText(item, i)
    for opt in item['Answers']:
        vvv = vn + "__" + str(opt['AnswerValue'])
        v = Data.get(var=vvv, obs=i)[0][0]
        if (v == 1):
            sanswer = "☑ " + opt['AnswerText']
            PrintAnswer(sanswer)
Пример #6
0
def PrintNumeric(item, i):
    vn = item['VariableName']
    answer = Data.get(var=vn, obs=i)[0][0]
    sanswer = str(answer)
    if (answer == -999999999):
        sanswer = "[NO ANSWER RECORDED]"
    if (Missing.isMissing(answer) == False):
        PrintQText(item, i)
        PrintAnswer(sanswer)
Пример #7
0
def PrintInterview(data, i):
    ikey = Data.get(var='interview__key', obs=i)[0][0]
    print("")
    print("Interview: ", i + 1)
    print("Key: ", ikey)
    SFIToolkit.stata("putpdf sectionbreak, pagesize(A5)")
    SFIToolkit.stata("putpdf paragraph")
    SFIToolkit.stata('''putpdf text ("''' + ikey +
                     '''"), bold font("Arial", 18, "green")''')
    TraverseSections(data['Children'], i)
Пример #8
0
def PrintQuestion(q, i):
    vn = q['VariableName']
    SFIToolkit.stata("capture unab varlst : " + vn + "__*")
    if (Scalar.getValue("_rc")) != 0:
        if (Macro.getLocal("varlst") == ""):
            try:
                vindex = Data.getVarIndex(vn)
                # SERGIY: this kicks out all the questions where the variable name

# has been transformed, such as option__1, or location__Longitude.
            except:
                print("Data for " + vn + " in roster, skipped")
                return
    qt = q['QuestionType']

    # Single-select categorical
    if (qt == 0):
        PrintSingle(q, i)
        return ()

    # Multi-select categorical
    if (qt == 3):
        PrintMulti(q, i)
        return ()

    # Numeric
    if (qt == 4):
        PrintNumeric(q, i)
        return ()

    # Date
    if (qt == 5):
        PrintDate(q, i)
        return ()

    # GPS
    if (qt == 6):
        PrintGPS(q, i)
        return ()

    # Text
    if (qt == 7):
        PrintText(q, i)
        return ()

    # List
    if (qt == 9):
        PrintList(q, i)
        return

    print("%%%%%%%%%%%%%%%%%%%%%%%%UNKNOWN QUESTION TYPE:", str(qt))
    print(q['QuestionText'])
Пример #9
0
        ProcessChild(ch, i)


def TraverseChildren(children, i):
    for ch in children:
        ProcessChild(ch, i)


pdfname = "C:/temp/" + Macro.getLocal("f")
fn = Macro.getLocal("path") + "/" + Macro.getLocal("f") + ".json"

with open(fn, 'r', encoding='utf-8') as f:
    data = json.load(f)

qtitle = data['Title']
n = Data.getObsTotal()

SFIToolkit.stata("putpdf begin, pagesize(A5)")
SFIToolkit.stata("putpdf paragraph")
SFIToolkit.stata('''putpdf text ("''' + qtitle +
                 '''"), bold font("Arial", 18, "maroon") linebreak(1)''')
SFIToolkit.stata('''putpdf text ("Generated on:''' +
                 Macro.getGlobal("c(current_date)") + " at " +
                 Macro.getGlobal("c(current_time)") +
                 '''"), bold font("Arial", 14, "green") linebreak(1)''')
SFIToolkit.stata('''putpdf text ("Interviews:''' + str(n) +
                 '''"), bold font("Arial", 14, "green") linebreak(1)''')
i = 0
while (i < n):
    PrintInterview(data, i)
    i = i + 1