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 (request()->has('em_atendimento') && request()->em_atendimento == true) { $encaminhamentos[] = self::getDadosNaoSalvos($atendimentoId); AtendimentoService::saveLogImpressao(request()->atendimento_id, AtendimentoImpressaoTipo::ENCAMINHAMENTO); } else { self::getAtendimento($atendimentoId, $encaminhamentos); } $data = [ 'cliente' => [ 'nome' => Str::upper($cliente->nome), 'logotipo' => $logotipo, ], 'encaminhamentos' => $encaminhamentos, ]; return SnappyPdf::loadView('impressoes.template.ambulatorio.encaminhamento', compact('data')) ->setOption('header-html', '') ->setOption('footer-html', '') ->setOption('margin-top', '10') ->setOption('margin-bottom', '10') ->inline(); } public static function getAtendimento($atendimentoId, &$encaminhamentos) { $atendimento = Atendimento::findOrFail($atendimentoId); $paciente = $atendimento->paciente; $encaminhamentos = []; $regulacaoData = self::getRegulacaoData(); $atendimento->soaps() ->where('is_rascunho', false) ->when($regulacaoData['soap_id'], fn ($q, $id) => $q->where('id', $id)) ->get() ->each(function($soap) use (&$encaminhamentos, $paciente, $regulacaoData) { $soap->encaminhamentos() ->when($regulacaoData['especialidade_id'], fn ($q, $id) => $q->where('servico_especializado_especialidade_id', $id)) ->get() ->each(function($encaminhamento) use (&$encaminhamentos, $paciente) { $cid = Cid::find($encaminhamento->servico_especializado_cid_id); $ciap = Ciap::find($encaminhamento->servico_especializado_ciap_id); $intersetorialInfraestrutura = $encaminhamento->intersetorialInfraestrutura; $infraestrutura = $encaminhamento->createdCentroCusto->infraestrutura; $usuario = $encaminhamento->createdLotacao->usuario; $instituicao = null; $endereco = null; $pa = false; $consulta = false; $programa = null; $internacao = false; $outros = null; if ($encaminhamento->tipo_id === Encaminhamento::ENCAMINHAMENTO_INTERSETORIAL) { $instituicao = $intersetorialInfraestrutura->unidade->nome_fantasia; $endereco = $intersetorialInfraestrutura->endereco->completo; $outros = 'Intersetorial'; } if ($encaminhamento->tipo_id === Encaminhamento::ENCAMINHAMENTO_PARA_CAPS) { $programa = 'Encaminhamento para CAPS'; } else if ($encaminhamento->tipo_id === Encaminhamento::ENCAMINHAMENTO_PARA_SERVICO_DE_ATENCAO_DOMICILIAR) { $programa = 'Encaminhamento para serviço de atenção domiciliar'; } if ($encaminhamento->tipo_id === Encaminhamento::ENCAMINHAMENTO_PARA_INTERNACAO_HOSPITALAR) { $internacao = true; } if ($encaminhamento->tipo_id === Encaminhamento::ENCAMINHAMENTO_PARA_SERVICO_ESPECIALIZADO) { $consulta = true; } if ($encaminhamento->tipo_id === Encaminhamento::ENCAMINHAMENTO_PARA_URGENCIA) { $pa = true; } $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 ?? null, 'sem_numero' => $paciente->cidadao->domicilio->endereco->sem_numero ?? null, '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 ?? null, 'ibge' => $paciente->cidadao->domicilio->endereco->logradouro->municipio->ibge ?? null, 'telefones' => $paciente->cidadao->telefones->map(fn ($t) => MaskUtil::getPhoneMasked($t->numero))->all(), 'unidade_referencia' => $paciente->unidade->nome_fantasia ?? null, ], 'instituicao' => $instituicao, 'endereco' => $endereco, 'especialidade' => $encaminhamento->servicoEspecializadoEspecialidade->nome ?? null, 'classificacao_risco' => $encaminhamento->servicoEspecializadoClassificacaoRisco->descricao_encaminhamento ?? null, 'pa' => $pa, 'consulta' => $consulta, 'programa' => $programa, 'internacao' => $internacao, 'outros' => $outros, 'unidade_origem' => [ 'nome_fantasia' => isset($infraestrutura->unidade->nome_fantasia) ? substr($infraestrutura->unidade->nome_fantasia, 0, 40) : null, 'cnes' => $infraestrutura->unidade->cnes, 'telefone' => $infraestrutura->telefone ? MaskUtil::getPhoneMasked($infraestrutura->telefone) : null, ], 'usuario_origem' => [ 'nome' => $usuario->cidadao->nome ?? null, 'usuario_nome' => $encaminhamento->createdLotacao->usuario->cidadao->nome, 'ocupacao_descricao' => $encaminhamento->createdLotacao->ocupacao->codigo . ' - ' . $encaminhamento->createdLotacao->ocupacao->nome, 'documento' => $encaminhamento->createdLotacao->usuario->registro_tipo_id ? ($encaminhamento->createdLotacao->usuario->registro_tipo_id === TipoRegistroUsuario::OUTRO ? $encaminhamento->createdLotacao->usuario->registro_tipo_outro : $encaminhamento->createdLotacao->usuario->registroTipo->sigla ) . ": {$encaminhamento->createdLotacao->usuario->registro_numero}" : 'Conselho profissional: NÃO INFORMADO', ], 'data' => $encaminhamento->created_at->format('d/m/Y') ?? null, 'horario' => $encaminhamento->created_at->format('H:i') ?? null, 'motivo' => $encaminhamento->servico_especializado_motivo ?? null, 'cid' => $encaminhamento->servico_especializado_cid_id ? $cid->codigo.' - '.$cid->nome : null, 'ciap' => $encaminhamento->servico_especializado_ciap_id ? $ciap->codigo.' - '.$ciap->descricao : null, ]; }); }); } public static function getDadosNaoSalvos($pacienteId) { $currentLotacao = self::getCurrentLotacao(); $paciente = Paciente::where('id', $pacienteId)->first(); $infraestrutura = $currentLotacao->infraestrutura; $usuario = $currentLotacao->usuario; $instituicao = null; $endereco = null; $pa = false; $consulta = false; $programa = null; $internacao = false; $outros = null; if (request()->tipo['id'] == Encaminhamento::ENCAMINHAMENTO_INTERSETORIAL) { $intersetorialInfraestrutura = Infraestrutura::where('id', request()->infraestrutura['id'])->first(); $instituicao = $intersetorialInfraestrutura->unidade->nome_fantasia; $endereco = $intersetorialInfraestrutura->endereco->completo; $outros = 'Intersetorial'; } if (request()->tipo['id'] == Encaminhamento::ENCAMINHAMENTO_PARA_CAPS) { $programa = 'Encaminhamento para CAPS'; } else if (request()->tipo['id'] == Encaminhamento::ENCAMINHAMENTO_PARA_SERVICO_DE_ATENCAO_DOMICILIAR) { $programa = 'Encaminhamento para serviço de atenção domiciliar'; } if (request()->tipo['id'] == Encaminhamento::ENCAMINHAMENTO_PARA_INTERNACAO_HOSPITALAR) { $internacao = true; } if (request()->tipo['id'] == Encaminhamento::ENCAMINHAMENTO_PARA_SERVICO_ESPECIALIZADO) { $consulta = true; } if (request()->tipo['id'] == Encaminhamento::ENCAMINHAMENTO_PARA_URGENCIA) { $pa = true; } return [ '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' => optional(optional(optional(optional($paciente->cidadao)->domicilio)->endereco)->logradouro)->nome, 'numero' => optional(optional(optional($paciente->cidadao)->domicilio)->endereco)->numero, 'sem_numero' => optional(optional(optional($paciente->cidadao)->domicilio)->endereco)->sem_numero, 'complemento' => optional(optional(optional($paciente->cidadao)->domicilio)->endereco)->complemento ?? '', 'cep' => optional(optional(optional(optional($paciente->cidadao)->domicilio)->endereco)->logradouro)->cep ? MaskUtil::getCepMasked(optional(optional(optional(optional($paciente->cidadao)->domicilio)->endereco)->logradouro)->cep) : null, 'municipio' => optional(optional(optional(optional(optional($paciente->cidadao)->domicilio)->endereco)->logradouro)->municipio)->nome, 'ibge' => optional(optional(optional(optional(optional($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, 'especialidade' => request()->especialidade ? request()->especialidade['descricao'] : null, 'classificacao_risco' => request()->classificacaoRisco ? request()->classificacaoRisco['descricaoEncaminhamento'] : null, 'pa' => $pa, 'consulta' => $consulta, 'programa' => $programa, 'internacao' => $internacao, 'outros' => $outros, 'unidade_origem' => [ 'nome_fantasia' => isset($infraestrutura->unidade->nome_fantasia) ? substr($infraestrutura->unidade->nome_fantasia, 0, 40) : null, 'cnes' => $infraestrutura->unidade->cnes, 'telefone' => $infraestrutura->telefone ? MaskUtil::getPhoneMasked($infraestrutura->telefone) : null, ], 'usuario_origem' => [ 'nome' => $usuario->cidadao->nome ?? null, 'usuario_nome' => $usuario->cidadao->nome, 'ocupacao_descricao' => $currentLotacao->ocupacao->codigo . ' - ' . $currentLotacao->ocupacao->nome, 'documento' => $usuario->registro_tipo_id ? ($usuario->registro_tipo_id === TipoRegistroUsuario::OUTRO ? $usuario->registro_tipo_outro : $usuario->registroTipo->sigla ) . ": {$usuario->registro_numero}" : 'Conselho profissional: NÃO INFORMADO', ], 'data' => Carbon::now()->format('d/m/Y') ?? null, 'horario' => Carbon::now()->format('H:i') ?? null, 'motivo' => request()->motivo ?? null, 'cid' => request()->cid ? request()->cid['codigo'] .' - '. request()->cid['nome'] : null, 'ciap' => request()->ciap ? request()->ciap['codigo'] .' - '. request()->ciap['descricao'] : null, ]; } private static function getRegulacaoData() { $regulacaoData = [ 'soap_id' => null, 'especialidade_id' => null, ]; if (request()->regulacao_solicitacao_id) { $regulacaoSolicitacao = RegulacaoSolicitacao::findOrFail(request()->regulacao_solicitacao_id); $regulacaoData['soap_id'] = $regulacaoSolicitacao->ambulatorio_atendimento_soap_id; $regulacaoData['especialidade_id'] = $regulacaoSolicitacao->itens()->first('especialidade_id')->especialidade_id; } return $regulacaoData; } }