get('database.default')) ->where('sistema_id', 1) ->firstOrFail(); $logotipo = $cliente->logotipo ? base64_encode(file_get_contents(storage_path('app/intranet/cliente/logotipo/' . $cliente->logotipo))) : null; $encaminhamentos = []; if (!is_null($atendimentoId)) { $encaminhamentos = self::getEncaminhamentosByAtendimento($atendimentoId); } else { $encaminhamentos = self::getEncaminhamentos(request()->paciente_id); } $data = [ 'cliente' => [ 'nome' => Str::upper($cliente->nome), 'logotipo' => $logotipo, ], 'encaminhamentos' => $encaminhamentos, ]; return SnappyPdf::loadView('impressoes.template.pronto-atendimento.atendimento-triagem.guia-encaminhamento', compact('data')) ->setOption('header-html', '') ->setOption('footer-html', '') ->setOption('margin-top', '10') ->setOption('margin-bottom', '10') ->inline(); } public static function getEncaminhamentosByAtendimento($atendimentoId) { $encaminhamentos = []; $atendimento = Atendimento::findOrFail($atendimentoId); $paciente = $atendimento->faa->paciente; $atendimento->atendimentosTriagem->each(function ($atendimentoTriagem) use ($paciente, &$encaminhamentos) { $atendimentoTriagem->encaminhamentos->each(function ($encaminhamento) use ($paciente, &$encaminhamentos) { $lotacaoOrigem = $encaminhamento->createdLotacao; $infraestruturaOrigem = $lotacaoOrigem->infraestrutura; $usuarioOrigem = $lotacaoOrigem->usuario; $infraestruturaDestino = $encaminhamento->infraestrutura; $instituicao = $infraestruturaDestino->unidade->nome_fantasia; $endereco = $infraestruturaDestino->endereco->completo; $encaminhamentos[] = [ 'paciente' => [ 'nome' => $paciente->cidadao->nome, 'prontuario' => $paciente->prontuario, 'nome_social' => $paciente->cidadao->nome_social, 'idade' => $paciente->cidadao->idade_formatada, 'cns' => $paciente->cidadao->cns ? MaskUtil::getCnsMasked($paciente->cidadao->cns) : 'NÃO INFORMADO', 'cpf' => $paciente->cidadao->cpf ? MaskUtil::getCpfMasked($paciente->cidadao->cpf) : 'NÃO INFORMADO', 'rg' => $paciente->cidadao->carteiraIdentidade->numero ?? '-', 'sexo' => $paciente->cidadao->sexo->descricao, 'data_nascimento' => $paciente->cidadao->data_nascimento ? $paciente->cidadao->data_nascimento->format('d/m/Y') : 'NÃO INFORMADA', 'nome_mae' => $paciente->cidadao->nome_mae ?? 'NÃO INFORMADO', 'municipio' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->nome ?? null, 'uf' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->estado->uf ?? null, 'bairro' => $paciente->cidadao->domicilio->endereco->logradouro->bairro->nome ?? null, 'logradouro' => $paciente->cidadao->domicilio->endereco->logradouro->nome ?? null, 'numero' => $paciente->cidadao->domicilio->endereco->numero, 'sem_numero' => $paciente->cidadao->domicilio->endereco->sem_numero, 'complemento' => $paciente->cidadao->domicilio->endereco->complemento ?? '', 'cep' => $paciente->cidadao->domicilio ? MaskUtil::getCepMasked( $paciente->cidadao->domicilio->endereco->logradouro->cep) : null, 'municipio' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->nome, 'ibge' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->ibge, 'telefones' => $paciente->cidadao->telefones->map(fn ($t) => MaskUtil::getPhoneMasked($t->numero))->all(), 'unidade_referencia' => $paciente->unidade->nome_fantasia ?? null, ], 'instituicao' => $instituicao, 'endereco' => $endereco, 'unidade_origem' => [ 'nome_fantasia' => isset($infraestruturaOrigem->unidade->nome_fantasia) ? substr($infraestruturaOrigem->unidade->nome_fantasia, 0, 40) : null, 'cnes' => $infraestruturaOrigem->unidade->cnes, 'telefone' => $infraestruturaOrigem->telefone ? MaskUtil::getPhoneMasked($infraestruturaOrigem->telefone) : null, ], 'usuario_origem' => [ 'nome' => $usuarioOrigem->cidadao->nome ?? null, 'usuario_nome' => $usuarioOrigem->cidadao->nome, 'ocupacao_descricao' => $lotacaoOrigem->ocupacao->codigo . ' - ' . $lotacaoOrigem->ocupacao->nome, 'documento' => $usuarioOrigem->registro_tipo_id ? ($usuarioOrigem->registro_tipo_id === TipoRegistroUsuario::OUTRO ? $usuarioOrigem->registro_tipo_outro : $usuarioOrigem->registroTipo->sigla ) . ": {$usuarioOrigem->registro_numero}" : 'Conselho profissional: NÃO INFORMADO', ], 'data' => Carbon::now()->format('d/m/Y') ?? null, 'horario' => Carbon::now()->format('H:i') ?? null, 'motivo' => $encaminhamento['motivo'] ?? null, ]; }); }); return $encaminhamentos; } public static function getEncaminhamentos($pacienteId) { $encaminhamentos = []; $paciente = Paciente::findOrFail($pacienteId); foreach (request()->encaminhamentos as $encaminhamento) { $lotacaoOrigem = null; $infraestruturaDestino = null; if (isset($encaminhamento['id'])) { $encaminhamento = Encaminhamento::findOrFail($encaminhamento['id']); $lotacaoOrigem = $encaminhamento->createdLotacao; $infraestruturaDestino = $encaminhamento->infraestrutura; } else { $lotacaoOrigem = self::getCurrentLotacao(); $infraestruturaDestino = Infraestrutura::findOrFail($encaminhamento['infraestrutura_id']); } $infraestruturaOrigem = $lotacaoOrigem->infraestrutura; $usuarioOrigem = $lotacaoOrigem->usuario; $instituicao = $infraestruturaDestino->unidade->nome_fantasia; $endereco = $infraestruturaDestino->endereco->completo; $encaminhamentos[] = [ 'paciente' => [ 'nome' => $paciente->cidadao->nome, 'prontuario' => $paciente->prontuario, 'nome_social' => $paciente->cidadao->nome_social, 'idade' => $paciente->cidadao->idade_formatada, 'cns' => $paciente->cidadao->cns ? MaskUtil::getCnsMasked($paciente->cidadao->cns) : 'NÃO INFORMADO', 'cpf' => $paciente->cidadao->cpf ? MaskUtil::getCpfMasked($paciente->cidadao->cpf) : 'NÃO INFORMADO', 'rg' => $paciente->cidadao->carteiraIdentidade->numero ?? '-', 'sexo' => $paciente->cidadao->sexo->descricao, 'data_nascimento' => $paciente->cidadao->data_nascimento ? $paciente->cidadao->data_nascimento->format('d/m/Y') : 'NÃO INFORMADA', 'nome_mae' => $paciente->cidadao->nome_mae ?? 'NÃO INFORMADO', 'municipio' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->nome ?? null, 'uf' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->estado->uf ?? null, 'bairro' => $paciente->cidadao->domicilio->endereco->logradouro->bairro->nome ?? null, 'logradouro' => $paciente->cidadao->domicilio->endereco->logradouro->nome ?? null, 'numero' => $paciente->cidadao->domicilio->endereco->numero, 'sem_numero' => $paciente->cidadao->domicilio->endereco->sem_numero, 'complemento' => $paciente->cidadao->domicilio->endereco->complemento ?? '', 'cep' => $paciente->cidadao->domicilio ? MaskUtil::getCepMasked( $paciente->cidadao->domicilio->endereco->logradouro->cep) : null, 'municipio' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->nome, 'ibge' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->ibge, 'telefones' => $paciente->cidadao->telefones->map(fn ($t) => MaskUtil::getPhoneMasked($t->numero))->all(), 'unidade_referencia' => $paciente->unidade->nome_fantasia ?? null, ], 'instituicao' => $instituicao, 'endereco' => $endereco, 'unidade_origem' => [ 'nome_fantasia' => isset($infraestruturaOrigem->unidade->nome_fantasia) ? substr($infraestruturaOrigem->unidade->nome_fantasia, 0, 40) : null, 'cnes' => $infraestruturaOrigem->unidade->cnes, 'telefone' => $infraestruturaOrigem->telefone ? MaskUtil::getPhoneMasked($infraestruturaOrigem->telefone) : null, ], 'usuario_origem' => [ 'nome' => $usuarioOrigem->cidadao->nome ?? null, 'usuario_nome' => $usuarioOrigem->cidadao->nome, 'ocupacao_descricao' => $lotacaoOrigem->ocupacao->codigo . ' - ' . $lotacaoOrigem->ocupacao->nome, 'documento' => $usuarioOrigem->registro_tipo_id ? ($usuarioOrigem->registro_tipo_id === TipoRegistroUsuario::OUTRO ? $usuarioOrigem->registro_tipo_outro : $usuarioOrigem->registroTipo->sigla ) . ": {$usuarioOrigem->registro_numero}" : 'Conselho profissional: NÃO INFORMADO', ], 'data' => Carbon::now()->format('d/m/Y') ?? null, 'horario' => Carbon::now()->format('H:i') ?? null, 'motivo' => $encaminhamento['motivo'] ?? null, ]; } return $encaminhamentos; } }