domx->registerNamespace('ns4', 'http://esus.ufsc.br/cadastroindividual'); } public function __invoke() { $path = '//ns4:cadastroIndividualTransport'; $this->setProfissional($path); $this->setPaciente($path); $this->setInformacaoSociodemografica($path); $this->setInformacaoSocioeconomica($path); $this->setRecusaCadastro($path); $this->setCondicaoSaudeGeral($path); $this->setSituacaoRua($path); return $this->ficha; } private function setProfissional($cadastroIndividualTransportPath) { $headerTransportPath = "{$cadastroIndividualTransportPath}/headerTransport"; $ocupacao = $this->getFirstNodeValue("{$headerTransportPath}/cboCodigo_2002") ? Ocupacao::where('codigo', $this->getFirstNodeValue("{$headerTransportPath}/cboCodigo_2002"))->first() : null; $campos = (object) [ 'dataAtendimento' => $this->getDateString($this->getFirstNodeValue("{$headerTransportPath}/dataAtendimento")), 'codigoIbgeMunicipio' => $this->getFirstNodeValue("{$headerTransportPath}/codigoIbgeMunicipio"), 'profissionalNome' => $this->inconsistenciaModel->cadastroIndividual->usuario->cidadao->nome, 'profissionalCNS' => MaskUtil::getCnsMasked($this->getFirstNodeValue("{$headerTransportPath}/profissionalCNS")), 'cboCodigo_2002' => $ocupacao ? "{$ocupacao->codigo} - {$ocupacao->nome}" : null, 'cnes' => $this->getFirstNodeValue("{$headerTransportPath}/cnes"), 'ine' => $this->getFirstNodeValue("{$headerTransportPath}/ine"), ]; $inconsistencias = $this->getInconsistencias([ ['Data', fn () => $this->inconsistencias->headerTransport->dataAtendimento], ['IBGE', fn () => $this->inconsistencias->headerTransport->codigoIbgeMunicipio], ['CNS', fn () => $this->inconsistencias->headerTransport->profissionalCNS], ['CBO', fn () => $this->inconsistencias->headerTransport->cboCodigo_2002], ['CNES', fn () => $this->inconsistencias->headerTransport->cnes], ['INE', fn () => $this->inconsistencias->headerTransport->ine], ]); $this->ficha->profissional = (object) compact('campos', 'inconsistencias'); } private function setPaciente($cadastroIndividualTransportPath) { $path = "{$cadastroIndividualTransportPath}/identificacaoUsuarioCidadao"; $campos = (object) [ 'nomeSocial' => $this->getFirstNodeValue("{$path}/nomeSocial"), 'codigoIbgeMunicipioNascimento' => $this->getFirstNodeValue("{$path}/codigoIbgeMunicipioNascimento"), 'dataNascimentoCidadao' => $this->getDateString($this->getFirstNodeValue("{$path}/dataNascimentoCidadao")), 'desconheceNomeMae' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/desconheceNomeMae"))), 'emailCidadao' => $this->getFirstNodeValue("{$path}/emailCidadao"), 'nacionalidadeCidadao' => $this->getFirstNodeValue("{$path}/nacionalidadeCidadao") ? Nacionalidade::where('codigo_esus', $this->getFirstNodeValue("{$path}/nacionalidadeCidadao")) ->first()->descricao : null, 'nomeCidadao' => $this->getFirstNodeValue("{$path}/nomeCidadao"), 'nomeMaeCidadao' => $this->getFirstNodeValue("{$path}/nomeMaeCidadao"), 'cnsCidadao' => MaskUtil::getCnsMasked($this->getFirstNodeValue("{$path}/cnsCidadao")), 'cpfCidadao' => MaskUtil::getCpfMasked($this->getFirstNodeValue("{$path}/cpfCidadao")), 'telefoneCelular' => MaskUtil::getPhoneMasked($this->getFirstNodeValue("{$path}/telefoneCelular")), 'numeroNisPisPasep' => $this->getFirstNodeValue("{$path}/numeroNisPisPasep"), 'paisNascimento' => $this->getFirstNodeValue("{$path}/paisNascimento") ? Pais::where('codigo_esus', $this->getFirstNodeValue("{$path}/paisNascimento"))->first()->nome : null, 'racaCorCidadao' => $this->getFirstNodeValue("{$path}/racaCorCidadao") ? RacaCor::where('codigo_esus', $this->getFirstNodeValue("{$path}/racaCorCidadao"))->first()->descricao : null, 'sexoCidadao' => $this->getSexo($this->getFirstNodeValue("{$path}/sexoCidadao")), 'statusEhResponsavel' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusEhResponsavel"))), 'etnia' => $this->getFirstNodeValue("{$path}/etnia") ? EtniaIndigena::where('codigo_cadsus', $this->getFirstNodeValue("{$path}/etnia"))->first()->descricao : null, 'nomePaiCidadao' => $this->getFirstNodeValue("{$path}/nomePaiCidadao"), 'desconheceNomePai' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/desconheceNomePai"))), 'dtNaturalizacao' => $this->getDateString($this->getFirstNodeValue("{$path}/dtNaturalizacao")), 'portariaNaturalizacao' => $this->getFirstNodeValue("{$path}/portariaNaturalizacao"), 'dtEntradaBrasil' => $this->getDateString($this->getFirstNodeValue("{$path}/dtEntradaBrasil")), 'microArea' => $this->getFirstNodeValue("{$path}/microArea"), 'stForaArea' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/stForaArea"))), ]; $inconsistencias = $this->getInconsistencias([ ['Nome social', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->nomeSocial], ['IBGE (Nascimento)', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->codigoIbgeMunicipioNascimento], ['Data de nascimento', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->dataNascimentoCidadao], ['Desconhece mãe', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->desconheceNomeMae], ['E-mail', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->emailCidadao], ['Nacionalidade', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->nacionalidadeCidadao], ['Nome', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->nomeCidadao], ['Nome da mãe', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->nomeMaeCidadao], ['CNS', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->cnsCidadao], ['CPF', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->cpfCidadao], ['Telefone', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->telefoneCelular], ['PIS / PASEP | NIS', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->numeroNisPisPasep], ['País de nascimento', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->paisNascimento], ['Raça/cor', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->racaCorCidadao], ['Sexo', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->sexoCidadao], ['É responsável', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->statusEhResponsavel], ['Etnia', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->etnia], ['Nome do pai', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->nomePaiCidadao], ['Desconhece pai', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->desconheceNomePai], ['Data de naturalização', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->dtNaturalizacao], ['Portaria de naturalização', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->portariaNaturalizacao], ['Data de entrada no Brasil', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->dtEntradaBrasil], ['Microárea', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->microArea], ['Fora de área', fn () => $this->inconsistencias->identificacaoUsuarioCidadao->stForaArea], ]); $this->ficha->paciente = (object) compact('campos', 'inconsistencias'); } private function setInformacaoSociodemografica($cadastroIndividualTransportPath) { $path = "{$cadastroIndividualTransportPath}/informacoesSocioDemograficas"; $ocupacao = $this->getFirstNodeValue("{$path}/ocupacaoCodigoCbo2002") ? Ocupacao::where('codigo', $this->getFirstNodeValue("{$path}/ocupacaoCodigoCbo2002"))->first() : null; $campos = (object) [ 'grauInstrucaoCidadao' => $this->getFirstNodeValue("{$path}/grauInstrucaoCidadao") ? Curso::where('codigo_esus', $this->getFirstNodeValue("{$path}/grauInstrucaoCidadao"))->first()->descricao : null, 'ocupacaoCodigoCbo2002' => $ocupacao ? "{$ocupacao->codigo} - {$ocupacao->nome}" : null, 'orientacaoSexualCidadao' => $this->getFirstNodeValue("{$path}/orientacaoSexualCidadao") ? OrientacaoSexual::where('codigo_esus', $this->getFirstNodeValue("{$path}/orientacaoSexualCidadao")) ->first()->descricao : null, 'relacaoParentescoCidadao' => $this->getFirstNodeValue("{$path}/relacaoParentescoCidadao") ? Parentesco::where('codigo_esus', $this->getFirstNodeValue("{$path}/relacaoParentescoCidadao"))->first()->descricao : null, 'situacaoMercadoTrabalhoCidadao' => $this->getFirstNodeValue("{$path}/situacaoMercadoTrabalhoCidadao") ? SituacaoMercadoTrabalho::where('codigo_esus', $this->getFirstNodeValue("{$path}/situacaoMercadoTrabalhoCidadao")) ->first()->descricao : null, 'statusDesejaInformarOrientacaoSexual' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusDesejaInformarOrientacaoSexual"))), 'statusFrequentaBenzedeira' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusFrequentaBenzedeira"))), 'statusFrequentaEscola' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusFrequentaEscola"))), 'statusMembroPovoComunidadeTradicional' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusMembroPovoComunidadeTradicional"))), 'statusParticipaGrupoComunitario' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusParticipaGrupoComunitario"))), 'statusPossuiPlanoSaudePrivado' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusPossuiPlanoSaudePrivado"))), 'statusTemAlgumaDeficiencia' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTemAlgumaDeficiencia"))), 'identidadeGeneroCidadao' => $this->getFirstNodeValue("{$path}/identidadeGeneroCidadao") ? IdentidadeGenero::where('codigo_esus', $this->getFirstNodeValue("{$path}/identidadeGeneroCidadao")) ->first()->descricao : null, 'statusDesejaInformarIdentidadeGenero' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusDesejaInformarIdentidadeGenero"))), 'coPovoComunidadeTradicional' => $this->getFirstNodeValue("{$path}/coPovoComunidadeTradicional") ? ComunidadeTradicional::where('codigo_esus', $this->getFirstNodeValue("{$path}/coPovoComunidadeTradicional")) ->first()->descricao : null, ]; $deficienciasCidadao = []; $responsaveisPorCrianca = []; foreach ($this->domx->query("{$path}/deficienciasCidadao") as $context) { $deficienciasCidadao[] = DeficienciaBase::where('codigo_esus', $context->nodeValue)->first()->descricao; } foreach ($this->domx->query("{$path}/responsavelPorCrianca") as $context) { $responsaveisPorCrianca[] = AcompanhamentoInfantil::where('codigo_esus', $context->nodeValue)->first()->descricao; } $campos->deficienciasCidadao = collect($deficienciasCidadao)->join(', '); $campos->responsaveisPorCrianca = collect($responsaveisPorCrianca)->join(', '); $inconsistencias = $this->getInconsistencias([ [ 'Deficiências', fn () => $this->inconsistencias->informacoesSocioDemograficas->deficienciasCidadao ], [ 'Qual é o curso mais elevado que frequenta ou frequentou?', fn () => $this->inconsistencias->informacoesSocioDemograficas->grauInstrucaoCidadao ], [ 'Ocupação', fn () => $this->inconsistencias->informacoesSocioDemograficas->ocupacaoCodigoCbo2002 ], [ 'Orientação sexual', fn () => $this->inconsistencias->informacoesSocioDemograficas->orientacaoSexualCidadao ], [ 'Relação de parentesco com o responsável familiar', fn () => $this->inconsistencias->informacoesSocioDemograficas->relacaoParentescoCidadao ], [ 'Situação no mercado de trabalho', fn () => $this->inconsistencias->informacoesSocioDemograficas->situacaoMercadoTrabalhoCidadao ], [ 'Deseja informar orientação sexual?', fn () => $this->inconsistencias->informacoesSocioDemograficas->statusDesejaInformarOrientacaoSexual ], [ 'Frequenta cuidador tradicional?', fn () => $this->inconsistencias->informacoesSocioDemograficas->statusFrequentaBenzedeira ], [ 'Frequenta escola ou creche?', fn () => $this->inconsistencias->informacoesSocioDemograficas->statusFrequentaEscola ], [ 'É membro de povo ou comunidade tradicional?', fn () => $this->inconsistencias->informacoesSocioDemograficas->statusMembroPovoComunidadeTradicional ], [ 'Participa de grupo comunitário?', fn () => $this->inconsistencias->informacoesSocioDemograficas->statusParticipaGrupoComunitario ], [ 'Possui plano de saúde privado?', fn () => $this->inconsistencias->informacoesSocioDemograficas->statusPossuiPlanoSaudePrivado ], [ 'Tem alguma deficiência?', fn () => $this->inconsistencias->informacoesSocioDemograficas->statusTemAlgumaDeficiencia ], [ 'Identidade de gênero', fn () => $this->inconsistencias->informacoesSocioDemograficas->identidadeGeneroCidadao ], [ 'Deseja informar identidade de gênero?', fn () => $this->inconsistencias->informacoesSocioDemograficas->statusDesejaInformarIdentidadeGenero ], [ 'Crianças de 0 a 9 anos, com quem fica?', fn () => $this->inconsistencias->informacoesSocioDemograficas->responsavelPorCrianca ], [ 'Povo ou comunidade tradicional', fn () => $this->inconsistencias->informacoesSocioDemograficas->coPovoComunidadeTradicional ], ]); $this->ficha->informacao_sociodemografica = (object) compact('campos', 'inconsistencias'); $this->setSaidaCidadaoCadastro($cadastroIndividualTransportPath); } private function setSaidaCidadaoCadastro($cadastroIndividualTransportPath) { $path = "{$cadastroIndividualTransportPath}/saidaCidadaoCadastro"; $motivo = $this->getFirstNodeValue("{$path}/motivoSaidaCidadao") ? SaidaCidadao::where('codigo_esus', $this->getFirstNodeValue("{$path}/motivoSaidaCidadao"))->first() : null; $campos = (object) [ 'is_motivo_saida_obito' => ($motivo->id ?? null) === CadastroIndividualSaidaCidadao::OBITO, 'motivoSaidaCidadao' => $motivo->descricao ?? null, 'dataObito' => $this->getDateString($this->getFirstNodeValue("{$path}/dataObito")), 'numeroDO' => $this->getFirstNodeValue("{$path}/numeroDO"), ]; $inconsistencias = $this->getInconsistencias([ ['Motivo', fn () => $this->inconsistencias->saidaCidadaoCadastro->motivoSaidaCidadao], ['Data de óbito', fn () => $this->inconsistencias->saidaCidadaoCadastro->dataObito], ['Número da declaração de óbito', fn () => $this->inconsistencias->saidaCidadaoCadastro->numeroDO], ]); $this->ficha->informacao_sociodemografica->campos->saida_cidadao_cadastro = (object) compact('campos', 'inconsistencias'); } private function setInformacaoSocioeconomica($cadastroIndividualTransportPath) { $path = "{$cadastroIndividualTransportPath}/informacoesSocioEconomicas"; $campos = (object) [ 'alimentosAcabaramAntesTerDinheiroComprarMais' => $this->getSimNaoNaoInformado( $this->getFirstNodeValue("{$path}/alimentosAcabaramAntesTerDinheiroComprarMais")), 'comeuAlgunsAlimentosQueTinhaDinheiroAcabou' => $this->getSimNaoNaoInformado( $this->getFirstNodeValue("{$path}/comeuAlgunsAlimentosQueTinhaDinheiroAcabou")), ]; $inconsistencias = $this->getInconsistencias([ [ 'Nos últimos três meses, os alimentos acabaram antes que você tivesse dinheiro para comprar mais comida?', fn () => $this->inconsistencias->informacoesSocioEconomicas->alimentosAcabaramAntesTerDinheiroComprarMais ], [ 'Nos últimos três meses, você comeu apenas alguns alimentos que ainda tinha, porque o dinheiro acabou?', fn () => $this->inconsistencias->informacoesSocioEconomicas->comeuAlgunsAlimentosQueTinhaDinheiroAcabou ], ]); $this->ficha->informacao_socioeconomica = (object) compact('campos', 'inconsistencias'); } private function setRecusaCadastro($cadastroIndividualTransportPath) { $path = $cadastroIndividualTransportPath; $campos = (object) [ 'statusTermoRecusaCadastroIndividualAtencaoBasica' => DataUtil::getSimOuNao( DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTermoRecusaCadastroIndividualAtencaoBasica") ) ) ]; $inconsistencias = $this->getInconsistencias([ [ 'Usuário recusou o cadastro por meio do termo de Recusa do Cadastro', fn () => $this->inconsistencias->statusTermoRecusaCadastroIndividualAtencaoBasica ], ]); $this->ficha->recusa_cadastro = (object) compact('campos', 'inconsistencias'); } private function setCondicaoSaudeGeral($cadastroIndividualTransportPath) { $path = "{$cadastroIndividualTransportPath}/condicoesDeSaude"; $campos = (object) [ 'descricaoCausaInternacaoEm12Meses' => $this->getFirstNodeValue("{$path}/descricaoCausaInternacaoEm12Meses"), 'descricaoOutraCondicao1' => $this->getFirstNodeValue("{$path}/descricaoOutraCondicao1"), 'descricaoOutraCondicao2' => $this->getFirstNodeValue("{$path}/descricaoOutraCondicao2"), 'descricaoOutraCondicao3' => $this->getFirstNodeValue("{$path}/descricaoOutraCondicao3"), 'descricaoPlantasMedicinaisUsadas' => $this->getFirstNodeValue("{$path}/descricaoPlantasMedicinaisUsadas"), 'maternidadeDeReferencia' => $this->getFirstNodeValue("{$path}/maternidadeDeReferencia"), 'situacaoPeso' => $this->getFirstNodeValue("{$path}/situacaoPeso") ? Peso::where('codigo_esus', $this->getFirstNodeValue("{$path}/situacaoPeso"))->first()->descricao : null, 'statusEhDependenteAlcool' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusEhDependenteAlcool"))), 'statusEhDependenteOutrasDrogas' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusEhDependenteOutrasDrogas"))), 'statusEhFumante' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusEhFumante"))), 'statusEhGestante' => $this->inconsistenciaModel->cadastroIndividual->paciente->cidadao->sexo_id === Sexo::FEMININO ? DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusEhGestante"))) : 'Não se aplica', 'statusEstaAcamado' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusEstaAcamado"))), 'statusEstaDomiciliado' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusEstaDomiciliado"))), 'statusTemDiabetes' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTemDiabetes"))), 'statusTemDoencaRespiratoria' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTemDoencaRespiratoria"))), 'statusTemHanseniase' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTemHanseniase"))), 'statusTemHipertensaoArterial' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTemHipertensaoArterial"))), 'statusTemTeveCancer' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTemTeveCancer"))), 'statusTemTeveDoencasRins' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTemTeveDoencasRins"))), 'statusTemTuberculose' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTemTuberculose"))), 'statusTeveAvcDerrame' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTeveAvcDerrame"))), 'statusTeveDoencaCardiaca' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTeveDoencaCardiaca"))), 'statusTeveInfarto' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTeveInfarto"))), 'statusTeveInternadoEm12Meses' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTeveInternadoEm12Meses"))), 'statusUsaOutrasPraticasIntegrativasOuComplementares' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusUsaOutrasPraticasIntegrativasOuComplementares"))), 'statusUsaPlantaMedicinais' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusUsaPlantaMedicinais"))), 'statusDiagnosticoMental' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusDiagnosticoMental"))), ]; $doencasCardiacas = []; $doencasRespiratorias = []; $doencasRins = []; foreach ($this->domx->query("{$path}/doencaCardiaca") as $context) { $doencasCardiacas[] = DoencaCardiaca::where('codigo_esus', $context->nodeValue)->first()->descricao; } foreach ($this->domx->query("{$path}/doencaRespiratoria") as $context) { $doencasRespiratorias[] = DoencaRespiratoria::where('codigo_esus', $context->nodeValue)->first()->descricao; } foreach ($this->domx->query("{$path}/doencaRins") as $context) { $doencasRins[] = ProblemasRins::where('codigo_esus', $context->nodeValue)->first()->descricao; } $campos->doencasCardiacas = collect($doencasCardiacas)->join(', '); $campos->doencasRespiratorias = collect($doencasRespiratorias)->join(', '); $campos->doencasRins = collect($doencasRins)->join(', '); $inconsistencias = $this->getInconsistencias([ [ 'Motivo internação nos últimos 12 meses', fn () => $this->inconsistencias->condicoesDeSaude->descricaoCausaInternacaoEm12Meses ], [ 'Outra condição de saúde 1', fn () => $this->inconsistencias->condicoesDeSaude->descricaoOutraCondicao1 ], [ 'Outra condição de saúde 2', fn () => $this->inconsistencias->condicoesDeSaude->descricaoOutraCondicao2 ], [ 'Outra condição de saúde 3', fn () => $this->inconsistencias->condicoesDeSaude->descricaoOutraCondicao3 ], [ 'Quais plantas medicinais?', fn () => $this->inconsistencias->condicoesDeSaude->descricaoPlantasMedicinaisUsadas ], [ 'Quais doenças cardíacas?', fn () => $this->inconsistencias->condicoesDeSaude->doencaCardiaca ], [ 'Quais doenças respiratórias?', fn () => $this->inconsistencias->condicoesDeSaude->doencaRespiratoria ], [ 'Quais problemas nos rins?', fn () => $this->inconsistencias->condicoesDeSaude->doencaRins ], [ 'Qual é a maternidade de referência?', fn () => $this->inconsistencias->condicoesDeSaude->maternidadeDeReferencia ], [ 'Peso', fn () => $this->inconsistencias->condicoesDeSaude->situacaoPeso ], [ 'Usa álcool', fn () => $this->inconsistencias->condicoesDeSaude->statusEhDependenteAlcool ], [ 'Outras drogas', fn () => $this->inconsistencias->condicoesDeSaude->statusEhDependenteOutrasDrogas ], [ 'Fumante', fn () => $this->inconsistencias->condicoesDeSaude->statusEhFumante ], [ 'Gestante', fn () => $this->inconsistencias->condicoesDeSaude->statusEhGestante ], [ 'Está acamado?', fn () => $this->inconsistencias->condicoesDeSaude->statusEstaAcamado ], [ 'Está domiciliado?', fn () => $this->inconsistencias->condicoesDeSaude->statusEstaDomiciliado ], [ 'Diabetes', fn () => $this->inconsistencias->condicoesDeSaude->statusTemDiabetes ], [ 'Tem doença respiratória/no pulmão?', fn () => $this->inconsistencias->condicoesDeSaude->statusTemDoencaRespiratoria ], [ 'Está com hanseníase', fn () => $this->inconsistencias->condicoesDeSaude->statusTemHanseniase ], [ 'Hipertensão', fn () => $this->inconsistencias->condicoesDeSaude->statusTemHipertensaoArterial ], [ 'Tem ou teve câncer', fn () => $this->inconsistencias->condicoesDeSaude->statusTemTeveCancer ], [ 'Tem ou teve problemas nos rins?', fn () => $this->inconsistencias->condicoesDeSaude->statusTemTeveDoencasRins ], [ 'Está com tuberculose', fn () => $this->inconsistencias->condicoesDeSaude->statusTemTuberculose ], [ 'Teve AVC/Derrame', fn () => $this->inconsistencias->condicoesDeSaude->statusTeveAvcDerrame ], [ 'Teve doença cardíaca/do coração?', fn () => $this->inconsistencias->condicoesDeSaude->statusTeveDoencaCardiaca ], [ 'Teve infarto', fn () => $this->inconsistencias->condicoesDeSaude->statusTeveInfarto ], [ 'Teve internação nos últimos 12 meses?', fn () => $this->inconsistencias->condicoesDeSaude->statusTeveInternadoEm12Meses ], [ 'Usa práticas integrativas e complementares?', fn () => $this->inconsistencias->condicoesDeSaude->statusUsaOutrasPraticasIntegrativasOuComplementares ], [ 'Usa plantas medicinais?', fn () => $this->inconsistencias->condicoesDeSaude->statusUsaPlantaMedicinais ], [ 'Fez ou faz tratamento psiquiátrico ou teve internação por problema de saúde mental?', fn () => $this->inconsistencias->condicoesDeSaude->statusDiagnosticoMental ], ]); $this->ficha->condicao_saude_geral = (object) compact('campos', 'inconsistencias'); } private function setSituacaoRua($cadastroIndividualTransportPath) { $path = "{$cadastroIndividualTransportPath}/emSituacaoDeRua"; $campos = (object) [ 'grauParentescoFamiliarFrequentado' => $this->getFirstNodeValue("{$path}/grauParentescoFamiliarFrequentado"), 'outraInstituicaoQueAcompanha' => $this->getFirstNodeValue("{$path}/outraInstituicaoQueAcompanha"), 'quantidadeAlimentacoesAoDiaSituacaoRua' => $this->getFirstNodeValue("{$path}/quantidadeAlimentacoesAoDiaSituacaoRua") ? AlimentacaoDiaria::where( 'codigo_esus', $this->getFirstNodeValue("{$path}/quantidadeAlimentacoesAoDiaSituacaoRua") )->first()->descricao : null, 'statusAcompanhadoPorOutraInstituicao' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusAcompanhadoPorOutraInstituicao"))), 'statusPossuiReferenciaFamiliar' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusPossuiReferenciaFamiliar"))), 'statusRecebeBeneficio' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusRecebeBeneficio"))), 'em_situacao_rua' => !is_null($this->getFirstNodeValue("{$path}/statusSituacaoRua")), 'statusSituacaoRua' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusSituacaoRua"))), 'statusTemAcessoHigienePessoalSituacaoRua' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusTemAcessoHigienePessoalSituacaoRua"))), 'statusVisitaFamiliarFrequentemente' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue("{$path}/statusVisitaFamiliarFrequentemente"))), 'tempoSituacaoRua' => $this->getFirstNodeValue("{$path}/tempoSituacaoRua") ? SituacaoRua::where('codigo_esus', $this->getFirstNodeValue("{$path}/tempoSituacaoRua"))->first()->descricao : null, ]; $higienePessoal = []; $origemAlimentos = []; foreach ($this->domx->query("{$path}/higienePessoalSituacaoRua") as $context) { $higienePessoal[] = HigienePessoal::where('codigo_esus', $context->nodeValue)->first()->descricao; } foreach ($this->domx->query("{$path}/origemAlimentoSituacaoRua") as $context) { $origemAlimentos[] = OrigemAlimentacao::where('codigo_esus', $context->nodeValue)->first()->descricao; } $campos->higienePessoal = collect($higienePessoal)->join(', '); $campos->origemAlimentos = collect($origemAlimentos)->join(', '); $inconsistencias = $this->getInconsistencias([ ['Parentesco', fn () => $this->inconsistencias->emSituacaoDeRua->grauParentescoFamiliarFrequentado], ['Higiene pessoal', fn () => $this->inconsistencias->emSituacaoDeRua->higienePessoalSituacaoRua], ['Origem da alimentação', fn () => $this->inconsistencias->emSituacaoDeRua->origemAlimentoSituacaoRua], ['Outra instituição', fn () => $this->inconsistencias->emSituacaoDeRua->outraInstituicaoQueAcompanha], ['Alimentação diária', fn () => $this->inconsistencias->emSituacaoDeRua->quantidadeAlimentacoesAoDiaSituacaoRua], ['Acompanhado por outra instituição?', fn () => $this->inconsistencias->emSituacaoDeRua->statusAcompanhadoPorOutraInstituicao], ['Possui referência familiar?', fn () => $this->inconsistencias->emSituacaoDeRua->statusPossuiReferenciaFamiliar], ['Recebe algum benefício?', fn () => $this->inconsistencias->emSituacaoDeRua->statusRecebeBeneficio], ['Em situação de rua?', fn () => $this->inconsistencias->emSituacaoDeRua->statusSituacaoRua], ['Acesso a higiene pessoal?', fn () => $this->inconsistencias->emSituacaoDeRua->statusTemAcessoHigienePessoalSituacaoRua], ['Visita algum familiar com frequência?', fn () => $this->inconsistencias->emSituacaoDeRua->statusVisitaFamiliarFrequentemente], ['Tempo em situação de rua', fn () => $this->inconsistencias->emSituacaoDeRua->tempoSituacaoRua], ]); $this->ficha->situacao_rua = (object) compact('campos', 'inconsistencias'); } }