init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,142 @@
<?php
namespace App\Http\Controllers\Impressao\ProntoAtendimento;
use App\Enums\ProntoAtendimento\Raat\CausaAcidente as RaatCausaAcidente;
use App\Enums\ProntoAtendimento\Raat\Diagnostico as RaatDiagnostico;
use App\Enums\ProntoAtendimento\Raat\ParteCorpoAtingida as RaatParteCorpoAtingida;
use App\Enums\ProntoAtendimento\Raat\RegimeTrabalho as RaatRegimeTrabalho;
use App\Http\Controllers\Controller;
use App\Models\ProntoAtendimento\Atendimento\Atendimento;
use App\Models\ProntoAtendimento\Raat\Agente;
use App\Models\ProntoAtendimento\Raat\CausaAcidente;
use App\Models\ProntoAtendimento\Raat\ClassificacaoInicial;
use App\Models\ProntoAtendimento\Raat\Diagnostico;
use App\Models\ProntoAtendimento\Raat\ParteCorpoAtingida;
use App\Models\ProntoAtendimento\Raat\RegimeTrabalho;
use App\Models\ProntoAtendimento\Raat\TipoAcidente;
use App\Utils\Exports\Pdf;
use App\Utils\Exports\Template;
use App\Utils\MaskUtil;
class RaatController extends Controller
{
private const TITLE = 'RAAT';
private const TEMPLATE = 'pronto-atendimento.raat';
public static function getTemplate($atendimentoId)
{
$faa = Atendimento::findOrFail($atendimentoId)->faa;
$paciente = $faa->paciente;
$raat = $faa->raat;
$parecerMedico = $faa->raat ? $faa->raat->pareceresMedico()->orderByDesc('id')->first() : null;
$tiposAcidentes = TipoAcidente::orderBy('nome')
->get()
->map(fn ($tipo) => [
$tipo->nome,
$tipo->id === ($raat->acidente_tipo_id ?? null)
]);
$regimesTrabalho = RegimeTrabalho::orderBy('nome')
->get()
->reject(fn ($regime) => $regime->id === RaatRegimeTrabalho::OUTRO)
->map(fn ($regime) => [
$regime->nome,
$regime->id === ($raat->regime_trabalho_id ?? null)
]);
$agentes = Agente::all()
->map(fn ($agente) => [
$agente->nome,
$agente->id === ($parecerMedico->agente_id ?? null)
]);
$partesCorpoAtingidasChecked = $parecerMedico ? $parecerMedico->partesCorpoAtingidas->pluck('id') : collect();
$partesCorpoAtingidas = ParteCorpoAtingida::orderBy('id')
->get()
->reject(fn ($parte) => $parte->id === RaatParteCorpoAtingida::OUTROS)
->map(fn ($parte) => [
$parte->nome,
$partesCorpoAtingidasChecked->contains($parte->id)
]);
$causasAcidenteChecked = $parecerMedico ? $parecerMedico->causasAcidente->pluck('id') : collect();
$causasAcidente = CausaAcidente::all()
->reject(fn ($causa) => $causa->id === RaatCausaAcidente::OUTROS)
->map(fn ($causa) => [
$causa->nome,
$causasAcidenteChecked->contains($causa->id)
]);
$diagnosticosChecked = $parecerMedico ? $parecerMedico->diagnosticos->pluck('id') : collect();
$diagnosticos = Diagnostico::all()
->reject(fn ($diagnostico) => $diagnostico->id === RaatDiagnostico::OUTROS)
->map(fn ($diagnostico) => [
$diagnostico->nome,
$diagnosticosChecked->contains($diagnostico->id)
]);
$classificacoesIniciais = ClassificacaoInicial::all()
->map(fn ($classificacao) => [
$classificacao->nome,
$classificacao->id === ($parecerMedico->classificacao_inicial_id ?? null)
]);
$data = [
'paciente' => [
'nome' => $paciente->cidadao->nome,
'sexo' => $paciente->cidadao->sexo->descricao,
'dataNascimento' => $paciente->cidadao->data_nascimento
? $paciente->cidadao->data_nascimento->format('d/m/Y') : '',
],
'empresa' => [
'nome' => $raat->empresa_nome ?? '',
'ramoAtividade' => $raat->empresa_ramo_atividade ?? '',
'endereco' => $raat->empresa_endereco ?? '',
'telefone' => $raat && $raat->empresa_telefone ? MaskUtil::getPhoneMasked($raat->empresa_telefone) : '',
],
'identificacaoAcidente' => [
'data' => $raat && $raat->acidente_data ? $raat->acidente_data->format('d/m/Y') : null,
'hora' => $raat && $raat->acidente_hora ? $raat->acidente_hora->format('H:i') : null,
'tiposAcidente' => $tiposAcidentes,
'local' => $raat->acidente_local ?? '',
'descricao' => $raat->acidente_descricao ?? '',
'regimesTrabalho' => $regimesTrabalho,
'regimeTrabalhoOutro' => $raat->regime_trabalho_outro ?? '',
],
'agentes' => $agentes,
'partesCorpoAtingidas' => $partesCorpoAtingidas,
'parteCorpoAtingidaOutras' => $parecerMedico->parte_corpo_atingida_outras ?? '',
'causasAcidente' => $causasAcidente,
'causaAcidenteOutras' => $parecerMedico->causa_acidente_outras ?? '',
'diagnosticos' => $diagnosticos,
'diagnosticoOutros' => $parecerMedico->diagnostico_outros ?? '',
'cid' => ($parecerMedico->atendimentoMedico->cid->cid ?? null)
? $parecerMedico->atendimentoMedico->cid->cid->codigo
. ' - ' . $parecerMedico->atendimentoMedico->cid->cid->nome
: '',
'observacao' => $parecerMedico->observacao ?? '',
'classificacoesIniciais' => $classificacoesIniciais,
'comAfastamento' => [
['SIM', $parecerMedico ? $parecerMedico->afastado : false],
['NÃO', $parecerMedico ? !$parecerMedico->afastado : false],
],
'hasParecerMedico' => !!$parecerMedico,
'profissional' => [
'nome' => $parecerMedico->updatedLotacao->usuario->cidadao->nome ?? null,
'cbo' => $parecerMedico->updatedLotacao->ocupacao->nome ?? null,
]
];
return Template::make(self::TITLE, self::TEMPLATE)->withData($data)->getHtml();
}
public function __invoke($atendimentoId)
{
return (new Pdf)->stream(self::getTemplate($atendimentoId), self::TITLE);
}
}