all(); $data = DB::table('atencao_basica_cadastro_individual') ->join('cadastro_paciente', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->leftJoin('cadastro_usuario as usuario', 'atencao_basica_cadastro_individual.usuario_id', 'usuario.id') ->leftJoin('cadastro_cidadao as cidadao_usuario', 'usuario.cidadao_id', 'cidadao_usuario.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_endereco', 'cadastro_domicilio.endereco_id', 'cadastro_endereco.id') ->leftJoin('cadastro_logradouro', 'cadastro_endereco.logradouro_id', 'cadastro_logradouro.id') ->leftJoin('cadastro_logradouro_tipo', 'cadastro_logradouro.tipo_id', 'cadastro_logradouro_tipo.id') ->leftJoin('intranet.cadastro_municipio as municipio', 'municipio.id', 'cadastro_logradouro.municipio_id') ->leftJoin('intranet.cadastro_estado as estado', 'estado.id', 'municipio.estado_id') ->leftJoin('cadastro_bairro', 'cadastro_logradouro.bairro_id', 'cadastro_bairro.id') ->leftJoin('cadastro_paciente_responsavel', 'cadastro_paciente_responsavel.paciente_id', 'cadastro_paciente.id') ->leftJoin('cadastro_usuario as usuario_micro_area', 'usuario_micro_area.id', 'cadastro_paciente_responsavel.responsavel_usuario_id') ->leftJoin('cadastro_cidadao as cidadao_cadastro', 'cidadao_cadastro.id', 'usuario_micro_area.cidadao_id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('atencao_basica_parametrizacao_equipe.unidade_id', $params['unidade_equipe_id'] ?? $params['unidade_equipe']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNull('cadastro_paciente.deleted_at') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $data = self::getParams($data, $params, 'index'); $data = $data->selectRaw(' cadastro_domicilio_informacao_residencial.fora_area, cadastro_domicilio_informacao_residencial.microarea_id, cadastro_cidadao.id, cadastro_cidadao.nome as nome_paciente, cadastro_sexo.descricao as sexo_paciente, cadastro_sexo.id as sexo_id, TIMESTAMPDIFF(YEAR, cadastro_cidadao.data_nascimento, CURDATE()) AS idade_anos_paciente, TIMESTAMPDIFF( MONTH, DATE_ADD(cadastro_cidadao.data_nascimento, INTERVAL TIMESTAMPDIFF(YEAR, cadastro_cidadao.data_nascimento, CURDATE()) YEAR), CURDATE() ) AS idade_meses_paciente, DATEDIFF( CURDATE(), DATE_ADD( DATE_ADD( cadastro_cidadao.data_nascimento, INTERVAL TIMESTAMPDIFF(YEAR, cadastro_cidadao.data_nascimento, CURDATE()) YEAR ), INTERVAL TIMESTAMPDIFF( MONTH, DATE_ADD( cadastro_cidadao.data_nascimento, INTERVAL TIMESTAMPDIFF(YEAR, cadastro_cidadao.data_nascimento, CURDATE()) YEAR ), CURDATE() ) MONTH ) ) AS idade_dias_paciente, cadastro_paciente_classificacao.descricao as classificacao_paciente, COALESCE(cidadao_usuario.nome, "-") as profissional, COALESCE(cidadao_cadastro.nome, "-") as responsavel_cadastro, COALESCE( CONCAT_WS( ", ", CONCAT_WS(" ", COALESCE(cadastro_logradouro_tipo.descricao, "Não informado"), COALESCE(cadastro_logradouro.nome, "")), NULLIF(COALESCE(cadastro_endereco.numero, ""), ""), NULLIF(COALESCE(cadastro_endereco.complemento, ""), ""), NULLIF(COALESCE(cadastro_bairro.nome, ""), "") ), "-" ) AS endereco_paciente, COALESCE( CONCAT_WS( ", ", CONCAT_WS(" ", COALESCE(cadastro_logradouro_tipo.descricao, "Não informado"), COALESCE(cadastro_logradouro.nome, "")), NULLIF(COALESCE(cadastro_endereco.numero, "S/N"), ""), NULLIF(COALESCE(cadastro_endereco.complemento, ""), ""), NULLIF(COALESCE(cadastro_bairro.nome, ""), ""), NULLIF(COALESCE(municipio.nome, ""), ""), NULLIF(COALESCE(estado.uf, ""), "") ), "-" ) AS endereco_completo, COALESCE(atencao_basica_cadastro_peso.descricao, "-") as peso_paciente, IF(atencao_basica_cadastro_individual.gestante = 1, "SIM", "NÃO") as gestante, IF(atencao_basica_cadastro_individual.hipertensao = 1, "SIM", "NÃO") as hipertenso, IF(atencao_basica_cadastro_individual.diabetes = 1, "SIM", "NÃO") as diabetico, IF(atencao_basica_cadastro_individual.hanseniase = 1, "SIM", "NÃO") as hanseniase, IF(atencao_basica_cadastro_individual.tuberculose = 1, "SIM", "NÃO") as tuberculose, IF(atencao_basica_cadastro_individual.fumante = 1, "SIM", "NÃO") as fumante, IF(atencao_basica_cadastro_individual.usa_alcool = 1, "SIM", "NÃO") as alcool, IF(atencao_basica_cadastro_individual.outras_drogas = 1, "SIM", "NÃO") as drogas, IF(atencao_basica_cadastro_individual.transtorno_espectro_autista = 1, "SIM", "NÃO") as tea, IF(atencao_basica_cadastro_individual.avc_derrame = 1, "SIM", "NÃO") as avc, IF(atencao_basica_cadastro_individual.infarto = 1, "SIM", "NÃO") as infarto, IF(atencao_basica_cadastro_individual.cancer = 1, "SIM", "NÃO") as cancer, IF(atencao_basica_cadastro_individual.fibromialgia = 1, "SIM", "NÃO") as fibromialgia, IF(atencao_basica_cadastro_individual.internacao = 1, "SIM", "NÃO") as internacao, IF(atencao_basica_cadastro_individual.doenca_cardiaca = 1, "SIM", "NÃO") as doenca_cardiaca, IF(atencao_basica_cadastro_individual.problemas_rins = 1, "SIM", "NÃO") as doenca_renal, IF(atencao_basica_cadastro_individual.doenca_respiratoria = 1, "SIM", "NÃO") as doenca_respiratoria, IF(atencao_basica_cadastro_individual.tratamento_saude_mental = 1, "SIM", "NÃO") as tratamento_saude_mental, IF(atencao_basica_cadastro_individual.plantas_medicinais = 1, "SIM", "NÃO") as plantas_medicinais, IF(atencao_basica_cadastro_individual.praticas_integrativas = 1, "SIM", "NÃO") as praticas_integrativas, IF(atencao_basica_cadastro_individual.acamado = 1, "SIM", "NÃO") as acamado, IF(atencao_basica_cadastro_individual.domiciliado = 1, "SIM", "NÃO") as domiciliado '); if (isset($params['sort_by']) && isset($params['sort_desc'])) { $data->orderBy($params['sort_by'], $params['sort_desc'] ? 'desc' : 'asc'); } else { $data->orderBy('cadastro_cidadao.nome', 'asc'); } $data = $data ->groupBy('atencao_basica_cadastro_individual.paciente_id') ->get(); $pacientesIds = $data->pluck('id')->toArray(); $totalPacientes = $data->count(); $totalPacientesPorSexo = [ 'masculino' => $data->where('sexo_id', SexoEnum::MASCULINO)->count(), 'feminino' => $data->where('sexo_id', SexoEnum::FEMININO)->count(), 'indeterminado' => $data->where('sexo_id', SexoEnum::INDETERMINADO)->count(), ]; $familiasQuery = DB::table('atencao_basica_cadastro_individual') ->join('cadastro_paciente', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade as unidade', 'atencao_basica_parametrizacao_equipe.unidade_id', 'unidade.id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->leftJoin('cadastro_usuario as usuario', 'atencao_basica_cadastro_individual.usuario_id', 'usuario.id') ->leftJoin('cadastro_cidadao as cidadao_usuario', 'usuario.cidadao_id', 'cidadao_usuario.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_endereco', 'cadastro_domicilio.endereco_id', 'cadastro_endereco.id') ->leftJoin('cadastro_logradouro', 'cadastro_endereco.logradouro_id', 'cadastro_logradouro.id') ->leftJoin('cadastro_logradouro_tipo', 'cadastro_logradouro.tipo_id', 'cadastro_logradouro_tipo.id') ->leftJoin('intranet.cadastro_municipio as municipio', 'municipio.id', 'cadastro_logradouro.municipio_id') ->leftJoin('intranet.cadastro_estado as estado', 'estado.id', 'municipio.estado_id') ->leftJoin('cadastro_bairro', 'cadastro_logradouro.bairro_id', 'cadastro_bairro.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('atencao_basica_parametrizacao_equipe.unidade_id', $params['unidade_equipe_id'] ?? $params['unidade_equipe']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $familiasQuery = self::getParams($familiasQuery, $params); $totalFamilias = $familiasQuery ->select('cadastro_domicilio.id') ->distinct() ->count('cadastro_domicilio.id'); $totalPacientesPorArea = DB::table('atencao_basica_cadastro_individual') ->join('cadastro_paciente', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->leftjoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio.id','cadastro_domicilio_informacao_residencial.domicilio_id') ->leftJoin('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->leftJoin('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_equipe.area_id', 'atencao_basica_parametrizacao_area.id') ->whereIn('cadastro_cidadao.id', $pacientesIds) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }) ->groupBy(DB::raw(" CASE WHEN cadastro_domicilio_informacao_residencial.fora_area = 1 THEN 'Fora de área' WHEN atencao_basica_parametrizacao_area.descricao IS NULL THEN 'Fora de área' ELSE atencao_basica_parametrizacao_area.descricao END ")) ->selectRaw(" CASE WHEN cadastro_domicilio_informacao_residencial.fora_area = 1 THEN 'Fora de área' WHEN atencao_basica_parametrizacao_area.descricao IS NULL THEN 'Fora de área' ELSE atencao_basica_parametrizacao_area.descricao END as area, COUNT(DISTINCT cadastro_paciente.id) as total ") ->pluck('total', 'area'); $totalPacientesPorMicroArea = DB::table('atencao_basica_cadastro_individual') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_paciente', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->leftjoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftjoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio.id', 'cadastro_domicilio_informacao_residencial.domicilio_id') ->leftJoin('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id') ->whereIn('cadastro_cidadao.id', $pacientesIds) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNull('cadastro_paciente.deleted_at') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }) ->groupBy(DB::raw('COALESCE(atencao_basica_parametrizacao_microarea.descricao, "Fora de área")')) ->selectRaw(' COALESCE(atencao_basica_parametrizacao_microarea.descricao, "Sem micro área") as micro_area, COUNT(DISTINCT cadastro_paciente.id) as total ') ->pluck('total', 'micro_area'); return [ 'relatorio' => $data, 'total_pacientes' => $totalPacientes, 'total_pacientes_por_sexo' => $totalPacientesPorSexo, 'total_familias' => $totalFamilias, 'total_pacientes_por_area' => $totalPacientesPorArea, 'total_pacientes_por_micro_area' => $totalPacientesPorMicroArea, ]; } public static function list() { $params = collect(request()->all()); $fieldsToLoad = collect(); if(!isset($params['fields_to_load'])){ $fieldsToLoad->push( 'unidade_equipe', 'infraestrutura_equipe', 'local_domicilio', 'area_equipe', 'micro_area', 'profissional', 'classificacao_paciente', 'sexo', 'peso', 'gestante', 'hipertenso', 'diabetico', 'hanseniase', 'tuberculose', 'fumante', 'alcool', 'drogas', 'tea', 'avc', 'infarto', 'cancer', 'fibromialgia', 'internacao', 'doenca_cardiaca', 'doenca_renal', 'doenca_respiratoria', 'tratamento_psicologico', 'plantas_medicinais', 'praticas_integrativas', 'acamado', 'domiciliado', ); } else { $fieldsToLoad = collect($params->get('fields_to_load')); } return [ 'form' => self::fieldsFiltered($fieldsToLoad), 'model' => self::getModel(), 'additionals' => [ 'is_secretaria_type' => self::getIsSecretariaType(), 'unidade_logada_id' => self::getCurrentLotacao()->infraestrutura->unidade->id, ] ]; } private static function fieldsFiltered(Collection $campos) { $params = request()->all(); $dados = collect(); if ($campos->contains('unidade_equipe')) { $unidadeEquipe = self::getUnidadeEquipe(self::getIsSecretariaType()); $dados->put('unidade_equipe', $unidadeEquipe); $params['unidade_equipe'] = $unidadeEquipe[0]['id'] && count($unidadeEquipe) === 1 ? $unidadeEquipe[0]['id'] : null; } if ($campos->contains('infraestrutura_equipe')) { $infraestruturaEquipe = self::getInfraestruturaEquipe($params); $dados->put('infraestrutura_equipe', $infraestruturaEquipe); $params['infraestrutura_equipe'] = collect($infraestruturaEquipe)->pluck('id')->toArray() ?? null; } if ($campos->contains('local_domicilio')) { $localDomicilio = self::getLocalDomicilio($params); $dados->put('local_domicilio', $localDomicilio); $params['local_domicilio'] = collect($localDomicilio)->pluck('id')->toArray() ?? null; } if ($campos->contains('area_equipe')) { $areaEquipe = self::getAreaEquipe($params); $dados->put('area_equipe', $areaEquipe); $params['area_equipe'] = collect($areaEquipe)->pluck('id')->toArray() ?? null; } if ($campos->contains('micro_area')) { $microArea = self::getMicroArea($params); $dados->put('micro_area', $microArea); $params['micro_area'] = collect($microArea)->pluck('id')->toArray() ?? null; } if ($campos->contains('profissional')) { $profissional = self::getProfissional($params); $dados->put('profissional', $profissional); $params['profissional'] = collect($profissional)->pluck('id')->toArray(); } if ($campos->contains('classificacao_paciente')) { $classificacaoPaciente = self::getClassificacaoPaciente($params); $dados->put('classificacao_paciente', $classificacaoPaciente); $params['classificacao_paciente'] = collect($classificacaoPaciente)->pluck('id')->toArray(); } if ($campos->contains('sexo')) { $sexo = self::getSexo($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['sexo' => $sexo])); $params['sexo'] = collect($sexo)->pluck('id')->toArray(); } if ($campos->contains('peso')) { $peso = self::getPeso($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['peso' => $peso])); $params['peso'] = collect($peso)->pluck('id')->toArray(); } if ($campos->contains('gestante')) { $gestante = self::getGestante($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['gestante' => $gestante])); $params['gestante'] = collect($gestante)->pluck('id')->toArray(); } if ($campos->contains('hipertenso')) { $hipertenso = self::getHipertenso($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['hipertenso' => $hipertenso])); $params['hipertenso'] = collect($hipertenso)->pluck('id')->toArray(); } if ($campos->contains('diabetico')) { $diabetico = self::getDiabetico($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['diabetico' => $diabetico])); $params['diabetico'] = collect($diabetico)->pluck('id')->toArray(); } if ($campos->contains('hanseniase')) { $hanseniase = self::gethanseniase($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['hanseniase' => $hanseniase])); $params['hanseniase'] = collect($hanseniase)->pluck('id')->toArray(); } if ($campos->contains('tuberculose')) { $tuberculose = self::getTuberculose($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['tuberculose' => $tuberculose])); $params['tuberculose'] = collect($tuberculose)->pluck('id')->toArray(); } if ($campos->contains('fumante')) { $fumante = self::getFumante($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['fumante' => $fumante])); $params['fumante'] = collect($fumante)->pluck('id')->toArray(); } if ($campos->contains('alcool')) { $alcool = self::getAlcool($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['alcool' => $alcool])); $params['alcool'] = collect($alcool)->pluck('id')->toArray(); } if ($campos->contains('drogas')) { $drogas = self::getDrogas($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['drogas' => $drogas])); $params['drogas'] = collect($drogas)->pluck('id')->toArray(); } if ($campos->contains('tea')) { $tea = self::getTea($params); $dados->put('condicionalidades', array_merge($dados->get('condicionalidades', []), ['tea' => $tea])); $params['tea'] = collect($tea)->pluck('id')->toArray(); } if ($campos->contains('avc')) { $avc = self::getAvc($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['avc' => $avc])); $params['avc'] = collect($avc)->pluck('id')->toArray(); } if ($campos->contains('infarto')) { $infarto = self::getInfarto($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['infarto' => $infarto])); $params['infarto'] = collect($infarto)->pluck('id')->toArray(); } if ($campos->contains('cancer')) { $cancer = self::getCancer($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['cancer' => $cancer])); $params['cancer'] = collect($cancer)->pluck('id')->toArray(); } if ($campos->contains('fibromialgia')) { $fibromialgia = self::getFibromialgia($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['fibromialgia' => $fibromialgia])); $params['fibromialgia'] = collect($fibromialgia)->pluck('id')->toArray(); } if ($campos->contains('internacao')) { $internacao = self::getInternacao($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['internacao' => $internacao])); $params['internacao'] = collect($internacao)->pluck('id')->toArray(); } if ($campos->contains('doenca_cardiaca')) { $doencaCardiaca = self::getDoencaCardiaca($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['doenca_cardiaca' => $doencaCardiaca])); $params['doenca_cardiaca'] = collect($doencaCardiaca)->pluck('id')->toArray(); } if ($campos->contains('doenca_renal')) { $doencaRenal = self::getDoencaRenal($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['doenca_renal' => $doencaRenal])); $params['doenca_renal'] = collect($doencaRenal)->pluck('id')->toArray(); } if ($campos->contains('doenca_respiratoria')) { $doencaRespiratoria = self::getDoencaRespiratoria($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['doenca_respiratoria' => $doencaRespiratoria])); $params['doenca_respiratoria'] = collect($doencaRespiratoria)->pluck('id')->toArray(); } if ($campos->contains('tratamento_psicologico')) { $tratamentoPsicologico = self::getTratamentoPsicologico($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['tratamento_psicologico' => $tratamentoPsicologico])); $params['tratamento_psicologico'] = collect($tratamentoPsicologico)->pluck('id')->toArray(); } if ($campos->contains('plantas_medicinais')) { $plantasMedicinais = self::getPlantasMedicinais($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['plantas_medicinais' => $plantasMedicinais])); $params['plantas_medicinais'] = collect($plantasMedicinais)->pluck('id')->toArray(); } if ($campos->contains('praticas_integrativas')) { $praticasIntegrativas = self::getPraticasIntegrativas($params); $dados->put('outras_doencas', array_merge($dados->get('outras_doencas', []), ['praticas_integrativas' => $praticasIntegrativas])); $params['praticas_integrativas'] = collect($praticasIntegrativas)->pluck('id')->toArray(); } if ($campos->contains('acamado')) { $acamado = self::getAcamado($params); $dados->put('atencao_domiciliar', array_merge($dados->get('atencao_domiciliar', []), ['acamado' => $acamado])); $params['acamado'] = $acamado; } if ($campos->contains('domiciliado')) { $domiciliado = self::getDomiciliado($params); $dados->put('atencao_domiciliar', array_merge($dados->get('atencao_domiciliar', []), ['domiciliado' => $domiciliado])); $params['domiciliado'] = $domiciliado; } return $dados->all(); } private static function getModel() { $params = collect(request()->all()); $form = collect(); if(!isset($params['fields_to_load'])){ $form->push( 'unidade_equipe', 'infraestrutura_equipe', 'local_domicilio', 'area_equipe', 'micro_area', 'profissional', 'classificacao_paciente', 'sexo', 'peso', 'gestante', 'hipertenso', 'diabetico', 'hanseniase', 'tuberculose', 'fumante', 'alcool', 'drogas', 'tea', 'avc', 'infarto', 'cancer', 'fibromialgia', 'internacao', 'doenca_cardiaca', 'doenca_renal', 'doenca_respiratoria', 'tratamento_psicologico', 'plantas_medicinais', 'praticas_integrativas', 'acamado', 'domiciliado', ); } else { $form = collect($params->get('fields_to_load')); } $form = self::fieldsFiltered($form); $data = [ 'unidade_equipe_id' => count($form['unidade_equipe'] ?? []) === 1 ? $form['unidade_equipe'][0]['id'] : null, 'infraestrutura_equipe_id' => count($form['infraestrutura_equipe'] ?? []) === 1 ? $form['infraestrutura_equipe'][0]['id'] : null, 'local_domicilio_id' => count($form['local_domicilio'] ?? []) === 1 ? $form['local_domicilio'][0]['id'] : null, 'area_equipe_id' => null, 'micro_area_id' => null, 'profissional_id' => count($form['profissional'] ?? []) === 1 ? $form['profissional'][0]['id'] : null, 'classificacao_paciente_id' => count($form['classificacao_paciente'] ?? []) === 1 ? $form['classificacao_paciente'][0]['id'] : null, 'idade' => [ 'anos_de' => null, 'meses_de' => null, 'dias_de' => null, 'anos_ate' => null, 'meses_ate' => null, 'dias_ate' => null, ], 'condicionalidades' => [ 'sexo_id' => null, 'peso_id' => null, 'gestante_id' => null, 'hipertenso_id' => null, 'diabetico_id' => null, 'hanseniase_id' => null, 'tuberculose_id' => null, 'fumante_id' => null, 'alcool_id' => null, 'drogas_id' => null, 'tea_id' => null, ], 'outras_doencas' => [ 'avc_id' => null, 'infarto_id' => null, 'cancer_id' => null, 'fibromialgia_id' => null, 'internacao_id' => null, 'doenca_cardiaca_id' => null, 'doenca_renal_id' => null, 'doenca_respiratoria_id' => null, 'tratamento_psicologico_id' => null, 'plantas_medicinais_id' => null, 'praticas_integrativas_id' => null, ], 'atencao_domiciliar' => [ 'acamado_id' => null, 'domiciliado_id' => null, ], ]; return $data; } private static function getUnidadePacienteAB($unidadeEquipe) { $query = DB::table('atencao_basica_cadastro_individual') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'atencao_basica_parametrizacao_equipe.unidade_id', 'cadastro_unidade.id') ->where('cadastro_unidade.id', $unidadeEquipe) ->first(); if ($query && $query->count() > 0) { return true; } return false; } private static function checkUnidadeEquipeDefault() { $unidadeEquipe = self::getUnidadeEquipe(self::getIsSecretariaType()); return count($unidadeEquipe) === 1 ? $unidadeEquipe[0]['id'] : null; } private static function getIsSecretariaType() { return self::getCurrentLotacao()->infraestrutura->unidade->tipo_id === UnidadeTipo::where('descricao', 'CENTRAL DE GESTÃO EM SAÚDE') ->first()->id; } private static function getUnidadeEquipe($isSecretariaType) { $unidadesAtencaoBasica = DB::table('cadastro_unidade') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.unidade_id', 'cadastro_unidade.id') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_paciente.cidadao_id'); }) ->select('cadastro_unidade.id', 'cadastro_unidade.nome_fantasia') ->distinct() ->orderBy('cadastro_unidade.nome_fantasia') ->get(); if ($isSecretariaType) { return $unidadesAtencaoBasica->map(function ($unidade) { return [ 'id' => $unidade->id, 'nome_fantasia' => $unidade->nome_fantasia, ]; })->toArray(); } else { $unidadeLogada = self::getCurrentLotacao()->infraestrutura->unidade; $unidadeFiltrada = $unidadesAtencaoBasica->filter(function ($unidade) use ($unidadeLogada) { return $unidade->id === $unidadeLogada->id; }) ->first(); if ($unidadeFiltrada) { return [[ 'id' => $unidadeFiltrada->id, 'nome_fantasia' => $unidadeFiltrada->nome_fantasia, ]]; } else { return [[ 'id' => 0, 'nome_fantasia' => 'NÃO HÁ REGISTROS PARA A UNIDADE LOGADA' ]]; } } } private static function getInfraestruturaEquipe($params = null) { if (!isset($params['unidade_equipe']) && isset($params['unidade_equipe_id']) && $params['unidade_equipe_id']) { $unidadeId = request()->get('unidade_equipe_id'); } else if (isset($params['unidade_equipe']) && !empty($params['unidade_equipe'])) { $unidadeId = $params['unidade_equipe']; if ($unidadeId === 0) { return []; } } else { return []; } $infraestruturas = DB::table('cadastro_infraestrutura') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->where('unidade_id', $unidadeId) ->selectRaw(' cadastro_infraestrutura.id as id, COALESCE(cadastro_infraestrutura.nome, cadastro_unidade.nome_fantasia) as nome ') ->get(); if ($infraestruturas->isEmpty()) { return []; } return $infraestruturas->map(function ($infraestrutura) { return [ 'id' => $infraestrutura->id, 'nome' => $infraestrutura->nome, ]; })->toArray(); } private static function getLocalDomicilio($params) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return [['id' => 0, 'nome' => 'Fora de área']]; } $unidadeId = $params['unidade_equipe_id'] ?? $params['unidade_equipe']; $query = DB::table('atencao_basica_cadastro_individual') ->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('cadastro_domicilio', 'cadastro_domicilio.id', 'cadastro_cidadao.domicilio_id') ->join('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('atencao_basica_parametrizacao_equipe.unidade_id', $unidadeId) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }) ->selectRaw(" DISTINCT CASE WHEN cadastro_domicilio_informacao_residencial.fora_area = 1 THEN 0 ELSE 1 END AS id, CASE WHEN cadastro_domicilio_informacao_residencial.fora_area = 1 THEN 'Fora de área' ELSE 'Dentro de área' END AS nome ") ->get(); $resultado = $query->map(function($item) { return (array) $item; })->unique()->values()->toArray(); return empty($resultado) ? [['id' => 0, 'nome' => 'Fora de área']] : $resultado; } private static function getAreaEquipe($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } if ( (isset($params['local_domicilio_id']) && !is_null($params['local_domicilio_id']) && $params['local_domicilio_id'] == 0) || ( isset($params['local_domicilio']) && !is_null($params['local_domicilio']) && is_array($params['local_domicilio']) && count($params['local_domicilio']) == 1 && $params['local_domicilio'][0] == 0 ) ) { return []; } $query = DB::table('atencao_basica_cadastro_individual') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_usuario', 'atencao_basica_cadastro_individual.usuario_id', 'cadastro_usuario.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('cadastro_cidadao', 'cadastro_usuario.cidadao_id', 'cadastro_cidadao.id') ->leftJoin('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_area.id', 'atencao_basica_parametrizacao_equipe.area_id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('atencao_basica_parametrizacao_equipe.unidade_id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_paciente.cidadao_id'); }); $query = self::getParams($query, $params); $areas = $query->selectRaw(' atencao_basica_parametrizacao_area.descricao as descricao, atencao_basica_parametrizacao_equipe.area_id as id, COALESCE(atencao_basica_parametrizacao_area.numero_ine, "SEM NÚMERO INE") as numero_ine ') ->distinct() ->get(); return $areas->map(function ($area) { return [ 'id' => $area->id, 'nome' => $area->descricao . ' - ' . $area->numero_ine ]; })->toArray(); } private static function getMicroArea($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } if ( (isset($params['local_domicilio_id']) && !is_null($params['local_domicilio_id']) && $params['local_domicilio_id'] == 0) || ( isset($params['local_domicilio']) && !is_null($params['local_domicilio']) && is_array($params['local_domicilio']) && count($params['local_domicilio']) == 1 && $params['local_domicilio'][0] == 0 ) ) { return []; } $queryMicroareas = DB::table('atencao_basica_parametrizacao_equipe') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'atencao_basica_parametrizacao_equipe.infraestrutura_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_domicilio', 'cadastro_domicilio.id', 'cadastro_cidadao.domicilio_id') ->join('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->join('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id') ->join('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_area.id', 'atencao_basica_parametrizacao_equipe.area_id') ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }) ->when(isset($params['unidade_equipe']) || isset($params['unidade_equipe_id']), function ($q) use ($params) { $unidadeId = $params['unidade_equipe'] ?? $params['unidade_equipe_id']; $q->where('cadastro_unidade.id', $unidadeId); }) ->when(isset($params['infraestrutura_id']), function ($q) use ($params) { return is_array($params['infraestrutura_id']) ? $q->whereIn('cadastro_infraestrutura.id', $params['infraestrutura_id']) : $q->where('cadastro_infraestrutura.id', $params['infraestrutura_id']); }) ->when(isset($params['local_domicilio_id']), function ($q) use ($params) { if ($params['local_domicilio_id'] == 0) { $q->where('cadastro_domicilio_informacao_residencial.fora_area', 1); } else if ($params['local_domicilio_id'] == 1) { $q->where(function ($sub) { $sub->whereNull('cadastro_domicilio_informacao_residencial.fora_area') ->orWhere('cadastro_domicilio_informacao_residencial.fora_area', 0); }); } }) ->when(isset($params['area_equipe_id']), function ($q) use ($params) { return is_array($params['area_equipe_id']) ? $q->whereIn('atencao_basica_parametrizacao_equipe.area_id', $params['area_equipe_id']) : $q->where('atencao_basica_parametrizacao_equipe.area_id', $params['area_equipe_id']); }) ->selectRaw(' CONCAT_WS(" -", atencao_basica_parametrizacao_microarea.descricao, atencao_basica_parametrizacao_area.descricao ) as descricao, atencao_basica_parametrizacao_microarea.id as id ') ->distinct(); $querySemMicroarea = DB::table('atencao_basica_parametrizacao_equipe') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_equipe.area_id', 'atencao_basica_parametrizacao_area.id') ->join('cadastro_unidade', 'atencao_basica_parametrizacao_equipe.unidade_id', 'cadastro_unidade.id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_cadastro_individual.paciente_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio.id', 'cadastro_domicilio_informacao_residencial.domicilio_id') ->whereNull('atencao_basica_parametrizacao_equipe.microarea_id') ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }) ->when(isset($params['unidade_equipe']), fn($q) => $q->where('cadastro_unidade.id', $params['unidade_equipe'])) ->when(isset($params['unidade_equipe_id']), fn($q) => $q->where('cadastro_unidade.id', $params['unidade_equipe_id'])) ->when(isset($params['infraestrutura_id']), function ($q) use ($params) { return is_array($params['infraestrutura_id']) ? $q->whereIn('cadastro_infraestrutura.id', $params['infraestrutura_id']) : $q->where('cadastro_infraestrutura.id', $params['infraestrutura_id']); }) ->when(isset($params['local_domicilio_id']), function ($q) use ($params) { if ($params['local_domicilio_id'] == 0) { $q->where('cadastro_domicilio_informacao_residencial.fora_area', 1); } else if ($params['local_domicilio_id'] == 1) { $q->where(function ($s) { $s->whereNull('cadastro_domicilio_informacao_residencial.fora_area') ->orWhere('cadastro_domicilio_informacao_residencial.fora_area', 0); }); } }) ->when(isset($params['area_equipe_id']), function ($q) use ($params) { return is_array($params['area_equipe_id']) ? $q->whereIn('atencao_basica_parametrizacao_equipe.area_id', $params['area_equipe_id']) : $q->where('atencao_basica_parametrizacao_equipe.area_id', $params['area_equipe_id']); }) ->selectRaw(' CONCAT_WS(" -", "SEM MICROÁREA", atencao_basica_parametrizacao_area.descricao) as descricao, "sem_microarea" as id ') ->distinct(); $microareasSql = $queryMicroareas->toSql(); $semMicroareaSql = $querySemMicroarea->toSql(); $bindings = array_merge( $queryMicroareas->getBindings(), $querySemMicroarea->getBindings() ); $sql = "({$microareasSql}) UNION ALL ({$semMicroareaSql})"; $microareas = DB::select(DB::raw($sql), $bindings); return collect($microareas)->map(fn($m) => [ 'id' => $m->id, 'nome' => $m->descricao, ])->toArray(); } private static function getProfissional($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_cidadao') ->join('cadastro_paciente', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'atencao_basica_cadastro_individual.usuario_id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id') ->join('cadastro_cidadao as cidadao_usuario', 'cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_domicilio', 'cadastro_domicilio.id', 'cadastro_cidadao.domicilio_id') ->join('cadastro_endereco', 'cadastro_endereco.id', 'cadastro_domicilio.endereco_id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('atencao_basica_parametrizacao_equipe.unidade_id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params, 'profissional'); $profissionais = $query->selectRaw(' cidadao_usuario.nome as nome, cadastro_usuario.id as id ') ->orderBy('cidadao_usuario.nome', 'asc') ->distinct() ->get(); return $profissionais->map(function ($profissional) { return [ 'id' => $profissional->id, 'nome' => $profissional->nome, ]; })->toArray(); } private static function getClassificacaoPaciente($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_unidade') ->join('cadastro_infraestrutura', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('atencao_basica_parametrizacao_equipe', 'cadastro_infraestrutura.id', 'atencao_basica_parametrizacao_equipe.infraestrutura_id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('atencao_basica_cadastro_individual', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_cadastro_individual.equipe_id') ->join('cadastro_paciente', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $classificacoes = $query->select('cadastro_paciente_classificacao.id', 'cadastro_paciente_classificacao.descricao') ->distinct() ->get(); if ($classificacoes->isEmpty()) { return []; } return $classificacoes->map(function ($classificacao) { return [ 'id' => $classificacao->id, 'nome' => $classificacao->descricao, ]; })->toArray(); } private static function getSexo($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $sexos = $query->select('cadastro_sexo.id', 'cadastro_sexo.descricao') ->distinct() ->get(); if ($sexos->isEmpty()) { return []; } return $sexos->map(function ($sexo) { return [ 'id' => $sexo->id, 'nome' => $sexo->descricao, ]; })->toArray(); } private static function getPeso($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->join('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $pesos = $query->select('atencao_basica_cadastro_peso.id', 'atencao_basica_cadastro_peso.descricao') ->distinct() ->get(); if ($pesos->isEmpty()) { return []; } return $pesos->map(function ($peso) { return [ 'id' => $peso->id, 'nome' => $peso->descricao, ]; })->toArray(); } private static function getGestante($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $gestantes = $query->select('atencao_basica_cadastro_individual.gestante') ->distinct() ->get(); $hasTrue = $gestantes->contains(function ($item) { return $item->gestante === true || $item->gestante === 1 || $item->gestante === '1'; }); $hasFalse = $gestantes->contains(function ($item) { return $item->gestante === false || $item->gestante === 0 || $item->gestante === '0' || is_null($item->gestante); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getHipertenso($params = null): array { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $hipertensos = $query->select('atencao_basica_cadastro_individual.hipertensao') ->distinct() ->get(); $hasTrue = $hipertensos->contains(function ($item) { return $item->hipertensao === true || $item->hipertensao === 1 || $item->hipertensao === '1'; }); $hasFalse = $hipertensos->contains(function ($item) { return $item->hipertensao === false || $item->hipertensao === 0 || $item->hipertensao === '0' || is_null($item->hipertensao); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getDiabetico($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $diabeticos = $query->select('atencao_basica_cadastro_individual.diabetes') ->distinct() ->get(); $hasTrue = $diabeticos->contains(function ($item) { return $item->diabetes === true || $item->diabetes === 1 || $item->diabetes === '1'; }); $hasFalse = $diabeticos->contains(function ($item) { return $item->diabetes === false || $item->diabetes === 0 || $item->diabetes === '0' || is_null($item->diabetes); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function gethanseniase($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $hanseniases = $query->select('atencao_basica_cadastro_individual.hanseniase') ->distinct() ->get(); $hasTrue = $hanseniases->contains(function ($item) { return $item->hanseniase === true || $item->hanseniase === 1 || $item->hanseniase === '1'; }); $hasFalse = $hanseniases->contains(function ($item) { return $item->hanseniase === false || $item->hanseniase === 0 || $item->hanseniase === '0' || is_null($item->hanseniase); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getTuberculose($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $tuberculoses = $query->select('atencao_basica_cadastro_individual.tuberculose') ->distinct() ->get(); $hasTrue = $tuberculoses->contains(function ($item) { return $item->tuberculose === true || $item->tuberculose === 1 || $item->tuberculose === '1'; }); $hasFalse = $tuberculoses->contains(function ($item) { return $item->tuberculose === false || $item->tuberculose === 0 || $item->tuberculose === '0' || is_null($item->tuberculose); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getFumante($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $fumantes = $query->select('atencao_basica_cadastro_individual.fumante') ->distinct() ->get(); $hasTrue = $fumantes->contains(function ($item) { return $item->fumante === true || $item->fumante === 1 || $item->fumante === '1'; }); $hasFalse = $fumantes->contains(function ($item) { return $item->fumante === false || $item->fumante === 0 || $item->fumante === '0' || is_null($item->fumante); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getAlcool($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $alcoolistas = $query->select('atencao_basica_cadastro_individual.usa_alcool') ->distinct() ->get(); if ($alcoolistas->isEmpty()) { return []; } $hasTrue = $alcoolistas->contains(function ($item) { return $item->usa_alcool === true || $item->usa_alcool === 1 || $item->usa_alcool === '1'; }); $hasFalse = $alcoolistas->contains(function ($item) { return $item->usa_alcool === false || $item->usa_alcool === 0 || $item->usa_alcool === '0' || is_null($item->usa_alcool); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getDrogas($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $drogas = $query->select('atencao_basica_cadastro_individual.outras_drogas') ->distinct() ->get(); $hasTrue = $drogas->contains(function ($item) { return $item->outras_drogas === true || $item->outras_drogas === 1 || $item->outras_drogas === '1'; }); $hasFalse = $drogas->contains(function ($item) { return $item->outras_drogas === false || $item->outras_drogas === 0 || $item->outras_drogas === '0' || is_null($item->outras_drogas); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getTea($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $transtornoEspectroAutista = $query->select('atencao_basica_cadastro_individual.transtorno_espectro_autista') ->distinct() ->get(); $hasTrue = $transtornoEspectroAutista->contains(function ($item) { return $item->transtorno_espectro_autista === true || $item->transtorno_espectro_autista === 1 || $item->transtorno_espectro_autista === '1'; }); $hasFalse = $transtornoEspectroAutista->contains(function ($item) { return $item->transtorno_espectro_autista === false || $item->transtorno_espectro_autista === 0 || $item->transtorno_espectro_autista === '0' || is_null($item->transtorno_espectro_autista); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getAvc($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $avc = $query->select('atencao_basica_cadastro_individual.avc_derrame') ->distinct() ->get(); $hasTrue = $avc->contains(function ($item) { return $item->avc_derrame === true || $item->avc_derrame === 1 || $item->avc_derrame === '1'; }); $hasFalse = $avc->contains(function ($item) { return $item->avc_derrame === false || $item->avc_derrame === 0 || $item->avc_derrame === '0' || is_null($item->avc_derrame); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getInfarto($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $infarto = $query->select('atencao_basica_cadastro_individual.infarto') ->distinct() ->get(); $hasTrue = $infarto->contains(function ($item) { return $item->infarto === true || $item->infarto === 1 || $item->infarto === '1'; }); $hasFalse = $infarto->contains(function ($item) { return $item->infarto === false || $item->infarto === 0 || $item->infarto === '0' || is_null($item->infarto); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getCancer($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $cancer = $query->select('atencao_basica_cadastro_individual.cancer') ->distinct() ->get(); $hasTrue = $cancer->contains(function ($item) { return $item->cancer === true || $item->cancer === 1 || $item->cancer === '1'; }); $hasFalse = $cancer->contains(function ($item) { return $item->cancer === false || $item->cancer === 0 || $item->cancer === '0' || is_null($item->cancer); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getFibromialgia($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $fibromialgia = $query->select('atencao_basica_cadastro_individual.fibromialgia') ->distinct() ->get(); $hasTrue = $fibromialgia->contains(function ($item) { return $item->fibromialgia === true || $item->fibromialgia === 1 || $item->fibromialgia === '1'; }); $hasFalse = $fibromialgia->contains(function ($item) { return $item->fibromialgia === false || $item->fibromialgia === 0 || $item->fibromialgia === '0' || is_null($item->fibromialgia); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getInternacao($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $internacao = $query->select('atencao_basica_cadastro_individual.internacao') ->distinct() ->get(); $hasTrue = $internacao->contains(function ($item) { return $item->internacao === true || $item->internacao === 1 || $item->internacao === '1'; }); $hasFalse = $internacao->contains(function ($item) { return $item->internacao === false || $item->internacao === 0 || $item->internacao === '0' || is_null($item->internacao); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getDoencaCardiaca($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $doencaCardiaca = $query->select('atencao_basica_cadastro_individual.doenca_cardiaca') ->distinct() ->get(); $hasTrue = $doencaCardiaca->contains(function ($item) { return $item->doenca_cardiaca === true || $item->doenca_cardiaca === 1 || $item->doenca_cardiaca === '1'; }); $hasFalse = $doencaCardiaca->contains(function ($item) { return $item->doenca_cardiaca === false || $item->doenca_cardiaca === 0 || $item->doenca_cardiaca === '0' || is_null($item->doenca_cardiaca); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getDoencaRenal($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $doencaRenal = $query->select('atencao_basica_cadastro_individual.problemas_rins') ->distinct() ->get(); $hasTrue = $doencaRenal->contains(function ($item) { return $item->problemas_rins === true || $item->problemas_rins === 1 || $item->problemas_rins === '1'; }); $hasFalse = $doencaRenal->contains(function ($item) { return $item->problemas_rins === false || $item->problemas_rins === 0 || $item->problemas_rins === '0' || is_null($item->problemas_rins); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getDoencaRespiratoria($params) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $doencaRespiratoria = $query->select('atencao_basica_cadastro_individual.doenca_respiratoria') ->distinct() ->get(); $hasTrue = $doencaRespiratoria->contains(function ($item) { return $item->doenca_respiratoria === true || $item->doenca_respiratoria === 1 || $item->doenca_respiratoria === '1'; }); $hasFalse = $doencaRespiratoria->contains(function ($item) { return $item->doenca_respiratoria === false || $item->doenca_respiratoria === 0 || $item->doenca_respiratoria === '0' || is_null($item->doenca_respiratoria); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getTratamentoPsicologico($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $tratamentoSaudeMental = $query->select('atencao_basica_cadastro_individual.tratamento_saude_mental') ->distinct() ->get(); $hasTrue = $tratamentoSaudeMental->contains(function ($item) { return $item->tratamento_saude_mental === true || $item->tratamento_saude_mental === 1 || $item->tratamento_saude_mental === '1'; }); $hasFalse = $tratamentoSaudeMental->contains(function ($item) { return $item->tratamento_saude_mental === false || $item->tratamento_saude_mental === 0 || $item->tratamento_saude_mental === '0' || is_null($item->tratamento_saude_mental); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getPlantasMedicinais($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $plantasMedicinais = $query->select('atencao_basica_cadastro_individual.plantas_medicinais') ->distinct() ->get(); $hasTrue = $plantasMedicinais->contains(function ($item) { return $item->plantas_medicinais === true || $item->plantas_medicinais === 1 || $item->plantas_medicinais === '1'; }); $hasFalse = $plantasMedicinais->contains(function ($item) { return $item->plantas_medicinais === false || $item->plantas_medicinais === 0 || $item->plantas_medicinais === '0' || is_null($item->plantas_medicinais); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getPraticasIntegrativas($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $praticasIntegrativas = $query->select('atencao_basica_cadastro_individual.praticas_integrativas') ->distinct() ->get(); $hasTrue = $praticasIntegrativas->contains(function ($item) { return $item->praticas_integrativas === true || $item->praticas_integrativas === 1 || $item->praticas_integrativas === '1'; }); $hasFalse = $praticasIntegrativas->contains(function ($item) { return $item->praticas_integrativas === false || $item->praticas_integrativas === 0 || $item->praticas_integrativas === '0' || is_null($item->praticas_integrativas); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getAcamado($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $acamado = $query->select('atencao_basica_cadastro_individual.acamado') ->distinct() ->get(); $hasTrue = $acamado->contains(function ($item) { return $item->acamado === true || $item->acamado === 1 || $item->acamado === '1'; }); $hasFalse = $acamado->contains(function ($item) { return $item->acamado === false || $item->acamado === 0 || $item->acamado === '0' || is_null($item->acamado); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } private static function getDomiciliado($params = null) { $params = !is_null($params) ? $params : request()->all(); if (!isset($params['unidade_equipe']) && !isset($params['unidade_equipe_id'])) { return []; } $query = DB::table('cadastro_paciente') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->join('cadastro_cidadao', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('cadastro_sexo', 'cadastro_cidadao.sexo_id', 'cadastro_sexo.id') ->leftJoin('atencao_basica_cadastro_peso', 'atencao_basica_cadastro_individual.peso_id', 'atencao_basica_cadastro_peso.id') ->leftJoin('cadastro_domicilio', 'cadastro_cidadao.domicilio_id', 'cadastro_domicilio.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }); $query = self::getParams($query, $params); $domiciliado = $query->select('atencao_basica_cadastro_individual.domiciliado') ->distinct() ->get(); $hasTrue = $domiciliado->contains(function ($item) { return $item->domiciliado === true || $item->domiciliado === 1 || $item->domiciliado === '1'; }); $hasFalse = $domiciliado->contains(function ($item) { return $item->domiciliado === false || $item->domiciliado === 0 || $item->domiciliado === '0' || is_null($item->domiciliado); }); $result = []; if ($hasTrue && $hasFalse) { $result = [ ['id' => 1, 'nome' => 'Sim'], ['id' => 0, 'nome' => 'Não'] ]; } else if ($hasTrue) { $result = [ ['id' => 1, 'nome' => 'Sim'] ]; } else if ($hasFalse) { $result = [ ['id' => 0, 'nome' => 'Não'] ]; } return $result; } public static function autocompletePaciente() { $params = request()->all(); $query = DB::table('cadastro_paciente') ->join('cadastro_cidadao as cidadao', 'cidadao.id', 'cadastro_paciente.cidadao_id') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_cadastro_individual.equipe_id', 'atencao_basica_parametrizacao_equipe.id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->join('cadastro_infraestrutura', 'atencao_basica_parametrizacao_equipe.infraestrutura_id', 'cadastro_infraestrutura.id') ->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id') ->leftJoin('cadastro_domicilio', 'cidadao.domicilio_id', 'cadastro_domicilio.id') ->join('cadastro_paciente_classificacao', 'cadastro_paciente.classificacao_id', 'cadastro_paciente_classificacao.id') ->leftJoin('cadastro_domicilio_informacao_residencial', 'cadastro_domicilio_informacao_residencial.domicilio_id', 'cadastro_domicilio.id') ->where('cadastro_unidade.id', $params['unidade_equipe'] ?? $params['unidade_equipe_id']) ->whereNull('atencao_basica_cadastro_individual.saida_cidadao_id') ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cidadao.id'); }); $query = self::getParams($query, $params); $query = $query->distinct() ->selectRaw(' cadastro_paciente.id, cidadao.nome, cidadao.cns, cidadao.nome_social, cadastro_paciente.prontuario '); return $query; } private static function getParams($query, $params, $contex = null) { $params = !is_null($params) ? $params : request()->all(); if (isset($params['infraestrutura_equipe']) && !is_array($params['infraestrutura_equipe'])) { $query->where('atencao_basica_parametrizacao_equipe.infraestrutura_id', $params['infraestrutura_equipe']); } else if (isset($params['infraestrutura_equipe']) && is_array($params['infraestrutura_equipe'])) { $query->whereIn('atencao_basica_parametrizacao_equipe.infraestrutura_id', $params['infraestrutura_equipe']); } else if (isset($params['infraestrutura_equipe_id'])) { $query->where('atencao_basica_parametrizacao_equipe.infraestrutura_id', $params['infraestrutura_equipe_id']); } if (isset($params['local_domicilio_id']) && $params['local_domicilio_id'] == 0) { $query->where(function ($q) { $q->where('cadastro_domicilio_informacao_residencial.fora_area', 1); }); } else if (isset($params['local_domicilio_id']) && $params['local_domicilio_id'] == 1) { $query->where(function ($q) use ($contex) { $q->where(function ($sub) { $sub->whereNull('cadastro_domicilio_informacao_residencial.fora_area') ->orWhere('cadastro_domicilio_informacao_residencial.fora_area', 0); }); }); } if (isset($params['area_equipe_id']) && !is_null($params['area_equipe_id']) && !is_array($params['area_equipe_id'])) { $query->where('atencao_basica_parametrizacao_equipe.area_id', $params['area_equipe_id']) ->where(function ($q) { $q->where('cadastro_domicilio_informacao_residencial.fora_area', 0) ->orWhereNull('cadastro_domicilio_informacao_residencial.fora_area'); }); } else if (isset($params['area_equipe']) && !is_array($params['area_equipe']) && !is_array($params['area_equipe_id'])) { $query->where('atencao_basica_parametrizacao_equipe.area_id', $params['area_equipe']); } if (isset($params['micro_area'])) { if (!is_array($params['micro_area']) && !is_null($params['micro_area'])) { $query->where('atencao_basica_parametrizacao_equipe.microarea_id', $params['micro_area'] ?? $params['micro_area_id']); } } else if ( isset($params['micro_area_id']) && !is_null($params['micro_area_id']) && !is_array($params['micro_area_id']) && strpos($params['micro_area_id'], 'sem_') === false ) { $query->where('atencao_basica_parametrizacao_equipe.microarea_id', $params['micro_area_id']); } else if ( isset($params['micro_area_id']) && !is_null($params['micro_area_id']) && !is_array($params['micro_area_id']) && strpos($params['micro_area_id'], 'sem_') !== false ) { $query->whereNull('atencao_basica_parametrizacao_equipe.microarea_id'); } else if ( isset($params['micro_area_id']) && !is_null($params['micro_area_id']) && is_array($params['micro_area_id']) && count($params['micro_area_id']) > 0 && strpos($params['micro_area_id'][0], 'sem_') !== false ) { $query->where(function ($q) use ($params) { $q->whereNull('atencao_basica_parametrizacao_equipe.microarea_id'); }); } if (isset($params['profissional']) && !is_array($params['profissional'])) { $query->where('atencao_basica_cadastro_individual.usuario_id', $params['profissional']); } else if (isset($params['profissional']) && is_array($params['profissional'])) { $query->whereIn('atencao_basica_cadastro_individual.usuario_id', $params['profissional']); } else if (isset($params['profissional_id'])) { $query->where('atencao_basica_cadastro_individual.usuario_id', $params['profissional_id']); } if (isset($params['classificacao_paciente']) && !is_array($params['classificacao_paciente'])) { $query->where('cadastro_paciente.classificacao_id', $params['classificacao_paciente']); } else if (isset($params['classificacao_paciente']) && is_array($params['classificacao_paciente'])) { $query->whereIn('cadastro_paciente.classificacao_id', $params['classificacao_paciente']); } else if (isset($params['classificacao_paciente_id'])) { $query->where('cadastro_paciente.classificacao_id', $params['classificacao_paciente_id']); } if (isset($params['idade'])) { $anosDe = isset($params['idade']['anos_de']) && !is_array($params['idade']['anos_de']) ? (int) $params['idade']['anos_de'] : 0; $mesesDe = isset($params['idade']['meses_de']) && !is_array($params['idade']['meses_de']) ? (int) $params['idade']['meses_de'] : 0; $diasDe = isset($params['idade']['dias_de']) && !is_array($params['idade']['dias_de']) ? (int) $params['idade']['dias_de'] : 0; $anosAte = isset($params['idade']['anos_ate']) && !is_array($params['idade']['anos_ate']) ? (int) $params['idade']['anos_ate'] : null; $mesesAte = isset($params['idade']['meses_ate']) && !is_array($params['idade']['meses_ate']) ? (int) $params['idade']['meses_ate'] : null; $diasAte = isset($params['idade']['dias_ate']) && !is_array($params['idade']['dias_ate']) ? (int) $params['idade']['dias_ate'] : null; $temFiltroDe = ($anosDe > 0 || $mesesDe > 0 || $diasDe > 0); $temFiltroAte = ($anosAte !== null || $mesesAte !== null || $diasAte !== null); if ($temFiltroDe) { $idadeMinDias = ($anosDe * 365) + ($mesesDe * 30) + $diasDe; $query->whereRaw('DATEDIFF(NOW(), cadastro_cidadao.data_nascimento) >= ?', [$idadeMinDias]); } if ($temFiltroAte) { $anosAteCalc = $anosAte !== null ? $anosAte : 0; $mesesAteCalc = $mesesAte !== null ? $mesesAte : 0; $diasAteCalc = $diasAte !== null ? $diasAte : 0; $idadeMaxDias = ($anosAteCalc * 365) + ($mesesAteCalc * 30) + $diasAteCalc; $query->whereRaw('DATEDIFF(NOW(), cadastro_cidadao.data_nascimento) <= ?', [$idadeMaxDias]); } } if (isset($params['paciente']['id'])) { $query->where('cadastro_paciente.id', $params['paciente']['id']); } if (isset($params['sexo']) && !is_array($params['sexo'])) { $query->where('cadastro_sexo.id', $params['sexo']); } else if (isset($params['sexo']) && is_array($params['sexo'])) { $query->whereIn('cadastro_sexo.id', $params['sexo']); } else if (isset($params['condicionalidades']['sexo_id'])) { $query->where('cadastro_sexo.id', $params['condicionalidades']['sexo_id']); } if (!empty($params['peso'])) { if (!is_array($params['peso'])) { $query->where('atencao_basica_cadastro_peso.id', $params['peso']); } } else if (isset($params['condicionalidades']['peso_id']) && !is_null($params['condicionalidades']['peso_id'])) { $query->where('atencao_basica_cadastro_peso.id', $params['condicionalidades']['peso_id']); } if (isset($params['gestante']) && !is_array($params['gestante'])) { $query->where('atencao_basica_cadastro_individual.gestante', $params['gestante']); } else if (isset($params['condicionalidades']['gestante_id'])) { $valor = $params['condicionalidades']['gestante_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.gestante', 0) ->orWhereNull('atencao_basica_cadastro_individual.gestante'); }); } else { $query->where('atencao_basica_cadastro_individual.gestante', $valor); } } if (isset($params['hipertensao']) && !is_array($params['hipertensao'])) { $query->where('atencao_basica_cadastro_individual.hipertensao', $params['hipertensao']); } else if (isset($params['condicionalidades']['hipertenso_id'])) { $valor = $params['condicionalidades']['hipertenso_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.hipertensao', 0) ->orWhereNull('atencao_basica_cadastro_individual.hipertensao'); }); } else { $query->where('atencao_basica_cadastro_individual.hipertensao', $valor); } } if (isset($params['diabetes']) && !is_array($params['diabetes'])) { $query->where('atencao_basica_cadastro_individual.diabetes', $params['diabetes']); } else if (isset($params['condicionalidades']['diabetico_id'])) { $valor = $params['condicionalidades']['diabetico_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.diabetes', 0) ->orWhereNull('atencao_basica_cadastro_individual.diabetes'); }); } else { $query->where('atencao_basica_cadastro_individual.diabetes', $valor); } } if (isset($params['hanseniase']) && !is_array($params['hanseniase'])) { $query->where('atencao_basica_cadastro_individual.hanseniase', $params['hanseniase']); } else if (isset($params['condicionalidades']['hanseniase_id'])) { $valor = $params['condicionalidades']['hanseniase_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.hanseniase', 0) ->orWhereNull('atencao_basica_cadastro_individual.hanseniase'); }); } else { $query->where('atencao_basica_cadastro_individual.hanseniase', $valor); } } if (isset($params['tuberculose']) && !is_array($params['tuberculose'])) { $query->where('atencao_basica_cadastro_individual.tuberculose', $params['tuberculose']); } else if (isset($params['condicionalidades']['tuberculose_id'])) { $valor = $params['condicionalidades']['tuberculose_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.tuberculose', 0) ->orWhereNull('atencao_basica_cadastro_individual.tuberculose'); }); } else { $query->where('atencao_basica_cadastro_individual.tuberculose', $valor); } } if (isset($params['fumante']) && !is_array($params['fumante'])) { $query->where('atencao_basica_cadastro_individual.fumante', $params['fumante']); } else if (isset($params['condicionalidades']['fumante_id'])) { $valor = $params['condicionalidades']['fumante_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.fumante', 0) ->orWhereNull('atencao_basica_cadastro_individual.fumante'); }); } else { $query->where('atencao_basica_cadastro_individual.fumante', $valor); } } if (isset($params['alcool']) && !is_array($params['alcool'])) { $query->where('atencao_basica_cadastro_individual.usa_alcool', $params['alcool']); } else if (isset($params['condicionalidades']['alcool_id'])) { $valor = $params['condicionalidades']['alcool_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.usa_alcool', 0) ->orWhereNull('atencao_basica_cadastro_individual.usa_alcool'); }); } else { $query->where('atencao_basica_cadastro_individual.usa_alcool', $valor); } } if (isset($params['drogas']) && !is_array($params['drogas'])) { $query->where('atencao_basica_cadastro_individual.outras_drogas', $params['drogas']); } else if (isset($params['condicionalidades']['drogas_id'])) { $valor = $params['condicionalidades']['drogas_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.outras_drogas', 0) ->orWhereNull('atencao_basica_cadastro_individual.outras_drogas'); }); } else { $query->where('atencao_basica_cadastro_individual.outras_drogas', $valor); } } if (isset($params['tea']) && !is_array($params['tea'])) { $query->where('atencao_basica_cadastro_individual.transtorno_espectro_autista', $params['tea']); } else if (isset($params['condicionalidades']['tea_id'])) { $valor = $params['condicionalidades']['tea_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.transtorno_espectro_autista', 0) ->orWhereNull('atencao_basica_cadastro_individual.transtorno_espectro_autista'); }); } else { $query->where('atencao_basica_cadastro_individual.transtorno_espectro_autista', $valor); } } if (isset($params['avc']) && !is_array($params['avc'])) { $query->where('atencao_basica_cadastro_individual.avc_derrame', $params['avc']); } else if (isset($params['outras_doencas']['avc_id'])) { $valor = $params['outras_doencas']['avc_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.avc_derrame', 0) ->orWhereNull('atencao_basica_cadastro_individual.avc_derrame'); }); } else { $query->where('atencao_basica_cadastro_individual.avc_derrame', $valor); } } if (isset($params['infarto']) && !is_array($params['infarto'])) { $query->where('atencao_basica_cadastro_individual.infarto', $params['infarto']); } else if (isset($params['outras_doencas']['infarto_id'])) { $valor = $params['outras_doencas']['infarto_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.infarto', 0) ->orWhereNull('atencao_basica_cadastro_individual.infarto'); }); } else { $query->where('atencao_basica_cadastro_individual.infarto', $valor); } } if (isset($params['cancer']) && !is_array($params['cancer'])) { $query->where('atencao_basica_cadastro_individual.cancer', $params['cancer']); } else if (isset($params['outras_doencas']['cancer_id'])) { $valor = $params['outras_doencas']['cancer_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.cancer', 0) ->orWhereNull('atencao_basica_cadastro_individual.cancer'); }); } else { $query->where('atencao_basica_cadastro_individual.cancer', $valor); } } if (isset($params['fibromialgia']) && !is_array($params['fibromialgia'])) { $query->where('atencao_basica_cadastro_individual.fibromialgia', $params['fibromialgia']); } else if (isset($params['outras_doencas']['fibromialgia_id'])) { $valor = $params['outras_doencas']['fibromialgia_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.fibromialgia', 0) ->orWhereNull('atencao_basica_cadastro_individual.fibromialgia'); }); } else { $query->where('atencao_basica_cadastro_individual.fibromialgia', $valor); } } if (isset($params['internacao']) && !is_array($params['internacao'])) { $query->where('atencao_basica_cadastro_individual.internacao', $params['internacao']); } else if (isset($params['outras_doencas']['internacao_id'])) { $valor = $params['outras_doencas']['internacao_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.internacao', 0) ->orWhereNull('atencao_basica_cadastro_individual.internacao'); }); } else { $query->where('atencao_basica_cadastro_individual.internacao', $valor); } } if (isset($params['doenca_cardiaca']) && !is_array($params['doenca_cardiaca'])) { $query->where('atencao_basica_cadastro_individual.doenca_cardiaca', $params['doenca_cardiaca']); } else if (isset($params['outras_doencas']['doenca_cardiaca_id'])) { $valor = $params['outras_doencas']['doenca_cardiaca_id']; if ($valor == 0) { $query->where(function($q) { $q->where('atencao_basica_cadastro_individual.doenca_cardiaca', 0) ->orWhereNull('atencao_basica_cadastro_individual.doenca_cardiaca'); }); } else { $query->where('atencao_basica_cadastro_individual.doenca_cardiaca', $valor); } } if (isset($params['doenca_renal']) && !is_array($params['doenca_renal'])) { $query->where('atencao_basica_cadastro_individual.problemas_rins', $params['doenca_renal']); } else if (isset($params['outras_doencas']['doenca_renal_id'])) { $valor = $params['outras_doencas']['doenca_renal_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.problemas_rins', 0) ->orWhereNull('atencao_basica_cadastro_individual.problemas_rins'); }); } else { $query->where('atencao_basica_cadastro_individual.problemas_rins', $valor); } } if (isset($params['doenca_respiratoria']) && !is_array($params['doenca_respiratoria'])) { $query->where('atencao_basica_cadastro_individual.doenca_respiratoria', $params['doenca_respiratoria']); } else if (isset($params['outras_doencas']['doenca_respiratoria_id'])) { $valor = $params['outras_doencas']['doenca_respiratoria_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.doenca_respiratoria', 0) ->orWhereNull('atencao_basica_cadastro_individual.doenca_respiratoria'); }); } else { $query->where('atencao_basica_cadastro_individual.doenca_respiratoria', $valor); } } if (isset($params['tratamento_psicologico']) && !is_array($params['tratamento_psicologico'])) { $query->where('atencao_basica_cadastro_individual.tratamento_saude_mental', $params['tratamento_psicologico']); } else if (isset($params['outras_doencas']['tratamento_psicologico_id'])) { $valor = $params['outras_doencas']['tratamento_psicologico_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.tratamento_saude_mental', 0) ->orWhereNull('atencao_basica_cadastro_individual.tratamento_saude_mental'); }); } else { $query->where('atencao_basica_cadastro_individual.tratamento_saude_mental', $valor); } } if (isset($params['plantas_medicinais']) && !is_array($params['plantas_medicinais'])) { $query->where('atencao_basica_cadastro_individual.plantas_medicinais', $params['plantas_medicinais']); } else if (isset($params['outras_doencas']['plantas_medicinais_id'])) { $valor = $params['outras_doencas']['plantas_medicinais_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.plantas_medicinais', 0) ->orWhereNull('atencao_basica_cadastro_individual.plantas_medicinais'); }); } else { $query->where('atencao_basica_cadastro_individual.plantas_medicinais', $valor); } } if (isset($params['praticas_integrativas']) && !is_array($params['praticas_integrativas'])) { $query->where('atencao_basica_cadastro_individual.praticas_integrativas', $params['praticas_integrativas']); } else if (isset($params['outras_doencas']['praticas_integrativas_id'])) { $valor = $params['outras_doencas']['praticas_integrativas_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.praticas_integrativas', 0) ->orWhereNull('atencao_basica_cadastro_individual.praticas_integrativas'); }); } else { $query->where('atencao_basica_cadastro_individual.praticas_integrativas', $valor); } } if (isset($params['acamado']) && !is_array($params['acamado'])) { $query->where('atencao_basica_cadastro_individual.acamado', $params['acamado']); } else if (isset($params['atencao_domiciliar']['acamado_id']) && !is_null($params['atencao_domiciliar']['acamado_id'])) { $valor = $params['atencao_domiciliar']['acamado_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.acamado', 0) ->orWhereNull('atencao_basica_cadastro_individual.acamado'); }); } else { $query->where('atencao_basica_cadastro_individual.acamado', $valor); } } if (isset($params['domiciliado']) && !is_array($params['domiciliado'])) { $query->where('atencao_basica_cadastro_individual.domiciliado', $params['domiciliado']); } else if (isset($params['atencao_domiciliar']['domiciliado_id']) && !is_null($params['atencao_domiciliar']['domiciliado_id'])) { $valor = $params['atencao_domiciliar']['domiciliado_id']; if ($valor == 0) { $query->where(function ($q) { $q->where('atencao_basica_cadastro_individual.domiciliado', 0) ->orWhereNull('atencao_basica_cadastro_individual.domiciliado'); }); } else { $query->where('atencao_basica_cadastro_individual.domiciliado', $valor); } } return $query; } }