This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user