This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Ambulatorio;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Cadastro\Especialidade;
|
||||
use App\Models\Cadastro\Estabelecimento\Infraestrutura;
|
||||
use App\Models\Cadastro\Estabelecimento\Unidade;
|
||||
use App\Models\Cadastro\SujeitoAtencao\Usuario;
|
||||
use App\Models\Sigtap\Ocupacao;
|
||||
use App\Models\Sigtap\Procedimento;
|
||||
use App\Services\Ambulatorio\RelatorioProcedimentoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class RelatorioProcedimentoController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE PROCEDIMENTOS';
|
||||
private const TEMPLATE = 'ambulatorio.relatorio-procedimento';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
$resultado = RelatorioProcedimentoService::index();
|
||||
$itens = $resultado['procedimentos'];
|
||||
|
||||
if (request()->sort_by) {
|
||||
|
||||
$sortDesc = filter_var(request()->sort_desc, FILTER_VALIDATE_BOOLEAN);
|
||||
|
||||
$itens = $sortDesc
|
||||
? $itens->sortByDesc(request()->sort_by)->values()
|
||||
: $itens->sortBy(request()->sort_by)->values();
|
||||
}
|
||||
|
||||
$itens->each(function ($item) {
|
||||
|
||||
$item->data = (new Carbon($item->data))->format('d/m/Y');
|
||||
|
||||
if (!is_null($item->paciente_data_nascimento)) {
|
||||
|
||||
$item->paciente_data_nascimento = (new Carbon($item->paciente_data_nascimento))->format('d/m/Y');
|
||||
}
|
||||
|
||||
$item->ocupacao_cbo = collect([$item->ocupacao_codigo, $item->ocupacao_nome])
|
||||
->filter()
|
||||
->implode(' - ');
|
||||
});
|
||||
|
||||
$unidade = Unidade::find(request()->unidade_id);
|
||||
$infraestrutura = Infraestrutura::find(request()->infraestrutura_id);
|
||||
$ocupacao = Ocupacao::find(request()->ocupacao_id);
|
||||
$especialidade = Especialidade::find(request()->especialidade_id);
|
||||
$usuario = Usuario::find(request()->usuario_id);
|
||||
$procedimento = Procedimento::where('codigo', request()->procedimento_codigo)->orderByDesc('competencia_id')->first();
|
||||
|
||||
$totalRegistros = $itens->count();
|
||||
$totalProcedimentos = $itens->sum(fn ($item) => $item->procedimentos_sigtap->count());
|
||||
$totalAbpg = $itens->sum(fn ($item) => $item->procedimentos_abpg->count());
|
||||
|
||||
$demandaTipoLabels = ['agendada' => 'Agendada', 'espontanea' => 'Espontânea'];
|
||||
$demandaTipo = $demandaTipoLabels[request()->demanda_tipo] ?? 'Todos';
|
||||
|
||||
return [
|
||||
'inicio' => request()->periodo['start'],
|
||||
'fim' => request()->periodo['end'],
|
||||
'unidade' => $unidade->nome_fantasia ?? 'Todas',
|
||||
'infraestrutura' => $infraestrutura->nome ?? 'Todas',
|
||||
'ocupacao' => $ocupacao ? "{$ocupacao->codigo} - {$ocupacao->nome}" : 'Todas',
|
||||
'especialidade' => $especialidade->nome ?? 'Todas',
|
||||
'usuario' => $usuario->cidadao->nome ?? 'Todos',
|
||||
'procedimento' => $procedimento ? "{$procedimento->codigo} - {$procedimento->nome}" : 'Todos',
|
||||
'demandaTipo' => $demandaTipo,
|
||||
'colunas' => collect(request()->columns),
|
||||
'itens' => $itens,
|
||||
'totalRegistros' => $totalRegistros,
|
||||
'totalProcedimentos' => $totalProcedimentos,
|
||||
'totalAbpg' => $totalAbpg,
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user