pablodanielrey / ttps

práctica de ttps
GNU General Public License v3.0
0 stars 0 forks source link

L2V-P3 - verbo - El paciente carga el comprobante de pago de un estudio #29

Closed pablodanielrey closed 2 years ago

pablodanielrey commented 2 years ago

inicio el desarrollo de esta etapa. voy a testear con thunderclient para ver si ya no quedo resuelto con lo que realice del serializer.

pablodanielrey commented 2 years ago

parece que el mejor lugar para ubicar el código que divide la actualización en los distintos estados esta en el serializador del estdo virtual generado para el paciente. `class SerializadorListaDeEstadosPaciente(rest_serializers.ListSerializer):

restricciones = L2e14Restricciones()

def to_representation(self, data):
    iterable = data.all() if isinstance(data, django_models.Manager) else data
    elementos = self.restricciones.agrupador(iterable)
    datos = [
        self.child.to_representation(item) for item in elementos
    ]
    return datos`
pablodanielrey commented 2 years ago

bien loguré pasarlo al serializador al proceso de todo el worklfow. implemente el ejemplo del comprobante de pago. ` class SerializadorEsperandoComprobanteDePago(serializers.ModelSerializer): fecha_procesado = serializers.DateTimeField(required=False, read_only=False) comprobante = SerializadorArchivos(required=False, read_only=False) class Meta: model = models.EsperandoComprobanteDePago fields = ['id','fecha','comprobante','fecha_procesado']

def update(self, instance, validated_data):
    estudio = instance.estudio

    fecha_procesado = validated_data.pop('fecha_procesado',None)
    if fecha_procesado:
        """ se anula el comprobante por falta de pago, es necesario pasar el estudio a AnuladoPorFaltaDePago """
        logging.debug('anulando el estudio por falta de pago')    
        estado = models.AnuladorPorFaltaDePago(estudio=estudio, fecha_procesado=fecha_procesado)
        estado.save()
        return estado

    logging.debug('actualizando el estado con el comprobante')
    comprobante = validated_data.get('comprobante')
    archivo = models.Archivo.from_datauri(comprobante['contenido'])
    archivo.save()
    instance.comprobante = archivo
    instance.save()

    logging.debug('pasando al siguiente estado')
    estado = models.EnviarConsentimientoInformado(estudio=estudio)
    estado.save()
    return estado

`

inclusive tiene los datos opcionales que definen que acción se va a realizar. se reemplaza el gran if del create de la vista por cada estado.

pablodanielrey commented 2 years ago

ya está resuelto el refactor completo de los estados. solo faltaría agregar las pantallas para el perfíl de paciente. le quedaría nico.

pablodanielrey commented 2 years ago

quedo resuelto con la implementación de hoy.