69 lines
3.3 KiB
PHP
69 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Impressao\AtencaoBasica;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Cadastro\Estabelecimento\Infraestrutura;
|
|
use App\Models\Cadastro\Estabelecimento\Unidade;
|
|
use App\Models\AtencaoBasica\Parametrizacao\Equipe;
|
|
use App\Services\AtencaoBasica\RelatorioCuidadoDesenvolvimentoInfantilService;
|
|
use App\Models\Cadastro\SujeitoAtencao\Paciente;
|
|
use App\Enums\Cadastro\SujeitoAtencao\Sexo;
|
|
use App\Utils\Exports\Pdf1;
|
|
|
|
class RelatorioCuidadoDesenvolvimentoInfantilController extends Controller
|
|
{
|
|
private const TITLE = 'RELATÓRIO DE CUIDADO E DESENVOLVIMENTO INFANTIL';
|
|
private const TEMPLATE = 'atencao-basica.relatorio-cuidado-desenvolvimento-infantil';
|
|
|
|
public function __invoke()
|
|
{
|
|
$resultado = RelatorioCuidadoDesenvolvimentoInfantilService::index(request());
|
|
|
|
$sortByEquipe = request()->input('sort_by_equipe', 'unidadeNomeFantasia');
|
|
$sortDescEquipe = (bool) request()->input('sort_desc_equipe', false);
|
|
$sortByBuscaAtiva = request()->input('sort_by_busca_ativa', 'unidadeNomeFantasia');
|
|
$sortDescBuscaAtiva = (bool) request()->input('sort_desc_busca_ativa', false);
|
|
$resultadoPorEquipe = $sortDescEquipe
|
|
? collect($resultado['resultadoPorEquipe'])->sortByDesc($sortByEquipe)->values()->toArray()
|
|
: collect($resultado['resultadoPorEquipe'])->sortBy($sortByEquipe)->values()->toArray();
|
|
|
|
$buscaAtivaDados = $sortDescBuscaAtiva
|
|
? collect($resultado['buscaAtiva'])->sortByDesc($sortByBuscaAtiva)->values()->toArray()
|
|
: collect($resultado['buscaAtiva'])->sortBy($sortByBuscaAtiva)->values()->toArray();
|
|
$unidade = Unidade::find(request()->input('unidade_id'));
|
|
$infraestrutura = Infraestrutura::find(request()->input('infraestrutura_id'));
|
|
$equipe = Equipe::find(request()->input('equipe_id'));
|
|
$pacienteId = request()->input('paciente_id');
|
|
$paciente = $pacienteId ? Paciente::with('cidadao')->find($pacienteId) : null;
|
|
$sexoMap = [
|
|
Sexo::MASCULINO => 'Masculino',
|
|
Sexo::FEMININO => 'Feminino',
|
|
];
|
|
$faixaEtaria = request()->input('faixa_etaria', []);
|
|
|
|
$data = [
|
|
'inicio' => request()->input('periodo.start'),
|
|
'fim' => request()->input('periodo.end'),
|
|
'quadrimestre' => request()->input('quadrimestre'),
|
|
'unidade' => $unidade->nome_fantasia ?? 'Todas',
|
|
'infraestrutura' => $infraestrutura->nome ?? 'Todos',
|
|
'equipe' => $equipe->nome ?? 'Todas',
|
|
'sexo' => $sexoMap[request()->input('sexo_id')] ?? 'Todos',
|
|
'paciente' => optional(optional(optional($paciente)->first())->cidadao)->nome ?? 'Todos',
|
|
'buscaAtiva' => (bool) request()->input('busca_ativa'),
|
|
'faixaEtariaInicial' => $faixaEtaria['inicial'] ?? [],
|
|
'faixaEtariaFinal' => $faixaEtaria['final'] ?? [],
|
|
'totalizadores' => $resultado['totalizadores'],
|
|
'resultadoPorEquipe' => $resultadoPorEquipe,
|
|
'buscaAtivaDados' => $buscaAtivaDados,
|
|
'boasPraticasSelecionadas' => $resultado['boasPraticasSelecionadas'],
|
|
'selectedColsBuscaAtiva' => request()->input('selected_cols_busca_ativa', ['pacienteDataNascimento']),
|
|
];
|
|
|
|
|
|
return Pdf1::generate(self::TITLE, self::TEMPLATE, $data, 'landscape');
|
|
}
|
|
}
|
|
|