def code_detail(request, code):
    by_dataset = {}
    for d in Dataset.objects.all():
        by_dataset[d.identifier] = {'counts': [], 'dataset': d}
    for k in CodeCount.objects.filter(code=code):
        by_dataset[k.dataset_identifier]['counts'].append(k)
    for k in by_dataset:
        by_dataset[k]['visits'] = sum([
            c.count for c in by_dataset[k]['counts']
            if c.state == 'ALL' and c.code_type != 'pdx'
        ])
    context = {}
    payload = {
        'code': code,
        'Coder': codes.Coder(),
        'datasets': by_dataset.values(),
        'visit_type_str': STRINGS,
        'code_type_str': {
            "pdx": "Primary Diagnosis",
            'dx': "Diagnosis",
            "pr": "Procedure",
            "drg": "DRG"
        }
    }
    context['payload'] = payload
    return render(request, 'code.html', context=context, using='jt')
示例#2
0
def patient_viewer(request):
    payload = {'DB_LIST': get_databases()}
    if request.GET.get('patient_id') and request.GET.get('db'):
        patient_id = request.GET.get('patient_id')
        db = request.GET.get('db')
        patient_coded = get_patient(db, patient_id)
        temp = Patient()
        v = base64.decodestring(patient_coded["data"])
        temp.ParseFromString(v)
        raw_string = temp.raw
        temp.raw = ""
        payload['coder'] = codes.Coder()
        payload['patient_obj'] = temp
        payload['next_key'] = patient_coded["next"]
        payload['patient'] = {
            'patient_id': patient_id,
            'db': db,
            'data': str(temp),
            'raw_string': raw_string
        }
    context = {'payload': payload}
    return render(request,
                  'patient_viewer.html',
                  context=context,
                  using='jtlte')
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 get_context_data(self, **kwargs):
     context = super(DatasetList, self).get_context_data(**kwargs)
     context['datasets'] = []
     for d in Dataset.objects.all():
         temp = {}
         temp['syt'] = SYTCount.objects.filter(dataset=d)
         temp['st'] = STCount.objects.filter(dataset=d)
         temp['s'] = SCount.objects.filter(dataset=d)
         temp['entry'] = d
         context['datasets'].append(temp)
     context['Coder'] = codes.Coder()
     return context
def config(request):
    context = {}
    payload = {
        'coder':
        codes.Coder(),
        'enums':
        [(k, vstr, vval) for k, v in enums.__dict__.iteritems() if
         type(v) is google.protobuf.internal.enum_type_wrapper.EnumTypeWrapper
         for vstr, vval in v.items()],
    }
    context['payload'] = payload
    return render(request, 'config.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/')
示例#7
0
def aggregate_patients_viewer(request):
    path = urllib.unquote(base64.decodestring(request.GET.get('q')))
    entry = aggregate.PatientAggregate()
    entry.ParseFromString(file(path).read())
    context = {
        'payload': {
            'entry': entry.obj,
            'humanize': humanize,
            'Coder': codes.Coder(),
            'path': path,
            'age_plot_data': json.dumps(entry.age_plot())
        }
    }
    return render(request,
                  'aggregate_patients_viewer.html',
                  context=context,
                  using='jtlte')
示例#8
0
def ml_stats_viewer(request, code):
    stats = PDXCLASSIFIER()
    stats.ParseFromString(
        file(ML_PATH + "/stats/{}.stats".format(code)).read())
    context = {
        'payload': {
            'stats': stats,
            'humanize': humanize,
            'Coder': codes.Coder(),
            'path': "",
            # 'los_plot_data': json.dumps(index.los_plot()),
            # 'age_plot_data': json.dumps(index.age_plot())
        }
    }
    return render(request,
                  'ml_stats_viewer.html',
                  context=context,
                  using='jtlte')
示例#9
0
def codelist(request):
    coder = codes.Coder()
    return JsonResponse([(coder.prefix_inverse[coder.CODE_PREFIX[k]], k, v[-1])
                         for k, v in coder.CODES_ALL.iteritems()],
                        safe=False)