self::getModelData(), ]; } public static function getEquipes(){ return DB::table('atencao_basica_parametrizacao_equipe_usuario') ->select([ 'atencao_basica_parametrizacao_equipe.id AS id', DB::raw(" CONCAT( CASE WHEN atencao_basica_parametrizacao_area.numero_ine IS NOT NULL THEN CONCAT('INE: ', atencao_basica_parametrizacao_area.numero_ine) ELSE '' END, CASE WHEN atencao_basica_parametrizacao_area.descricao IS NOT NULL AND atencao_basica_parametrizacao_area.numero_ine IS NOT NULL THEN ' - Área: ' WHEN atencao_basica_parametrizacao_area.descricao IS NOT NULL THEN 'Área: ' ELSE '' END, COALESCE(atencao_basica_parametrizacao_area.descricao, ''), CASE WHEN atencao_basica_parametrizacao_microarea.descricao IS NOT NULL AND (atencao_basica_parametrizacao_area.numero_ine IS NOT NULL OR atencao_basica_parametrizacao_area.descricao IS NOT NULL) THEN ' - Microárea: ' WHEN atencao_basica_parametrizacao_microarea.descricao IS NOT NULL THEN 'Microárea: ' ELSE '' END, COALESCE(atencao_basica_parametrizacao_microarea.descricao, '') ) AS descricao ") ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'atencao_basica_parametrizacao_equipe.infraestrutura_id') ->leftJoin('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_area.id', 'atencao_basica_parametrizacao_equipe.area_id') ->leftJoin('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id') ->where('atencao_basica_parametrizacao_equipe_usuario.ativo', true) ->when(request()->usuario_id, fn ($q, $id) => $q->where('atencao_basica_parametrizacao_equipe_usuario.usuario_id', $id)) ->when(request()->infraestrutura_id, fn ($q, $id) => $q->where('atencao_basica_parametrizacao_equipe.infraestrutura_id', $id)) ->get(); } public static function getUnidades(){ return DB::table('atencao_basica_parametrizacao_equipe_usuario') ->select([ 'cadastro_unidade.id AS id', DB::raw("CONCAT(TRIM(cadastro_unidade.cnes), ' - ', cadastro_unidade.nome_fantasia ) AS nome_fantasia"), ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->where('atencao_basica_parametrizacao_equipe_usuario.ativo', true) ->when(request()->usuario_id, fn ($q, $id) => $q->where('atencao_basica_parametrizacao_equipe_usuario.usuario_id', $id)) ->distinct() ->orderBy('cadastro_unidade.cnes') ->get(); } public static function getInfraestruturas(){ return DB::table('atencao_basica_parametrizacao_equipe_usuario') ->select([ 'cadastro_infraestrutura.id AS id', DB::raw('COALESCE(cadastro_infraestrutura.nome, cadastro_unidade.nome_fantasia) AS nome'), ]) ->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'atencao_basica_parametrizacao_equipe.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id') ->where('atencao_basica_parametrizacao_equipe_usuario.ativo', true) ->when(request()->usuario_id, fn ($q, $id) => $q->where('atencao_basica_parametrizacao_equipe_usuario.usuario_id', $id)) ->when(request()->unidade_id, fn ($q, $id) => $q->where('atencao_basica_parametrizacao_equipe.unidade_id', $id)) ->distinct() ->orderBy('nome') ->get(); } public static function getOcupacoes() { $usuario = Usuario::findOrFail(request()->usuario_id); $permissao = OutrosPermissaoOcupacao::where('permissao_id', Permissao::CADASTRO_INDIVIDUAL)->get(); $codigos = $permissao->pluck('ocupacao'); return $usuario->lotacoes ->filter(function ($lotacao) use ($codigos) { return $lotacao->infraestrutura->id == request()->infraestrutura_id && $codigos->contains($lotacao->ocupacao->codigo); }) ->pluck('ocupacao'); } public static function getSupervisores() { return OutrosSupervisor::where('usuario_id', request()->usuario_id) ->first(); } private static function getFormData($id) { return [ 'data_atual' => Carbon::now()->format('d/m/Y'), 'acompanhamento_infantil' => AcompanhamentoInfantil::orderBy('descricao')->get(), 'parentesco' => Parentesco::orderBy('descricao')->get(), 'curso' => Curso::orderBy('descricao')->get(), 'mercado_trabalho' => SituacaoMercadoTrabalho::orderBy('descricao')->get(), 'orientacao_sexual' => OrientacaoSexual::whereNotIn('id', [CadastroIndividualOrientacaoSexual::HOMOSSEXUAL])->orderBy('descricao')->get(), 'identidade_genero' => IdentidadeGenero::orderBy('descricao')->get(), 'deficiencia' => DeficienciaBase::orderBy('descricao')->get()->each(function ($item) { $item->descricao = $item->id == Deficiencia::TEA ? $item->descricao : ucfirst(strtolower($item->descricao)); }), 'saida_cidadao' => SaidaCidadao::orderBy('descricao')->get(), 'peso' => Peso::orderBy('descricao')->get(), 'doencas_cardiacas' => DoencaCardiaca::orderBy('descricao')->get(), 'problemas_rins' => ProblemasRins::orderBy('descricao')->get(), 'doencas_respiratorias' => DoencaRespiratoria::orderBy('descricao')->get(), 'situacao_rua' => SituacaoRua::orderBy('descricao')->get(), 'alimentacao_diaria' => AlimentacaoDiaria::orderBy('descricao')->get(), 'origem_alimentacao' => OrigemAlimentacao::orderBy('descricao')->get(), 'higiene_pessoal' => HigienePessoal::orderBy('descricao')->get(), 'nacionalidades' => Nacionalidade::orderBy('descricao')->get(), 'responsaveis' => self::getResponsaveis($id), 'residentes' => self::getResidentes($id), 'termos_invalidos' => TermoInvalido::all()->map(fn ($termo) => $termo->descricao), ]; } private static function getModelData($cadastro = null, $paciente = null) { $informacaoSocial = PacienteInformacaoSocial::where('paciente_id', $paciente['id'])->first(); $responsavel = $informacaoSocial ? $informacaoSocial->responsavel : false; $responsavelCidadaoId = $informacaoSocial ? $informacaoSocial->responsavel_cidadao_id : null; $parentescoResponsavelId = $informacaoSocial ? $informacaoSocial->parentesco_responsavel_id : null; $cursoId = $informacaoSocial ? $informacaoSocial->curso_id : null; $orientacaoSexual = $informacaoSocial ? $informacaoSocial->orientacao_sexual : null; $orientacaoSexualId = $informacaoSocial ? $informacaoSocial->orientacao_sexual_id : null; $deficiente = $informacaoSocial ? $informacaoSocial->deficiente : false; $frequentaEscolaCreche = $informacaoSocial ? $informacaoSocial->frequenta_escola_creche : false; $situacaoMercadoTrabalhoId = $informacaoSocial ? $informacaoSocial->situacao_mercado_trabalho_id : null; $frequentaCuidadorTradicional = $informacaoSocial ? $informacaoSocial->frequenta_cuidador_tradicional : false; $participaGrupoComunitario = $informacaoSocial ? $informacaoSocial->participa_grupo_comunitario : false; $planoSaude = $informacaoSocial ? $informacaoSocial->plano_saude : false; $comunidadeTradicional = $informacaoSocial ? $informacaoSocial->comunidade_tradicional : false; $saidaCidadaoId = $informacaoSocial ? $informacaoSocial->saida_cidadao_id : null; $motivoSaidaData = $informacaoSocial ? $informacaoSocial->motivo_saida_data : null; $condicaoSaude = PacienteCondicaoSaude::where('paciente_id', $paciente['id'])->first(); $pesoId = $condicaoSaude ? $condicaoSaude->peso_id : null; $internacao = $condicaoSaude ? $condicaoSaude->internacao : false; $internacaoMotivo = $condicaoSaude ? $condicaoSaude->internacao_motivo : null; $doencaCardiaca = $condicaoSaude ? $condicaoSaude->doenca_cardiaca : null; $problemasRins = $condicaoSaude ? $condicaoSaude->problemas_rins : null; $doencaRespiratoria = $condicaoSaude ? $condicaoSaude->doenca_respiratoria : null; $tratamentoSaudeMental = $condicaoSaude ? $condicaoSaude->tratamento_saude_mental : null; $acamado = $condicaoSaude ? $condicaoSaude->acamado : null; $domiciliado = $condicaoSaude ? $condicaoSaude->domiciliado : null; $plantasMedicinais = $condicaoSaude ? $condicaoSaude->plantas_medicinais : null; $plantasMedicinaisQuais = $condicaoSaude ? $condicaoSaude->plantas_medicinais_quais : null; $praticasIntegrativas = $condicaoSaude ? $condicaoSaude->praticas_integrativas : null; $outrasCondicoesPrimaria = $condicaoSaude ? $condicaoSaude->outras_condicoes_primaria : null; $outrasCondicoesSecundaria = $condicaoSaude ? $condicaoSaude->outras_condicoes_secundaria : null; $outrasCondicoesTerciaria = $condicaoSaude ? $condicaoSaude->outras_condicoes_terciaria : null; $informacaoResidencial = PacienteInformacaoResidencial::where('paciente_id', $paciente['id'])->first(); $rendaMensal = $informacaoResidencial ? $informacaoResidencial->renda_mensal : null; $fatoresRisco = $paciente->cidadao->fatoresRisco->pluck('id'); $avcDerrame = $fatoresRisco->contains(FatorRisco::AVC) ? true : false; $cancer = $fatoresRisco->contains(FatorRisco::CANCERO) ? true : false; $diabetes = $fatoresRisco->contains(FatorRisco::DIABETES) ? true : false; $fibromialgia = $fatoresRisco->contains(FatorRisco::FIBROMIALGIA) ? true : false; $fumante = $fatoresRisco->contains(FatorRisco::TABAGISMO) ? true : false; $gestante = $fatoresRisco->contains(FatorRisco::GESTANTE) ? true : false; $hanseniase = $fatoresRisco->contains(FatorRisco::HANSENIASE) ? true : false; $hipertensao = $fatoresRisco->contains(FatorRisco::HIPERTENSAO) ? true : false; $infarto = $fatoresRisco->contains(FatorRisco::INFARTO) ? true : false; $outrasDrogas = $fatoresRisco->contains(FatorRisco::OUTRAS_DROGAS) ? true : false; $transtornoEspectroAutista = $fatoresRisco->contains(FatorRisco::TEA) ? true : false; $tuberculose = $fatoresRisco->contains(FatorRisco::TUBERCULOSE) ? true : false; $usaAlcool = $fatoresRisco->contains(FatorRisco::USA_ALCOOL) ? true : false; $cadastroDeficiente = $cadastro ? $cadastro->deficiente : $deficiente; $deficiencias = $cadastro ? $cadastro->deficiencia->pluck('id') : ($informacaoSocial ? $informacaoSocial->deficiencia->pluck('id') : collect()); $cadastroTea = $cadastro ? $cadastro->transtorno_espectro_autista : $transtornoEspectroAutista; if ($cadastroTea) { $cadastroDeficiente = true; if (!$deficiencias->contains(Deficiencia::TEA)) { $deficiencias->push(Deficiencia::TEA); } } if ($deficiencias->contains(Deficiencia::TEA) && !$fatoresRisco->contains(FatorRisco::TEA)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::TEA); } return [ 'fatores_risco' => $paciente->cidadao->fatoresRisco ?? [], 'has_cadastro' => $cadastro, 'has_informacao_paciente' => $informacaoSocial || $informacaoResidencial || $condicaoSaude ? true : false, 'cadastro_domiciliar' => $paciente->cidadao->domicilio && $paciente->cidadao->domicilio->cadastroDomiciliar ? [ 'id' => $paciente->cidadao->domicilio->cadastroDomiciliar->id, ] : null, 'cadastro' => [ 'usuario' => [ 'id' => $cadastro->usuario->id ?? null, 'cidadao_nome' => $cadastro->usuario->cidadao->nome ?? null, ], 'unidade_id' => $cadastro->equipe->unidade_id ?? null, 'infraestrutura_id' => $cadastro->equipe->infraestrutura_id ?? null, 'equipe_id' => $cadastro->equipe_id ?? null, 'ocupacao_id' => $cadastro->usuario_ocupacao_id ?? null, 'supervisor_id' => $cadastro->supervisor_id ?? null, 'data_usuario_responsavel' => $cadastro->data_usuario_responsavel ?? Carbon::now()->format('Y-m-d'), ], 'exportacao' => [ 'data' => $cadastro && $cadastro->data_hora_exportacao ? (new Carbon($cadastro->data_hora_exportacao))->format('d/m/Y') . ' às ' . (new Carbon($cadastro->data_hora_exportacao))->format('H:i') : null, 'profissional' => $cadastro && $cadastro->usuarioExportacao ? $cadastro->usuarioExportacao->cidadao->nome : null, ], 'alteracao' => [ 'data_cadastro' => optional(optional($cadastro)->created_at)->format('d/m/Y'), 'usuario_cadastro' => optional(optional(optional($cadastro)->createdLotacao)->usuario)->cidadao->nome ?? null, 'data_alteracao' => optional(optional($cadastro)->updated_at)->format('d/m/Y'), 'usuario_alteracao' => optional(optional(optional($cadastro)->updatedLotacao)->usuario)->cidadao->nome ?? null, ], 'cidadao' => [ 'nome' => $paciente->cidadao->nome ?? null, 'nome_social' => $paciente->cidadao->nome_social ?? null, 'status_id' => $cadastro ? $cadastro->status_id : null, 'sexo_id' => $paciente->cidadao->sexo_id ?? null, 'cns' => $paciente ? MaskUtil::getCnsMasked($paciente->cidadao->cns) : null, 'cpf' => $paciente ? MaskUtil::getCpfMasked($paciente->cidadao->cpf) : null, 'data_nascimento' => $paciente->cidadao->data_nascimento->format('Y-m-d') ?? null, 'data_naturalizacao' => $paciente->cidadao->data_naturalizacao ? $paciente->cidadao->data_naturalizacao->format('Y-m-d') : null, 'nacionalidade_id' => $paciente->cidadao->nacionalidade_id ?? null, 'portaria_naturalizacao' => $paciente->cidadao->portaria_naturalizacao ?? '', 'responsavel_cidadao_id' => $cadastro ? $cadastro->responsavel_cidadao_id : $responsavelCidadaoId, 'responsavel' => (count(self::getResponsaveis($paciente->id)) === 0) ? true : ($cadastro ? $cadastro->responsavel : $responsavel), 'ocupacao' => $cadastro && $cadastro->responsavelCidadao && $cadastro->responsavelCidadao->paciente->cadastroIndividual && $cadastro->responsavelCidadao->paciente->cadastroIndividual->ocupacao ? [ 'id' => $cadastro->responsavelCidadao->paciente->cadastroIndividual->ocupacao->id, 'codigo' => $cadastro->responsavelCidadao->paciente->cadastroIndividual->ocupacao->codigo, 'nome' => $cadastro->responsavelCidadao->paciente->cadastroIndividual->ocupacao->nome, ] : null, 'renda_mensal' => $cadastro ? $cadastro->renda_mensal : $rendaMensal, 'unidade_area_sus' => $paciente->cidadao->domicilio && $paciente->cidadao->domicilio->cadastroDomiciliar && $paciente->cidadao->domicilio->cadastroDomiciliar->equipe ? $paciente->cidadao->domicilio->cadastroDomiciliar->equipe->unidade->nome_fantasia . ' - ÁREA: ' . $paciente->cidadao->domicilio->cadastroDomiciliar->equipe->area->descricao . ( $paciente->cidadao->domicilio->cadastroDomiciliar->equipe->microarea ? ' - MICROÁREA' . $paciente->cidadao->domicilio->cadastroDomiciliar->equipe->microarea->descricao : ' - MICROÁREA - ' ) : null, 'ativo' => $cadastro ? $cadastro->ativo : true, 'classificacao_id' => $paciente->classificacao_id, 'cidadao_id' => $paciente->cidadao_id, ], 'informacao' => [ 'parentesco_responsavel_id' => $cadastro ? $cadastro->parentesco_responsavel_id : $parentescoResponsavelId, 'ocupacao' => $cadastro && $cadastro->ocupacao ? [ 'id' => $cadastro->ocupacao->id, 'codigo' => $cadastro->ocupacao->codigo, 'nome' => $cadastro->ocupacao->nome, ] : ($informacaoResidencial && $informacaoResidencial->ocupacao ? [ 'id' => $informacaoResidencial->ocupacao->id, 'codigo' => $informacaoResidencial->ocupacao->codigo, 'nome' => $informacaoResidencial->ocupacao->nome, ] : null), 'curso_id' => $cadastro ? $cadastro->curso_id : $cursoId, 'frequenta_escola_creche' => $cadastro ? $cadastro->frequenta_escola_creche : $frequentaEscolaCreche, 'situacao_mercado_trabalho_id' => $cadastro ? $cadastro->situacao_mercado_trabalho_id : $situacaoMercadoTrabalhoId, 'frequenta_cuidador_tradicional' => $cadastro ? $cadastro->frequenta_cuidador_tradicional : $frequentaCuidadorTradicional, 'participa_grupo_comunitario' => $cadastro ? $cadastro->participa_grupo_comunitario : $participaGrupoComunitario, 'acompanhamento_infantil' => $cadastro ? $cadastro->acompanhamentoInfantil->pluck('id') : ($informacaoSocial ? $informacaoSocial->acompanhamentoInfantil->pluck('id') : []), 'plano_saude' => $cadastro ? $paciente->cidadao->conveniosMedico->isEmpty() ? $cadastro->plano_saude : true : $planoSaude, 'convenio_medico' => $paciente->cidadao->conveniosMedico ?? null, 'comunidade_tradicional' => $cadastro ? $cadastro->comunidade_tradicional : $comunidadeTradicional, 'comunidade_tradicional_qual' => $cadastro && $cadastro->comunidade_tradicional ? [ 'id' => $cadastro->comunidadeTradicionalQual->id, 'codigo_esus' => $cadastro->comunidadeTradicionalQual->codigo_esus, 'descricao' => $cadastro->comunidadeTradicionalQual->descricao, ] : ($informacaoSocial && $informacaoSocial->comunidade_tradicional ? [ 'id' => $informacaoSocial->comunidadeTradicionalQual->id, 'codigo_esus' => $informacaoSocial->comunidadeTradicionalQual->codigo_esus, 'descricao' => $informacaoSocial->comunidadeTradicionalQual->descricao, ] : null), 'orientacao_sexual' => $cadastro ? $cadastro->orientacao_sexual : $orientacaoSexual, 'orientacao_sexual_id' => $cadastro ? $cadastro->orientacao_sexual_id : $orientacaoSexualId, 'identidade_genero' => $cadastro ? $cadastro->paciente->cidadao->identidade_genero_id ? true : $cadastro->identidade_genero : null, 'identidade_genero_id' => $cadastro ? $cadastro->paciente->cidadao->identidade_genero_id : null, 'deficiente' => $cadastroDeficiente, 'deficiencias' => $deficiencias, 'saida_cidadao_id' => $cadastro ? $cadastro->saida_cidadao_id : $saidaCidadaoId, 'motivo_saida_data' => $cadastro ? $cadastro->motivo_saida_data : $motivoSaidaData, 'obito' => $paciente->cidadao->obito ? true : false, 'obito_em' => $paciente->cidadao->obito ? (new Carbon($paciente->cidadao->obito->obito_em))->format('Y-m-d') : null, 'hora_obito' => $paciente->cidadao->obito ? (new Carbon($paciente->cidadao->obito->obito_em))->format('H:i:s') : null, 'obito_declaracao' => $paciente->cidadao->obito->declaracao ?? null, 'obito_causa' => $paciente->cidadao->obito->causa ?? null, 'obito_cid' => [ 'id' => $paciente->cidadao->obito->cid->id ?? null, 'nome' => $paciente->cidadao->obito->cid->nome ?? null, ], 'data_entrada' => $paciente->cidadao->estrangeiroEntradaBrasil->data_entrada ?? null, 'data_naturalizacao' => $paciente->cidadao->data_naturalizacao ?? null, ], 'informacao_socioeconomica' => [ 'alimentos_acabaram' => $cadastro ? $cadastro->alimentos_acabaram : null, 'comeu_alguns_alimentos' => $cadastro ? $cadastro->comeu_alguns_alimentos : null, 'data_atualizacao_tria' => optional($cadastro)->data_atualizacao_tria ? optional($cadastro)->data_atualizacao_tria : optional($cadastro)->created_at, ], 'recusa_cadastro' => $cadastro ? $cadastro->recusa_cadastro : false, 'condicao' => [ 'gestante' => $cadastro && $cadastro->gestante !== null ? $cadastro->gestante : null, 'maternidade_referencia' => $cadastro ? $cadastro->maternidade_referencia : null, 'peso_id' => $cadastro ? $cadastro->peso_id : $pesoId, 'fumante' => $cadastro ? $cadastro->fumante : $fumante, 'usa_alcool' => $cadastro ? $cadastro->usa_alcool : $usaAlcool, 'outras_drogas' => $cadastro ? $cadastro->outras_drogas : $outrasDrogas, 'hipertensao' => $cadastro ? $cadastro->hipertensao : $hipertensao, 'diabetes' => $cadastro ? $cadastro->diabetes : $diabetes, 'avc_derrame' => $cadastro ? $cadastro->avc_derrame : $avcDerrame, 'infarto' => $cadastro ? $cadastro->infarto : $infarto, 'hanseniase' => $cadastro ? $cadastro->hanseniase : $hanseniase, 'tuberculose' => $cadastro ? $cadastro->tuberculose : $tuberculose, 'cancer' => $cadastro ? $cadastro->cancer : $cancer, 'fibromialgia' => $cadastro ? $cadastro->fibromialgia : $fibromialgia, 'transtorno_espectro_autista' => $cadastro ? $cadastro->transtorno_espectro_autista : $transtornoEspectroAutista, 'internacao' => $cadastro ? $cadastro->internacao : $internacao, 'internacao_motivo' => $cadastro ? $cadastro->internacao_motivo : $internacaoMotivo, 'doenca_cardiaca' => $cadastro ? $cadastro->doenca_cardiaca : $doencaCardiaca, 'doenca_cardiaca_quais' => $cadastro ? $cadastro->doencaCardiaca->pluck('id') : ($condicaoSaude ? $condicaoSaude->doencaCardiaca->pluck('id') : []), 'problemas_rins' => $cadastro ? $cadastro->problemas_rins : $problemasRins, 'problemas_rins_quais' => $cadastro ? $cadastro->problemasRins->pluck('id') : ($condicaoSaude ? $condicaoSaude->problemasRins->pluck('id') : []), 'doenca_respiratoria' => $cadastro ? $cadastro->doenca_respiratoria : $doencaRespiratoria, 'doenca_respiratoria_quais' => $cadastro ? $cadastro->doencaRespiratoria->pluck('id') : ($condicaoSaude ? $condicaoSaude->doencaRespiratoria->pluck('id') : []), 'tratamento_saude_mental' => $cadastro ? $cadastro->tratamento_saude_mental : $tratamentoSaudeMental, 'acamado' => $cadastro ? $cadastro->acamado : $acamado, 'domiciliado' => $cadastro ? $cadastro->domiciliado : $domiciliado, 'plantas_medicinais' => $cadastro ? $cadastro->plantas_medicinais : $plantasMedicinais, 'plantas_medicinais_quais' => $cadastro ? $cadastro->plantas_medicinais_quais : $plantasMedicinaisQuais, 'praticas_integrativas' => $cadastro ? $cadastro->praticas_integrativas : $praticasIntegrativas, 'outras_condicoes_primaria' => $cadastro ? $cadastro->outras_condicoes_primaria : $outrasCondicoesPrimaria, 'outras_condicoes_secundaria' => $cadastro ? $cadastro->outras_condicoes_secundaria : $outrasCondicoesSecundaria, 'outras_condicoes_terciaria' => $cadastro ? $cadastro->outras_condicoes_terciaria : $outrasCondicoesTerciaria, ], 'situacao_rua' => [ 'situacao_rua_id' => $cadastro ? $cadastro->situacao_rua_id : null, 'outra_instituicao' => $cadastro ? $cadastro->outra_instituicao : false, 'outra_instituicao_quais' => $cadastro ? $cadastro->outra_instituicao_quais : null, 'recebe_beneficio' => $cadastro ? $cadastro->recebe_beneficio : false, 'referencia_familiar' => $cadastro ? $cadastro->referencia_familiar : false, 'visita_familiar' => $cadastro ? $cadastro->visita_familiar : false, 'parentesco' => $cadastro ? $cadastro->parentesco : null, 'alimentacao_diaria_id' => $cadastro ? $cadastro->alimentacao_diaria_id : null, 'origem_alimentacao' => $cadastro ? $cadastro->origemAlimentacao->pluck('id') : [], 'higiene_pessoal' => $cadastro ? $cadastro->higiene_pessoal : false, 'higiene_pessoal_quais' => $cadastro ? $cadastro->higienePessoal->pluck('id') : [], ], ]; } public static function show($id) { return CadastroIndividual::where('paciente_id', $id)->first(); } public static function edit($id) { $cadastro = self::show($id); $paciente = Paciente::findOrFail($id); return [ 'additionals' => [ 'permissoes_atualizacao_cadastro_paciente' => self::getPermissoesAtualizacaoCadastroPaciente(), ], 'form' => self::getFormData($id), 'model' => self::getModelData($cadastro, $paciente), ]; } public static function store() { return self::saveStore(request()->all()); } public static function saveStore($params) { self::validate($params); $params = (object) $params; $paciente = CadastroIndividual::where('paciente_id', $params->paciente_id) -> first() ?? new CadastroIndividual(); $paciente->paciente_id = $params->paciente_id; $paciente->recusa_cadastro = $params->recusa_cadastro; $cadastro = $params->cadastro; $paciente->data_usuario_responsavel = Carbon::now(); $paciente->equipe_id = $cadastro['equipe_id']; $paciente->usuario_ocupacao_id = $cadastro['ocupacao_id']; $paciente->usuario_id = $cadastro['usuario_id']; $paciente->supervisor_id = $cadastro['supervisor_id']; $condicao = $params->condicao; $paciente->acamado = $condicao['acamado']; $paciente->avc_derrame = $condicao['avc_derrame']; $paciente->cancer = $condicao['cancer']; $paciente->diabetes = $condicao['diabetes']; $paciente->doenca_cardiaca = $condicao['doenca_cardiaca']; $paciente->doenca_respiratoria = $condicao['doenca_respiratoria']; $paciente->domiciliado = $condicao['domiciliado']; $paciente->fibromialgia = $condicao['fibromialgia']; $paciente->fumante = $condicao['fumante']; $paciente->gestante = $condicao['gestante']; $paciente->hanseniase = $condicao['hanseniase']; $paciente->hipertensao = $condicao['hipertensao']; $paciente->infarto = $condicao['infarto']; $paciente->internacao = $condicao['internacao']; $paciente->internacao_motivo = $condicao['internacao_motivo']; $paciente->maternidade_referencia = $condicao['maternidade_referencia']; $paciente->outras_condicoes_primaria = $condicao['outras_condicoes_primaria']; $paciente->outras_condicoes_secundaria = $condicao['outras_condicoes_secundaria']; $paciente->outras_condicoes_terciaria = $condicao['outras_condicoes_terciaria']; $paciente->outras_drogas = $condicao['outras_drogas']; $paciente->peso_id = $condicao['peso_id']; $paciente->praticas_integrativas = $condicao['praticas_integrativas']; $paciente->problemas_rins = $condicao['problemas_rins']; $paciente->transtorno_espectro_autista = $condicao['transtorno_espectro_autista']; $paciente->tratamento_saude_mental = $condicao['tratamento_saude_mental']; $paciente->tuberculose = $condicao['tuberculose']; $paciente->usa_alcool = $condicao['usa_alcool']; $paciente->plantas_medicinais = $condicao['plantas_medicinais']; $paciente->plantas_medicinais_quais = $condicao['plantas_medicinais_quais']; $informacao = $params->informacao; $paciente->comunidade_tradicional = $informacao['comunidade_tradicional']; $paciente->comunidade_tradicional_id = $informacao['comunidade_tradicional_id']; $paciente->curso_id = $informacao['curso_id']; $paciente->deficiente = $informacao['deficiente']; $paciente->frequenta_cuidador_tradicional = $informacao['frequenta_cuidador_tradicional']; $paciente->frequenta_escola_creche = $informacao['frequenta_escola_creche']; $paciente->identidade_genero = $informacao['identidade_genero']; $paciente->saida_cidadao_id = $informacao['saida_cidadao_id']; $paciente->motivo_saida_data = $informacao['motivo_saida_data']; $paciente->ocupacao_id = $informacao['ocupacao_id']; $paciente->orientacao_sexual = $informacao['orientacao_sexual']; $paciente->orientacao_sexual_id = $informacao['orientacao_sexual_id']; $paciente->parentesco_responsavel_id = $informacao['parentesco_responsavel_id']; $paciente->participa_grupo_comunitario = $informacao['participa_grupo_comunitario']; $paciente->plano_saude = $informacao['plano_saude']; $paciente->situacao_mercado_trabalho_id = $informacao['situacao_mercado_trabalho_id']; if (isset($params->informacao_socioeconomica)) { $socioeconomica = $params->informacao_socioeconomica; $alimentosAcabaram = isset($socioeconomica['alimentos_acabaram']) ? $socioeconomica['alimentos_acabaram'] : null; $comeuAlgunsAlimentos = isset($socioeconomica['comeu_alguns_alimentos']) ? $socioeconomica['comeu_alguns_alimentos'] : null; $houveMudancaSocioeconomica = self::houveMudancaInformacaoSocioeconomica( $paciente->alimentos_acabaram, $paciente->comeu_alguns_alimentos, $alimentosAcabaram, $comeuAlgunsAlimentos ); $paciente->alimentos_acabaram = $alimentosAcabaram; $paciente->comeu_alguns_alimentos = $comeuAlgunsAlimentos; if ($houveMudancaSocioeconomica) { $paciente->data_atualizacao_tria = Carbon::now(); } } else { $paciente->alimentos_acabaram = null; $paciente->comeu_alguns_alimentos = null; $paciente->data_atualizacao_tria = null; } if ($informacao['identidade_genero']) { Cidadao::findOrFail($paciente->paciente->cidadao->id) ->update(['identidade_genero_id' => $informacao['identidade_genero_id']]); } $cidadao = $params->cidadao; $paciente->renda_mensal = $cidadao['renda_mensal']; if (!is_null($cidadao['renda_mensal'])) { $paciente->renda_mensal = str_replace('.', '', $paciente->renda_mensal); $paciente->renda_mensal = str_replace(',', '.', $paciente->renda_mensal); } $paciente->ativo = $cidadao['ativo']; if (!$cidadao['responsavel'] && $cidadao['responsavel_cidadao_id']) { $cadastro_cidadao = Paciente::where('cidadao_id', $cidadao['responsavel_cidadao_id'])->first(); CadastroIndividual::where('paciente_id', $cadastro_cidadao->id) ->update(['ocupacao_id' => $cidadao['ocupacao_id']]); } if ($paciente->responsavel && $informacao['saida_cidadao_id'] == EnumSaidaCidadao::OBITO) { if ($cidadao['responsavel_cidadao_id'] !== null) { $cadastro_cidadao = Paciente::where('cidadao_id', $cidadao['responsavel_cidadao_id'])->first(); CadastroIndividual::where('paciente_id', $cadastro_cidadao->id) ->update(['responsavel' => true, 'responsavel_cidadao_id' => null]); CadastroIndividual::where('responsavel_cidadao_id', $paciente->paciente->cidadao->id) ->whereNotIn('paciente_id', [$cadastro_cidadao->id]) ->update(['responsavel_cidadao_id' => $cidadao['responsavel_cidadao_id']]); } } $paciente->responsavel = $cidadao['responsavel']; $paciente->responsavel_cidadao_id = $cidadao['responsavel_cidadao_id']; $situacao_rua = $params->situacao_rua; $paciente->alimentacao_diaria_id = $situacao_rua['alimentacao_diaria_id']; $paciente->higiene_pessoal = $situacao_rua['higiene_pessoal']; $paciente->outra_instituicao = $situacao_rua['outra_instituicao']; $paciente->outra_instituicao_quais = $situacao_rua['outra_instituicao_quais']; $paciente->parentesco = $situacao_rua['parentesco']; $paciente->recebe_beneficio = $situacao_rua['recebe_beneficio']; $paciente->referencia_familiar = $situacao_rua['referencia_familiar']; $paciente->situacao_rua_id = $situacao_rua['situacao_rua_id']; $paciente->visita_familiar = $situacao_rua['visita_familiar']; $paciente->exportacao_id = null; $paciente->save(); $paciente->acompanhamentoInfantil()->sync($informacao['acompanhamento_infantil']); $paciente->deficiencia()->sync($informacao['deficiencias']); $paciente->doencaCardiaca()->sync($condicao['doenca_cardiaca_quais']); $paciente->problemasRins()->sync($condicao['problemas_rins_quais']); $paciente->doencaRespiratoria()->sync($condicao['doenca_respiratoria_quais']); $paciente->origemAlimentacao()->sync($situacao_rua['origem_alimentacao']); $paciente->higienePessoal()->sync($situacao_rua['higiene_pessoal_quais']); if (!$paciente->deficiencia->pluck('id')->contains(Deficiencia::TEA) && $paciente->paciente->cidadao->fatoresRisco->pluck('id')->contains(FatorRisco::TEA)) { $paciente->paciente->cidadao->fatoresRisco()->detach(FatorRisco::TEA); if ($paciente->paciente->informacaoSocial && $paciente->paciente->informacaoSocial->deficiencia) { $paciente->paciente->informacaoSocial->deficiencia()->detach(Deficiencia::TEA); } } if ($informacao['saida_cidadao_id'] == EnumSaidaCidadao::OBITO) { $currentLotacao = self::getCurrentLotacao(); $obitoService = new ObitoService($paciente->paciente->cidadao); if (is_null($obitoService->get())) { $obitoService->save( Carbon::createFromFormat('d/m/Y H:i:s', $informacao['obito_em']), $informacao['obito_declaracao'] ?? '', $informacao['obito_causa'] ?? '', $informacao['obito_cid_id'] ?? null, $currentLotacao->usuario->id ); } } if ($informacao['saida_cidadao_id'] == EnumSaidaCidadao::MUDANCA_DE_TERRITORIO) { $cidadao = Cidadao::findOrFail($paciente->paciente->cidadao->id); $cidadao->update(['domicilio_id' => null]); if ($cidadao->paciente->responsavel) { $cidadao->paciente->responsavel->delete(); } } if ($params->origem == 'atencaoBasica') { if ($informacao['saida_cidadao_id'] !== EnumSaidaCidadao::MUDANCA_DE_TERRITORIO) { self::saveResponsavel($paciente->paciente, $params); } self::saveCondicaoSaude($paciente->paciente, $params); self::saveInformacaoSocial($paciente->paciente, $params); self::saveInformacaoResidencial($paciente->paciente, $params); self::atualizaFatoresRisco($paciente->paciente, $condicao); } if (isset($params->created_lotacao_id) && isset($params->created_centro_custo_id) && isset($params->updated_lotacao_id) && isset($params->updated_centro_custo_id)) { CadastroIndividual::where('id', $paciente->id) ->update([ 'created_lotacao_id' => $params->created_lotacao_id, 'created_centro_custo_id' => $params->created_centro_custo_id, 'updated_lotacao_id' => $params->updated_lotacao_id, 'updated_centro_custo_id' => $params->updated_centro_custo_id, ]); } } private static function atualizaFatoresRisco($paciente, $condicao) { $fatoresRisco = $paciente->cidadao->fatoresRisco->pluck('id'); if (!empty($condicao['avc_derrame'])) { if (!$fatoresRisco->contains(FatorRisco::AVC)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::AVC); } } else { if ($fatoresRisco->contains(FatorRisco::AVC)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::AVC); } } if (!empty($condicao['cancer'])) { if (!$fatoresRisco->contains(FatorRisco::CANCERO)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::CANCERO); } } else { if ($fatoresRisco->contains(FatorRisco::CANCERO)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::CANCERO); } } if (!empty($condicao['diabetes'])) { if (!$fatoresRisco->contains(FatorRisco::DIABETES)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::DIABETES); } } else { if ($fatoresRisco->contains(FatorRisco::DIABETES)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::DIABETES); } } if (!empty($condicao['fibromialgia'])) { if (!$fatoresRisco->contains(FatorRisco::FIBROMIALGIA)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::FIBROMIALGIA); } } else { if ($fatoresRisco->contains(FatorRisco::FIBROMIALGIA)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::FIBROMIALGIA); } } if (!empty($condicao['fibromialgia'])) { if (!$fatoresRisco->contains(FatorRisco::FIBROMIALGIA)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::FIBROMIALGIA); } } else { if ($fatoresRisco->contains(FatorRisco::FIBROMIALGIA)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::FIBROMIALGIA); } } if (!empty($condicao['fumante'])) { if (!$fatoresRisco->contains(FatorRisco::TABAGISMO)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::TABAGISMO); } } else { if ($fatoresRisco->contains(FatorRisco::TABAGISMO)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::TABAGISMO); } } if (!empty($condicao['gestante'])) { if (!$fatoresRisco->contains(FatorRisco::GESTANTE)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::GESTANTE); } } else { if ($fatoresRisco->contains(FatorRisco::GESTANTE)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::GESTANTE); } } if (!empty($condicao['hanseniase'])) { if (!$fatoresRisco->contains(FatorRisco::HANSENIASE)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::HANSENIASE); } } else { if ($fatoresRisco->contains(FatorRisco::HANSENIASE)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::HANSENIASE); } } if (!empty($condicao['infarto'])) { if (!$fatoresRisco->contains(FatorRisco::INFARTO)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::INFARTO); } } else { if ($fatoresRisco->contains(FatorRisco::INFARTO)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::INFARTO); } } if (!empty($condicao['outras_drogas'])) { if (!$fatoresRisco->contains(FatorRisco::OUTRAS_DROGAS)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::OUTRAS_DROGAS); } } else { if ($fatoresRisco->contains(FatorRisco::OUTRAS_DROGAS)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::OUTRAS_DROGAS); } } if (!empty($condicao['transtorno_espectro_autista'])) { if (!$fatoresRisco->contains(FatorRisco::TEA)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::TEA); } } else { if ($fatoresRisco->contains(FatorRisco::TEA)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::TEA); } } if (!empty($condicao['tuberculose'])) { if (!$fatoresRisco->contains(FatorRisco::TUBERCULOSE)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::TUBERCULOSE); } } else { if ($fatoresRisco->contains(FatorRisco::TUBERCULOSE)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::TUBERCULOSE); } } if (!empty($condicao['usa_alcool'])) { if (!$fatoresRisco->contains(FatorRisco::USA_ALCOOL)) { $paciente->cidadao->fatoresRisco()->attach(FatorRisco::USA_ALCOOL); } } else { if ($fatoresRisco->contains(FatorRisco::USA_ALCOOL)) { $paciente->cidadao->fatoresRisco()->detach(FatorRisco::USA_ALCOOL); } } } private function saveResponsavel($paciente, $params) { $cadastro = $params->cadastro; PacienteResponsavel::updateOrCreate( [ 'paciente_id' => $paciente->id, ], [ 'responsavel_usuario_id' => $cadastro['usuario_id'], 'responsavel_equipe_id' => $cadastro['equipe_id'], 'responsavel_ocupacao_id' => $cadastro['ocupacao_id'], 'responsavel_data' => Carbon::now(), ] ); } private static function saveCondicaoSaude($paciente, $params) { $condicao = $params->condicao; PacienteCondicaoSaude::updateOrCreate( [ 'paciente_id' => $paciente->id, ], [ 'peso_id' => $condicao['peso_id'] ?? null, 'internacao' => $condicao['internacao'] ?? null, 'internacao_motivo' => $condicao['internacao_motivo'] ?? null, 'doenca_cardiaca' => $condicao['doenca_cardiaca'] ?? null, 'problemas_rins' => $condicao['problemas_rins'] ?? null, 'doenca_respiratoria' => $condicao['doenca_respiratoria'] ?? null, 'tratamento_saude_mental' => $condicao['tratamento_saude_mental'] ?? null, 'acamado' => $condicao['acamado'] ?? null, 'domiciliado' => $condicao['domiciliado'] ?? null, 'plantas_medicinais' => $condicao['plantas_medicinais'] ?? null, 'plantas_medicinais_quais' => $condicao['plantas_medicinais_quais'] ?? null, 'praticas_integrativas' => $condicao['praticas_integrativas'] ?? null, 'outras_condicoes_primaria' => $condicao['outras_condicoes_primaria'] ?? null, 'outras_condicoes_secundaria' => $condicao['outras_condicoes_secundaria'] ?? null, 'outras_condicoes_terciaria' => $condicao['outras_condicoes_terciaria'] ?? null, ] ); if ($paciente->condicaoSaude) { $paciente->condicaoSaude->doencaCardiaca()->sync($condicao['doenca_cardiaca_quais']); $paciente->condicaoSaude->doencaRespiratoria()->sync($condicao['doenca_respiratoria_quais']); $paciente->condicaoSaude->problemasRins()->sync($condicao['problemas_rins_quais']); } } private static function saveInformacaoSocial($paciente, $params) { $informacao = $params->informacao; $cidadao = $params->cidadao; $informacaoSocialAtual = $paciente->informacaoSocial; if (isset($params->informacao_socioeconomica)) { $socioeconomica = $params->informacao_socioeconomica; $alimentos_acabaram = isset($socioeconomica['alimentos_acabaram']) ? $socioeconomica['alimentos_acabaram'] : null; $comeu_alguns_alimentos = isset($socioeconomica['comeu_alguns_alimentos']) ? $socioeconomica['comeu_alguns_alimentos'] : null; $houveMudancaSocioeconomica = self::houveMudancaInformacaoSocioeconomica( optional($informacaoSocialAtual)->alimentos_acabaram, optional($informacaoSocialAtual)->comeu_alguns_alimentos, $alimentos_acabaram, $comeu_alguns_alimentos ); $data_atualizacao_tria = $houveMudancaSocioeconomica ? Carbon::now() : optional($informacaoSocialAtual)->data_atualizacao_tria; } else { $alimentos_acabaram = null; $comeu_alguns_alimentos = null; $data_atualizacao_tria = null; } PacienteInformacaoSocial::updateOrCreate( [ 'paciente_id' => $paciente->id, ], [ 'responsavel' => $cidadao['responsavel'], 'responsavel_cidadao_id' => $cidadao['responsavel_cidadao_id'], 'parentesco_responsavel_id' => $informacao['parentesco_responsavel_id'], 'curso_id' => $informacao['curso_id'], 'orientacao_sexual' => $informacao['orientacao_sexual'], 'orientacao_sexual_id' => $informacao['orientacao_sexual_id'], 'deficiente' => $informacao['deficiente'], 'frequenta_escola_creche' => $informacao['frequenta_escola_creche'], 'situacao_mercado_trabalho_id' => $informacao['situacao_mercado_trabalho_id'], 'frequenta_cuidador_tradicional' => $informacao['frequenta_cuidador_tradicional'], 'participa_grupo_comunitario' => $informacao['participa_grupo_comunitario'], 'plano_saude' => $informacao['plano_saude'], 'comunidade_tradicional' => $informacao['comunidade_tradicional'], 'comunidade_tradicional_id' => $informacao['comunidade_tradicional_id'], 'saida_cidadao_id' => $informacao['saida_cidadao_id'], 'motivo_saida_data' => $informacao['motivo_saida_data'], 'alimentos_acabaram' => $alimentos_acabaram, 'comeu_alguns_alimentos' => $comeu_alguns_alimentos, 'data_atualizacao_tria' => $data_atualizacao_tria, 'recusa_cadastro' => $params->recusa_cadastro, ] ); if (isset($params->informacao_socioeconomica)) { $socioeconomica = $params->informacao_socioeconomica; $paciente->alimentos_acabaram = isset($socioeconomica['alimentos_acabaram']) ? $socioeconomica['alimentos_acabaram'] : null; $paciente->comeu_alguns_alimentos = isset($socioeconomica['comeu_alguns_alimentos']) ? $socioeconomica['comeu_alguns_alimentos'] : null; $paciente->data_atualizacao_tria = $data_atualizacao_tria; } else { $paciente->alimentos_acabaram = null; $paciente->comeu_alguns_alimentos = null; $paciente->data_atualizacao_tria = null; } if ($paciente->informacaoSocial) { $paciente->informacaoSocial->acompanhamentoInfantil()->sync($informacao['acompanhamento_infantil']); $paciente->informacaoSocial->deficiencia()->sync($informacao['deficiencias']); if (!$paciente->informacaoSocial->deficiencia->pluck('id')->contains(Deficiencia::TEA) && $paciente->cidadao->fatoresRisco->pluck('id')->contains(FatorRisco::TEA)) { $paciente->informacaoSocial->deficiencia()->attach(Deficiencia::TEA); } } } private static function saveInformacaoResidencial($paciente, $params) { $informacao = $params->informacao; $cidadao = $params->cidadao; $rendaMensal = $cidadao['renda_mensal']; if (!is_null($cidadao['renda_mensal'])) { $rendaMensal = str_replace('.', '', $rendaMensal); $rendaMensal = str_replace(',', '.', $rendaMensal); } PacienteInformacaoResidencial::updateOrCreate( [ 'paciente_id' => $paciente->id, ], [ 'recusa_cadastro' => $params->recusa_cadastro, 'renda_mensal' => $rendaMensal, 'ocupacao_id' => $informacao['ocupacao_id'], ] ); } public static function autocompleteComunidades() { $comunidades = ComunidadeTradicional::getQuery(); return $comunidades; } private static function getResponsaveis($id) { $paciente = Paciente::findOrFail($id); return DB::table('cadastro_cidadao') ->select([ 'cadastro_cidadao.id AS id', 'cadastro_cidadao.nome AS nome', 'ocupacao.id AS ocupacao_id', 'ocupacao.nome AS ocupacao_nome', 'ocupacao.codigo AS ocupacao_codigo', ]) ->join('cadastro_paciente', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->leftJoin('sigtap.ocupacao AS ocupacao', 'ocupacao.id', 'atencao_basica_cadastro_individual.ocupacao_id') ->where('cadastro_cidadao.domicilio_id', $paciente->cidadao->domicilio_id) ->where('atencao_basica_cadastro_individual.responsavel', true) ->whereNotIn('cadastro_paciente.id', [$paciente->id]) ->get(); } private static function getResidentes($id) { $paciente = Paciente::findOrFail($id); return DB::table('cadastro_cidadao') ->select([ 'cadastro_cidadao.id AS id', 'cadastro_cidadao.nome AS nome', DB::raw('LPAD(cadastro_paciente.prontuario,7,0) as prontuario'), 'ocupacao.id AS ocupacao_id', 'ocupacao.nome AS ocupacao_nome', 'ocupacao.codigo AS ocupacao_codigo', ]) ->join('cadastro_paciente', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->join('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->leftJoin('sigtap.ocupacao AS ocupacao', 'ocupacao.id', 'atencao_basica_cadastro_individual.ocupacao_id') ->where('cadastro_cidadao.domicilio_id', $paciente->cidadao->domicilio_id) ->whereNotIn('cadastro_paciente.id', [$paciente->id]) ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }) ->get(); } private static function validate($params) { $saidaMudancaTerritorio = $params['informacao']['saida_cidadao_id'] == EnumSaidaCidadao::MUDANCA_DE_TERRITORIO; return Validator::make($params, [ 'cadastro.usuario_id' => [ $saidaMudancaTerritorio ? 'nullable' : 'required', 'integer', Rule::exists(Usuario::class, 'id'), ], 'cadastro.equipe_id' => [ $saidaMudancaTerritorio ? 'nullable' : 'required', 'integer', Rule::exists(Equipe::class, 'id'), ], 'cadastro.ocupacao_id' => [ $saidaMudancaTerritorio ? 'nullable' : 'required', 'integer', Rule::exists(Ocupacao::class, 'id'), ], 'cadastro.data_usuario_responsavel' => [ 'required', 'date', ], 'cidadao.ocupacao_id' => [ 'nullable', 'integer', Rule::exists(Ocupacao::class, 'id'), ], 'informacao.parentesco_responsavel_id' => [ 'nullable', 'integer', Rule::exists(Parentesco::class, 'id'), ], 'informacao.ocupacao_id' => [ 'nullable', 'integer', Rule::exists(Ocupacao::class, 'id'), ], 'informacao.curso_id' => [ 'nullable', 'integer', Rule::exists(Curso::class, 'id'), ], 'informacao.situacao_mercado_trabalho_id' => [ 'nullable', 'integer', Rule::exists(SituacaoMercadoTrabalho::class, 'id'), ], 'informacao.acompanhamento_infantil' => [ 'nullable', 'array', Rule::exists(AcompanhamentoInfantil::class, 'id'), ], 'informacao.comunidade_tradicional_id' => [ 'nullable', 'required_if:informacao.comunidade_tradicional,true', 'integer', Rule::exists(ComunidadeTradicional::class, 'id'), ], 'informacao.orientacao_sexual_id' => [ 'nullable', 'required_if:informacao.orientacao_sexual,true', 'integer', Rule::exists(OrientacaoSexual::class, 'id'), ], 'informacao.identidade_genero_id' => [ 'nullable', 'required_if:informacao.identidade_genero,true', 'integer', Rule::exists(IdentidadeGenero::class, 'id'), ], 'informacao.deficiencias' => [ 'nullable', 'required_if:informacao.deficiente,true', 'array', Rule::exists(DeficienciaBase::class, 'id'), ], 'informacao.obito_cid_id' => [ 'nullable', 'integer', Rule::exists(Cid::class, 'id'), ], 'informacao.obito_causa' => [ 'nullable', 'string', 'max:255' ], 'informacao.obito_em' => [ 'nullable', 'required_if:informacao.saida_cidadao_id,' . EnumSaidaCidadao::OBITO, 'date_format:d/m/Y H:i:s', ], 'informacao.obito_declaracao' => [ 'nullable', 'string', 'min:8', 'max:13' ], 'informacao.motivo_saida_data' => [ 'nullable', 'required_if:informacao.saida_cidadao_id,' . EnumSaidaCidadao::MUDANCA_DE_TERRITORIO, ], 'informacao_socioeconomica.alimentos_acabaram' => [ 'nullable', 'boolean', 'required_unless:informacao_socioeconomica.comeu_alguns_alimentos,null', ], 'informacao_socioeconomica.comeu_alguns_alimentos' => [ 'nullable', 'boolean', 'required_unless:informacao_socioeconomica.alimentos_acabaram,null', ], 'informacao_socioeconomica.data_atualizacao_tria' => [ 'nullable', 'date', ], 'condicao.maternidade_referencia' => [ 'nullable', 'string', 'min:3', 'max:100' ], 'condicao.internacao_motivo' => [ 'nullable', 'string', 'min:3', 'max:100' ], 'condicao.peso_id' => [ 'nullable', 'integer', Rule::exists(Peso::class, 'id'), ], 'condicao.doenca_cardiaca_quais' => [ 'nullable', 'required_if:condicao.doenca_cardiaca,true', 'array', Rule::exists(DoencaCardiaca::class, 'id'), ], 'condicao.problemas_rins_quais' => [ 'nullable', 'required_if:condicao.problemas_rins,true', 'array', Rule::exists(ProblemasRins::class, 'id'), ], 'condicao.doenca_respiratoria_quais' => [ 'nullable', 'required_if:condicao.doenca_respiratoria,true', 'array', Rule::exists(DoencaRespiratoria::class, 'id'), ], 'condicao.plantas_medicinais_quais' => [ 'nullable', 'string', 'min:3', 'max:100' ], 'condicao.outras_condicoes_primaria' => [ 'nullable', 'string', 'min:3', 'max:100' ], 'condicao.outras_condicoes_secundaria' => [ 'nullable', 'string', 'min:3', 'max:100' ], 'condicao.outras_condicoes_terciaria' => [ 'nullable', 'string', 'min:3', 'max:100' ], 'situacao_rua.situacao_rua_id' => [ 'nullable', 'integer', Rule::exists(SituacaoRua::class, 'id'), ], 'situacao_rua.outra_instituicao_quais' => [ 'nullable', 'string', 'min:3', 'max:100' ], 'situacao_rua.parentesco' => [ 'nullable', 'string', 'min:3', 'max:100' ], 'situacao_rua.alimentacao_diaria_id' => [ 'nullable', 'integer', Rule::exists(AlimentacaoDiaria::class, 'id'), ], 'situacao_rua.origem_alimentacao' => [ 'nullable', 'array', Rule::exists(OrigemAlimentacao::class, 'id'), ], 'situacao_rua.higiene_pessoal_quais' => [ 'nullable', 'required_if:condicao.higiene_pessoal,true', 'array', Rule::exists(HigienePessoal::class, 'id'), ], ], [ 'informacao.orientacao_sexual_id.required_if' => 'Selecione uma orientação sexual.', 'informacao_socioeconomica.comeu_alguns_alimentos.required_unless' => 'O campo "Nos últimos três meses, você comeu apenas alguns alimentos que ainda tinha porque o dinheiro acabou?" é obrigatório.', 'informacao_socioeconomica.alimentos_acabaram.required_unless' => 'O campo "Nos últimos três meses, os alimentos acabaram antes que você tivesse dinheiro para comprar mais comida" é obrigatório.', ])->validate(); } private static function getPermissoesAtualizacaoCadastroPaciente() { $parametrizacao = CnsService::getParametrizacao(); if (!is_null($parametrizacao)) { $lotacao = self::getCurrentLotacao(); return DB::table('cadastro_parametrizacao_permissao_usuario') ->select([ 'municipe', 'provisorio', 'outro_municipio', ]) ->where('infraestrutura_id', $lotacao->infraestrutura_id) ->where('usuario_id', $lotacao->usuario_id) ->get() ->first(); } return null; } private static function houveMudancaInformacaoSocioeconomica($alimentosAtual, $comeuAtual, $alimentosNovo, $comeuNovo) { return $alimentosAtual !== $alimentosNovo || $comeuAtual !== $comeuNovo; } }