예제 #1
0
    def realizar_pago_contra_factura(self, request, pk=None):
        try:
            importe = Decimal(request.data.get('pago_contra_factura'))
            if importe < 0:
                raise ValidationError(
                    'No se permiten valores negativos en el campo importe')

            estudio = Estudio.objects.get(pk=pk)
            if estudio.es_pago_contra_factura and importe == estudio.pago_contra_factura:
                raise ValidationError(
                    'El importe ingresado debe ser distinto al importe anterior'
                )

            estudio.set_pago_contra_factura(importe)
            estudio.save()
            add_log_entry(estudio, self.request.user, CHANGE,
                          'PAGO CONTRA FACTURA')
            response = JsonResponse({}, status=status.HTTP_200_OK)
        except ValidationError as ex:
            response = JsonResponse({'error': str(ex)},
                                    status=status.HTTP_400_BAD_REQUEST)
        except Exception as ex:
            response = JsonResponse({'error': str(ex)},
                                    status=status.HTTP_400_BAD_REQUEST)

        return response
예제 #2
0
파일: views.py 프로젝트: cedir/web
def confirmar(request, id_turno):
    if not request.user.is_authenticated:
        response_dict = {'status': 0, 'message': err_ses}
        return JsonResponse(response_dict)

    try:
        turno = Turno.objects.get(id=id_turno)

        if turno.estado.id == Estado.ANULADO:
            raise ValidationError('El turno esta anulado y no acepta modificaciones')

        turno.estado = Estado.objects.get(id=Estado.CONFIRMADO)
        turno.save()
        add_log_entry(turno, request.user, CHANGE, "CONFIRMA")

        response_dict = {'status': 1, 'message': "El turno se ha confirmado correctamente."}
        return JsonResponse(response_dict)

    except Turno.DoesNotExist:
        response_dict = {'status': 0, 'message': "Error, no existe turno"}
        return JsonResponse(response_dict)
    except ValidationError as e:
        response_dict = {'status': 0, 'message': e.message}
        return JsonResponse(response_dict)
    except Exception as err:
        return str(err)
예제 #3
0
파일: views.py 프로젝트: cedir/web
def anular(request, id_turno):
    if not request.user.is_authenticated:
        response_dict = {'status': 0, 'message': err_ses}
        return JsonResponse(response_dict)

    observacion_turno = request.GET['observacion_turno']

    try:
        turno = Turno.objects.get(id=id_turno)

        if turno.estado.id == Estado.ANULADO:
            raise ValidationError('El turno esta anulado y no acepta modificaciones')

        turno.estado = Estado.objects.get(id=Estado.ANULADO)

        if observacion_turno:
            turno.observacion = observacion_turno

        turno.save()

        turno_channel_msg(turno, 'ANULA')

        add_log_entry(turno, request.user, CHANGE, "ANULA")

        response_dict = {'status': 1, 'message': "El turno se ha anulado correctamente."}
        return JsonResponse(response_dict)

    except Turno.DoesNotExist:
        response_dict = {'status': 0, 'message': "Error, no existe turno"}
        return JsonResponse(response_dict)
    except ValidationError as e:
        response_dict = {'status': 0, 'message': e.message}
        return JsonResponse(response_dict)
    except Exception as err:
        return str(err)
예제 #4
0
파일: views.py 프로젝트: cedir/web
def update(request, id_turno):
    # session check
    if not request.user.is_authenticated:
        response_dict = {'status': 0, 'message': err_ses}
        return JsonResponse(response_dict)

    id_obra_social = request.GET['id-obra-social']
    observacion = request.GET['observacion']

    try:
        turno = Turno.objects.get(id=id_turno)

        if turno.estado.id == Estado.ANULADO:
            raise ValidationError('El turno esta anulado y no acepta modificaciones')

        turno.obraSocial = ObraSocial.objects.get(id=id_obra_social)
        turno.observacion = observacion
        turno.save()

        add_log_entry(turno, request.user, CHANGE, "MODIFICA")

        response_dict = {'status': 1, 'message': "El turno se ha guardado correctamente."}
        return JsonResponse(response_dict)

    except Turno.DoesNotExist:
        response_dict = {'status': 0, 'message': "Error, no existe turno"}
        return JsonResponse(response_dict)
    except ValidationError as e:
        response_dict = {'status': 0, 'message': e.message}
        return JsonResponse(response_dict)
    except Exception as err:
        return str(err)
예제 #5
0
    def create(self, validated_data):
        monto_acumulado = MovimientoCaja.objects.last().monto_acumulado

        user = validated_data['username']
        estudio = validated_data['estudio_id']
        movimientos = []

        for movimiento in validated_data['movimientos']:
            tipo = movimiento['tipo_id']
            medico = movimiento['medico_id']
            concepto = movimiento['concepto']
            monto = movimiento['monto']
            monto_acumulado += monto
            movimiento = MovimientoCaja.objects.create(
                estudio=estudio,
                user=user,
                tipo=tipo,
                medico=medico,
                monto=monto,
                concepto=concepto,
                monto_acumulado=monto_acumulado)

            tipo_monto_acumulado = MontoAcumulado.objects.filter(
                tipo=tipo).first() or MontoAcumulado.objects.get(
                    tipo__id=ID_GENERAL)
            tipo_monto_acumulado.monto_acumulado += monto
            tipo_monto_acumulado.save()

            add_log_entry(movimiento, user, ADDITION, 'CREA')
            movimientos += [movimiento]

        return movimientos
예제 #6
0
파일: views.py 프로젝트: cedir/web
def anunciar(request, id_turno):
    if not request.user.is_authenticated:
        response_dict = {'status': 0, 'message': err_ses}
        return JsonResponse(response_dict)

    try:
        turno = Turno.objects.get(id=id_turno)

        if turno.estado.id == Estado.ANULADO:
            raise ValidationError('El turno esta anulado y no acepta modificaciones')

        practicas = turno.practicas.all()
        for practica in practicas:
            estudio = Estudio()
            estudio.paciente_id = turno.paciente.id
            estudio.practica_id = practica.id
            estudio.fecha = turno.fechaTurno
            estudio.medico_id = turno.medico.id
            estudio.obra_social_id = turno.obraSocial.id
            estudio.medico_solicitante_id = turno.medico.id
            estudio.nro_de_orden = ""
            estudio.anestesista_id = 1
            estudio.turno = turno
            estudio.set_create_defaults()
            estudio.save()

            # log estudio
            add_log_entry(estudio, request.user, ADDITION, 'CREA (desde turnos)')
        turno_channel_msg(turno, 'ANUNCIA')
        turno.estado = Estado.objects.get(pk=Estado.EN_ESPERA)
        turno.save()
        add_log_entry(turno, request.user, CHANGE, "ANUNCIA")

        response_dict = {'status': True, 'message': "Success"}
        return JsonResponse(response_dict)

    except Turno.DoesNotExist:
        response_dict = {'status': False, 'message': "Error, no existe turno"}
        return JsonResponse(response_dict)
    except ValidationError as e:
        response_dict = {'status': 0, 'message': e.message}
        return JsonResponse(response_dict)
    except Exception as err:
        response_dict = {'status': False, 'message': str(err)}
        return JsonResponse(response_dict)
예제 #7
0
    def anular_pago_contra_factura(self, request, pk=None):
        try:
            estudio = Estudio.objects.get(pk=pk)
            if not estudio.es_pago_contra_factura:
                raise ValidationError(
                    'No se puede anular un estudio que no fue dado de pago contra factura'
                )
            estudio.anular_pago_contra_factura()
            estudio.save()
            add_log_entry(estudio, self.request.user, CHANGE,
                          'ANULA PAGO CONTRA FACTURA')
            response = JsonResponse({}, status=status.HTTP_200_OK)
        except ValidationError as e:
            response = JsonResponse({'error': e.message},
                                    status=status.HTTP_400_BAD_REQUEST)
        except Exception as e:
            response = JsonResponse({'error': str(e)},
                                    status=status.HTTP_400_BAD_REQUEST)

        return response
예제 #8
0
    def update_importes(self, request, pk=None):
        pension = request.data.get('pension')
        diferencia_paciente = request.data.get('diferencia_paciente')
        arancel_anestesia = request.data.get('arancel_anestesia')

        estudio = Estudio.objects.get(pk=pk)
        estudio.pension = Decimal(pension)
        estudio.diferencia_paciente = Decimal(diferencia_paciente)
        estudio.arancel_anestesia = Decimal(arancel_anestesia)

        if estudio.presentacion_id:
            return Response(
                {
                    'success':
                    False,
                    'message':
                    'El estudio esta presentado/pcf y no se puede modificar'
                },
                status=status.HTTP_400_BAD_REQUEST)

        estudio.save()
        add_log_entry(estudio, self.request.user, CHANGE, 'ACTUALIZA IMPORTES')
        return Response({'success': True})
예제 #9
0
    def update_movimientos(self, request, pk=None):
        try:
            movimiento = MovimientoCaja.objects.get(pk=pk)

            movimientos_serializer = MovimientoCajaUpdateSerializer(
                movimiento, data=request.data)
            if not movimientos_serializer.is_valid():
                raise ValidationError(movimientos_serializer.errors)

            movimientos_serializer.save()
            add_log_entry(movimiento, self.request.user, CHANGE,
                          'ACTUALIZACION MOVIMIENTO CAJA')

            response = JsonResponse({}, status=status.HTTP_200_OK)
        except ValidationError as ex:
            response = JsonResponse({'error': str(ex)},
                                    status=status.HTTP_400_BAD_REQUEST)
        except Exception as ex:
            response = JsonResponse(
                {'error': str(ex)},
                status=status.HTTP_500_INTERNAL_SERVER_ERROR)

        return response
예제 #10
0
파일: views.py 프로젝트: cedir/web
def reprogramar(request, id_turno):
    if not request.user.is_authenticated:
        response_dict = {'status': 0, 'message': err_ses}
        return JsonResponse(response_dict)

    observacion_turno = request.GET['observacion_turno']

    try:
        turno = Turno.objects.get(id=id_turno)

        if turno.estado.id != Estado.ANULADO:
            turno.estado = Estado.objects.get(id=Estado.ANULADO)
            if observacion_turno:
                turno.observacion = observacion_turno
            turno.save()

            turno_channel_msg(turno, 'ANULA')
            add_log_entry(turno, request.user, CHANGE, "REPROGRAMA")

        practicas = turno.practicas.all()

        # generamos una estructura de datos similar a request.GET
        data = QueryDict('', mutable=True)
        data.update({
            'id-sala': turno.sala.id,
            'id-paciente': turno.paciente.id,
            'id-medico': turno.medico.id,
            'id-obra-social': turno.obraSocial.id
        })
        data.setlist('id-practicas[]', [str(practica.id) for practica in practicas])

        return _get_turnos_disponibles(request.user, data)

    except Turno.DoesNotExist:
        return get_buscar_turnos(request)
    except Exception as err:
        return str(err)
예제 #11
0
파일: views.py 프로젝트: cedir/web
def guardar(request):
    err_sup = 'Error, se ha detectado superposición de turnos. Por favor, haga click en Mostrar y vuelva a intentarlo.'
    # session check
    if not request.user.is_authenticated:
        response_dict = {'status': 0, 'message': err_ses}
        return JsonResponse(response_dict)

    hora_inicio = request.GET['hora_inicio']
    hora_fin_estimada = request.GET['hora_fin_estimada']
    fecha_turno = parse_date(request.GET['fecha_turno'])
    id_sala = request.GET['id-sala']

    # gte...>=  -  lte...<=  -  gt....>  -  lt....<
    arr_turnos = Turno.objects.filter(
        Q(fechaTurno=fecha_turno, sala__id=id_sala, estado__id__lt=3),
        Q(horaInicio__lte=hora_inicio, horaFinEstimada__gt=hora_inicio)
        |
        Q(horaInicio__lt=hora_fin_estimada, horaFinEstimada__gte=hora_fin_estimada)
    )

    if len(arr_turnos) > 0:
        response_dict = {'status': 0, 'message': err_sup}
        return JsonResponse(response_dict)


    id_paciente = request.GET['id-paciente']
    id_practicas = request.GET.getlist('id-practicas[]')
    id_medico = request.GET['id-medico']
    id_obra_social = request.GET['id-obra-social']
    observacion_turno = request.GET['observacion_turno']

    if (_is_feriado(fecha_turno) or _is_medico_con_licencia(fecha_turno, id_medico)):
        err_no_atiende = 'El medico no atiende en la fecha seleccionada'
        response_dict = {'status': 0, 'message': err_no_atiende}
        return JsonResponse(response_dict)

    try:
        paciente = Paciente.objects.get(id=id_paciente)
        practicas = Practica.objects.filter(id__in=id_practicas)
        turno = Turno()
        turno.horaInicio = hora_inicio
        turno.horaFinEstimada = hora_fin_estimada
        turno.horaFinReal = hora_fin_estimada
        turno.fecha_otorgamiento = datetime.now()
        turno.fechaTurno = fecha_turno
        turno.observacion = observacion_turno
        turno.paciente = paciente
        turno.medico_id = id_medico
        turno.obraSocial_id = id_obra_social
        turno.sala_id = id_sala
        turno.estado_id = 1
        turno.save(force_insert=True)

        for practica in practicas:
            turno.practicas.add(practica)

        turno.save()

        turno_channel_msg(turno, 'CREA')
        add_log_entry(turno, request.user, ADDITION, 'CREA')

        response_dict = {'status': 1, 'message': "El turno se ha creado correctamente."}
        return JsonResponse(response_dict)

    except Paciente.DoesNotExist:
        response_dict = {'status': 0, 'message': "Error, no existe el paciente"}
        return JsonResponse(response_dict)
    except Exception as err:
        response_dict = {'status': 0, 'message': str(err)}
        return JsonResponse(response_dict)
예제 #12
0
 def perform_update(self, serializer):
     estudio = serializer.save()
     add_log_entry(estudio, self.request.user, CHANGE, 'ACTUALIZA')
예제 #13
0
 def perform_create(self, serializer):
     estudio = serializer.save()
     add_log_entry(estudio, self.request.user, ADDITION, 'CREA')