pablodanielrey / ttps

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

Lv-E27 - verbo - El empleado accede al reporte de tiempo de demora de estudio desde toma de muestra hasta entrega de médico derivante. #43

Closed pablodanielrey closed 2 years ago

pablodanielrey commented 2 years ago

falta implemntar completo

pablodanielrey commented 2 years ago

hago un endpoint específico para las estadísticas asi implemento dentro de ese endpoint.

Lv-E23 - verbo - El empleado accede al reporte de cantidad de estudios Noción: El empleado accede a la funcionalidad de reporte donde se muestran la cantidad de estudios por tipo. Impactos: El empleado accede a la funcionalidad de reportes del sistema El empleado accede a la cantidad de estudios por tipo El sistema procesa el reporte El sistema muestra el reporte

Lv-E25 - verbo - El empleado accede al reporte de cantidad de estudios por mes del año Noción: El empleado accede a la funcionalidad de reporte donde se muestran la cantidad de estudios realizados por mes del año en curso. Impactos: El empleado accede a la funcionalidad de reportes del sistema El empleado accede a la cantidad de estudios por mes. El sistema procesa el reporte El sistema muestra el reporte

Lv-E27 - verbo - El empleado accede al reporte de tiempo de demora de estudio desde toma de muestra hasta entrega de médico derivante. Noción: El empleado accede a la funcionalidad de reporte donde se muestra el tiempo que demoran los estudios en promedio cada mes, desde que se toma la muestra hasta que se entrega el informe al médico derivante. Impactos: El empleado accede a la funcionalidad de reportes del sistema El empleado accede al reporte de tiempo El sistema procesa el reporte El sistema muestra el reporte.

esos verbos son necesarios implementarlos.

pablodanielrey commented 2 years ago

implemente un modelo básico que calcula los reportes. despues se debe incrementar los datos y la complejidad.

` class Reportes:

"""
    LV-E23
"""
def cantidad_de_estudios_por_tipo(self):
    estudios = models.Estudio.objects.all()
    reporte = {}
    for e in estudios:
        tipo = e.tipo.nombre
        if tipo not in reporte:
            reporte[tipo] = 0
        reporte[tipo] += 1
    return reporte

"""
    LV-E25
"""
def cantidad_de_estudios_por_mes(self):
    estudios = models.Estudio.objects.all()
    reporte = {}
    for e in estudios:
        mes = e.fecha_alta.month
        if mes not in reporte:
            reporte[mes] = 0
        reporte[mes] += 1
    return reporte

"""
    LV-E27
"""
def demora_de_procesamiento_de_estudios(self):
    estudios = models.Estudio.objects.all()
    reporte = {}
    for e in estudios:
        fecha_muestra = None
        fecha_entrega = None

        for estado in e.estados.order_by('fecha'):
            if isinstance(estado, models.EsperandoTomaDeMuestra):
                fecha_muestra = estado.fecha_muestra
            elif isinstance(estado, models.EsperandoEntregaAMedicoDerivante):
                fecha_entrega = estado.fecha_entrega
            if fecha_muestra and fecha_entrega:
                break
        else:
            continue

        tardanza = (fecha_entrega - fecha_muestra).seconds
        mes = e.fecha_alta.month
        if mes not in reporte:
            reporte[mes] = {
                'procesados': 0,
                'tardanza': 0
            }
        reporte[mes]['tardanza'] += tardanza
        reporte[mes]['procesados'] += 1

    return reporte

`

también genere una api específica para los reportes.


urlpatterns = [
    path('estudios_por_tipo/', views.Lve23ReporteCantidadDeEstudiosPorTipo.as_view()),
    path('estudios_por_mes/', views.Lve25ReporteCantidadDeEstudiosPorMesAno.as_view()),
    path('demora_promedio_procesamiento/', views.Lve27ReporteDemoraDeEstudios.as_view())
]

a saber: http://localhost:8000/reportes_api/demora_promedio_procesamiento http://localhost:8000/reportes_api/estudios_por_mes http://localhost:8000/reportes_api/estudios_por_tipo

pablodanielrey commented 2 years ago

ahora solo falta cambiar la vista para que obtenga los datos de esas apis. se lo transfiero a nico.

nicomagnani3 commented 2 years ago

@pablodanielrey modifique endpoint asi traer mas facil los datos para resolver con la libreria vue-chartjs, el http://localhost:8000/reportes_api/demora_promedio_procesamiento , me esta trayendo

``{data: {datos: {12: procesados: 1 tardanza_segundos: 0}

}}reporte: fecha_de_reporte: "2021-12-19T04:04:30.376687-03:00" } No seria mejor pasarlos array y en vez de 12 que traiga la posicion y dentro del array el mes 12, ejemplo datos :{ datos: 0:{ procesados: 1, tardanza_segundos: 0. mes:12} 1:{procesados:5, tardanza_segundos:2 mes:8} En formato array o json, simplificariamos mucho desde el front pero lo vemos

pablodanielrey commented 2 years ago

ya hice el refactor que necesitaba nico desde el front. el reporte: localhost:8000/reportes_api/demora_promedio_procesamiento/

lo reemplace al formato: { "reporte": { "fecha_de_reporte": "2021-12-20T22:56:26.702083-03:00" }, "datos": [ { "mes": 12, "tadanza_segundos": 0, "procesados": 2 } ] }