def N3_group_detail(request, dataset_id, code):
    dataset = Dataset.objects.get(identifier=dataset_id)
    split = N3Group.objects.get(code=code, dataset=dataset)
    index_exclusions = json.loads(split.excluded_index)
    entry = N3.Node()
    entry.ParseFromString(get_file(dataset, '/RESULT/' + split.index_filename))
    edge_exclusions = json.loads(split.excluded_edges)
    ulinked_exclusions = json.loads(split.excluded_unlinked)
    groups = N3Entry.objects.all().filter(split_code=code).filter(
        dataset=dataset)
    context = {
        'payload': {
            'Coder': N3.N3Coder(),
            'code': code,
            'split_code': code,
            'node': entry.obj,
            'dataset': dataset,
            'edges': groups,
            'split': split,
            'exclusions_index': index_exclusions,
            'exclusions_unlinked': ulinked_exclusions,
            'exclusions_edge': edge_exclusions,
        }
    }
    return render(request, 'N3/group.html', context=context, using='jt')
def index_code(request, code):
    context = {}
    context['payload'] = {}
    coder = codes.Coder()
    n3coder = N3.N3Coder()
    q = coder[code]
    context['payload']['q'] = q
    context['payload']['humanize'] = humanize
    context['payload']['coder'] = coder
    context['payload']['N3coder'] = n3coder
    context['payload']['entries_available'] = True
    context['payload']['results'] = TextSearch.objects.filter(
        description__search=q)
    context['payload']['entries_N1'] = list(
        N1Group.objects.filter(code=str(code)))
    context['payload']['entries_N2'] = N2Group.objects.filter(code=code)
    if code.startswith('P'):
        context['payload']['entries_N3'] = N3Group.objects.filter(code=code)
    if code.startswith('C'):
        context['payload']['entries_N3'] = N3Group.objects.filter(
            Q(code='N3C_AS_' + code) | Q(code='N3C_ED_' + code))
    if code.startswith('D'):
        context['payload']['entries_N3'] = N3Group.objects.filter(
            Q(code='N3DX_AS_' + code) | Q(code='N3DX_ED_' + code)
            | Q(code='N3DX_IP_' + code))
    context['payload']['entries_N4'] = N4Group.objects.filter(code=code)
    return render(request, 'search.html', context, using='jt')
def N3_list(request, dataset_id):
    context = {}
    context['payload'] = {}
    context['payload']['dataset'] = get_object_or_404(Dataset,
                                                      identifier=dataset_id)
    context['payload']['Coder'] = N3.N3Coder()
    context['payload']['entries'] = list(
        N3Group.objects.filter(dataset=context['payload']['dataset']).filter(
            Q(index_count__gt=1)))
    return render(request, 'N3/list.html', context=context, using='jt')
def index(request):
    context = {}
    context['payload'] = {}
    coder = codes.Coder()
    n3coder = N3.N3Coder()
    if request.method == 'POST' and request.POST['top-search'].strip():
        q = request.POST['top-search']
        context['payload']['q'] = q
        context['payload']['humanize'] = humanize
        context['payload']['coder'] = coder
        context['payload']['N3coder'] = n3coder
        context['payload']['results'] = TextSearch.objects.filter(
            description__search=q)
        context['payload']['entries_N1'] = []
        context['payload']['entries_N2'] = []
        context['payload']['entries_N3'] = []
        context['payload']['entries_N4'] = []
        context['payload']['entries_available'] = False
        for i, k in enumerate(
                TextSearch.objects.filter(description__search=q)):
            context['payload']['entries_available'] = True
            if i < 5:
                context['payload']['entries_N1'] += list(
                    N1Group.objects.filter(code=str(k.code)))
                context['payload']['entries_N2'] += list(
                    N2Group.objects.filter(code=str(k.code)))
                if k.code.startswith('P'):
                    context['payload']['entries_N3'] += list(
                        N3Group.objects.filter(code=k.code))
                if k.code.startswith('C'):
                    context['payload']['entries_N3'] += list(
                        N3Group.objects.filter(
                            Q(code='N3C_AS_' + k.code)
                            | Q(code='N3C_ED_' + k.code)))
                if k.code.startswith('D'):
                    context['payload']['entries_N3'] += list(
                        N3Group.objects.filter(
                            Q(code='N3DX_AS_' + k.code)
                            | Q(code='N3DX_ED_' + k.code)
                            | Q(code='N3DX_IP_' + k.code)))
                context['payload']['entries_N4'] += list(
                    N4Group.objects.filter(code=k.code))
            else:
                break
        return render(request, 'search.html', context, using='jt')
    else:
        return redirect('/datasets/')
def N3_entry(request, dataset_id, key):
    dataset = Dataset.objects.get(identifier=dataset_id)
    entry_row = N3Entry.objects.get(key=key, dataset=dataset)
    entry_type = entry_row.entry_type
    fname = dataset.base_dir + '/RESULT/' + entry_row.filename
    if entry_type == 'edge':
        edge = N3.Edge()
        node = N3.Node()
        node_row = N3Entry.objects.get(key=entry_row.initial,
                                       dataset=dataset,
                                       entry_type='node',
                                       linked=True)
        node_fname = dataset.base_dir + '/RESULT/' + node_row.filename
        edge.ParseFromString(get_file(dataset,
                                      '/RESULT/' + entry_row.filename))
        node.ParseFromString(get_file(dataset, '/RESULT/' + node_row.filename))
        context = {
            'payload': {
                'Coder': N3.N3Coder(),
                'edge': edge.obj,
                'combiner': presentation.combine_tables,
                'combiner_dx': presentation.combine_dx,
                'node': node.obj,
                'delta_plot_data': json.dumps(edge.plot_data()),
                'delta_week_plot_data': json.dumps(edge.week_plot_data()),
                'los_plot_data_initial': json.dumps(edge.los_plot_initial()),
                'los_plot_data_sub': json.dumps(edge.los_plot_sub()),
                'los_plot_data_discharged':
                json.dumps(node.los_plot_discharged()),
                'age_plot_data_initial': json.dumps(edge.age_plot_initial()),
                'age_plot_data_sub': json.dumps(edge.age_plot_sub()),
                'age_plot_data_discharged':
                json.dumps(node.age_plot_discharged()),
                'dataset': dataset,
                'humanize': humanize
            }
        }
        return render(request, 'N3/edge.html', context=context, using='jt')
    else:
        payload = {}
        return 404