Yii Framework Forum: Problemas con un reporte - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Problemas con un reporte Rate Topic: -----

#1 User is offline   Hernan Dario 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 27-September 16

Posted 22 August 2017 - 04:00 AM

Muy buenos días

Agradecería que pudieran ayudarme,ya que llevo tiempo y no logro avanzar
mi problema consiste en dos partes

primero tengo esta consulta.

Attached File  Captura.PNG (23.29K)
Number of downloads: 6

SELECT historiaFisica,count(evolucion.id) 
AS contadorEvoluciones,historiaclinicafisica.pacienteId,evolucion.id,tercero.eps
	FROM evolucion 
	INNER JOIN historiaclinicafisica 
	ON evolucion.historiaFisica=historiaclinicafisica.id 
	WHERE evolucion.fecha >= '2017-07-01' 
	AND evolucion.fecha <= '2017-07-31'
        GROUP BY evolucion.historiaFisica
	ORDER BY evolucion.fecha DESC


Se supone que tiene que arrojarme la historia y la ultima evolucion realizada entre fecha y fecha, junto con la
cantidad de evoluciones realizadas, el problema es que me devuelve la fecha de una evolucion pero no de la ultima evolución.

Attached File  Captura1.PNG (14.65K)
Number of downloads: 6


Segunda parte del problema.

parte de la vista del reporte:

foreach ($modelApProcedimientos as $key => $value) {

			$modelTercero = Tercero::model()->findByPk($value->pacienteId);
			$modelAgenda = Agenda::model()->find('numeroAutorizacion =:autorizacion',array(':autorizacion'=>$value->numeroautorizacion));
			$modelHistoria=Historiaclinicafisica::model()->findByPk($value->historiaFisica);
			$modeloCie10=Diagnostico::model()->find('historiaFisicaId=:historiaFisicaId',array(':historiaFisicaId'=>$value->historiaFisica));
			$modelEntidad = Entidadsalud::model()->find('numeroDocumento=:eps',array(':eps'=>$modelTercero->eps));

			$numeroAuto ='';

			
			//**********************INFO AGENDA******************************
				echo '<tr>
				 <td>'.$modelAgenda->numeroRecibo.'</td>
				 <td>'.$modelAgenda->cantidad.'</td>
				';

				if(!empty($modelAgenda->numeroAutorizacion))
				{
				   echo '<td>'.$modelAgenda->numeroAutorizacion.'</td>';
				}
				else{
					echo '<td bgcolor="#f9c5b8">'.$value->numeroautorizacion.'</td>';
				}

				echo'
				 <td>'.$modelAgenda->MedicoOrden.'</td>
				 <td>'.$modelAgenda->TipoRecaudo.'</td>
				 <td>'.$modelAgenda->ValorRecaudo.'</td>
				 <td>'.$codOptimus.'</td>
				 ';


Tengo que generar un reporte supremamente engorroso, me explico tengo que llamar diferentes modelos,mientras se escribe el archivo en excel, por tanto se termina cayendo el script, como se puede hacer para que las consultas o la llamada a modelos sea mas optima.

Si alguien tiene experiencia en reportes que me pueda ayudar !!

De antemano Muchas Gracias.
0

#2 User is offline   rahif 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 272
  • Joined: 11-July 13

Posted 24 August 2017 - 03:51 AM

Hola, Para la 1ª mira este enlace.

Para la 2ª esta no es nada fácil.
- Si el script cae por tiempo (quizas las sql puedan optimizarse, o el codigo), sino aumentar el tiempo permitido de ejecucion del script.
- Si el script cae por falta de memoria recuerda que un objeto consume más que un array, minimiza todo lo que puedas el nº de objetos.
En Yii2 esto es más facil que en Yii1 (por lo menos este caso), pero aún así si el bucle es grande ...

Utiliza explain para ver las sql, de select * ... --> haz explain select * ...
y mira si necesitas crear alguna clave para acelerar la búsquedas.

saludos
1

#3 User is offline   Hernan Dario 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 27-September 16

Posted 25 August 2017 - 11:01 AM

View Postrahif, on 24 August 2017 - 03:51 AM, said:

Hola, Para la 1ª mira este enlace.

Para la 2ª esta no es nada fácil.
- Si el script cae por tiempo (quizas las sql puedan optimizarse, o el codigo), sino aumentar el tiempo permitido de ejecucion del script.
- Si el script cae por falta de memoria recuerda que un objeto consume más que un array, minimiza todo lo que puedas el nº de objetos.
En Yii2 esto es más facil que en Yii1 (por lo menos este caso), pero aún así si el bucle es grande ...

Utiliza explain para ver las sql, de select * ... --> haz explain select * ...
y mira si necesitas crear alguna clave para acelerar la búsquedas.

saludos



Muchas gracias por tu respuesta en efecto el primer problema era una cuestion de ordenar,el sql
lo que estaba haciendo era agruparme las evoluciones pero en el select se mostraba cualquiera
debido a que el order solo se aplica a la salida general no a la salida de cada select

Solucione esto empleando la funcion MAX(evolucion.fecha) de sql de esta manera me mostraria
la evolucion con mayor fecha de una historia clinica y cumpliendo los WHERE.

SELECT historiaFisica,count(evolucion.id) 
AS contadorEvoluciones,historiaclinicafisica.pacienteId,MAX(evolucion.id) AS idEvo,
MAX(evolucion.fecha) AS fechaEvo,  <--- La funcion MAX me arroja la fecha mayor que cumpla las condiciones
evolucion.hora
FROM evolucion 
INNER JOIN historiaclinicafisica 
ON evolucion.historiaFisica=historiaclinicafisica.id 
WHERE evolucion.fecha >= '".$model->fechaInicioReport."' 
AND evolucion.fecha <= '".$model->fechaFinReport."'
GROUP BY evolucion.historiaFisica
ORDER BY evolucion.fecha DESC,evolucion.hora DESC
<-- Esto organiza es la salida general

Con respecto a lo segundo sigo investigando,debido a que uso yii 1
me toca optimizarlo lo mas posible es por eso que para el reporte creare un store procedure para asi
hacer la busqueda en el servidor y no depender del tiempo de carga de los navegadores,ni de la maquina del usuario , me permito hacer esto debido a que el reporte es algo mensual, entonces la carga en le servidor seria minima.

Pero si tienen algun otro consejo les agradeceria
0

#4 User is offline   rahif 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 272
  • Joined: 11-July 13

Posted 25 August 2017 - 01:57 PM

Hola,
Muy bien salvado el punto 1 :) , en este caso has podido hacerlo en un select, pero no siempre se puede.

Para el punto 2 lo que comentas esta bien, porque no veo que puedas cachear nada ya que trabajas con varios modelos y parece una locura, pero si puedes utilizar cache las cosas se acelerarian y mucho.

Suerte
0

#5 User is offline   lagogz 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 739
  • Joined: 30-November 12
  • Location:Galiza

Posted 31 August 2017 - 04:45 AM

Y exportar a csv en luagr de directamente a Excel?

Ten en cuenta que un csv lo puedes abrir en Excel y formatearlo como quieras.

Un saludo.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users