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,121 @@
<?php
namespace App\Http\Controllers\Impressao\ProntoAtendimento\Aih;
use App\Enums\Cadastro\SujeitoAtencao\PreferenciaNome;
use App\Http\Controllers\Controller;
use App\Models\ProntoAtendimento\Aih\CausaExterna;
use App\Models\ProntoAtendimento\Aih\Internacao;
use App\Models\ProntoAtendimento\Aih\VinculoPrevidencia;
use App\Utils\Exports\Pdf;
use App\Utils\Exports\Template;
use App\Utils\MaskUtil;
use Carbon\Carbon;
class LaudoController extends Controller
{
private const TITLE = 'LAUDO PARA SOLICITAÇÃO DE AUTORIZAÇÃO DE INTERNAÇÃO HOSPITALAR';
private const TEMPLATE = 'pronto-atendimento.aih.laudo';
public static function getTemplate($id)
{
$internacao = Internacao::findOrFail($id);
$data = [
'paciente' => self::getPacienteData($internacao->paciente),
'internacao' => [
'unidade_solicitante' => [
'nome' => $internacao->unidadeSolicitante->nome_fantasia,
'cnes' => $internacao->unidadeSolicitante->cnes
],
'unidade_internacao' => [
'nome' => $internacao->unidadeInternacao->nome_fantasia,
'cnes' => $internacao->unidadeInternacao->cnes
],
'principais_sinais_sintomas_clinicos' => $internacao->principais_sinais_sintomas_clinicos,
'condicoes_que_justificam_internacao' => $internacao->condicoes_que_justificam_internacao,
'principais_resultados_de_provas_diagnosticas' => $internacao->principais_resultados_de_provas_diagnosticas,
'cid_principal' => [
'codigo' => MaskUtil::getCidMasked($internacao->cidPrincipal->codigo),
'nome' => $internacao->cidPrincipal->nome
],
'cid_secundario' => $internacao->cidSecundario
? MaskUtil::getCidMasked($internacao->cidSecundario->codigo)
: '',
'cid_causas_associadas' => $internacao->cidCausasAssociadas
? MaskUtil::getCidMasked($internacao->cidCausasAssociadas->codigo)
: '',
'procedimento' => self::getProcedimentoData($internacao->procedimento),
'causa_externa' => self::getCausaExternaData(),
]
];
return Template::make(self::TITLE, self::TEMPLATE)->withData($data)->getHtml();
}
private static function getPacienteData($paciente)
{
$cidadao = $paciente->cidadao;
return [
'nome' => $cidadao->nome,
'nome_social' => $cidadao->nome_social,
'prefere_nome_social' => $cidadao->preferencia_nome_id === PreferenciaNome::NOME_SOCIAL,
'prontuario' => $paciente->prontuario,
'cns' => MaskUtil::getCnsMasked($cidadao->cns),
'cpf' => MaskUtil::getCpfMasked($cidadao->cpf),
'data_nascimento' => $cidadao->data_nascimento ? $cidadao->data_nascimento->format('d/m/Y') : '',
'idade' => $cidadao->data_nascimento
? "{$cidadao->idade['anos']} ano(s) "
. "{$cidadao->idade['meses']} mês(s) "
. "{$cidadao->idade['dias']} dia(s) "
: '',
'sexo' => $cidadao->sexo->descricao,
'raca_cor' => $cidadao->racaCor->descricao ?? '',
'etnia_indigena' => $cidadao->etniaIndigena->descricao ?? '',
'nome_mae' => $cidadao->nome_mae,
'telefone' => MaskUtil::getPhoneMasked($cidadao->telefone_principal->numero ?? ''),
'endereco' => [
'completo' => $cidadao->domicilio
? "{$cidadao->domicilio->endereco->completo}, "
. MaskUtil::getCepMasked($cidadao->domicilio->endereco->logradouro->cep)
: '',
'ibge' => $cidadao->domicilio->endereco->logradouro->municipio->ibge ?? ''
]
];
}
private static function getProcedimentoData($procedimento)
{
return [
'procedimento_solicitado' => [
'codigo' => MaskUtil::getProcedimentoMasked($procedimento->procedimentoSolicitado->codigo),
'nome' => $procedimento->procedimentoSolicitado->nome
],
'data_solicitacao' => (new Carbon($procedimento->data_solicitacao))->format('d/m/Y'),
'clinica' => $procedimento->clinica->nome,
'carater_internacao' => $procedimento->caraterInternacao->nome,
'profissional_solicitante_assistente' => $procedimento->profissionalSolicitanteAssistente->cidadao->nome,
'documento' => [
'nome' => $procedimento->documentoTipo->nome,
'numero' => MaskUtil::getDocumentMasked(
$procedimento->documento_tipo_id,
$procedimento->documento_numero
)
]
];
}
private static function getCausaExternaData()
{
return [
'causas_externas' => CausaExterna::pluck('nome'),
'vinculos_previdencia' => VinculoPrevidencia::pluck('nome')
];
}
public function __invoke($id)
{
return (new Pdf)->stream(self::getTemplate($id), self::TITLE);
}
}

View File

@@ -0,0 +1,58 @@
<?php
namespace App\Http\Controllers\Impressao\ProntoAtendimento\Aih;
use App\Enums\Cadastro\SujeitoAtencao\PreferenciaNome;
use App\Http\Controllers\Controller;
use App\Models\ProntoAtendimento\Aih\Internacao;
use App\Utils\Exports\Pdf;
use App\Utils\Exports\Template;
use App\Utils\MaskUtil;
use Carbon\Carbon;
class TermoResponsabilidadeController extends Controller
{
private const TITLE = 'TERMO DE RESPONSABILIDADE PARA PROCEDIMENTO MÉDICO';
private const TEMPLATE = 'pronto-atendimento.aih.termo-responsabilidade';
public static function getTemplate($id)
{
$internacao = Internacao::findOrFail($id);
$data = [
'paciente' => [
'nome' => $internacao->paciente->cidadao->nome,
'nome_social' => $internacao->paciente->cidadao->nome_social,
'prefere_nome_social' => $internacao->paciente->cidadao
->preferencia_nome_id === PreferenciaNome::NOME_SOCIAL,
'data_nascimento' => $internacao->paciente->cidadao->data_nascimento
? $internacao->paciente->cidadao->data_nascimento->format('d/m/Y')
: '',
'idade' => $internacao->paciente->cidadao->data_nascimento
? "{$internacao->paciente->cidadao->idade['anos']} ano(s) "
. "{$internacao->paciente->cidadao->idade['meses']} mês(s) "
. "{$internacao->paciente->cidadao->idade['dias']} dia(s) "
: '',
'cns' => MaskUtil::getCnsMasked($internacao->paciente->cidadao->cns),
'rg' => $internacao->paciente->cidadao->carteiraIdentidade->numero ?? '',
'cpf' => MaskUtil::getCpfMasked($internacao->paciente->cidadao->cpf),
'nome_mae' => $internacao->paciente->cidadao->nome_mae,
'endereco' => $internacao->paciente->cidadao->domicilio
? "{$internacao->paciente->cidadao->domicilio->endereco->completo}, "
. MaskUtil::getCepMasked($internacao->paciente->cidadao->domicilio->endereco->logradouro->cep)
: '',
],
'internacao' => [
'unidade' => $internacao->unidadeInternacao->nome_fantasia
],
'horaAtual' => Carbon::now()->format('H:i')
];
return Template::make(self::TITLE, self::TEMPLATE)->withData($data)->getHtml();
}
public function __invoke($id)
{
return (new Pdf)->stream(self::getTemplate($id), self::TITLE);
}
}