" . EnumSaidaCidadao::OBITO . " or cadastro_paciente_informacao_social.saida_cidadao_id is null ) and ( atencao_basica_cadastro_individual.saida_cidadao_id <> " . EnumSaidaCidadao::OBITO . " or atencao_basica_cadastro_individual.saida_cidadao_id is null ) and ( atencao_basica_cadastro_individual.equipe_id = {$idEquipe} {$condicaoForaArea} ) ")); $limitePorRequisicao = 300; $skip = $pagina === 0 ? 0 : ($pagina * $limitePorRequisicao) + 1; $limit = $skip + $limitePorRequisicao; $contador = 0; $cidadaos = []; collect($listaCidadaos)->groupBy('cidadao_id')->each(function ($grupo) use (&$contador, $skip, $limit, &$cidadaos) { $cidadao = $grupo->first(); $contador++; if ($contador >= $skip && $contador < $limit) { $contatos = []; $alergias = []; $medicamentos = []; $fatoresRisco = []; $conveniosMedicos = []; $carteiraIdentidade = []; $grupo->each(function ($dadosPaciente) use (&$contatos, &$alergias, &$medicamentos, &$fatoresRisco, &$conveniosMedicos, &$carteiraIdentidade) { self::adicionaContato($contatos, $dadosPaciente); self::adicionaAlergia($alergias, $dadosPaciente); self::adicionaMedicamento($medicamentos, $dadosPaciente); self::adicionaFatorRisco($fatoresRisco, $dadosPaciente); self::adicionaConvenioMedico($conveniosMedicos, $dadosPaciente); self::adicionaCarteiraIdentidade($carteiraIdentidade, $dadosPaciente); }); $cidadao->contatos = $contatos; $cidadao->alergias = $alergias; $cidadao->medicamentos = $medicamentos; $cidadao->fator_risco = $fatoresRisco; $cidadao->convenios = $conveniosMedicos; self::obterUltimaCarteiraIdentidade($carteiraIdentidade, $cidadao); unset($contatos); unset($alergias); unset($medicamentos); unset($fatoresRisco); unset($conveniosMedicos); unset($carteiraIdentidade); $cidadao->cidadao_desconhece_nome_mae = is_null($cidadao->nome_mae) ? 1 : 0; $cidadao->cidadao_desconhece_nome_pai = is_null($cidadao->nome_pai) ? 1 : 0; $cidadao->cpf_nao_pertence_ao_cidadao = !is_null($cidadao->motivo_duplicidade_cpf_id) ? 1 : 0; self::obterIdadeCidadao($cidadao); self::removeChavesAgrupadas($cidadao); array_push($cidadaos, $cidadao); } })->values(); return response()->json(['cidadaos' => $cidadaos, 'stop' => sizeof($cidadaos) < $limitePorRequisicao ? 1 : 0], Response::HTTP_OK); } private static function adicionaContato(&$contatos, $dadosPaciente) { if (is_null($dadosPaciente->cadastro_cidadao_telefone_deleted_at) && !in_array($dadosPaciente->cidadao_telefone_principal_id, array_column($contatos, 'cidadao_telefone_principal_id'))) { array_push($contatos, [ 'cidadao_telefone_principal_id' => $dadosPaciente->cidadao_telefone_principal_id, 'cidadao_telefone_principal_numero' => $dadosPaciente->cidadao_telefone_principal_numero, 'cidadao_telefone_principal_principal' => $dadosPaciente->cidadao_telefone_principal_principal, 'cidadao_telefone_principal_observacao' => $dadosPaciente->cidadao_telefone_principal_observacao, ]); } } private static function adicionaAlergia(&$alergias, $dadosPaciente) { if (!is_null($dadosPaciente->cadastro_cidadao_alergia_alergia_id) && !in_array($dadosPaciente->cadastro_cidadao_alergia_alergia_id, array_column($alergias, 'cadastro_cidadao_alergia_alergia_id'))) { array_push($alergias, [ 'cadastro_cidadao_alergia_alergia_id' => $dadosPaciente->cadastro_cidadao_alergia_alergia_id, 'cadastro_cidadao_alergia_criticidade_id' => $dadosPaciente->cadastro_cidadao_alergia_criticidade_id, 'cadastro_cidadao_alergia_cid_id' => $dadosPaciente->cadastro_cidadao_alergia_cid_id, 'cadastro_cidadao_alergia_reacoes_observacoes' => $dadosPaciente->cadastro_cidadao_alergia_reacoes_observacoes, ]); } } private static function adicionaMedicamento(&$medicamentos, $dadosPaciente) { if (!is_null($dadosPaciente->medicamento_id) && !in_array($dadosPaciente->medicamento_id, $medicamentos)) { array_push($medicamentos, $dadosPaciente->medicamento_id); } } private static function adicionaFatorRisco(&$fatoresRisco, $dadosPaciente) { if (!is_null($dadosPaciente->fator_risco_id) && !in_array($dadosPaciente->fator_risco_id, $fatoresRisco)) { array_push($fatoresRisco, $dadosPaciente->fator_risco_id); } } private static function adicionaConvenioMedico(&$conveniosMedicos, $dadosPaciente) { if (!is_null($dadosPaciente->convenio_medico_id) && !in_array($dadosPaciente->convenio_medico_id, $conveniosMedicos)) { array_push($conveniosMedicos, $dadosPaciente->convenio_medico_id); } } private static function adicionaCarteiraIdentidade(&$carteiraIdentidade, $dadosPaciente) { if (is_null($dadosPaciente->cidadao_carteira_identidade_deleted_at) && !is_null($dadosPaciente->cidadao_carteira_identidade_id)) { array_push($carteiraIdentidade, [ 'cidadao_carteira_identidade_id' => $dadosPaciente->cidadao_carteira_identidade_id, 'cidadao_carteira_identidade_estado_id' => $dadosPaciente->cidadao_carteira_identidade_estado_id, 'cidadao_carteira_identidade_numero' => $dadosPaciente->cidadao_carteira_identidade_numero, 'cidadao_carteira_identidade_orgao_emissor' => $dadosPaciente->cidadao_carteira_identidade_orgao_emissor, 'cidadao_carteira_identidade_data_emissao' => $dadosPaciente->cidadao_carteira_identidade_data_emissao, 'cidadao_carteira_identidade_created_at' => $dadosPaciente->cidadao_carteira_identidade_created_at, 'cidadao_carteira_identidade_updated_at' => $dadosPaciente->cidadao_carteira_identidade_updated_at, ]); } } private static function obterUltimaCarteiraIdentidade($carteiraIdentidade, &$cidadao) { if (sizeof($carteiraIdentidade) > 0) { array_multisort(array_column($carteiraIdentidade, 'cidadao_carteira_identidade_updated_at'), SORT_DESC, $carteiraIdentidade); $carteiraIdentidade = collect($carteiraIdentidade)->first(); $cidadao->cidadao_carteira_identidade_id = $carteiraIdentidade['cidadao_carteira_identidade_id'] ?? null; $cidadao->cidadao_carteira_identidade_estado_id = $carteiraIdentidade['cidadao_carteira_identidade_estado_id'] ?? null; $cidadao->cidadao_carteira_identidade_numero = $carteiraIdentidade['cidadao_carteira_identidade_numero'] ?? null; $cidadao->cidadao_carteira_identidade_orgao_emissor = $carteiraIdentidade['cidadao_carteira_identidade_orgao_emissor'] ?? null; $cidadao->cidadao_carteira_identidade_data_emissao = $carteiraIdentidade['cidadao_carteira_identidade_data_emissao'] ?? null; $cidadao->cidadao_carteira_identidade_created_at = $carteiraIdentidade['cidadao_carteira_identidade_created_at'] ?? null; $cidadao->cidadao_carteira_identidade_updated_at = $carteiraIdentidade['cidadao_carteira_identidade_updated_at'] ?? null; } } private static function obterIdadeCidadao(&$cidadao) { if (!is_null($cidadao->data_nascimento)) { $dataNascimento = new DateTime($cidadao->data_nascimento); $age = AgeService::getAge($dataNascimento); } $cidadao->cidadao_idade_anos = isset($age) ? $age->years : null; $cidadao->cidadao_idade_meses = isset($age) ? $age->months : null; $cidadao->cidadao_idade_dias = isset($age) ? $age->days : null; } private static function removeChavesAgrupadas(&$cidadao) { unset($cidadao->cidadao_telefone_principal_id); unset($cidadao->cidadao_telefone_principal_numero); unset($cidadao->cidadao_telefone_principal_principal); unset($cidadao->cidadao_telefone_principal_observacao); unset($cidadao->cadastro_cidadao_alergia_alergia_id); unset($cidadao->cadastro_cidadao_alergia_criticidade_id); unset($cidadao->cadastro_cidadao_alergia_cid_id); unset($cidadao->cadastro_cidadao_alergia_reacoes_observacoes); unset($cidadao->medicamento_id); unset($cidadao->fator_risco_id); unset($cidadao->convenio_medico_id); } }