has('em_atendimento') && request()->em_atendimento == true) { $cartasMedicas = $this->getCartasMedicasNaoSalvas($atendimentoId); AtendimentoService::saveLogImpressao(request()->atendimento_id, AtendimentoImpressaoTipo::CARTA_MEDICA); } else { $cartasMedicas = $this->getCartasMedicas($atendimentoId); } return Pdf1::generate(self::TITLE, self::TEMPLATE, compact('cartasMedicas')); } private function getCartasMedicasNaoSalvas($pacienteId) { $paciente = Paciente::findOrFail($pacienteId); $lotacao = Lotacao::findOrFail(auth()->payload()->get('lotacao_id')); $infraestrutura = CentroCusto::findOrFail(auth()->payload()->get('centro_custo_id'))->infraestrutura; $cartasMedicas[] = [ 'usuario' => [ 'nome' => $lotacao->usuario->cidadao->nome, 'registro_tipo' => $lotacao->usuario->registroTipo->sigla ?? null, 'registro_numero' => $lotacao->usuario->registro_numero ?? '-', 'unidade' => [ 'nome' => $infraestrutura->unidade->nome_fantasia ?? '-', 'endereco' => $infraestrutura->endereco->completo ?? '-', 'telefone' => MaskUtil::getPhoneMasked($infraestrutura->telefone), ], ], 'paciente' => [ 'nome' => $paciente->cidadao->nome, 'nome_social' => $paciente->cidadao->nome_social ?? '-', 'data_nascimento' => $paciente->cidadao->data_nascimento->format('d/m/Y'), 'idade' => $paciente->cidadao->idadeFormatada, 'prontuario' => $paciente->prontuario, 'cns' => MaskUtil::getCnsMasked($paciente->cidadao->cns), 'cpf' => MaskUtil::getCpfMasked($paciente->cidadao->cpf), 'rg' => $paciente->cidadao->carteiraIdentidade->numero ?? '-', 'sexo' => $paciente->cidadao->sexo->descricao ?? '-', 'nome_mae' => $paciente->cidadao->nome_mae, 'telefone' => isset($paciente->cidadao->telefonePrincipal->numero) ? MaskUtil::getPhoneMasked($paciente->cidadao->telefonePrincipal->numero) : '-', 'endereco' => $paciente->cidadao->domicilio->endereco->completo ?? '-', 'unidade' => $paciente->unidade->nomeFantasia ?? '-', ], 'descricao' => request()->descricao, 'informacoes_administrativas' => [ 'usuario_nome' => $lotacao->usuario->cidadao->nome, 'ocupacao_descricao' => $lotacao->ocupacao->codigo . ' - ' . $lotacao->ocupacao->nome, 'documento' => $lotacao->usuario->registro_tipo_id ? ($lotacao->usuario->registro_tipo_id === TipoRegistroUsuario::OUTRO ? $lotacao->usuario->registro_tipo_outro : $lotacao->usuario->registroTipo->sigla ) . ": {$lotacao->usuario->registro_numero}" : 'Conselho profissional: NÃO INFORMADO', ], ]; $data = [ 'cartasMedicas' => $cartasMedicas, ]; return $data; } private function getCartasMedicas($atendimentoId) { $atendimento = Atendimento::findOrFail($atendimentoId); $paciente = $atendimento->paciente; $cartasMedicas = []; $paraAssinaturaEletronica = request()->para_assinatura_eletronica === true || (DataUtil::isStringBoolean(request()->para_assinatura_eletronica) && DataUtil::isStringTrue(request()->para_assinatura_eletronica)); $atendimento->soaps() ->where('is_rascunho', false) ->get() ->each(function($soap) use (&$cartasMedicas, $paciente) { $soap->cartasMedicas()->get()->each(function($cartaMedica) use (&$cartasMedicas, $paciente) { $lotacao = $cartaMedica->createdLotacao; $infraestrutura = $cartaMedica->createdCentroCusto->infraestrutura; $cartasMedicas[] = [ 'usuario' => [ 'nome' => $lotacao->usuario->cidadao->nome, 'registro_tipo' => $lotacao->usuario->registroTipo->sigla ?? null, 'registro_numero' => $lotacao->usuario->registro_numero ?? '-', 'unidade' => [ 'nome' => $infraestrutura->unidade->nome_fantasia ?? '-', 'endereco' => $infraestrutura->endereco->completo ?? '-', 'telefone' => MaskUtil::getPhoneMasked($infraestrutura->telefone), ], ], 'paciente' => [ 'nome' => $paciente->cidadao->nome, 'nome_social' => $paciente->cidadao->nome_social ?? '-', 'data_nascimento' => $paciente->cidadao->data_nascimento->format('d/m/Y'), 'idade' => $paciente->cidadao->idadeFormatada, 'prontuario' => $paciente->prontuario, 'cns' => MaskUtil::getCnsMasked($paciente->cidadao->cns), 'cpf' => MaskUtil::getCpfMasked($paciente->cidadao->cpf), 'rg' => $paciente->cidadao->carteiraIdentidade->numero ?? '-', 'sexo' => $paciente->cidadao->sexo->descricao ?? '-', 'nome_mae' => $paciente->cidadao->nome_mae, 'telefone' => isset($paciente->cidadao->telefonePrincipal->numero) ? MaskUtil::getPhoneMasked($paciente->cidadao->telefonePrincipal->numero) : '-', 'endereco' => $paciente->cidadao->domicilio->endereco->completo ?? '-', 'unidade' => $paciente->unidade->nomeFantasia ?? '-', ], 'descricao' => $cartaMedica->descricao, 'informacoes_administrativas' => [ 'usuario_nome' => $lotacao->usuario->cidadao->nome, 'ocupacao_descricao' => $lotacao->ocupacao->codigo . ' - ' . $lotacao->ocupacao->nome, 'documento' => $lotacao->usuario->registro_tipo_id ? ($lotacao->usuario->registro_tipo_id === TipoRegistroUsuario::OUTRO ? $lotacao->usuario->registro_tipo_outro : $lotacao->usuario->registroTipo->sigla ) . ": {$lotacao->usuario->registro_numero}" : 'Conselho profissional: NÃO INFORMADO', ], ]; }); }); $data = [ 'cartasMedicas' => $cartasMedicas, 'paraAssinar' => $paraAssinaturaEletronica, ]; return $data; } }