em_atendimento) && DataUtil::isStringTrue(request()->em_atendimento)) { $data = $this->getDadosNaoSalvos(); } else { $data = $this->getDadosAtendimento($atendimentoId); } $pdf = SnappyPdf::loadView('impressoes.template.ambulatorio.requisicao-mamografia', $data) ->setOption('margin-bottom', 4) ->setOption('margin-left', 2) ->setOption('margin-right', 2) ->setOption('margin-top', 4) ->setOption('enable-local-file-access', true) ->setPaper('a4') ->setOrientation('portrait'); $pdf->setTimeout(180); return $pdf->inline('requisicao-mamografia.pdf'); } private function getDadosNaoSalvos() { $currentLotacao = Lotacao::findOrFail(auth()->payload()->get('lotacao_id')); $paciente = Paciente::findOrFail(request()->paciente_id); return [ 'requisitante' => [ 'unidade' => mb_str_split($currentLotacao->infraestrutura->unidade->nome_fantasia), 'cnes' => mb_str_split($currentLotacao->infraestrutura->unidade->cnes), 'municipio_uf' => mb_str_split($currentLotacao->infraestrutura->endereco->logradouro->municipio->estado->uf), 'municipio_nome' => mb_str_split($currentLotacao->infraestrutura->endereco->logradouro->municipio->nome), 'ibge' => mb_str_split($currentLotacao->infraestrutura->endereco->logradouro->municipio->ibge), ], 'paciente' => [ 'prontuario' => mb_str_split($paciente->prontuario), 'cns' => mb_str_split($paciente->cidadao->cns), 'cpf' => mb_str_split($paciente->cidadao->cpf), 'is_sexo_masculino' => $paciente->cidadao->sexo_id === Sexo::MASCULINO, 'is_sexo_feminino' => $paciente->cidadao->sexo_id === Sexo::FEMININO, 'nome' => mb_str_split($paciente->cidadao->nome), 'nome_social' => mb_str_split($paciente->cidadao->nome_social), 'nome_mae' => mb_str_split($paciente->cidadao->nome_mae), 'nacionalidade' => $paciente->cidadao->nacionalidade->descricao ?? null, 'rg' => [ 'numero' => mb_str_split($paciente->cidadao->carteiraIdentidade->numero ?? ''), 'orgao_emissor' => mb_str_split($paciente->cidadao->carteiraIdentidade->orgao_emissor ?? ''), 'uf' => mb_str_split($paciente->cidadao->carteiraIdentidade->estado->uf ?? ''), ], 'data_nascimento' => mb_str_split(is_null($paciente->cidadao->data_nascimento) ? '' : (new Carbon($paciente->cidadao->data_nascimento))->format('dmY')), 'idade' => mb_str_split(is_null($paciente->cidadao->data_nascimento) ? '' : (string) $paciente->cidadao->idade['anos']), 'is_raca_cor_branca' => $paciente->cidadao->raca_cor_id === RacaCor::BRANCA, 'is_raca_cor_preta' => $paciente->cidadao->raca_cor_id === RacaCor::NEGRA, 'is_raca_cor_parda' => $paciente->cidadao->raca_cor_id === RacaCor::PARDA, 'is_raca_cor_amarela' => $paciente->cidadao->raca_cor_id === RacaCor::AMARELA, 'is_raca_cor_indigena' => $paciente->cidadao->raca_cor_id === RacaCor::INDIGENA, 'etnia_indigena' => Str::substr($paciente->cidadao->etniaIndigena->descricao ?? '', 0, 14), 'endereco' => [ 'logradouro' => mb_str_split(isset($paciente->cidadao->domicilio->endereco->logradouro) ? "{$paciente->cidadao->domicilio->endereco->logradouro->tipo->descricao} " . $paciente->cidadao->domicilio->endereco->logradouro->nome : ''), 'numero' => mb_str_split((string) ($paciente->cidadao->domicilio->endereco->numero ?? '')), 'complemento' => mb_str_split($paciente->cidadao->domicilio->endereco->complemento ?? ''), 'bairro' => mb_str_split($paciente->cidadao->domicilio->endereco->logradouro->bairro->nome ?? ''), 'uf' => mb_str_split($paciente->cidadao->domicilio->endereco->logradouro->municipio->estado->uf ?? ''), 'ibge_municipio' => mb_str_split($paciente->cidadao->domicilio->endereco->logradouro->municipio->ibge ?? ''), 'municipio' => mb_str_split($paciente->cidadao->domicilio->endereco->logradouro->municipio->nome ?? ''), 'cep' => mb_str_split($paciente->cidadao->domicilio->endereco->logradouro->cep ?? ''), 'referencia' => mb_str_split($paciente->cidadao->domicilio->endereco->referencia ?? ''), ], 'telefone' => [ 'ddd' => mb_str_split(Str::substr($paciente->cidadao->telefone_principal->numero ?? '', 0, 2)), 'numero' => mb_str_split(Str::substr($paciente->cidadao->telefone_principal->numero ?? '', 2)), 'is_celular' => strlen($paciente->cidadao->telefone_principal->numero ?? '') === 11, ], 'is_escolaridade_analfabeta' => false, 'is_escolaridade_fundamental_incompleto' => $paciente->cidadao->escolaridade_id === Escolaridade::FUNDAMENTAL_INCOMPLETO, 'is_escolaridade_fundamental_completo' => $paciente->cidadao->escolaridade_id === Escolaridade::FUNDAMENTAL_COMPLETO, 'is_escolaridade_medio_completo' => $paciente->cidadao->escolaridade_id === Escolaridade::MEDIO_COMPLETO, 'is_escolaridade_superior_completo' => $paciente->cidadao->escolaridade_id === Escolaridade::SUPERIOR_GRADUACAO_COMPLETO, ], 'solicitacoes' => [[]], ]; } private function getDadosAtendimento($atendimentoId) { $atendimento = Atendimento::findOrFail($atendimentoId); $solicitacoesExames = collect(); $atendimento->soaps()->where('is_rascunho', false)->get()->each(function ($soap) use ($solicitacoesExames) { $soap->solicitacoesExames->each(function ($solicitacao) use ($solicitacoesExames) { $hasExame = $solicitacao->itens() ->when(isset(request()->solicitacao_exame_item_id), fn ($q) => $q->where('id', request()->solicitacao_exame_item_id)) ->whereHas('exame', fn ($q) => $q ->whereIn('codigo', [ Procedimento::MAMOGRAFIA, Procedimento::MAMOGRAFIA_BILATERAL_PARA_RASTREAMENTO, ]) ) ->exists(); if ($hasExame) { $solicitacoesExames->push([]); } }); }); return [ 'requisitante' => [ 'unidade' => mb_str_split($atendimento->createdLotacao->infraestrutura->unidade->nome_fantasia), 'cnes' => mb_str_split($atendimento->createdLotacao->infraestrutura->unidade->cnes), 'municipio_uf' => mb_str_split($atendimento->createdLotacao->infraestrutura->endereco->logradouro->municipio->estado->uf), 'municipio_nome' => mb_str_split($atendimento->createdLotacao->infraestrutura->endereco->logradouro->municipio->nome), 'ibge' => mb_str_split($atendimento->createdLotacao->infraestrutura->endereco->logradouro->municipio->ibge), ], 'paciente' => [ 'prontuario' => mb_str_split($atendimento->paciente->prontuario), 'cns' => mb_str_split($atendimento->paciente->cidadao->cns), 'cpf' => mb_str_split($atendimento->paciente->cidadao->cpf), 'is_sexo_masculino' => $atendimento->paciente->cidadao->sexo_id === Sexo::MASCULINO, 'is_sexo_feminino' => $atendimento->paciente->cidadao->sexo_id === Sexo::FEMININO, 'nome' => mb_str_split($atendimento->paciente->cidadao->nome), 'nome_social' => mb_str_split($atendimento->paciente->cidadao->nome_social), 'nome_mae' => mb_str_split($atendimento->paciente->cidadao->nome_mae), 'nacionalidade' => $atendimento->paciente->cidadao->nacionalidade->descricao ?? null, 'rg' => [ 'numero' => mb_str_split($atendimento->paciente->cidadao->carteiraIdentidade->numero ?? ''), 'orgao_emissor' => mb_str_split($atendimento->paciente->cidadao->carteiraIdentidade->orgao_emissor ?? ''), 'uf' => mb_str_split($atendimento->paciente->cidadao->carteiraIdentidade->estado->uf ?? ''), ], 'data_nascimento' => mb_str_split(is_null($atendimento->paciente->cidadao->data_nascimento) ? '' : (new Carbon($atendimento->paciente->cidadao->data_nascimento))->format('dmY')), 'idade' => mb_str_split(is_null($atendimento->paciente->cidadao->data_nascimento) ? '' : (string) $atendimento->paciente->cidadao->idade['anos']), 'is_raca_cor_branca' => $atendimento->paciente->cidadao->raca_cor_id === RacaCor::BRANCA, 'is_raca_cor_preta' => $atendimento->paciente->cidadao->raca_cor_id === RacaCor::NEGRA, 'is_raca_cor_parda' => $atendimento->paciente->cidadao->raca_cor_id === RacaCor::PARDA, 'is_raca_cor_amarela' => $atendimento->paciente->cidadao->raca_cor_id === RacaCor::AMARELA, 'is_raca_cor_indigena' => $atendimento->paciente->cidadao->raca_cor_id === RacaCor::INDIGENA, 'etnia_indigena' => Str::substr($atendimento->paciente->cidadao->etniaIndigena->descricao ?? '', 0, 14), 'endereco' => [ 'logradouro' => mb_str_split(isset($atendimento->paciente->cidadao->domicilio->endereco->logradouro) ? "{$atendimento->paciente->cidadao->domicilio->endereco->logradouro->tipo->descricao} " . $atendimento->paciente->cidadao->domicilio->endereco->logradouro->nome : ''), 'numero' => mb_str_split((string) ($atendimento->paciente->cidadao->domicilio->endereco->numero ?? '')), 'complemento' => mb_str_split($atendimento->paciente->cidadao->domicilio->endereco->complemento ?? ''), 'bairro' => mb_str_split($atendimento->paciente->cidadao->domicilio->endereco->logradouro->bairro->nome ?? ''), 'uf' => mb_str_split($atendimento->paciente->cidadao->domicilio->endereco->logradouro->municipio->estado->uf ?? ''), 'ibge_municipio' => mb_str_split($atendimento->paciente->cidadao->domicilio->endereco->logradouro->municipio->ibge ?? ''), 'municipio' => mb_str_split($atendimento->paciente->cidadao->domicilio->endereco->logradouro->municipio->nome ?? ''), 'cep' => mb_str_split($atendimento->paciente->cidadao->domicilio->endereco->logradouro->cep ?? ''), 'referencia' => mb_str_split($atendimento->paciente->cidadao->domicilio->endereco->referencia ?? ''), ], 'telefone' => [ 'ddd' => mb_str_split(Str::substr($atendimento->paciente->cidadao->telefone_principal->numero ?? '', 0, 2)), 'numero' => mb_str_split(Str::substr($atendimento->paciente->cidadao->telefone_principal->numero ?? '', 2)), 'is_celular' => strlen($atendimento->paciente->cidadao->telefone_principal->numero ?? '') === 11, ], 'is_escolaridade_analfabeta' => false, 'is_escolaridade_fundamental_incompleto' => $atendimento->paciente->cidadao->escolaridade_id === Escolaridade::FUNDAMENTAL_INCOMPLETO, 'is_escolaridade_fundamental_completo' => $atendimento->paciente->cidadao->escolaridade_id === Escolaridade::FUNDAMENTAL_COMPLETO, 'is_escolaridade_medio_completo' => $atendimento->paciente->cidadao->escolaridade_id === Escolaridade::MEDIO_COMPLETO, 'is_escolaridade_superior_completo' => $atendimento->paciente->cidadao->escolaridade_id === Escolaridade::SUPERIOR_GRADUACAO_COMPLETO, ], 'solicitacoes' => $solicitacoesExames, ]; } }