This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Regulacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Regulacao\Solicitacao;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use App\Utils\MaskUtil;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class PreparoController extends Controller
|
||||
{
|
||||
private const TITLE = 'PREPARO(S)';
|
||||
private const TEMPLATE = 'regulacao.preparo';
|
||||
|
||||
public function __invoke($solicitacaoId)
|
||||
{
|
||||
$solicitacao = Solicitacao::findOrFail($solicitacaoId);
|
||||
|
||||
$itens = collect();
|
||||
$prestadorRelationName = is_null($solicitacao->prestador_interno_id) ? 'prestadorExterno' : 'prestadorInterno';
|
||||
|
||||
$solicitacao->itens->each(function ($item) use ($solicitacao, $prestadorRelationName, $itens) {
|
||||
|
||||
if (!is_null(!is_null($item->exame_id))) {
|
||||
|
||||
$solicitacao->{$prestadorRelationName}->exames()
|
||||
->where('id', $item->exame_id)
|
||||
->wherePivotNotNull('observacoes')
|
||||
->get()
|
||||
->each(fn ($exame) => $itens->push([
|
||||
'descricao' => empty($exame->codigo)
|
||||
? $exame->nome
|
||||
: MaskUtil::getProcedimentoMasked($exame->codigo) . " - {$exame->nome}",
|
||||
'observacoes' => $exame->pivotPrestadorExame->observacoes,
|
||||
]));
|
||||
}
|
||||
|
||||
if (!is_null($item->procedimento_cirurgico_id)) {
|
||||
|
||||
$solicitacao->{$prestadorRelationName}->procedimentosCirurgicos()
|
||||
->where('id', $item->procedimento_cirurgico_id)
|
||||
->wherePivotNotNull('observacoes')
|
||||
->get()
|
||||
->each(fn ($procedimentoCirurgico) => $itens->push([
|
||||
'descricao' => MaskUtil::getProcedimentoMasked($procedimentoCirurgico->procedimento_codigo)
|
||||
. " - {$procedimentoCirurgico->nome}",
|
||||
'observacoes' => $procedimentoCirurgico->pivotPrestadorProcedimentoCirurgico->observacoes,
|
||||
]));
|
||||
}
|
||||
|
||||
if (!is_null($item->especialidade_id)) {
|
||||
|
||||
$solicitacao->{$prestadorRelationName}->especialidades()
|
||||
->where('id', $item->especialidade_id)
|
||||
->wherePivotNotNull('observacoes')
|
||||
->get()
|
||||
->each(fn ($especialidade) => $itens->push([
|
||||
'descricao' => "{$especialidade->ocupacao->codigo} - {$especialidade->nome}",
|
||||
'observacoes' => $especialidade->pivotPrestadorEspecialidade->observacoes,
|
||||
]));
|
||||
}
|
||||
});
|
||||
|
||||
$data = [
|
||||
'paciente' => [
|
||||
'nome' => $solicitacao->paciente->cidadao->nome,
|
||||
'prontuario' => $solicitacao->paciente->prontuario,
|
||||
'data_nascimento' => $solicitacao->paciente->cidadao->data_nascimento
|
||||
? (new Carbon($solicitacao->paciente->cidadao->data_nascimento))->format('d/m/Y')
|
||||
: null,
|
||||
],
|
||||
'itens' => $itens->sortBy('descricao')->values(),
|
||||
];
|
||||
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, $data);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user