init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,644 @@
<?php
namespace App\Services\Integracao\Esus\GerenciamentoEnvio\Ficha;
use App\Enums\AtencaoBasica\CadastroIndividual\SaidaCidadao as CadastroIndividualSaidaCidadao;
use App\Enums\Cadastro\SujeitoAtencao\Sexo;
use App\Models\AtencaoBasica\CadastroIndividual\AcompanhamentoInfantil;
use App\Models\AtencaoBasica\CadastroIndividual\AlimentacaoDiaria;
use App\Models\AtencaoBasica\CadastroIndividual\ComunidadeTradicional;
use App\Models\AtencaoBasica\CadastroIndividual\Curso;
use App\Models\AtencaoBasica\CadastroIndividual\DoencaCardiaca;
use App\Models\AtencaoBasica\CadastroIndividual\DoencaRespiratoria;
use App\Models\AtencaoBasica\CadastroIndividual\HigienePessoal;
use App\Models\AtencaoBasica\CadastroIndividual\OrientacaoSexual;
use App\Models\AtencaoBasica\CadastroIndividual\OrigemAlimentacao;
use App\Models\AtencaoBasica\CadastroIndividual\Parentesco;
use App\Models\AtencaoBasica\CadastroIndividual\Peso;
use App\Models\AtencaoBasica\CadastroIndividual\ProblemasRins;
use App\Models\AtencaoBasica\CadastroIndividual\SaidaCidadao;
use App\Models\AtencaoBasica\CadastroIndividual\SituacaoMercadoTrabalho;
use App\Models\AtencaoBasica\CadastroIndividual\SituacaoRua;
use App\Models\Cadastro\SujeitoAtencao\DeficienciaBase;
use App\Models\Cadastro\SujeitoAtencao\EtniaIndigena;
use App\Models\Cadastro\SujeitoAtencao\IdentidadeGenero;
use App\Models\Cadastro\SujeitoAtencao\Nacionalidade;
use App\Models\Cadastro\SujeitoAtencao\RacaCor;
use App\Models\Intranet\Pais;
use App\Models\Sigtap\Ocupacao;
use App\Utils\DataUtil;
use App\Utils\MaskUtil;
class FichaCadastroIndividual extends Ficha
{
public function __construct($xmlEnvio, $inconsistenciaModel)
{
parent::__construct($xmlEnvio, $inconsistenciaModel);
$this->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');
}
}