domx->registerNamespace('ns4', 'http://esus.ufsc.br/fichaconsumoalimentar'); } public function __invoke() { $path = '//ns4:fichaConsumoAlimentarTransport'; $this->setPaciente($path); $this->setProfissional($path); $this->setQuestionario($path); return $this->ficha; } private function setPaciente($fichaConsumoAlimentarTransportPath) { $path = $fichaConsumoAlimentarTransportPath; $campos = (object) [ 'nomeCidadao' => $this->inconsistenciaModel->consumoAlimentar->paciente->cidadao->nome, 'cnsCidadao' => MaskUtil::getCnsMasked($this->getFirstNodeValue("{$path}/cnsCidadao")), 'cpfCidadao' => MaskUtil::getCpfMasked($this->getFirstNodeValue("{$path}/cpfCidadao")), 'dataNascimento' => $this->getDateString($this->getFirstNodeValue("{$path}/dataNascimento")), 'sexo' => $this->getSexo($this->getFirstNodeValue("{$path}/sexo")), ]; $inconsistencias = $this->getInconsistencias([ ['CNS', fn () => $this->inconsistencias->cnsCidadao], ['CPF', fn () => $this->inconsistencias->cpfCidadao], ['Data de nascimento', fn () => $this->inconsistencias->dataNascimento], ['Sexo', fn () => $this->inconsistencias->sexo], ]); $this->ficha->paciente = (object) compact('campos', 'inconsistencias'); } private function setProfissional($fichaConsumoAlimentarTransportPath) { $headerTransportPath = "{$fichaConsumoAlimentarTransportPath}/headerTransport"; $ocupacao = $this->getFirstNodeValue("{$headerTransportPath}/cboCodigo_2002") ? Ocupacao::where('codigo', $this->getFirstNodeValue("{$headerTransportPath}/cboCodigo_2002"))->first() : null; $campos = (object) [ 'localAtendimento' => $this->getFirstNodeValue("{$fichaConsumoAlimentarTransportPath}/localAtendimento") ? LocalAtendimento::find($this->getFirstNodeValue("{$fichaConsumoAlimentarTransportPath}/localAtendimento"))->descricao : null, 'profissionalNome' => $this->inconsistenciaModel->consumoAlimentar->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"), 'dataAtendimento' => $this->getDateString($this->getFirstNodeValue("{$headerTransportPath}/dataAtendimento")), 'codigoIbgeMunicipio' => $this->getFirstNodeValue("{$headerTransportPath}/codigoIbgeMunicipio"), ]; $inconsistencias = $this->getInconsistencias([ ['Local de atendimento', fn () => $this->inconsistencias->localAtendimento], ['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], ['Data', fn () => $this->inconsistencias->headerTransport->dataAtendimento], ['IBGE', fn () => $this->inconsistencias->headerTransport->codigoIbgeMunicipio], ]); $this->ficha->profissional = (object) compact('campos', 'inconsistencias'); } private function setQuestionario($fichaConsumoAlimentarTransportPath) { $path = $fichaConsumoAlimentarTransportPath; $inconsistenciaQuestionario = null; $titulo = null; $tituloConsumiu = null; if ($this->domx->query("{$path}/perguntasQuestionarioCriancasDeSeisVinteTresMeses")->length > 0) { $path = "{$path}/perguntasQuestionarioCriancasDeSeisVinteTresMeses"; $titulo = 'Crianças de 6 a 23 meses'; $tituloConsumiu = 'Ontem a criança consumiu'; $inconsistenciaQuestionario = fn () => $this->inconsistencias->perguntasQuestionarioCriancasDeSeisVinteTresMeses; } else if ($this->domx->query("{$path}/perguntasQuestionarioCriancasComMaisDoisAnos")->length > 0) { $path = "{$path}/perguntasQuestionarioCriancasComMaisDoisAnos"; $titulo = 'Crianças com 2 anos ou mais, adolescentes, adultos, gestantes e idosos'; $tituloConsumiu = 'Ontem você consumiu'; $inconsistenciaQuestionario = fn () => $this->inconsistencias->perguntasQuestionarioCriancasComMaisDoisAnos; } else if ($this->domx->query("{$path}/perguntasQuestionarioCriancasMenoresSeisMeses")->length > 0) { $path = "{$path}/perguntasQuestionarioCriancasMenoresSeisMeses"; $titulo = 'Crianças menores de 6 meses'; $tituloConsumiu = 'Ontem a criança consumiu'; $inconsistenciaQuestionario = fn () => $this->inconsistencias->perguntasQuestionarioCriancasMenoresSeisMeses; } $perguntas = []; $getResposta = function ($descricaoEsus) { return MarcadorConsumoAlimentarResposta::where('descricao_esus', $descricaoEsus) ->first() ->descricao; }; foreach ($this->domx->query($path) as $context) { $perguntaModel = MarcadorConsumoAlimentarPergunta::where( 'descricao_esus', $this->getFirstNodeValue('pergunta', $context) )->first(); $pergunta = (object) [ 'pergunta' => $perguntaModel->descricao, 'area_ontem_consumiu' => $perguntaModel->area_ontem_consumiu, ]; if ($resposta = $this->getFirstNodeValue('respostaUnicaEscolha', $context)) { $pergunta->respostas = [$getResposta($resposta)]; } else { $pergunta->respostas = []; foreach ($this->domx->query('respostaMultiplaEscolha', $context) as $context) { $pergunta->respostas[] = $getResposta($context->nodeValue); } } $perguntas[] = $pergunta; } $this->ficha->questionario = (object) [ 'titulo' => $titulo, 'titulo_consumiu' => $tituloConsumiu, 'lista' => $perguntas, 'inconsistencias' => $this->getInconsistencias([ $inconsistenciaQuestionario, ]), ]; } }