Пример #1
0
def set_mask(form,json_file,reserved_word,fieldname):
    """

    :param form: Contains item which user wanted to hind
    :param json_file: Original json file
    :param reserved_word: reserved word in json_file mark middle layer
    :param fieldname: reserved word in form
    :return:
    """

    length = len(fieldname)
    json_list,json_class = get_list_and_class(json_file, reserved_word)
    masked_list = []
    for field in form:
        if field.type == "BooleanField" and field.data == True:
            templist = json_class[int(str(field.id)[length:])].get_pos_list()
            for item in json_list:
                if is_prefix(templist,item):
                    item[-1] = 'mask'
                    if not item in masked_list:
                        masked_list.append(item)


    j = jd.list2json(json_list,reserved_word)

    print reserved_word
    for line in masked_list:
        print line
    masked_part = jd.list2json(masked_list,reserved_word)
    print masked_part


    final_file = package(json_file,masked_part)

    print json.dumps(masked_part,indent=4)
Пример #2
0
def cover_protected_data(data_list, resource, patient_id, status='full'):
    '''
    data_list : sometimes we don't wanna display all part of this resource, this list will tell us which to display,a list
        resource : json data that wanna to display, the format is dict
    patient_id : extract identifier of policy_list
    '''
    privacy_policy = db.select_policy(patient_id)

    if (privacy_policy == -2):
        #No record in the database
        return resource

    policy_data = jd.json2list(privacy_policy,RESERVED_WORD)

    if type(data_list) is dict:
        jd.json_reduce_structure(data_list)
        data_list = jd.json2list(data_list, RESERVED_WORD)

    if isinstance(resource['resourceType'], unicode):
        s=resource['resourceType']
    else:
        s=unicode(resource['resourceType'],"utf-8")

    jd.json_reduce_structure(resource)
    resource_data = jd.json2list(resource,RESERVED_WORD)

    for i in range(len(resource_data)):
        resource_data[i].insert(0,s)

    data = data_list

    for i in range(len(data)):
        data[i].insert(0,s)
    
    #If the query is only part of data,then do the intersection
    for i in range(len(data)):
        if data[i][1] == 'text' or data[i][1] == 'resourceType':
            continue

        tmp = retrieve(data[i],resource_data)
        if tmp[0] == 'Not_Found':
            data[i][-1] = 'Not in the online record'
        else:
            data[i][-1] = tmp[1]

    for i in range(len(data)):
        if data[i][1]=='text' or data[i][1]=='resourceType':
            continue
        tmp = retrieve(data[i],policy_data)
        # Not found or unmasked means we should not change the value
        if tmp[0] == 'Mask':
            # Here we need to filter the policy
            data[i][-1] = 'Protected data due to privacy policy'

    for i in range(len(data)):
        del data[i][0]

    result = jd.list2json(data,RESERVED_WORD)
    return result
Пример #3
0
def cover_protected_data(data_list, resource, patient_id, status='full'):
    '''
    data_list : sometimes we don't wanna display all part of this resource, this list will tell us which to display,a list
        resource : json data that wanna to display, the format is dict
    patient_id : extract identifier of policy_list
    '''
    privacy_policy = db.select_policy(patient_id)

    if (privacy_policy == -2):
        #No record in the database
        return resource

    policy_data = jd.json2list(privacy_policy, RESERVED_WORD)

    if type(data_list) is dict:
        jd.json_reduce_structure(data_list)
        data_list = jd.json2list(data_list, RESERVED_WORD)

    if isinstance(resource['resourceType'], unicode):
        s = resource['resourceType']
    else:
        s = unicode(resource['resourceType'], "utf-8")

    jd.json_reduce_structure(resource)
    resource_data = jd.json2list(resource, RESERVED_WORD)

    for i in range(len(resource_data)):
        resource_data[i].insert(0, s)

    data = data_list

    for i in range(len(data)):
        data[i].insert(0, s)

    #If the query is only part of data,then do the intersection
    for i in range(len(data)):
        if data[i][1] == 'text' or data[i][1] == 'resourceType':
            continue

        tmp = retrieve(data[i], resource_data)
        if tmp[0] == 'Not_Found':
            data[i][-1] = 'Not in the online record'
        else:
            data[i][-1] = tmp[1]

    for i in range(len(data)):
        if data[i][1] == 'text' or data[i][1] == 'resourceType':
            continue
        tmp = retrieve(data[i], policy_data)
        # Not found or unmasked means we should not change the value
        if tmp[0] == 'Mask':
            # Here we need to filter the policy
            data[i][-1] = 'Protected data due to privacy policy'

    for i in range(len(data)):
        del data[i][0]

    result = jd.list2json(data, RESERVED_WORD)
    return result
Пример #4
0
def list_extension (json_data):
    #Extend resource type into json_list module
    data = jd.json2list(json_data,RESERVED_WORD)
    if isinstance(json_data['resourceType'], unicode):
        s=json_data['resourceType']
    else:
        s=unicode(json_data['resourceType'],"utf-8")
    for i in range(len(data)):
        data[i].insert(0,s)
    return json.dumps(jd.list2json(json_data,RESERVED_WORD),separators=(',',':'))
Пример #5
0
def list_extension(json_data):
    #Extend resource type into json_list module
    data = jd.json2list(json_data, RESERVED_WORD)
    if isinstance(json_data['resourceType'], unicode):
        s = json_data['resourceType']
    else:
        s = unicode(json_data['resourceType'], "utf-8")
    for i in range(len(data)):
        data[i].insert(0, s)
    return json.dumps(jd.list2json(json_data, RESERVED_WORD),
                      separators=(',', ':'))