645 lines
36 KiB
PHP
645 lines
36 KiB
PHP
<?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');
|
|
}
|
|
}
|