Пример #1
0
def crear_sobreturno(request, pk):
    '''
        Crea un nuevo turno después del último disponible.

        Grupo acceso disponible: grupo_administrativo
    '''
    instance = get_object_or_404(Turno, id=pk)
    form = TurnoForm({}, instance=instance)
    save, result = form.sobreturno()
    if save:
        return JsonResponse({'success': save, 'turno': result.as_json()})
    else:
        return JsonResponse({'success': save, 'errors': result})
Пример #2
0
def edit_turn(request, pk):
    '''
        Edita el estado de un turno (Llamada mediante Ajax)

        Grupo acceso disponible: grupo_administrativo
    '''
    instance = get_object_or_404(Turno, id=pk)
    form_data = json.loads(request.body)
    form = TurnoForm(form_data, instance=instance)
    save, result = form.change_state(form_data)
    if save:
        return JsonResponse({'success': save, 'turno': instance.as_json()})
    else:
        return JsonResponse({'success': save, 'errors': result})
Пример #3
0
def cancelar_turno(request, pk):
    '''
        Vista para cambiar el estado de un turno a 'Cancelado por el paciente'
        (Llamada mediante Ajax)

        Grupo acceso disponible: grupo_administrativo
    '''
    instance = get_object_or_404(Turno, id=pk)
    form_data = {'state': Turno.CANCELADO_PACIENTE}
    form = TurnoForm(form_data, instance=instance)
    save, result = form.change_state(form_data)
    if save:
        return JsonResponse({'success': save, 'turno': instance.as_json()})
    else:
        return JsonResponse({'success': save, 'errors': result})
Пример #4
0
def index(request):
    '''
        Vista inicial con calendario que permite agregar turnos

        Grupo acceso disponible: grupo_administrativo
    '''
    context = {
        'modal_title':
        'Agregar turno',
        'modal_close':
        'Cancelar',
        'modal_body_include':
        'calendario/add_appointment_form.html',
        'modal_size':
        'modal-lg',
        'modal_buttons':
        ('<button type="button" class="btn btn-success" '
         'id="addAppointmentButton" '
         'onclick="customAppointmentFormSubmit();">Agregar</button>'),
        'form':
        TurnoForm(user=request.user),
        'turno_states': {
            'DISPONIBLE': Turno.DISPONIBLE,
            'ASIGNADO': Turno.ASIGNADO,
            'ESPERANDO_EN_SALA': Turno.ESPERANDO_EN_SALA,
            'ATENDIDO': Turno.ATENDIDO,
            'CANCELADO_PACIENTE': Turno.CANCELADO_PACIENTE,
            'CANCELADO_ESTABLECIMIENTO': Turno.CANCELADO_ESTABLECIMIENTO
        }
    }
    return render(request, 'calendario.html', context)
Пример #5
0
def confirm_turn(request, pk):
    '''
        Confirma el turno de un paciente (Llamada mediante Ajax)

        Grupo acceso disponible: grupo_administrativo
    '''
    instance = get_object_or_404(Turno, id=pk)
    form_data = json.loads(request.body)
    logger.info(f'Gestion de turno {pk}: {form_data}')
    form_data['solicitante'] = request.user
    form = TurnoForm(form_data, instance=instance)
    save, result = form.update(form_data)
    if save:
        return JsonResponse({'success': save, 'turno': instance.as_json()})
    else:
        return JsonResponse({'success': save, 'errors': result})
Пример #6
0
def add_appointment(request):
    '''
        Recibe los datos del formulario para crear los turnos disponibles

        Grupo acceso disponible: grupo_administrativo
    '''
    form_data = json.loads(request.body)
    if form_data['bulk']:
        form = BulkTurnoForm(form_data)
    elif form_data['id']:
        instance = Turno.objects.get(pk=form_data['id'])
        if form_data['delete']:
            instance.delete()
            form = None
        else:
            form = TurnoForm(form_data, instance=instance)
    else:
        form = TurnoForm(form_data)

    if form is None:
        response_data = {'success': True, 'appointments': []}
    elif form.is_valid():
        appointments = form.save()
        if not isinstance(appointments, list):
            appointments = [appointments]
        response_data = {
            'success':
            True,
            'appointments': [{
                'id': a.id,
                'title': str(a),
                'start': a.inicio.isoformat(),
                'end': a.fin.isoformat(),
            } for a in appointments]
        }
    else:
        logger.error(
            f'Error al grabar turnos: {form.errors}, data: {form_data}')
        response_data = {'success': False, 'errors': form.errors}

    return JsonResponse(response_data)
Пример #7
0
    def test_especialidades_permitidas_form_turno(self):
        ''' Usuario `administrativo1` solamente puede agregar turnos de 
            Especialidades en Centros de Salud permitidos '''

        self.client.login(username=self.user_admin_1,
                          password=self.user_admin_1)

        # Instanciar el formulario de Turnos para nuestro usuario
        form = TurnoForm(user=self.user_admin_1)

        # Obtener la especialidad (Servicio de un centro de salud)
        # permitida para este usuario

        # El método get() devuelve un error si existe más de 1 objeto
        servicio = form.fields['servicio'].queryset.get()

        # El usuario administrativo1 solo puede agendar turnos
        # de especialidades del CS 1 que es el que tiene asignado
        self.assertEqual(servicio.centro.nombre, 'Centro de Salud 1')
        self.assertEqual(servicio.especialidad.nombre, 'Especialidad 1')