Exemplo n.º 1
0
def top_10_cantidad_medicamentos(get):
    mfiltersPedidoDeFarmacia = get_filtros(get, pmodels.PedidoDeFarmacia)
    mfiltersPedidoDeClinica = get_filtros(get, pmodels.PedidoDeClinica)
    pedidosDeFarmacia = pmodels.PedidoDeFarmacia.objects.filter(**mfiltersPedidoDeFarmacia)
    pedidosDeClinica = pmodels.PedidoDeClinica.objects.filter(**mfiltersPedidoDeClinica)
    estadisticas = {}

    cantidadTotalMedicamentoEnPedidos = 0

    for pedido in pedidosDeFarmacia:
        for detalle in pedido.get_detalles():
            cantidadMedicamento = detalle.cantidad
            medicamento = detalle.medicamento.__str__()
            if medicamento in estadisticas:
                estadisticas[medicamento] += cantidadMedicamento
            else:
                estadisticas[medicamento] = cantidadMedicamento
            cantidadTotalMedicamentoEnPedidos += cantidadMedicamento

    for pedido in pedidosDeClinica:
        for detalle in pedido.get_detalles():
            cantidadMedicamento = detalle.cantidad
            medicamento = detalle.medicamento.__str__()
            if medicamento in estadisticas:
                estadisticas[medicamento] += cantidadMedicamento
            else:
                estadisticas[medicamento] = cantidadMedicamento
            cantidadTotalMedicamentoEnPedidos += cantidadMedicamento

    # ordeno y selecciono top10
    top = OrderedDict(sorted(estadisticas.items(), key=lambda t: t[1], reverse=True))
    top10 = dict(itertools.islice(top.items(), 10))
    top10 = OrderedDict(sorted(top10.items(), key=lambda t: t[1], reverse=True))

    estadisticas = {
        'columnChart': {'medicamentos': [], 'cantidades': []},
        'pieChart': [],
        'excel': []
    }

    resto = cantidadTotalMedicamentoEnPedidos
    for medicamento, cantidad in top10.items():
        estadisticas['columnChart']['medicamentos'].append(medicamento)
        estadisticas['columnChart']['cantidades'].append(cantidad)

        avg = float("%.2f" % ((cantidad * 100) / float(cantidadTotalMedicamentoEnPedidos)))
        estadisticas['pieChart'].append({'name': medicamento, 'y': avg})

        estadisticas['excel'].append({'medicamento': medicamento, 'cantidad': cantidad})

        resto -= cantidad

    if resto > 0:
        avg = float("%.2f" % ((resto * 100) / float(cantidadTotalMedicamentoEnPedidos)))
        estadisticas['pieChart'].append({'name': u'Otros', 'y': avg})

    return estadisticas
Exemplo n.º 2
0
def VerOrganizaciones(request):
    filters = get_filtros(request.GET, Omodels.Organizacion)
    mfilters = dict(filter(lambda v: v[0] in Omodels.Organizacion.FILTROS, filters.items()))
    organizacionesFarmacia = Omodels.Farmacia.objects.filter(**mfilters)
    organizacionesClinica = Omodels.Clinica.objects.filter(**mfilters)
    organizacionesObraSocial = Omodels.ObraSocial.objects.filter(**mfilters)
    organizacionesLaboratorio = Omodels.Laboratorio.objects.filter(**mfilters)
    return render(request, "organizaciones_mobile.html", {"organizacionesFarmacia": organizacionesFarmacia, "organizacionesClinica": organizacionesClinica, "organizacionesObraSocial": organizacionesObraSocial, "organizacionesLaboratorio": organizacionesLaboratorio})
Exemplo n.º 3
0
def VerMedicamentos(request):
    filters = get_filtros(request.GET, Mmodels.Medicamento)
    mfilters = dict(filter(lambda v: v[0] in Mmodels.Medicamento.FILTROS, filters.items()))
    medicamentos = Mmodels.Medicamento.objects.filter(**mfilters)
    estadisticas = {
        'total': Mmodels.Medicamento.objects.all().count(),
        'filtrados': medicamentos.count()
    }
    return render(request, "medicamentos_mobile.html", {"medicamentos": medicamentos, "filtros": filters, 'estadisticas': estadisticas})
Exemplo n.º 4
0
def top_10_organizaciones_pedidos_medicamentos(get_filtros, valores):
    filtros = {'desde': valores['desde'], 'hasta': valores['hasta']}
    mfiltersPedidoDeFarmacia = get_filtros(filtros, pmodels.PedidoDeFarmacia)
    mfiltersPedidoDeClinica = get_filtros(filtros, pmodels.PedidoDeClinica)
    pedidosDeFarmacia = pmodels.PedidoDeFarmacia.objects.filter(**mfiltersPedidoDeFarmacia)
    pedidosDeClinica = pmodels.PedidoDeClinica.objects.filter(**mfiltersPedidoDeClinica)
    med = valores['medicamento']
    estadisticas = {}

    totalSolicitudesMedicamento = 0

    for pedido in pedidosDeFarmacia:
        farmacia = "Farmacia "+pedido.farmacia.razonSocial
        for detalle in pedido.get_detalles():
            if detalle.medicamento == med:
                if farmacia in estadisticas:
                    estadisticas[farmacia] += 1
                else:
                    estadisticas[farmacia] = 1
                totalSolicitudesMedicamento += 1
                break

    for pedido in pedidosDeClinica:
        clinica = "Clinica " + pedido.clinica.razonSocial
        for detalle in pedido.get_detalles():
            if detalle.medicamento == med:
                if clinica in estadisticas:
                    estadisticas[clinica] += 1
                else:
                    estadisticas[clinica] = 1
                totalSolicitudesMedicamento += 1
                break

    # ordeno y selecciono top10
    top = OrderedDict(sorted(estadisticas.items(), key=lambda t: t[1], reverse=True))
    top10 = dict(itertools.islice(top.items(), 10))
    top10 = OrderedDict(sorted(top10.items(), key=lambda t: t[1], reverse=True))

    estadisticas = {
        'columnChart': {'organizaciones': [], 'cantidades': []},
        'pieChart': [],
        'excel': {'medicamento': '', 'datos': []}
    }

    resto = totalSolicitudesMedicamento
    for organizacion, cantidad in top10.items():
        estadisticas['columnChart']['organizaciones'].append(organizacion)
        estadisticas['columnChart']['cantidades'].append(cantidad)

        avg = float("%.2f" % ((cantidad * 100) / float(totalSolicitudesMedicamento)))
        estadisticas['pieChart'].append({'name': organizacion, 'y': avg})

        estadisticas['excel']['datos'].append({'organizacion': organizacion, 'cantidad': cantidad})

        resto -= cantidad

    estadisticas['excel']['medicamento'] = med.__str__()

    if resto > 0:
        avg = float("%.2f" % ((resto * 100) / float(totalSolicitudesMedicamento)))
        estadisticas['pieChart'].append({'name': u'Otros', 'y': avg})

    return estadisticas