Files
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

108 lines
4.8 KiB
PHP

<?php
namespace App\Http\Controllers\Impressao\Ambulatorio;
use App\Enums\Ambulatorio\AtendimentoImpressaoTipo;
use App\Http\Controllers\Controller;
use App\Models\Ambulatorio\Atendimento;
use App\Models\Cadastro\SujeitoAtencao\Paciente;
use App\Services\Ambulatorio\AtendimentoService;
use App\Utils\DataUtil;
use App\Utils\Exports\Pdf1;
use App\Utils\MaskUtil;
class OrientacaoController extends Controller
{
private const TITLE = 'ORIENTAÇÃO';
private const TEMPLATE = 'ambulatorio.orientacao';
public function __invoke($atendimentoId)
{
if (request()->has('em_atendimento') && request()->em_atendimento == true) {
$orientacoes = $this->getOrientacoesNaoSalvas($atendimentoId);
AtendimentoService::saveLogImpressao(request()->atendimento_id, AtendimentoImpressaoTipo::ORIENTACAO);
} else {
$orientacoes = $this->getOrientacoes($atendimentoId);
}
return Pdf1::generate(self::TITLE, self::TEMPLATE, compact('orientacoes'));
}
private function getOrientacoesNaoSalvas($pacienteId)
{
$paciente = Paciente::findOrFail($pacienteId);
$orientacoes = [
[
'paciente' => [
'nome' => $paciente->cidadao->nome,
'nome_social' => $paciente->cidadao->nome_social ?? '-',
'data_nascimento' => $paciente->cidadao->data_nascimento ? $paciente->cidadao->data_nascimento->format('d/m/Y') : '-',
'idade' => $paciente->cidadao->idade['anos'] ?? '-',
'nome_mae' => $paciente->cidadao->nome_mae ?? '-',
'prontuario' => $paciente->prontuario ?? '-',
'cpf' => $paciente->cidadao->cpf ? MaskUtil::getCpfMasked($paciente->cidadao->cpf) : '-',
'cns' => $paciente->cidadao->cns ? MaskUtil::getCnsMasked($paciente->cidadao->cns) : '-',
'telefone_numero' => $paciente->cidadao->telefone_principal ? MaskUtil::getPhoneMasked($paciente->cidadao->telefone_principal->numero) : '-',
'municipio' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->nome ?? '-',
'uf' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->estado->uf ?? '-',
'unidade_referencia' => $paciente->unidade->nome_fantasia ?? '-',
],
'descricao' => request()->descricao,
]
];
$data = [
'orientacoes' => $orientacoes,
];
return $data;
}
private function getOrientacoes($atendimentoId)
{
$atendimento = Atendimento::findOrFail($atendimentoId);
$paciente = $atendimento->paciente;
$orientacoes = [];
$paraAssinaturaEletronica = request()->para_assinatura_eletronica === true
|| (DataUtil::isStringBoolean(request()->para_assinatura_eletronica)
&& DataUtil::isStringTrue(request()->para_assinatura_eletronica));
$atendimento->soaps()
->where('is_rascunho', false)
->get()
->each(function($soap) use (&$orientacoes, $paciente) {
$soap->orientacoes()->get()->each(function($orientacao) use (&$orientacoes, $paciente) {
$orientacoes[] = [
'paciente' => [
'nome' => $paciente->cidadao->nome,
'nome_social' => $paciente->cidadao->nome_social ?? '-',
'data_nascimento' => $paciente->cidadao->data_nascimento ? $paciente->cidadao->data_nascimento->format('d/m/Y') : '-',
'idade' => $paciente->cidadao->idade['anos'] ?? '-',
'nome_mae' => $paciente->cidadao->nome_mae ?? '-',
'prontuario' => $paciente->prontuario ?? '-',
'cpf' => $paciente->cidadao->cpf ? MaskUtil::getCpfMasked($paciente->cidadao->cpf) : '-',
'cns' => $paciente->cidadao->cns ? MaskUtil::getCnsMasked($paciente->cidadao->cns) : '-',
'telefone_numero' => $paciente->cidadao->telefone_principal ? MaskUtil::getPhoneMasked($paciente->cidadao->telefone_principal->numero) : '-',
'municipio' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->nome ?? '-',
'uf' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->estado->uf ?? '-',
'unidade_referencia' => $paciente->unidade->nome_fantasia ?? '-',
],
'descricao' => $orientacao->descricao,
];
});
});
$data = [
'orientacoes' => $orientacoes,
'paraAssinar' => $paraAssinaturaEletronica,
];
return $data;
}
}