pluck('domicilio_id'); $idsValidos = []; foreach ($registrosCadastrosIndividuais as $registro) { if(!$domiciliosCadastrados->contains($registro->domicilio_id)) { continue; } if ($registro) { $id = $registro->id; if ( ($registro->paciente_cns && !Cns::isValid($registro->paciente_cns)) || (!$registro->paciente_cns && !Cpf::isValid($registro->paciente_cpf)) || ($registro->nome_cidadao && !NomeCompleto::isValid($registro->nome_cidadao)) || (!empty($registro->paciente_nome_mae) && !NomeCompleto::isValid($registro->paciente_nome_mae)) || (!empty($registro->paciente_nome_pai) && !NomeCompleto::isValid($registro->paciente_nome_pai)) ) { continue; } if (!in_array($id, $idsValidos)) { $idsValidos[] = $id; } } } foreach ($registrosCadastrosIndividuais as $registro) { if ($registro) { $id = $registro->id; if (!Cns::isValid($registro->usuario_cns)) { $key = array_search($id, $idsValidos); if ($key !== false) { unset($idsValidos[$key]); }; } } } return $idsValidos; } public static function getCadastrosIndividuais() { return DB::table('atencao_basica_cadastro_individual AS cadastro_individual') ->select([ 'cadastro_individual.id AS id', 'paciente_cidadao.domicilio_id AS domicilio_id', 'paciente.id as paciente_id', 'paciente_cidadao.nome as nome_cidadao', 'paciente_cidadao.cns as paciente_cns', 'paciente_cidadao.cpf as paciente_cpf', 'paciente_cidadao.nome_mae as paciente_nome_mae', 'paciente_cidadao.nome_pai as paciente_nome_pai', 'usuario.id AS id_usuario', 'usuario_cidadao.nome AS nome_usuario', 'usuario_cidadao.cns AS usuario_cns', ]) ->join('cadastro_paciente as paciente', 'paciente.id', 'cadastro_individual.paciente_id') ->join('cadastro_cidadao as paciente_cidadao', 'paciente_cidadao.id', 'paciente.cidadao_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'cadastro_individual.usuario_id') ->join('cadastro_cidadao as usuario_cidadao', 'usuario_cidadao.id', 'usuario.cidadao_id') ->where('cadastro_individual.ativo', true) ->where(function ($query) { $query->where(function ($query){ $query->where('cadastro_individual.internacao', true) ->whereNotNull('cadastro_individual.internacao_motivo'); }) ->orWhere('cadastro_individual.internacao', false) ->orWhereNull('cadastro_individual.internacao'); }) ->where(function ($query) { $query->where(function ($q) { $q->where('cadastro_individual.doenca_cardiaca', true) ->whereExists(function ($subquery) { $subquery->select(DB::raw(1)) ->from('atencao_basica_cadastro_individual_doenca_cardiaca') ->whereColumn('atencao_basica_cadastro_individual_doenca_cardiaca.cadastro_individual_id', 'cadastro_individual.id'); }); }) ->orWhere('cadastro_individual.doenca_cardiaca', false) ->orWhereNull('cadastro_individual.doenca_cardiaca'); }) ->where(function ($query) { $query->where(function ($query) { $query->where('cadastro_individual.doenca_respiratoria', true) ->whereExists(function ($subquery) { $subquery->select(DB::raw(1)) ->from('atencao_basica_cadastro_individual_doenca_respiratoria') ->whereColumn('atencao_basica_cadastro_individual_doenca_respiratoria.cadastro_individual_id', 'cadastro_individual.id'); }); }) ->orWhere('cadastro_individual.doenca_respiratoria', false) ->orWhereNull('cadastro_individual.doenca_respiratoria'); }) ->where(function ($query) { $query->where(function ($query) { $query->where('cadastro_individual.problemas_rins', true) ->whereExists(function ($subquery) { $subquery->select(DB::raw(1)) ->from('atencao_basica_cadastro_individual_problemas_rins') ->whereColumn('atencao_basica_cadastro_individual_problemas_rins.cadastro_individual_id', 'cadastro_individual.id'); }); }) ->orWhere('cadastro_individual.problemas_rins', false) ->orWhereNull('cadastro_individual.problemas_rins'); }) ->where(function ($query) { $query->where(function ($q) { $q->whereNotNull('cadastro_individual.situacao_rua_id') ->where(function ($qq) { $qq->where('cadastro_individual.visita_familiar', true) ->whereNotNull('cadastro_individual.parentesco'); }); }) ->orWhere(function ($q) { $q->where('cadastro_individual.situacao_rua_id', null) ->orWhere('cadastro_individual.visita_familiar', false); }); }) ->where(function ($query) { $query->where(function ($query) { $query->where('cadastro_individual.deficiente', true) ->whereExists(function ($subquery) { $subquery->select(DB::raw(1)) ->from('atencao_basica_cadastro_individual_deficiencia_base') ->whereColumn('atencao_basica_cadastro_individual_deficiencia_base.cadastro_individual_id', 'cadastro_individual.id'); }); }) ->orWhere('cadastro_individual.deficiente', false) ->orWhereNull('cadastro_individual.deficiente'); }) ->where(function ($query) { $query->where(function ($query) { $query->where(function ($query) { $query->where('cadastro_individual.recusa_cadastro', false) ->orWhereNull('cadastro_individual.recusa_cadastro'); }); })->orWhere('cadastro_individual.recusa_cadastro', true); }) ->whereNotNull('paciente_cidadao.nacionalidade_id') ->where(function ($query) { $query->where(function ($query) { $query->where('paciente_cidadao.pais_nascimento_id', IntranetPais::BRASIL) ->whereNotNull('paciente_cidadao.municipio_nascimento_id'); }) ->orWhere('paciente_cidadao.pais_nascimento_id', IntranetPais::BRASIL); }) ->where(function ($query) { $query->whereNotNull('paciente_cidadao.nome') ->where('paciente_cidadao.nome', '!=', ''); }) ->whereNotNull('paciente_cidadao.raca_cor_id') ->whereNotNull('paciente_cidadao.sexo_id') ->where(function ($query) { $query->where(function ($query) { $query->where('paciente_cidadao.raca_cor_id', EnumRacaCor::INDIGENA) ->whereNotNull('paciente_cidadao.etnia_indigena_id'); })->orWhere('paciente_cidadao.raca_cor_id', '!=', EnumRacaCor::INDIGENA) ->whereNull('paciente_cidadao.etnia_indigena_id'); }) ->where(function ($query) { $query->where(function ($query) { $query->where('paciente_cidadao.nacionalidade_id', EnumNacionalidade::NATURALIZADO_BRASILEIRO) ->where('paciente_cidadao.portaria_naturalizacao', '!=', '') ->whereNotNull('paciente_cidadao.portaria_naturalizacao') ->whereNotNull('paciente_cidadao.data_naturalizacao'); })->orWhere('paciente_cidadao.nacionalidade_id', '!=', EnumNacionalidade::NATURALIZADO_BRASILEIRO) ->whereNull('paciente_cidadao.data_naturalizacao'); }) ->where(function ($query) { $query->where('paciente_cidadao.cpf', '!=', '') ->orWhere('paciente_cidadao.cns', '!=', ''); }) ->where(function ($query) { $query->where(function ($query) { $query->where('paciente_cidadao.nacionalidade_id', '!=', EnumNacionalidade::ESTRANGEIRO) ->whereExists(function ($subquery) { $subquery->select(DB::raw(1)) ->from('cadastro_cidadao_telefone') ->whereColumn('cadastro_cidadao_telefone.cidadao_id', 'paciente_cidadao.id'); }); })->orWhere('paciente_cidadao.nacionalidade_id', EnumNacionalidade::ESTRANGEIRO); }) ->get(); } public static function getUnidades() { $idsValidos = self::getIdsValidos(); return DB::table('atencao_basica_cadastro_individual') ->select([ DB::raw('DISTINCT cadastro_unidade.id AS id'), 'cadastro_unidade.nome_fantasia AS nome', ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->when(request()->domicilio, fn ($q) => $q->where('atencao_basica_parametrizacao_equipe.unidade_id', request()->domicilio)) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->get(); } public static function getAreas() { $idsValidos = self::idsValidosNoCadastroIndividual(); return DB::table('atencao_basica_cadastro_individual') ->select([ DB::raw('DISTINCT atencao_basica_parametrizacao_area.id AS id'), DB::raw(" CASE WHEN atencao_basica_parametrizacao_area.descricao IS NOT NULL AND atencao_basica_parametrizacao_area.numero_ine IS NOT NULL THEN CONCAT(atencao_basica_parametrizacao_area.descricao, ' / ', atencao_basica_parametrizacao_area.numero_ine) WHEN atencao_basica_parametrizacao_area.descricao IS NOT NULL THEN atencao_basica_parametrizacao_area.descricao WHEN atencao_basica_parametrizacao_area.numero_ine IS NOT NULL THEN atencao_basica_parametrizacao_area.numero_ine ELSE NULL END AS descricao ") ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_area.id', 'atencao_basica_parametrizacao_equipe.area_id') ->when(request()->unidade, fn ($q) => $q->where('atencao_basica_parametrizacao_equipe.unidade_id', request()->unidade)) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->get(); } public static function getMicroAreas() { $idsValidos = self::getIdsValidos(); return DB::table('atencao_basica_cadastro_individual') ->select([ DB::raw('DISTINCT atencao_basica_parametrizacao_microarea.descricao AS descricao'), ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id') ->when(request()->unidade, fn ($q) => $q->where('atencao_basica_parametrizacao_equipe.unidade_id', request()->unidade)) ->when(request()->area, fn ($q) => $q->where('atencao_basica_parametrizacao_equipe.area_id', request()->area)) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->get(); } public static function list() { $idsValidos = self::getIdsValidos(); $domicilio = request()->domicilio; $unidades = DB::table('atencao_basica_cadastro_individual') ->select([ DB::raw('DISTINCT cadastro_unidade.id AS id'), 'cadastro_unidade.nome_fantasia AS nome', ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->join('atencao_basica_cadastro_domiciliar', 'atencao_basica_cadastro_domiciliar.domicilio_id', 'cadastro_cidadao.domicilio_id') ->join('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id') ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('cadastro_obito') ->whereNull('cadastro_obito.deleted_at') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id') ) ->when(request()->unidade, fn ($q) => $q->where('atencao_basica_parametrizacao_equipe.unidade_id', request()->unidade)) ->when(request()->area, fn ($q) => $q->where('atencao_basica_parametrizacao_equipe.area_id', request()->area)) ->when(request()->microarea, fn ($q) => $q->where('atencao_basica_parametrizacao_microarea.descricao', request()->microarea)) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->get(); $microareas = DB::table('atencao_basica_cadastro_individual') ->select([ DB::raw('DISTINCT atencao_basica_parametrizacao_microarea.descricao'), "atencao_basica_parametrizacao_microarea.descricao AS descricao", ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->leftJoin('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id') ->when(request()->unidade, fn ($q) => $q->where('atencao_basica_parametrizacao_equipe.unidade_id', request()->unidade)) ->when(request()->area, fn ($q) => $q->where('atencao_basica_parametrizacao_equipe.area_id', request()->area)) ->when(request()->microarea, fn ($q) => $q->where('atencao_basica_parametrizacao_microarea.descricao', request()->microarea)) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->pluck('descricao'); if (!request()->microarea && count($microareas) > 1) { $microareas[] = 'total'; } $dados = [ "consulta" => $unidades->map(function ($unidade) use ($domicilio, $idsValidos) { $fora_area = DB::table('atencao_basica_cadastro_individual') ->select([ 'atencao_basica_parametrizacao_equipe.unidade_id', 'atencao_basica_cadastro_individual.paciente_id', ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->join('atencao_basica_cadastro_domiciliar', 'atencao_basica_cadastro_domiciliar.domicilio_id', 'cadastro_cidadao.domicilio_id') ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('cadastro_obito') ->whereNull('cadastro_obito.deleted_at') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id') ) ->where('atencao_basica_cadastro_domiciliar.fora_area', true) ->where('atencao_basica_parametrizacao_equipe.unidade_id', $unidade->id) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos); $dados = [ "unidade_id" => $unidade->id, "unidade_nome" => $unidade->nome, "total_pacientes_dentro_das_areas_de_toda_unidade" => DB::table('atencao_basica_cadastro_individual') ->select([ 'atencao_basica_cadastro_individual.paciente_id', 'atencao_basica_cadastro_domiciliar.fora_area' ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->join('atencao_basica_cadastro_domiciliar', 'atencao_basica_cadastro_domiciliar.domicilio_id', 'cadastro_cidadao.domicilio_id') ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('cadastro_obito') ->whereNull('cadastro_obito.deleted_at') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id') ) ->where( function ($query) { return $query ->where('atencao_basica_cadastro_domiciliar.fora_area', false) ->orWhereNull('atencao_basica_cadastro_domiciliar.fora_area'); } ) ->where('atencao_basica_parametrizacao_equipe.unidade_id', $unidade->id) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->count('atencao_basica_cadastro_individual.paciente_id'), "pacientes_fora_area" => [ 'unidade_id' => $unidade->id, 'fora_area_pacientes_id' => $fora_area->pluck('paciente_id'), 'total_fora_area' => $fora_area->count('paciente_id') ], "total_pacientes_fora_area" => DB::table('atencao_basica_cadastro_individual') ->select([ 'atencao_basica_cadastro_individual.paciente_id', 'atencao_basica_cadastro_domiciliar.fora_area' ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->join('atencao_basica_cadastro_domiciliar', 'atencao_basica_cadastro_domiciliar.domicilio_id', 'cadastro_cidadao.domicilio_id') ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('cadastro_obito') ->whereNull('cadastro_obito.deleted_at') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id') ) ->where('atencao_basica_cadastro_domiciliar.fora_area', true) ->where('atencao_basica_parametrizacao_equipe.unidade_id', $unidade->id) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->count('atencao_basica_cadastro_individual.paciente_id'), 'areas' => DB::table('atencao_basica_cadastro_individual') ->select([ DB::raw('DISTINCT atencao_basica_parametrizacao_area.id AS id'), DB::raw(" CASE WHEN atencao_basica_parametrizacao_area.descricao IS NOT NULL AND atencao_basica_parametrizacao_area.numero_ine IS NOT NULL THEN CONCAT(atencao_basica_parametrizacao_area.descricao, ' / ', atencao_basica_parametrizacao_area.numero_ine) WHEN atencao_basica_parametrizacao_area.descricao IS NOT NULL THEN atencao_basica_parametrizacao_area.descricao WHEN atencao_basica_parametrizacao_area.numero_ine IS NOT NULL THEN atencao_basica_parametrizacao_area.numero_ine ELSE NULL END AS descricao ") ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_area.id', 'atencao_basica_parametrizacao_equipe.area_id') ->where('atencao_basica_parametrizacao_equipe.unidade_id', $unidade->id) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->get() ->map(fn ($area) => [ 'area_id' => $area->id, 'area_descricao' => $area->descricao, 'area_total_pacientes' => DB::table('atencao_basica_cadastro_individual') ->select([ 'atencao_basica_cadastro_individual.paciente_id', 'atencao_basica_cadastro_domiciliar.fora_area' ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->join('atencao_basica_cadastro_domiciliar', 'atencao_basica_cadastro_domiciliar.domicilio_id', 'cadastro_cidadao.domicilio_id') ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('cadastro_obito') ->whereNull('cadastro_obito.deleted_at') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id') ) ->where( function ($query) { return $query ->where('atencao_basica_cadastro_domiciliar.fora_area', false) ->orWhereNull('atencao_basica_cadastro_domiciliar.fora_area'); } ) ->where('atencao_basica_parametrizacao_equipe.area_id', $area->id) ->where('atencao_basica_parametrizacao_equipe.unidade_id', $unidade->id) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->count('atencao_basica_cadastro_individual.paciente_id'), 'microareas' => DB::table('atencao_basica_cadastro_individual') ->select([ DB::raw('DISTINCT atencao_basica_parametrizacao_microarea.id AS id'), "atencao_basica_parametrizacao_microarea.descricao AS descricao", ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->leftJoin('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id') ->where('atencao_basica_parametrizacao_equipe.area_id', $area->id) ->where('atencao_basica_parametrizacao_equipe.unidade_id', $unidade->id) ->when(request()->microarea, fn ($q) => $q->where('atencao_basica_parametrizacao_microarea.descricao', request()->microarea)) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->get() ->map(fn ($microarea) => [ "unidade_id" => $unidade->id, "area_id" => $area->id, "microarea_id" => $microarea->id, "microarea_descricao" => $microarea->descricao, "microarea_total_pacientes" => DB::table('atencao_basica_cadastro_individual') ->select([ 'atencao_basica_cadastro_individual.paciente_id', 'atencao_basica_cadastro_domiciliar.fora_area' ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->join('atencao_basica_cadastro_domiciliar', 'atencao_basica_cadastro_domiciliar.domicilio_id', 'cadastro_cidadao.domicilio_id') ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('cadastro_obito') ->whereNull('cadastro_obito.deleted_at') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id') ) ->where( function ($query) { return $query ->where('atencao_basica_cadastro_domiciliar.fora_area', false) ->orWhereNull('atencao_basica_cadastro_domiciliar.fora_area'); } ) ->where('atencao_basica_parametrizacao_equipe.area_id', $area->id) ->where('atencao_basica_parametrizacao_equipe.microarea_id', $microarea->id) ->where('atencao_basica_parametrizacao_equipe.unidade_id', $unidade->id) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->count('atencao_basica_cadastro_individual.paciente_id'), "microarea_pacientes_ids" => DB::table('atencao_basica_cadastro_individual') ->select([ 'atencao_basica_cadastro_individual.paciente_id' ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->join('atencao_basica_cadastro_domiciliar', 'atencao_basica_cadastro_domiciliar.domicilio_id', 'cadastro_cidadao.domicilio_id') ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('cadastro_obito') ->whereNull('cadastro_obito.deleted_at') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id') ) ->where( function ($query) { return $query ->where('atencao_basica_cadastro_domiciliar.fora_area', false) ->orWhereNull('atencao_basica_cadastro_domiciliar.fora_area'); } ) ->where('atencao_basica_parametrizacao_equipe.area_id', $area->id) ->where('atencao_basica_parametrizacao_equipe.microarea_id', $microarea->id) ->where('atencao_basica_parametrizacao_equipe.unidade_id', $unidade->id) ->whereIn('atencao_basica_cadastro_individual.id', $idsValidos) ->pluck('paciente_id'), ]) ]), ]; if ($domicilio === "false" && $dados['pacientes_fora_area']['total_fora_area'] <= 0) { return null; } return $dados; })->filter(fn ($item) => $item !== null), "todas_microareas" => $microareas, ]; $somaPacientesTodasMicroareas = 0; foreach ($dados["consulta"] as $item) { if (isset($item["areas"])) { foreach ($item["areas"] as $area) { if (request()->area && request()->area == $area["area_id"]) { if (isset($area["microareas"])) { foreach ($area["microareas"] as $microarea) { if (isset($microarea["microarea_total_pacientes"])) { $somaPacientesTodasMicroareas += $microarea["microarea_total_pacientes"]; } } } } if (!request()->area) { if (isset($area["microareas"])) { foreach ($area["microareas"] as $microarea) { if (isset($microarea["microarea_total_pacientes"])) { $somaPacientesTodasMicroareas += $microarea["microarea_total_pacientes"]; } } } } } } } $listaQuantidadePacientesForaArea = $dados["consulta"]->map(fn ($item) => $item["total_pacientes_fora_area"])->toArray(); $dados["totalizadores"] = [ "unidades" => $unidades->count(), "dentro_area" => request()->domicilio === false ? 0 : $somaPacientesTodasMicroareas, "fora_area" => (request()->microarea || request()->domicilio === true) ? 0 : array_sum($listaQuantidadePacientesForaArea) ]; return $dados; } public static function getPacientes() { $pacientes_id = request()->pacientes; return DB::table('atencao_basica_cadastro_individual') ->select([ 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_cidadao.nome', 'cadastro_cidadao.data_nascimento', 'cadastro_paciente.prontuario', ]) ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->whereIn('atencao_basica_cadastro_individual.paciente_id', $pacientes_id) ->get(); } }