170 lines
9.4 KiB
PHP
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');
|
|
}
|
|
}
|