private function getTratamientosArray($grupos, $companias, $companias_paciente)
 {
     //precios de todas las compañías para todos los tratamientos
     $preciosObj = Precios::whereIn('companias_id', array_keys($companias))->get(array('tratamientos_id', 'precio', 'companias_id'));
     $precios = array();
     $companiaEconomica = array();
     foreach ($preciosObj as $p) {
         // Crea array de precios por tratamiento y compañía
         if ($p->precio !== null) {
             $precios[$p->tratamientos_id][$p->companias_id] = $p->precio;
         }
     }
     foreach ($preciosObj as $p) {
         // Halla la compañía más económica de las del paciente
         if (in_array($p->companias_id, $companias_paciente)) {
             if (!array_key_exists($p->tratamientos_id, $companiaEconomica) || array_key_exists($p->tratamientos_id, $companiaEconomica) && $p->precio !== null && isset($precios[$p->tratamientos_id][$companiaEconomica[$p->tratamientos_id]]) && $p->precio < $precios[$p->tratamientos_id][$companiaEconomica[$p->tratamientos_id]]) {
                 $companiaEconomica[$p->tratamientos_id] = $p->companias_id;
             }
         }
     }
     $tratamientosAll = Tratamientos::orderBy('nombre')->get(array('nombre', 'id', 'grupostratamientos_id', 'tipostratamientos_id'));
     $atratamientos = array();
     foreach ($tratamientosAll as $t) {
         // No mostrar el tratamiento si no tiene precio asignado en las compañías del paciente
         if (array_key_exists($t->id, $precios)) {
             $ta = array('id' => $t->id, 'nombre' => $t->nombre, 'compania_economica' => $companiaEconomica[$t->id], 'precios' => $precios[$t->id], 'tipo' => $t->tipostratamientos_id);
             $atratamientos[$t->grupostratamientos_id][$t->id] = $ta;
         }
     }
     return $atratamientos;
 }
 private function getTratamientosArray($grupos, $companias, $companias_paciente)
 {
     $preciosObj = Precios::whereIn('companias_id', array_keys($companias))->get(array('tratamientos_id', 'precio', 'companias_id'));
     $precios = array();
     $companiaEconomica = array();
     // Escoge el precio más barato de las dos compañías
     foreach ($preciosObj as $p) {
         if (in_array($p->companias_id, $companias_paciente)) {
             if (!array_key_exists($p->tratamientos_id, $precios) || array_key_exists($p->tratamientos_id, $precios) && $p->precio < $precios[$p->tratamientos_id]) {
                 $precios[$p->tratamientos_id][$p->companias_id] = $p->precio;
             }
             if (!array_key_exists($p->tratamientos_id, $companiaEconomica) || array_key_exists($p->tratamientos_id, $companiaEconomica) && $p->precio < $precios[$p->tratamientos_id][$companiaEconomica[$p->tratamientos_id]]) {
                 $companiaEconomica[$p->tratamientos_id] = $p->companias_id;
             }
         }
     }
     $tratamientosAll = Tratamientos::where('historiable', 1)->get(array('nombre', 'id', 'grupostratamientos_id', 'tipostratamientos_id'));
     $atratamientos = array();
     foreach ($tratamientosAll as $t) {
         // No mostrar el tratamiento si no tiene precio asignado en las compañías del paciente
         if (array_key_exists($t->id, $precios)) {
             $ta = array('id' => $t->id, 'nombre' => $t->nombre, 'compania_economica' => $companiaEconomica[$t->id], 'precios' => $precios[$t->id], 'tipo' => $t->tipostratamientos_id);
             $atratamientos[$t->grupostratamientos_id][$t->id] = $ta;
         }
     }
     return $atratamientos;
 }