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); } }