Files
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

170 lines
9.4 KiB
PHP

<?php
namespace App\Services\Integracao\Esus\GerenciamentoEnvio\Ficha;
use App\Models\AtencaoBasica\CadastroIndividual\CadastroIndividual;
use App\Models\AtencaoBasica\FichaComplementar\FichaComplementarFundoOlho;
use App\Models\AtencaoBasica\FichaComplementar\FichaComplementarRessonanciaMagnetica;
use App\Models\AtencaoBasica\FichaComplementar\FichaComplementarTesteOlho;
use App\Models\AtencaoBasica\FichaComplementar\FichaComplementarTesteOrelha;
use App\Models\AtencaoBasica\FichaComplementar\FichaComplementarTomografiaComputadorizada;
use App\Models\AtencaoBasica\FichaComplementar\FichaComplementarUsTransfontanela;
use App\Models\Geral\Turno;
use App\Models\Sigtap\Ocupacao;
use App\Utils\MaskUtil;
class FichaComplementar extends Ficha
{
public function __construct($xmlEnvio, $inconsistenciaModel)
{
parent::__construct($xmlEnvio, $inconsistenciaModel);
$this->domx->registerNamespace('ns4', 'http://esus.ufsc.br/fichacomplementarzikamicrocefalia');
}
public function __invoke()
{
$path = '//ns4:fichaComplementarZikaMicrocefaliaTransport';
$this->setCadastro($path);
$this->setPaciente($path);
$this->setExames($path);
return $this->ficha;
}
private function setCadastro($fichaComplementarZikaMicrocefaliaTransportPath)
{
$headerTransportPath = "{$fichaComplementarZikaMicrocefaliaTransportPath}/headerTransport";
$ocupacao = $this->getFirstNodeValue("{$headerTransportPath}/cboCodigo_2002")
? Ocupacao::where('codigo', $this->getFirstNodeValue("{$headerTransportPath}/cboCodigo_2002"))->first()
: null;
$campos = (object) [
'turno' => $this->getFirstNodeValue("{$fichaComplementarZikaMicrocefaliaTransportPath}/turno")
? Turno::find($this->getFirstNodeValue("{$fichaComplementarZikaMicrocefaliaTransportPath}/turno"))->nome
: null,
'profissionalNome' => $this->inconsistenciaModel->fichaComplementar->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([
['Turno', fn () => $this->inconsistencias->turno],
['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->cadastro = (object) compact('campos', 'inconsistencias');
}
private function setPaciente($fichaComplementarZikaMicrocefaliaTransportPath)
{
$path = $fichaComplementarZikaMicrocefaliaTransportPath;
$campos = (object) [
'nomeCidadao' => $this->inconsistenciaModel->fichaComplementar->paciente->cidadao->nome,
'cnsCidadao' => MaskUtil::getCnsMasked($this->getFirstNodeValue("{$path}/cnsCidadao")),
'cpfCidadao' => MaskUtil::getCpfMasked($this->getFirstNodeValue("{$path}/cpfCidadao")),
'nomeResponsavelFamiliar' => CadastroIndividual::where(
'paciente_id',
$this->inconsistenciaModel->fichaComplementar->paciente_id
)->first()->responsavelCidadao->nome ?? null,
'cnsResponsavelFamiliar' => MaskUtil::getCnsMasked($this->getFirstNodeValue("{$path}/cnsResponsavelFamiliar")),
'cpfResponsavelFamiliar' => MaskUtil::getCpfMasked($this->getFirstNodeValue("{$path}/cpfResponsavelFamiliar")),
];
$inconsistencias = $this->getInconsistencias([
['CNS', fn () => $this->inconsistencias->cnsCidadao],
['CPF', fn () => $this->inconsistencias->cpfCidadao],
['CNS (Responsável familiar)', fn () => $this->inconsistencias->cnsResponsavelFamiliar],
['CPF (Responsável familiar)', fn () => $this->inconsistencias->cpfResponsavelFamiliar],
]);
$this->ficha->paciente = (object) compact('campos', 'inconsistencias');
}
private function setExames($fichaComplementarZikaMicrocefaliaTransportPath)
{
$path = $fichaComplementarZikaMicrocefaliaTransportPath;
$campos = (object) [
'dataRealizacaoTesteOlhinho' => $this->getDateString(
$this->getFirstNodeValue("{$path}/dataRealizacaoTesteOlhinho")),
'coResultadoTesteOlhinho' => $this->getFirstNodeValue("{$path}/coResultadoTesteOlhinho")
? FichaComplementarTesteOlho::where(
'codigo',
$this->getFirstNodeValue("{$path}/coResultadoTesteOlhinho")
)->first()->descricao
: null,
'dataRealizacaoExameFundoOlho' => $this->getDateString(
$this->getFirstNodeValue("{$path}/dataRealizacaoExameFundoOlho")),
'coResultadoExameFundoOlho' => $this->getFirstNodeValue("{$path}/coResultadoExameFundoOlho")
? FichaComplementarFundoOlho::where(
'codigo',
$this->getFirstNodeValue("{$path}/coResultadoExameFundoOlho")
)->first()->descricao
: null,
'dataRealizacaoTesteOrelhinha' => $this->getDateString(
$this->getFirstNodeValue("{$path}/dataRealizacaoTesteOrelhinha")),
'coResultadoTesteOrelhinha' => $this->getFirstNodeValue("{$path}/coResultadoTesteOrelhinha")
? FichaComplementarTesteOrelha::where(
'codigo',
$this->getFirstNodeValue("{$path}/coResultadoTesteOrelhinha")
)->first()->descricao
: null,
'dataRealizacaoUSTransfontanela' => $this->getDateString(
$this->getFirstNodeValue("{$path}/dataRealizacaoUSTransfontanela")),
'coResultadoUsTransfontanela' => $this->getFirstNodeValue("{$path}/coResultadoUsTransfontanela")
? FichaComplementarUsTransfontanela::where(
'codigo',
$this->getFirstNodeValue("{$path}/coResultadoUsTransfontanela")
)->first()->descricao
: null,
'dataRealizacaoTomografiaComputadorizada' => $this->getDateString(
$this->getFirstNodeValue("{$path}/dataRealizacaoTomografiaComputadorizada")),
'coResultadoTomografiaComputadorizada' => $this->getFirstNodeValue("{$path}/coResultadoTomografiaComputadorizada")
? FichaComplementarTomografiaComputadorizada::where(
'codigo',
$this->getFirstNodeValue("{$path}/coResultadoTomografiaComputadorizada")
)->first()->descricao
: null,
'dataRealizacaoRessonanciaMagnetica' => $this->getDateString(
$this->getFirstNodeValue("{$path}/dataRealizacaoRessonanciaMagnetica")),
'coResultadoRessonanciaMagnetica' => $this->getFirstNodeValue("{$path}/coResultadoRessonanciaMagnetica")
? FichaComplementarRessonanciaMagnetica::where(
'codigo',
$this->getFirstNodeValue("{$path}/coResultadoRessonanciaMagnetica")
)->first()->descricao
: null,
];
$inconsistencias = $this->getInconsistencias([
fn () => $this->inconsistencias->{"Resultados de exames"},
['Teste do Olhinho', fn () => $this->inconsistencias->dataRealizacaoTesteOlhinho],
['Resultado - Teste do Olhinho', fn () => $this->inconsistencias->coResultadoTesteOlhinho],
['Fundo de olho', fn () => $this->inconsistencias->dataRealizacaoExameFundoOlho],
['Resultado - Fundo de olho', fn () => $this->inconsistencias->coResultadoExameFundoOlho],
['Teste da Orelhinha', fn () => $this->inconsistencias->dataRealizacaoTesteOrelhinha],
['Resultado - Teste da Orelhinha', fn () => $this->inconsistencias->coResultadoTesteOrelhinha],
['US Transfontanela', fn () => $this->inconsistencias->dataRealizacaoUSTransfontanela],
['Resultado - US Transfontanela', fn () => $this->inconsistencias->coResultadoUsTransfontanela],
['Tomografia Computadorizada', fn () => $this->inconsistencias->dataRealizacaoTomografiaComputadorizada],
['Resultado - Tomografia Computadorizada', fn () => $this->inconsistencias->coResultadoTomografiaComputadorizada],
['Ressonância Magnética', fn () => $this->inconsistencias->dataRealizacaoRessonanciaMagnetica],
['Resultado - Ressonância Magnética', fn () => $this->inconsistencias->coResultadoRessonanciaMagnetica],
]);
$this->ficha->exames = (object) compact('campos', 'inconsistencias');
}
}