has('em_atendimento') && request()->em_atendimento == true) { $atestados = $this->getAtestadosNaoSalvos($atendimentoId); AtendimentoService::saveLogImpressao(request()->atendimento_id, AtendimentoImpressaoTipo::ATESTADO_MEDICO); } else { $atestados = $this->getAtestados($atendimentoId); } return Pdf1::generate(self::TITLE, self::TEMPLATE, compact('atestados')); } private function getAtestadosNaoSalvos($pacienteId) { $paciente = Paciente::findOrFail($pacienteId); $lotacao = Lotacao::findOrFail(auth()->payload()->get('lotacao_id')); $unidade = CentroCusto::findOrFail(auth()->payload()->get('centro_custo_id'))->infraestrutura->unidade; $atestados[] = [ 'modelo_id' => (int) request()->modelo_id, 'descricao' => request()->descricao, 'is_atestado_acompanhante' => DataUtil::getBooleanValueFromStringBoolean(request()->is_atestado_acompanhante), 'paciente' => [ 'nome' => $paciente->cidadao->nome, 'nome_social' => $paciente->cidadao->nome_social, ], 'nome_acompanhante' => request()->nome, 'documento' => [ 'tipo' => GeralDocumentoTipo::find(request()->documento_tipo_id)->nome ?? null, 'numero' => request()->documento_tipo_id ? (request()->documento_tipo_id == DocumentoTipo::CPF ? request()->cpf : request()->cns) : null, ], 'unidade' => [ 'nome_fantasia' => $unidade->nome_fantasia, ], 'data' => request()->data, 'horario' => request()->horario, 'horario_inicial' => request()->horario_inicial, 'quantidade_horas' => request()->quantidade_horas, 'cid' => request()->cid['codigo'] ?? null, 'dias' => request()->dias, 'dias_por_extenso' => NumericUtil::getPorExtenso((int) request()->dias), '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 = [ 'atestados' => $atestados, ]; return $data; } private function getAtestados($atendimentoId) { $atendimento = Atendimento::findOrFail($atendimentoId); $paciente = $atendimento->paciente; $paraAssinaturaEletronica = request()->para_assinatura_eletronica === true || (DataUtil::isStringBoolean(request()->para_assinatura_eletronica) && DataUtil::isStringTrue(request()->para_assinatura_eletronica)); $atestados = []; $atendimento->soaps() ->where('is_rascunho', false) ->get() ->each(function($soap) use (&$atestados, $paciente) { $soap->atestados()->get()->each(function($atestado) use (&$atestados, $paciente) { $lotacao = $atestado->createdLotacao; $unidade = $atestado->createdCentroCusto->infraestrutura->unidade; $atestados[] = [ 'modelo_id' => $atestado->modelo_id, 'descricao' => $atestado->descricao, 'is_atestado_acompanhante' => $atestado->is_atestado_acompanhante, 'paciente' => [ 'nome' => $paciente->cidadao->nome, 'nome_social' => $paciente->cidadao->nome_social, ], 'nome_acompanhante' => $atestado->nome_acompanhante, 'documento' => [ 'tipo' => $atestado->documentoTipo->nome ?? null, 'numero' => $atestado->documento_tipo_id ? ($atestado->documento_tipo_id === DocumentoTipo::CPF ? $atestado->cpf : $atestado->cns) : null, ], 'unidade' => [ 'nome_fantasia' => $unidade->nome_fantasia, ], 'data' => $atestado->data ? $atestado->data->format('d/m/Y') : null, 'horario' => $atestado->horario ? $atestado->horario->format('H:i') : null, 'horario_inicial' => $atestado->horario_inicial ? $atestado->horario_inicial->format('H:i') : null, 'quantidade_horas' => $atestado->quantidade_horas, 'cid' => $atestado->cid->codigo ?? null, 'dias' => $atestado->dias, 'dias_por_extenso' => NumericUtil::getPorExtenso((int) $atestado->dias), '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 = [ 'atestados' => $atestados, 'paraAssinar' => $paraAssinaturaEletronica, ]; return $data; } }