stream(self::getTemplate($atendimentoId), 'solicitacao-exames-imagem'); } public static function getTemplate(int $atendimentoId) { $pedidosExames = PedidoExame::orderByDesc('created_at') ->where('atendimento_id', $atendimentoId) ->get(); $data['paciente'] = self::getPacienteData(Atendimento::findOrFail($atendimentoId)); $data['pedidosExames'] = []; foreach ($pedidosExames as $pedidoExame) { $data['pedidosExames'][] = [ 'urgente' => $pedidoExame->urgente, 'data' => $pedidoExame->created_at->format('d/m/Y H:i:s'), 'justificativa' => $pedidoExame->justificativa, 'medico' => [ 'nome' => $pedidoExame->createdLotacao->usuario->cidadao->nome, 'cbo' => $pedidoExame->createdLotacao->ocupacao->nome ], 'exames' => self::getExames($pedidoExame) ]; } return Template::make(self::TITLE, self::TEMPLATE)->withData($data)->getHtml(); } private static function getExames($pedidoExme) { $result = []; foreach ($pedidoExme['exames'] as $item) { if ($item->exame->tipo_id === Tipo::IMAGEM) { $result[] = [ 'id' => $item->exame->id, 'nome' => $item->exame->nome, 'codigo' => $item->exame->codigo, 'observacao_medico' => $item->observacao_medico, 'observacao_executante' => $item->observacao_executante, ]; } } return $result; } private static function getPacienteData($atendimento) { $paciente = $atendimento->faa->paciente; $cidadao = $paciente->cidadao; $gestacao = $atendimento->gestacoes->sortByDesc('created_at')->first(); return [ 'nome' => $cidadao->nome, 'nome_social' => $cidadao->nome_social, 'prontuario' => $paciente->prontuario, 'cns' => $cidadao->cns ? MaskUtil::getCnsMasked($cidadao->cns) : 'NÃO INFORMADO', 'cpf' => $cidadao->cpf ? MaskUtil::getCpfMasked($cidadao->cpf) : 'NÃO INFORMADO', 'sexo' => $cidadao->sexo->descricao, 'data_nascimento' => $cidadao->data_nascimento ? $cidadao->data_nascimento->format('d/m/Y') : 'NÃO INFORMADA', 'idade' => $cidadao->data_nascimento ? "{$cidadao->idade['anos']} ano(s), " . "{$cidadao->idade['meses']} mês(es) e " . "{$cidadao->idade['dias']} dia(s) " : 'NÃO INFORMADA', 'idade_gestacional' => $gestacao && $gestacao->idade_gestacional ? "{$gestacao->idade_gestacional['semanas']} semana(s) e {$gestacao->idade_gestacional['dias']} dia(s)" : null, 'nome_mae' => $cidadao->nome_mae ?? 'NÃO INFORMADO', 'endereco' => $cidadao->domicilio ? "{$cidadao->domicilio->endereco->completo}, " . MaskUtil::getCepMasked($cidadao->domicilio->endereco->logradouro->cep) : 'NÃO INFORMADO', 'telefones' => $cidadao->telefones->map(fn ($t) => MaskUtil::getPhoneMasked($t->numero))->all(), ]; } }