Closed pablodanielrey closed 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`
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.
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.
quedo resuelto con la implementación de hoy.
inicio el desarrollo de esta etapa. voy a testear con thunderclient para ver si ya no quedo resuelto con lo que realice del serializer.