This commit is contained in:
@@ -0,0 +1,550 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Integracao\Esus\GerenciamentoEnvio\Ficha;
|
||||
|
||||
use App\Enums\Cadastro\SujeitoAtencao\Sexo;
|
||||
use App\Models\Ambulatorio\GlicemiaCapilarMomentoColeta;
|
||||
use App\Models\Ambulatorio\ProblemaCondicaoSituacao;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\AleitamentoMaterno;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\CondicaoAvaliada;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\Conduta;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\DoencaTransmissivel;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\Encaminhamento;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\ExameSolicitadoAvaliado;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\ModalidadeAtencaoDomiciliar;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\Nasf;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\RacionalidadeSaude;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\Rastreamento;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\TipoAtendimento;
|
||||
use App\Models\AtencaoBasica\MarcadorConsumoAlimentar\LocalAtendimento;
|
||||
use App\Models\Geral\Ciap;
|
||||
use App\Models\Geral\Turno;
|
||||
use App\Models\Parametrizacao\Exame\Exame;
|
||||
use App\Models\Sigtap\Cid;
|
||||
use App\Models\Sigtap\Ocupacao;
|
||||
use App\Utils\DataUtil;
|
||||
use App\Utils\MaskUtil;
|
||||
use stdClass;
|
||||
|
||||
class FichaAtendimentoIndividual extends Ficha
|
||||
{
|
||||
public function __construct($xmlEnvio, $inconsistenciaModel)
|
||||
{
|
||||
parent::__construct($xmlEnvio, $inconsistenciaModel);
|
||||
|
||||
$this->domx->registerNamespace('ns4', 'http://esus.ufsc.br/fichaatendimentoindividualmaster');
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
$path = '//ns4:fichaAtendimentoIndividualMasterTransport';
|
||||
|
||||
$this->setProfissionalResponsavel($path);
|
||||
$this->setProfissionalAuxiliar($path);
|
||||
$this->setAtendimentos($path);
|
||||
|
||||
return $this->ficha;
|
||||
}
|
||||
|
||||
private function setProfissionalResponsavel($fichaAtendimentoIndividualMasterTransportPath)
|
||||
{
|
||||
$headerTransportPath = "{$fichaAtendimentoIndividualMasterTransportPath}/headerTransport";
|
||||
$lotacaoFormPrincipalPath = "{$headerTransportPath}/lotacaoFormPrincipal";
|
||||
|
||||
$ocupacao = $this->getFirstNodeValue("{$lotacaoFormPrincipalPath}/cboCodigo_2002")
|
||||
? Ocupacao::where('codigo', $this->getFirstNodeValue("{$lotacaoFormPrincipalPath}/cboCodigo_2002"))->first()
|
||||
: null;
|
||||
|
||||
$campos = (object) [
|
||||
'dataAtendimento' => $this->getDateString($this->getFirstNodeValue("{$headerTransportPath}/dataAtendimento")),
|
||||
'codigoIbgeMunicipio' => $this->getFirstNodeValue("{$headerTransportPath}/codigoIbgeMunicipio"),
|
||||
'profissionalNome' => $this->inconsistenciaModel->usuario->cidadao->nome,
|
||||
'profissionalCNS' => MaskUtil::getCnsMasked($this->getFirstNodeValue("{$lotacaoFormPrincipalPath}/profissionalCNS")),
|
||||
'cboCodigo_2002' => $ocupacao ? "{$ocupacao->codigo} - {$ocupacao->nome}" : null,
|
||||
'cnes' => $this->getFirstNodeValue("{$lotacaoFormPrincipalPath}/cnes"),
|
||||
'ine' => $this->getFirstNodeValue("{$lotacaoFormPrincipalPath}/ine"),
|
||||
];
|
||||
|
||||
$inconsistencias = $this->getInconsistencias([
|
||||
['Data', fn () => $this->inconsistencias->headerTransport->dataAtendimento],
|
||||
['IBGE', fn () => $this->inconsistencias->headerTransport->codigoIbgeMunicipio],
|
||||
['CNS', fn () => $this->inconsistencias->headerTransport->lotacaoFormPrincipal->profissionalCNS],
|
||||
['CBO', fn () => $this->inconsistencias->headerTransport->lotacaoFormPrincipal->cboCodigo_2002],
|
||||
['CNES', fn () => $this->inconsistencias->headerTransport->lotacaoFormPrincipal->cnes],
|
||||
['INE', fn () => $this->inconsistencias->headerTransport->lotacaoFormPrincipal->ine],
|
||||
]);
|
||||
|
||||
$this->ficha->profissional_responsavel = (object) compact('campos', 'inconsistencias');
|
||||
}
|
||||
|
||||
private function setProfissionalAuxiliar($fichaAtendimentoIndividualMasterTransportPath)
|
||||
{
|
||||
$headerTransportPath = "{$fichaAtendimentoIndividualMasterTransportPath}/headerTransport";
|
||||
$lotacaoFormAtendimentoCompartilhadoPath = "{$headerTransportPath}/lotacaoFormAtendimentoCompartilhado";
|
||||
|
||||
$ocupacao = $this->getFirstNodeValue("{$lotacaoFormAtendimentoCompartilhadoPath}/cboCodigo_2002")
|
||||
? Ocupacao::where('codigo', $this->getFirstNodeValue("{$lotacaoFormAtendimentoCompartilhadoPath}/cboCodigo_2002"))->first()
|
||||
: null;
|
||||
|
||||
$cns = $this->getFirstNodeValue("{$lotacaoFormAtendimentoCompartilhadoPath}/profissionalCNS");
|
||||
|
||||
$campos = (object) [
|
||||
'profissionalNome' => $this->inconsistenciaModel->atendimentosIndividuais()
|
||||
->whereHas('usuarioAuxiliar', fn ($q) => $q
|
||||
->whereHas('cidadao', fn ($q) => $q->where('cns', $cns))
|
||||
)
|
||||
->first()->usuarioAuxiliar->cidadao->nome ?? null,
|
||||
'profissionalCNS' => MaskUtil::getCnsMasked($cns),
|
||||
'cboCodigo_2002' => $ocupacao ? "{$ocupacao->codigo} - {$ocupacao->nome}" : null,
|
||||
'cnes' => $this->getFirstNodeValue("{$lotacaoFormAtendimentoCompartilhadoPath}/cnes"),
|
||||
'ine' => $this->getFirstNodeValue("{$lotacaoFormAtendimentoCompartilhadoPath}/ine"),
|
||||
];
|
||||
|
||||
$inconsistencias = $this->getInconsistencias([
|
||||
['CNS', fn () => $this->inconsistencias->headerTransport->lotacaoFormAtendimentoCompartilhado->profissionalCNS],
|
||||
['CBO', fn () => $this->inconsistencias->headerTransport->lotacaoFormAtendimentoCompartilhado->cboCodigo_2002],
|
||||
['CNES', fn () => $this->inconsistencias->headerTransport->lotacaoFormAtendimentoCompartilhado->cnes],
|
||||
['INE', fn () => $this->inconsistencias->headerTransport->lotacaoFormAtendimentoCompartilhado->ine],
|
||||
]);
|
||||
|
||||
$this->ficha->profissional_auxiliar = (object) compact('campos', 'inconsistencias');
|
||||
}
|
||||
|
||||
private function setAtendimentos($fichaAtendimentoIndividualMasterTransportPath)
|
||||
{
|
||||
$path = "{$fichaAtendimentoIndividualMasterTransportPath}/atendimentosIndividuais";
|
||||
|
||||
$atendimentos = [];
|
||||
|
||||
foreach ($this->domx->query($path) as $i => $context) {
|
||||
|
||||
$posicao = $i + 1;
|
||||
|
||||
$atendimentoIndividualModel = $this->inconsistenciaModel->atendimentosIndividuais()
|
||||
->wherePivot('posicao', $posicao)
|
||||
->first();
|
||||
|
||||
$inconsistencias = $this->inconsistencias->atendimentosIndividuais->{$posicao} ?? [];
|
||||
|
||||
$atendimento = new stdClass;
|
||||
|
||||
$this->setPaciente($atendimento, $context, $atendimentoIndividualModel, $inconsistencias);
|
||||
$this->setAtendimento($atendimento, $context, $inconsistencias);
|
||||
$this->setMedicoes($atendimento, $context, $inconsistencias);
|
||||
$this->setGestante($atendimento, $context, $inconsistencias);
|
||||
$this->setProblemasCondicoes($atendimento, $context, $inconsistencias);
|
||||
$this->setExames($atendimento, $context, $inconsistencias);
|
||||
$this->setObservacao($atendimento, $context, $inconsistencias);
|
||||
$this->setEmulti($atendimento, $context, $inconsistencias);
|
||||
$this->setConduta($atendimento, $context, $inconsistencias);
|
||||
$this->setSolicitacoesOci($atendimento, $context, $inconsistencias);
|
||||
$this->setIvcf($atendimento, $context, $inconsistencias);
|
||||
|
||||
$atendimentos[] = $atendimento;
|
||||
}
|
||||
|
||||
$this->ficha->atendimentos = (object) [
|
||||
'lista' => $atendimentos,
|
||||
'inconsistencias' => $this->getInconsistencias([
|
||||
fn () => $this->inconsistencias->atendimentosIndividuais,
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
private function setPaciente($atendimento, $atendimentoIndividualContext, $atendimentoIndividualModel, $inconsistencias)
|
||||
{
|
||||
$campos = (object) [
|
||||
'is_sexo_feminino' => $atendimentoIndividualModel->paciente->cidadao->sexo_id === Sexo::FEMININO,
|
||||
'nomeCidadao' => $atendimentoIndividualModel->paciente->cidadao->nome,
|
||||
'numeroProntuario' => $this->getFirstNodeValue('numeroProntuario', $atendimentoIndividualContext),
|
||||
'cnsCidadao' => MaskUtil::getCnsMasked($this->getFirstNodeValue('cnsCidadao', $atendimentoIndividualContext)),
|
||||
'cpfCidadao' => MaskUtil::getCpfMasked($this->getFirstNodeValue('cpfCidadao', $atendimentoIndividualContext)),
|
||||
'dataNascimento' => $this->getDateString($this->getFirstNodeValue('dataNascimento', $atendimentoIndividualContext)),
|
||||
'sexo' => $this->getSexo($this->getFirstNodeValue('sexo', $atendimentoIndividualContext)),
|
||||
];
|
||||
|
||||
$inconsistencias = $this->getInconsistencias([
|
||||
['Prontuário', fn () => $inconsistencias->numeroProntuario],
|
||||
['CNS', fn () => $inconsistencias->cnsCidadao],
|
||||
['CPF', fn () => $inconsistencias->cpfCidadao],
|
||||
['Data de nascimento', fn () => $inconsistencias->dataNascimento],
|
||||
['Sexo', fn () => $inconsistencias->sexo],
|
||||
]);
|
||||
|
||||
$atendimento->paciente = (object) compact('campos', 'inconsistencias');
|
||||
}
|
||||
|
||||
private function setAtendimento($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$campos = (object) [
|
||||
'turno' => $this->getFirstNodeValue('turno', $atendimentoIndividualContext)
|
||||
? Turno::find($this->getFirstNodeValue('turno', $atendimentoIndividualContext))->nome
|
||||
: null,
|
||||
'localDeAtendimento' => $this->getFirstNodeValue('localDeAtendimento', $atendimentoIndividualContext)
|
||||
? LocalAtendimento::find($this->getFirstNodeValue('localDeAtendimento', $atendimentoIndividualContext))->descricao
|
||||
: null,
|
||||
'tipoAtendimento' => $this->getFirstNodeValue('tipoAtendimento', $atendimentoIndividualContext)
|
||||
? TipoAtendimento::where(
|
||||
'codigo_esus',
|
||||
$this->getFirstNodeValue('tipoAtendimento', $atendimentoIndividualContext)
|
||||
)->first()->descricao
|
||||
: null,
|
||||
'vacinaEmDia' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean(
|
||||
$this->getFirstNodeValue('vacinaEmDia', $atendimentoIndividualContext))),
|
||||
'atencaoDomiciliarModalidade' => $this->getFirstNodeValue('atencaoDomiciliarModalidade', $atendimentoIndividualContext)
|
||||
? ModalidadeAtencaoDomiciliar::where(
|
||||
'codigo_esus',
|
||||
$this->getFirstNodeValue('atencaoDomiciliarModalidade', $atendimentoIndividualContext)
|
||||
)->first()->descricao
|
||||
: null,
|
||||
'aleitamentoMaterno' => $this->getFirstNodeValue('aleitamentoMaterno', $atendimentoIndividualContext)
|
||||
? AleitamentoMaterno::where(
|
||||
'codigo_esus',
|
||||
$this->getFirstNodeValue('aleitamentoMaterno', $atendimentoIndividualContext)
|
||||
)->first()->descricao
|
||||
: null,
|
||||
'racionalidadeSaude' => $this->getFirstNodeValue('racionalidadeSaude', $atendimentoIndividualContext)
|
||||
? RacionalidadeSaude::where(
|
||||
'codigo_esus',
|
||||
$this->getFirstNodeValue('racionalidadeSaude', $atendimentoIndividualContext)
|
||||
)->first()->descricao
|
||||
: null,
|
||||
'dataHoraInicialAtendimento' => $this->getDateTimeString(
|
||||
$this->getFirstNodeValue('dataHoraInicialAtendimento', $atendimentoIndividualContext)),
|
||||
'dataHoraFinalAtendimento' => $this->getDateTimeString(
|
||||
$this->getFirstNodeValue('dataHoraFinalAtendimento', $atendimentoIndividualContext)),
|
||||
];
|
||||
|
||||
$inconsistencias = $this->getInconsistencias([
|
||||
['Turno', fn () => $inconsistencias->turno],
|
||||
['Local de atendimento', fn () => $inconsistencias->localAtendimento],
|
||||
['Tipo de atendimento', fn () => $inconsistencias->tipoAtendimento],
|
||||
['Vacinação em dia', fn () => $inconsistencias->vacinaEmDia],
|
||||
['Atenção domiciliar', fn () => $inconsistencias->atencaoDomiciliarModalidade],
|
||||
['Criança - Aleitamento materno', fn () => $inconsistencias->aleitamentoMaterno],
|
||||
['Racionalidade em saúde (Exceto alopatia / convencional)', fn () => $inconsistencias->racionalidadeSaude],
|
||||
['Data/hora inicial do atendimento', fn () => $inconsistencias->dataHoraInicialAtendimento],
|
||||
['Data/hora final do atendimento', fn () => $inconsistencias->dataHoraFinalAtendimento],
|
||||
]);
|
||||
|
||||
$atendimento->atendimento = (object) compact('campos', 'inconsistencias');
|
||||
}
|
||||
|
||||
private function setMedicoes($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$medicoes = $this->domx->query('medicoes', $atendimentoIndividualContext);
|
||||
$medicoesContext = $medicoes->length > 0 ? $medicoes[0] : null;
|
||||
|
||||
$campos = (object) [
|
||||
'circunferenciaAbdominal' => $this->getFirstNodeValue('circunferenciaAbdominal', $medicoesContext),
|
||||
'perimetroPanturrilha' => $this->getFirstNodeValue('perimetroPanturrilha', $medicoesContext),
|
||||
'pressaoArterial' => trim($this->getFirstNodeValue('pressaoArterialSistolica', $medicoesContext)
|
||||
. '/' . $this->getFirstNodeValue('pressaoArterialDiastolica', $medicoesContext), '/'),
|
||||
'frequenciaRespiratoria' => $this->getFirstNodeValue('frequenciaRespiratoria', $medicoesContext),
|
||||
'frequenciaCardiaca' => $this->getFirstNodeValue('frequenciaCardiaca', $medicoesContext),
|
||||
'temperatura' => $this->getFirstNodeValue('temperatura', $medicoesContext),
|
||||
'saturacaoO2' => $this->getFirstNodeValue('saturacaoO2', $medicoesContext),
|
||||
'glicemiaCapilar' => $this->getFirstNodeValue('glicemiaCapilar', $medicoesContext),
|
||||
'tipoGlicemiaCapilar' => !is_null($this->getFirstNodeValue('tipoGlicemiaCapilar', $medicoesContext))
|
||||
? GlicemiaCapilarMomentoColeta::where(
|
||||
'codigo_esus',
|
||||
$this->getFirstNodeValue('tipoGlicemiaCapilar', $medicoesContext)
|
||||
)->first()->nome
|
||||
: null,
|
||||
'peso' => $this->getFirstNodeValue('peso', $medicoesContext),
|
||||
'altura' => $this->getFirstNodeValue('altura', $medicoesContext),
|
||||
'perimetroCefalico' => $this->getFirstNodeValue('perimetroCefalico', $medicoesContext),
|
||||
];
|
||||
|
||||
$inconsistencias = $this->getInconsistencias([
|
||||
fn () => $inconsistencias->medicoes,
|
||||
['Circunferência abdominal', fn () => $inconsistencias->medicoes->circunferenciaAbdominal],
|
||||
['Perímetro da panturrilha', fn () => $inconsistencias->medicoes->perimetroPanturrilha],
|
||||
['Pressão arterial sistólica', fn () => $inconsistencias->medicoes->pressaoArterialSistolica],
|
||||
['Pressão arterial diastólica', fn () => $inconsistencias->medicoes->pressaoArterialDiastolica],
|
||||
['Frequência respiratória', fn () => $inconsistencias->medicoes->frequenciaRespiratoria],
|
||||
['Frequência cardíaca', fn () => $inconsistencias->medicoes->frequenciaCardiaca],
|
||||
['Temperatura', fn () => $inconsistencias->medicoes->temperatura],
|
||||
['Saturação de O2', fn () => $inconsistencias->medicoes->saturacaoO2],
|
||||
['Glicemia capilar', fn () => $inconsistencias->medicoes->glicemiaCapilar],
|
||||
['Momento da coleta', fn () => $inconsistencias->medicoes->tipoGlicemiaCapilar],
|
||||
['Peso', fn () => $inconsistencias->medicoes->peso],
|
||||
['Altura', fn () => $inconsistencias->medicoes->altura],
|
||||
['Perímetro cefálico', fn () => $inconsistencias->medicoes->perimetroCefalico],
|
||||
]);
|
||||
|
||||
$atendimento->medicoes = (object) compact('campos', 'inconsistencias');
|
||||
}
|
||||
|
||||
private function setGestante($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$campos = (object) [
|
||||
'dumDaGestante' => $this->getDateString(
|
||||
$this->getFirstNodeValue('dumDaGestante', $atendimentoIndividualContext)),
|
||||
'idadeGestacional' => $this->getFirstNodeValue('idadeGestacional', $atendimentoIndividualContext),
|
||||
'stGravidezPlanejada' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean(
|
||||
$this->getFirstNodeValue('stGravidezPlanejada', $atendimentoIndividualContext))),
|
||||
'nuGestasPrevias' => $this->getFirstNodeValue('nuGestasPrevias', $atendimentoIndividualContext),
|
||||
'nuPartos' => $this->getFirstNodeValue('nuPartos', $atendimentoIndividualContext),
|
||||
];
|
||||
|
||||
$inconsistencias = $this->getInconsistencias([
|
||||
['DUM', fn () => $inconsistencias->dumDaGestante],
|
||||
['Idade gestacional', fn () => $inconsistencias->idadeGestacional],
|
||||
['Gravidez planejada', fn () => $inconsistencias->stGravidezPlanejada],
|
||||
['Gestações prévias', fn () => $inconsistencias->nuGestasPrevias],
|
||||
['Partos', fn () => $inconsistencias->nuPartos],
|
||||
]);
|
||||
|
||||
$atendimento->gestante = (object) compact('campos', 'inconsistencias');
|
||||
}
|
||||
|
||||
private function setProblemasCondicoes($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$problemasCondicoes = [];
|
||||
|
||||
foreach ($this->domx->query('problemasCondicoes', $atendimentoIndividualContext) as $i => $context) {
|
||||
|
||||
$inconsistenciasProblemaCondicao = [];
|
||||
|
||||
if (isset($inconsistencias->problemasCondicoes)) {
|
||||
|
||||
if (is_array($inconsistencias->problemasCondicoes)) {
|
||||
|
||||
$inconsistenciasProblemaCondicao = $inconsistencias->problemasCondicoes[$i] ?? [];
|
||||
}
|
||||
else {
|
||||
|
||||
$posicao = $i + 1;
|
||||
|
||||
$inconsistenciasProblemaCondicao = $inconsistencias->problemasCondicoes->{$posicao} ?? [];
|
||||
}
|
||||
}
|
||||
|
||||
$ciap = null;
|
||||
|
||||
if ($this->getFirstNodeValue('ciap', $context)) {
|
||||
|
||||
$codigo = $this->getFirstNodeValue('ciap', $context);
|
||||
|
||||
if ($ciap = Ciap::where('codigo', $codigo)->first()) {
|
||||
|
||||
$ciap = "{$ciap->codigo} - {$ciap->descricao}";
|
||||
}
|
||||
else if ($condicaoAvaliada = CondicaoAvaliada::where('codigo_esus', $codigo)->first()) {
|
||||
|
||||
$ciap = $condicaoAvaliada->descricao;
|
||||
}
|
||||
else if ($doencaTransmissivel = DoencaTransmissivel::where('codigo_esus', $codigo)->first()) {
|
||||
|
||||
$ciap = $doencaTransmissivel->descricao;
|
||||
}
|
||||
else if ($rastreamento = Rastreamento::where('codigo_esus', $codigo)->first()) {
|
||||
|
||||
$ciap = $rastreamento->descricao;
|
||||
}
|
||||
}
|
||||
|
||||
$cid = $this->getFirstNodeValue('cid10', $context)
|
||||
? Cid::where('codigo', $this->getFirstNodeValue('cid10', $context))->first()
|
||||
: null;
|
||||
|
||||
$problemasCondicoes[] = (object) [
|
||||
'campos' => (object) [
|
||||
'ciap' => $ciap,
|
||||
'cid10' => $cid ? MaskUtil::getCidMasked($cid->codigo) . " - {$cid->nome}" : null,
|
||||
'situacao' => !is_null($this->getFirstNodeValue('situacao', $context))
|
||||
? ProblemaCondicaoSituacao::where('codigo_esus', $this->getFirstNodeValue('situacao', $context))->first()->nome
|
||||
: null,
|
||||
'dataInicioProblema' => $this->getFirstNodeValue('dataInicioProblema', $context)
|
||||
? $this->getDateString($this->getFirstNodeValue('dataInicioProblema', $context))
|
||||
: null,
|
||||
'dataFimProblema' => $this->getFirstNodeValue('dataFimProblema', $context)
|
||||
? $this->getDateString($this->getFirstNodeValue('dataFimProblema', $context))
|
||||
: null,
|
||||
'isAvaliado' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean(
|
||||
$this->getFirstNodeValue('isAvaliado', $context))),
|
||||
],
|
||||
'inconsistencias' => $this->getInconsistencias([
|
||||
['CIAP', fn () => $inconsistenciasProblemaCondicao->ciap],
|
||||
['CID', fn () => $inconsistenciasProblemaCondicao->cid10],
|
||||
['Situação', fn () => $inconsistenciasProblemaCondicao->situacao],
|
||||
['Início', fn () => $inconsistenciasProblemaCondicao->dataInicioProblema],
|
||||
['Fim', fn () => $inconsistenciasProblemaCondicao->dataFimProblema],
|
||||
['Avaliado', fn () => $inconsistenciasProblemaCondicao->isAvaliado],
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
$atendimento->problemas_condicoes = (object) [
|
||||
'lista' => $problemasCondicoes,
|
||||
'inconsistencias' => $this->getInconsistencias([
|
||||
fn () => $inconsistencias->problemasCondicoes,
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
private function setExames($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$exames = [];
|
||||
|
||||
foreach ($this->domx->query('exame', $atendimentoIndividualContext) as $context) {
|
||||
|
||||
$codigo = $this->getFirstNodeValue('codigoExame', $context);
|
||||
|
||||
$exame = (object) [
|
||||
'is_solicitado' => 'Não',
|
||||
'is_avaliado' => 'Não',
|
||||
];
|
||||
|
||||
if ($exameSolicitadoAvaliado = ExameSolicitadoAvaliado::where('codigo_esus', $codigo)
|
||||
->orWhere('codigo_procedimento', $codigo)->first()
|
||||
) {
|
||||
|
||||
$exame->nome = $exameSolicitadoAvaliado->descricao;
|
||||
}
|
||||
else {
|
||||
|
||||
$parametrizacaoExame = Exame::where('codigo', $codigo)->first();
|
||||
|
||||
$exame->nome = $parametrizacaoExame->nome;
|
||||
}
|
||||
|
||||
foreach ($this->domx->query('solicitadoAvaliado', $context) as $contextSolicitadoAvaliado) {
|
||||
|
||||
if ($contextSolicitadoAvaliado->nodeValue === 'S') {
|
||||
|
||||
$exame->is_solicitado = 'Sim';
|
||||
}
|
||||
else if ($contextSolicitadoAvaliado->nodeValue === 'A') {
|
||||
|
||||
$exame->is_avaliado = 'Sim';
|
||||
}
|
||||
}
|
||||
|
||||
$exames[] = $exame;
|
||||
}
|
||||
|
||||
$atendimento->exames = (object) [
|
||||
'lista' => $exames,
|
||||
'inconsistencias' => $this->getInconsistencias([
|
||||
fn () => $inconsistencias->exame,
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
private function setObservacao($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$campos = (object) [
|
||||
'ficouEmObservacao' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean(
|
||||
$this->getFirstNodeValue('ficouEmObservacao', $atendimentoIndividualContext))),
|
||||
];
|
||||
|
||||
$inconsistencias = $this->getInconsistencias([
|
||||
fn () => $inconsistencias->ficouEmObservacao,
|
||||
]);
|
||||
|
||||
$atendimento->observacao = (object) compact('campos', 'inconsistencias');
|
||||
}
|
||||
|
||||
private function setEmulti($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$emultis = [];
|
||||
|
||||
foreach ($this->domx->query('emultis', $atendimentoIndividualContext) as $context) {
|
||||
|
||||
$emultis[] = Nasf::where('codigo_esus', $context->nodeValue)->first()->descricao;
|
||||
}
|
||||
|
||||
$atendimento->emultis = (object) [
|
||||
'lista' => $emultis,
|
||||
'inconsistencias' => $this->getInconsistencias([
|
||||
fn () => $inconsistencias->emultis,
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
private function setConduta($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$condutas = [];
|
||||
|
||||
foreach ($this->domx->query('condutas', $atendimentoIndividualContext) as $context) {
|
||||
|
||||
if ($conduta = Conduta::where('codigo_esus', $context->nodeValue)->first()) {
|
||||
|
||||
$condutas[] = $conduta->descricao;
|
||||
}
|
||||
else if ($encaminhamento = Encaminhamento::where('codigo_esus', $context->nodeValue)->first()) {
|
||||
|
||||
$condutas[] = $encaminhamento->descricao;
|
||||
}
|
||||
}
|
||||
|
||||
$atendimento->condutas = (object) [
|
||||
'lista' => $condutas,
|
||||
'inconsistencias' => $this->getInconsistencias([
|
||||
fn () => $inconsistencias->condutas,
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
private function setSolicitacoesOci($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$solicitacoesOci = [];
|
||||
|
||||
foreach ($this->domx->query('solicitacoesOci', $atendimentoIndividualContext) as $context) {
|
||||
|
||||
$solicitacoesOci[] = (object) [
|
||||
'codigoSigtap' => MaskUtil::getProcedimentoMasked($this->getFirstNodeValue('codigoSigtap', $context)),
|
||||
];
|
||||
}
|
||||
|
||||
$atendimento->solicitacoes_oci = (object) [
|
||||
'lista' => $solicitacoesOci,
|
||||
'inconsistencias' => $this->getInconsistencias([
|
||||
fn () => $inconsistencias->solicitacoesOci,
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
private function setIvcf($atendimento, $atendimentoIndividualContext, $inconsistencias)
|
||||
{
|
||||
$campos = (object) [
|
||||
'resultado' => $this->getFirstNodeValue('ivcf/resultado', $atendimentoIndividualContext),
|
||||
'hasSgIdade' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgIdade', $atendimentoIndividualContext))),
|
||||
'hasSgPercepcaoSaude' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgPercepcaoSaude', $atendimentoIndividualContext))),
|
||||
'hasSgAvdInstrumental' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgAvdInstrumental', $atendimentoIndividualContext))),
|
||||
'hasSgAvdBasica' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgAvdBasica', $atendimentoIndividualContext))),
|
||||
'hasSgCognicao' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgCognicao', $atendimentoIndividualContext))),
|
||||
'hasSgHumor' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgHumor', $atendimentoIndividualContext))),
|
||||
'hasSgAlcancePreensaoPinca' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgAlcancePreensaoPinca', $atendimentoIndividualContext))),
|
||||
'hasSgCapAerobicaMuscular' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgCapAerobicaMuscular', $atendimentoIndividualContext))),
|
||||
'hasSgMarcha' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgMarcha', $atendimentoIndividualContext))),
|
||||
'hasSgContinencia' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgContinencia', $atendimentoIndividualContext))),
|
||||
'hasSgVisao' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgVisao', $atendimentoIndividualContext))),
|
||||
'hasSgAudicao' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgAudicao', $atendimentoIndividualContext))),
|
||||
'hasSgComorbidade' => DataUtil::getSimOuNao(DataUtil::getBooleanValueFromStringBoolean($this->getFirstNodeValue('ivcf/hasSgComorbidade', $atendimentoIndividualContext))),
|
||||
'dataResultado' => $this->getFirstNodeValue('ivcf/dataResultado', $atendimentoIndividualContext),
|
||||
];
|
||||
|
||||
$inconsistencias = $this->getInconsistencias([
|
||||
['Resultado', fn () => $inconsistencias->ivcf->resultado],
|
||||
['Idade', fn () => $inconsistencias->ivcf->hasSgIdade],
|
||||
['Percepção de saúde', fn () => $inconsistencias->ivcf->hasSgPercepcaoSaude],
|
||||
['Atividades instrumentais da vida diária', fn () => $inconsistencias->ivcf->hasSgAvdInstrumental],
|
||||
['Atividades básicas da vida diária', fn () => $inconsistencias->ivcf->hasSgAvdBasica],
|
||||
['Cognição', fn () => $inconsistencias->ivcf->hasSgCognicao],
|
||||
['Humor', fn () => $inconsistencias->ivcf->hasSgHumor],
|
||||
['Alcance preensão pinça', fn () => $inconsistencias->ivcf->hasSgAlcancePreensaoPinca],
|
||||
['Capacidade aeróbica muscular', fn () => $inconsistencias->ivcf->hasSgCapAerobicaMuscular],
|
||||
['Marcha', fn () => $inconsistencias->ivcf->hasSgMarcha],
|
||||
['Continência', fn () => $inconsistencias->ivcf->hasSgContinencia],
|
||||
['Visão', fn () => $inconsistencias->ivcf->hasSgVisao],
|
||||
['Audição', fn () => $inconsistencias->ivcf->hasSgAudicao],
|
||||
['Comorbidade', fn () => $inconsistencias->ivcf->hasSgComorbidade],
|
||||
['Data do resultado', fn () => $this->getDateString($inconsistencias->ivcf->dataResultado)],
|
||||
]);
|
||||
|
||||
$atendimento->ivcf = (object) compact('campos', 'inconsistencias');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user