def process_allele(allele_data, dbsnp_data, header):
    """Combine data from multiple lines refering to a single allele.

    Returns three items in this order:
        (string) concatenated variant sequence (ie allele the genome has)
        (string) concatenated reference sequence
        (string) start position (1-based)
    """
    # One-based start to match VCF coordinates
    start = str(int(allele_data[0][header['begin']]) + 1)
    var_allele = ''
    ref_allele = ''
    for data in allele_data:
        # We reject allele data if any subset of the data has a no-call.
        if (data[header['varType']] == 'no-call' or
                ('varQuality' in header and
                 data[header['varQuality']].startswith('VQLOW'))):
            var_allele = None
            ref_allele = None
            break
        var_allele = var_allele + data[header['alleleSeq']]
        ref_allele = ref_allele + data[header['reference']]
        if data[header['xRef']]:
            for dbsnp_item in data[header['xRef']].split(';'):
                dbsnp_data.append(dbsnp_item.split(':')[1])
    return var_allele, ref_allele, start