domx->registerNamespace('ns4', 'http://esus.ufsc.br/fichavacinacaomaster'); } public function __invoke() { $path = '//ns4:fichaVacinacaoMasterTransport'; $this->setCadastro($path); $this->setVacinacoes($path); return $this->ficha; } private function setCadastro($fichaVacinacaoMasterTransportPath) { $headerTransportPath = "{$fichaVacinacaoMasterTransportPath}/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->fichaVacinacao->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 da aplicação', 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->cadastro = (object) compact('campos', 'inconsistencias'); } private function setVacinacoes($fichaVacinacaoMasterTransportPath) { $path = "{$fichaVacinacaoMasterTransportPath}/vacinacoes"; $vacinacoes = []; foreach ($this->domx->query($path) as $i => $context) { $posicao = $i + 1; $vacinacaoModel = $this->inconsistenciaModel->fichaVacinacaoPacientes() ->wherePivot('posicao', $posicao) ->first(); $inconsistencias = $this->inconsistencias->vacinacoes->{$posicao} ?? []; $vacinacao = (object) [ 'campos' => (object) [ 'turno' => $this->getFirstNodeValue('turno', $context) ? Turno::find($this->getFirstNodeValue('turno', $context))->nome : null, 'numProntuario' => $this->getFirstNodeValue('numProntuario', $context), 'nomeCidadao' => $vacinacaoModel->paciente->cidadao->nome, 'cnsCidadao' => MaskUtil::getCnsMasked($this->getFirstNodeValue('cnsCidadao', $context)), 'cpfCidadao' => MaskUtil::getCpfMasked($this->getFirstNodeValue('cpfCidadao', $context)), 'dtNascimento' => $this->getDateString($this->getFirstNodeValue('dtNascimento', $context)), 'sexo' => $this->getSexo($this->getFirstNodeValue('sexo', $context)), 'localAtendimento' => $this->getFirstNodeValue('localAtendimento', $context) ? LocalAtendimento::find($this->getFirstNodeValue('localAtendimento', $context))->descricao : null, 'viajante' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue('viajante', $context))), 'comunicanteHanseniase' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue('comunicanteHanseniase', $context))), 'gestante' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue('gestante', $context))), 'puerpera' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue('puerpera', $context))), 'dataHoraInicialAtendimento' => $this->getDateTimeString( $this->getFirstNodeValue('dataHoraInicialAtendimento', $context)), 'dataHoraFinalAtendimento' => $this->getDateTimeString( $this->getFirstNodeValue('dataHoraFinalAtendimento', $context)), ], 'inconsistencias' => $this->getInconsistencias([ ['Turno', fn () => $inconsistencias->turno], ['Prontuário', fn () => $inconsistencias->numProntuario], ['CNS', fn () => $inconsistencias->cnsCidadao], ['CPF', fn () => $inconsistencias->cpfCidadao], ['Data de nascimento', fn () => $inconsistencias->dtNascimento], ['Sexo', fn () => $inconsistencias->sexo], ['Local de atendimento', fn () => $inconsistencias->localAtendimento], ['Viajante', fn () => $inconsistencias->viajante], ['Comunicante hanseníase', fn () => $inconsistencias->comunicanteHanseniase], ['Gestante', fn () => $inconsistencias->gestante], ['Puérpera', fn () => $inconsistencias->puerpera], ['Data/hora inicial do atendimento', fn () => $inconsistencias->dataHoraInicialAtendimento], ['Data/hora final do atendimento', fn () => $inconsistencias->dataHoraFinalAtendimento], ]), ]; $this->setVacinas($vacinacao, $context, $inconsistencias); $vacinacoes[] = $vacinacao; } $this->ficha->vacinacoes = (object) [ 'lista' => $vacinacoes, 'inconsistencias' => $this->getInconsistencias([ fn () => $this->inconsistencias->vacinacoes, ]), ]; } private function setVacinas($vacinacao, $atendimentoContext, $inconsistencias) { $vacinas = []; foreach ($this->domx->query('vacinas', $atendimentoContext) as $i => $context) { $inconsistencias = $inconsistencias->vacinas->{$i + 1} ?? []; $vacinas[] = [ 'campos' => (object) [ 'imunobiologico' => $this->getFirstNodeValue('imunobiologico', $context) ? $this->getDescricaoVacina( Vacina::where('codigo', $this->getFirstNodeValue('imunobiologico', $context))->first()) : null, 'estrategiaVacinacao' => $this->getFirstNodeValue('estrategiaVacinacao', $context) ? $this->getEstrategia($this->getFirstNodeValue('estrategiaVacinacao', $context)) : null, 'dose' => $this->getFirstNodeValue('dose', $context) ? Dose::where('codigo_esus', $this->getFirstNodeValue('dose', $context))->first()->nome : null, 'lote' => $this->getFirstNodeValue('lote', $context), 'fabricante' => $this->getFirstNodeValue('fabricante', $context), 'grupoAtendimento' => $this->getFirstNodeValue('grupoAtendimento', $context) ? GrupoAtendimento::where('codigo_esus', $this->getFirstNodeValue('grupoAtendimento', $context)) ->first()->nome : null, 'stRegistroAnterior' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue('stRegistroAnterior', $context))), 'dataRegistroAnterior' => $this->getDateString($this->getFirstNodeValue('dataRegistroAnterior', $context)), 'stAplicadoExterior' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean( $this->getFirstNodeValue('stAplicadoExterior', $context))), ], 'inconsistencias' => $this->getInconsistencias([ ['Imunobiológico', fn () => $inconsistencias->imunobiologico], ['Estratégia', fn () => $inconsistencias->estrategiaVacinacao], ['Dose', fn () => $inconsistencias->dose], ['Lote', fn () => $inconsistencias->lote], ['Fabricante', fn () => $inconsistencias->fabricante], ['Grupo de atendimento', fn () => $inconsistencias->grupoAtendimento], ['Registro Anterior', fn () => $inconsistencias->stRegistroAnterior], ['Data do registro anterior', fn () => $inconsistencias->dataRegistroAnterior], ['Aplicado exterior', fn () => $inconsistencias->stAplicadoExterior], ]), ]; } $vacinacao->campos->vacinas = (object) [ 'lista' => $vacinas, 'inconsistencias' => $this->getInconsistencias([ fn () => $inconsistencias->vacinas, ]), ]; } private function getDescricaoVacina($vacina) { switch (Parametrizacao::first()->parametrizacao_descricao_vacina_id ?? null) { case ParametrizacaoDescricaoVacina::DESCRICAO: { return $vacina->nome; } case ParametrizacaoDescricaoVacina::DESCRICAO_ABREVIADA: { return $vacina->abreviacao; } case ParametrizacaoDescricaoVacina::SIGLA: { return $vacina->sigla; } case ParametrizacaoDescricaoVacina::SIGLA_DESCRICAO: { return "$vacina->sigla - $vacina->nome"; } case ParametrizacaoDescricaoVacina::SIGLA_DESCRICAO_ABREVIADA: { return "$vacina->sigla - $vacina->abreviacao"; } case ParametrizacaoDescricaoVacina::DESCRICAO_ABREVIADA_DESCRICAO: { return "$vacina->abreviacao - $vacina->nome"; } case ParametrizacaoDescricaoVacina::SIGLA_DESCRICAO_ABREVIADA_DESCRICAO: { return "$vacina->sigla - $vacina->abreviacao - $vacina->nome"; } default: { return $vacina->nome; } } } private function getEstrategia($exportacaoEstrategiaId) { $estrategiaId = null; switch ($exportacaoEstrategiaId) { case EstrategiaVacinacao::PESQUISA: { $exportacaoEstrategiaId = Estrategia::PESQUISA; break; } case EstrategiaVacinacao::PRE_EXPOSICAO: { $exportacaoEstrategiaId = Estrategia::PRE_EXPOSICAO; break; } case EstrategiaVacinacao::POS_EXPOSICAO: { $exportacaoEstrategiaId = Estrategia::POS_EXPOSICAO; break; } case EstrategiaVacinacao::REEXPOSICAO: { $exportacaoEstrategiaId = Estrategia::REEXPOSICAO; break; } default: { $estrategiaId = $exportacaoEstrategiaId; } } return ImunizacaoEstrategia::find($estrategiaId)->nome; } }