class AdmisionPeriodoView(TemplateView, LoginRequiredMixin): def dispatch(self, request, *args, **kwargs): """Filtra las :class:`Admision` de acuerdo a los datos ingresados en el formulario""" self.form = PeriodoForm(request.GET, prefix='admisiones') if self.form.is_valid(): inicio = self.form.cleaned_data['inicio'] fin = self.form.cleaned_data['fin'] self.inicio = datetime.combine(inicio, time.min) self.fin = datetime.combine(fin, time.max) self.admisiones = Admision.objects.filter( admision__range=(inicio, fin)) else: return redirect('admision-index') return super(AdmisionPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(AdmisionPeriodoView, self).get_context_data(**kwargs) context['inicio'] = self.inicio context['fin'] = self.fin context['admisiones'] = self.admisiones return context
class EvaluacionPeriodoView(TemplateView, LoginRequiredMixin): """Muestra los :class:`Evaluacion` de un periodo""" template_name = 'clinique/evaluacion_periodo.html' def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix='evaluacion-periodo') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.evaluaciones = Evaluacion.objects.filter( created__gte=self.inicio, created__lte=self.fin ).order_by('paciente__consultorio') return super(EvaluacionPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(EvaluacionPeriodoView, self).get_context_data(**kwargs) context['evaluaciones'] = self.evaluaciones context['inicio'] = self.inicio context['fin'] = self.fin return context
class CargoPeriodoView(TemplateView, LoginRequiredMixin): """Muestra los :class:`Cargo` de un periodo""" template_name = 'clinique/cargo_periodo.html' def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix='cargo-periodo') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.cargos = Cargo.objects.filter( created__gte=self.inicio, created__lte=self.fin ) return super(CargoPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(CargoPeriodoView, self).get_context_data(**kwargs) context['cargos'] = self.cargos context['inicio'] = self.inicio context['fin'] = self.fin context['cuenta'] = ItemTemplate.objects.values('descripcion').annotate( cargo_count=Count('consultorio_cargos')).filter( consultorio_cargos__created__gte=self.inicio, consultorio_cargos__created__lte=self.fin) return context
class SeguimientoPeriodoView(TemplateView, LoginRequiredMixin): """Muestra los :class:`Seguimiento`s de un periodo""" template_name = 'clinique/seguimiento_periodo.html' def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix='seguimiento-periodo') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.seguimiento = Seguimiento.objects.filter( created__gte=self.inicio, created__lte=self.fin ) return super(SeguimientoPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(SeguimientoPeriodoView, self).get_context_data(**kwargs) context['seguimientos'] = self.seguimiento context['inicio'] = self.inicio context['fin'] = self.fin context['cuenta'] = Seguimiento.objects.values( 'paciente').annotate( seguimiento_count=Count('id')) return context
class PagoPeriodoView(TemplateView): """Obtiene los :class:`Recibo` de un periodo determinado en base a un formulario que las clases derivadas deben proporcionar como self.form""" template_name = 'invoice/pago_periodo.html' def dispatch(self, request, *args, **kwargs): """Efectua la consulta de los :class:`Recibo` de acuerdo a los datos ingresados en el formulario""" self.form = PeriodoForm(request.GET, prefix='pago') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = self.form.cleaned_data['fin'] return super(PagoPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(PagoPeriodoView, self).get_context_data(**kwargs) pagos = Pago.objects.filter( recibo__created__range=(self.inicio, self.fin)) context['group'] = pagos.values('tipo__nombre').annotate( monto=Sum('monto') ).order_by() context['pagos'] = pagos context['total'] = pagos.aggregate(total=Sum('monto')) context['inicio'] = self.inicio context['fin'] = self.fin return context
class ConsultaPeriodoView(TemplateView, LoginRequiredMixin): """Muestra las opciones disponibles para la aplicación""" template_name = 'clinique/consulta_list.html' def dispatch(self, request, *args, **kwargs): """Filtra las :class:`Emergencia` de acuerdo a los datos ingresados en el formulario""" self.form = PeriodoForm(request.GET, prefix='consulta') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.consultas = Consulta.objects.filter( created__range=(self.inicio, self.fin) ) else: return redirect('invoice-index') return super(ConsultaPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): """Permite utilizar las :class:`Emergencia`s en la vista""" context = super(ConsultaPeriodoView, self).get_context_data(**kwargs) context['consultas'] = self.consultas context['inicio'] = self.inicio context['fin'] = self.fin return context
class ContratoPeriodoView(TemplateView, LoginRequiredMixin): """Muestra los contratos de un periodo""" template_name = 'contracts/periodo.html' def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix='contrato-periodo') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.contratos = Contrato.objects.filter( inicio__gte=self.inicio, inicio__lte=self.fin, ) return super(ContratoPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(ContratoPeriodoView, self).get_context_data(**kwargs) context['contratos'] = self.contratos context['inicio'] = self.inicio context['fin'] = self.fin return context
def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix="evento-periodo") if self.form.is_valid(): self.inicio = self.form.cleaned_data["inicio"] self.fin = datetime.combine(self.form.cleaned_data["fin"], time.max) self.eventos = Evento.objects.filter(fecha__gte=self.inicio, fecha__lte=self.fin) return super(EventoPeriodoView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix="contrato-periodo") if self.form.is_valid(): self.inicio = self.form.cleaned_data["inicio"] self.fin = datetime.combine(self.form.cleaned_data["fin"], time.max) self.contratos = Contrato.objects.filter( inicio__gte=self.inicio, inicio__lte=self.fin, plan__empresarial=False ) return super(ContratoPeriodoView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix='cargo-periodo') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.cargos = Cargo.objects.filter( created__gte=self.inicio, created__lte=self.fin ) return super(CargoPeriodoView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): """Efectua la consulta de los :class:`Recibo` de acuerdo a los datos ingresados en el formulario""" self.form = PeriodoForm(request.GET, prefix='pago') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = self.form.cleaned_data['fin'] return super(PagoPeriodoView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm() if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.contratos = Contrato.objects.filter( inicio__gte=self.inicio, inicio__lte=self.fin, ) return super(ContratoPeriodoView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix='evaluacion-periodo') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.evaluaciones = Evaluacion.objects.filter( created__gte=self.inicio, created__lte=self.fin ).order_by('paciente__consultorio') return super(EvaluacionPeriodoView, self).dispatch(request, *args, **kwargs)
class EstadisticasPeriodoView(TemplateView): """Obtiene los :class:`Recibo` de un periodo determinado en base a un formulario que las clases derivadas deben proporcionar como self.form""" template_name = 'invoice/estadisticas_periodo.html' def dispatch(self, request, *args, **kwargs): """Efectua la consulta de los :class:`Recibo` de acuerdo a los datos ingresados en el formulario""" self.form = PeriodoForm(request.GET, prefix='estadisticas') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = self.form.cleaned_data['fin'] return super(EstadisticasPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(EstadisticasPeriodoView, self).get_context_data(**kwargs) context['pagos'] = [] total = Recibo.objects.annotate(sold=Sum('ventas__total')).filter( created__range=(self.inicio, self.fin) ).aggregate(total=Sum('sold'))['total'] ventas = Venta.objects.filter( recibo__created__range=(self.inicio, self.fin)) context['ventas'] = ventas.values('item__descripcion').annotate( monto=Sum('monto'), cantidad=Sum('cantidad') ).order_by('-monto')[:20] if total is None: total = Decimal() context['recibos'] = total for tipo in TipoPago.objects.all(): pagado = tipo.pagos.filter( recibo__created__range=(self.inicio, self.fin) ).aggregate(total=Sum('monto'))['total'] if pagado is None: pagado = Decimal() context['pagos'].append((tipo, pagado)) context['inicio'] = self.inicio context['fin'] = self.fin return context
class EmergenciaPeriodo(TemplateView): template_name = 'estadisticas/emergencia.html' def dispatch(self, request, *args, **kwargs): """Filtra las :class:`Admision` de acuerdo a los datos ingresados en el formulario""" self.form = PeriodoForm(request.GET, prefix='emergencia') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.emergencias = Emergencia.objects.filter( created__gte=self.inicio, created__lte=self.fin ) else: return redirect('estadisticas') return super(EmergenciaPeriodo, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(EmergenciaPeriodo, self).get_context_data(**kwargs) context['inicio'] = self.inicio context['fin'] = self.fin context['emergencias'] = self.emergencias # Calcular todos los cargos efectuados en estas emergencias cargos = defaultdict(Decimal) doctores = defaultdict(int) for emergencia in self.emergencias: for cobro in emergencia.cobros.all(): cargos[cobro.cargo] += cobro.cantidad doctores[emergencia.usuario] += 1 context['cargos'] = cargos.items() context['doctores'] = reversed( sorted(doctores.items(), key=lambda x: x[1])) context['grafico'] = reversed( sorted(doctores.items(), key=lambda x: x[1])) context['grafico2'] = reversed( sorted(doctores.items(), key=lambda x: x[1])) context['total'] = sum(e.total() for e in self.emergencias) return context
def dispatch(self, request, *args, **kwargs): """Filtra las :class:`Emergencia` de acuerdo a los datos ingresados en el formulario""" self.form = PeriodoForm(request.GET, prefix='consulta') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.consultas = Consulta.objects.filter( created__range=(self.inicio, self.fin) ) else: return redirect('invoice-index') return super(ConsultaPeriodoView, self).dispatch(request, *args, **kwargs)
class DiagnosticoPeriodoView(TemplateView, LoginRequiredMixin): """Muestra los :class:`DiagnosticoClinico` de un periodo""" template_name = 'clinique/diagnostico_periodo.html' def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix='diagnostico-periodo') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.diagnosticos = DiagnosticoClinico.objects.filter( created__gte=self.inicio, created__lte=self.fin ).order_by('paciente__consultorio') return super(DiagnosticoPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(DiagnosticoPeriodoView, self).get_context_data(**kwargs) context['diagnosticos'] = self.diagnosticos context['inicio'] = self.inicio context['fin'] = self.fin context['total'] = self.diagnosticos.count() DiagnosticoClinico.objects.values('paciente__consultorio').annotate( consultorio_count=Count('paciente__consultorio') ).filter(created__gte=self.inicio, created__lte=self.fin) cons = defaultdict(int) consultorios = Consultorio.objects.all() for consultorio in consultorios: cons[consultorio] = DiagnosticoClinico.objects.filter( created__gte=self.inicio, created__lte=self.fin, paciente__consultorio=consultorio).count() cons = dict((k, v) for k, v in cons.items() if v > 0) context['consultorios'] = reversed( sorted(cons.iteritems(), key=lambda x: x[1])) context['consultorio_graph'] = reversed( sorted(cons.iteritems(), key=lambda x: x[1])) context['consultorio_graph2'] = reversed( sorted(cons.iteritems(), key=lambda x: x[1])) return context
def dispatch(self, request, *args, **kwargs): """Filtra las :class:`Admision` de acuerdo a los datos ingresados en el formulario""" self.form = PeriodoForm(request.GET, prefix='emergencia') if self.form.is_valid(): self.inicio = self.form.cleaned_data['inicio'] self.fin = datetime.combine(self.form.cleaned_data['fin'], time.max) self.emergencias = Emergencia.objects.filter( created__gte=self.inicio, created__lte=self.fin ) else: return redirect('estadisticas') return super(EmergenciaPeriodo, self).dispatch(request, *args, **kwargs)
class EventoPeriodoView(TemplateView, LoginRequiredMixin): """Muestra los :class:`Evento`s de un periodo""" template_name = "contracts/periodo.html" def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix="evento-periodo") if self.form.is_valid(): self.inicio = self.form.cleaned_data["inicio"] self.fin = datetime.combine(self.form.cleaned_data["fin"], time.max) self.eventos = Evento.objects.filter(fecha__gte=self.inicio, fecha__lte=self.fin) return super(EventoPeriodoView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(EventoPeriodoView, self).get_context_data(**kwargs) context["contratos"] = self.contratos context["inicio"] = self.inicio context["fin"] = self.fin return context
def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix='admisiones') return super(AdmisionPeriodo, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.form = PeriodoForm(request.GET, prefix='admisiones') return super(TratanteEstadisticaView, self).dispatch(request, *args, **kwargs)
def create_periodo_form(self, context, object_name, prefix, legend, action): context[object_name] = PeriodoForm(prefix=prefix) context[object_name].set_legend(legend) context[object_name].set_action(action)
def dispatch(self, request, *args, **kwargs): """Agrega el formulario""" self.form = PeriodoForm(request.GET, prefix='tipo') return super(ReporteTipoView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): """Agrega el formulario""" self.form = PeriodoForm(request.GET, prefix='remite') return super(ReciboRemiteView, self).dispatch(request, *args, **kwargs)