itens() ->whereHas('exame', fn ($q) => $q->where('tipo_id', Tipo::LABORATORIAL)) ->get(); $exameImagem = $solicitacao->itens() ->whereHas('exame', fn ($q) => $q->where('tipo_id', Tipo::IMAGEM)) ->first()->exame ?? null; $procedimentoCirurgico = $solicitacao->itens() ->whereNotNull('procedimento_cirurgico_id') ->first()->procedimentoCirurgico ?? null; $especialidade = $solicitacao->itens()->whereNotNull('especialidade_id')->first()->especialidade ?? null; return [ 'solicitou' => Str::ucfirst($solicitacao->created_at->translatedFormat('l, d \de F \de Y, \à\s H:i:s')), 'data_solicitacao' => $solicitacao->data->format('d/m/Y'), 'paciente' => [ 'nome' => $solicitacao->paciente->cidadao->nome, 'nome_social' => $solicitacao->paciente->cidadao->nome_social, 'protocolo_cross' => $solicitacao->paciente->protocolo_cross ?? null, 'prontuario' => $solicitacao->paciente->prontuario, 'data_nascimento' => $solicitacao->paciente->cidadao->data_nascimento ? (new Carbon($solicitacao->paciente->cidadao->data_nascimento))->format('d/m/Y') : null, ], 'peso' => str_replace('.', ',', $solicitacao->peso ?? '') . (is_null($solicitacao->peso) ? '' : ' kg'), 'altura' => str_replace('.', ',', $solicitacao->altura ?? '') . (is_null($solicitacao->altura) ? '' : ' cm'), 'hipoteseDiagnosticaJustificativa' => $solicitacao->hipotese_diagnostica_justificativa, 'solicitante' => [ 'usuario' => $solicitacao->usuarioSolicitante->cidadao->nome, 'unidade' => $solicitacao->infraestruturaSolicitante->unidade->nome_fantasia, 'infraestrutura' => $solicitacao->infraestruturaSolicitante->nome, ], 'examesLaboratoriais' => $itensExamesLaboratoriais->isNotEmpty() ? $itensExamesLaboratoriais->map(fn ($i) => (empty($i->exame->codigo) ? '' : MaskUtil::getProcedimentoMasked($i->exame->codigo) . ' - ' ) . $i->exame->nome)->sort()->values() : collect(), 'exameImagem' => $exameImagem ? (empty($exameImagem->codigo) ? '' : MaskUtil::getProcedimentoMasked($exameImagem->codigo) . ' - ' ) . $exameImagem->nome : null, 'procedimentoCirurgico' => $procedimentoCirurgico ? (MaskUtil::getProcedimentoMasked($procedimentoCirurgico->procedimento_codigo) . " - {$procedimentoCirurgico->nome}") : null, 'especialidade' => $especialidade ? "{$especialidade->ocupacao->codigo} - {$especialidade->nome}" : null, 'atendente' => $solicitacao->createdLotacao()->withTrashed()->first()->usuario->cidadao->nome, 'mensagemProtocoloSolicitacao' => $parametrizacao->mensagem_protocolo_solicitacao ?? null, ]; } public function __invoke($id) { return PdfCupom::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id)); } }