520 lines
23 KiB
PHP
520 lines
23 KiB
PHP
<?php
|
|
|
|
namespace App\Services\AtencaoBasica\Exportacao;
|
|
|
|
use App\Enums\AtencaoBasica\Exportacao\Sexo as ExportacaoSexo;
|
|
use App\Enums\AtencaoBasica\Procedimento\TipoDadoSerializado;
|
|
use App\Enums\AtencaoBasica\VisitaDomiciliar\Desfecho as VisitaDomiciliarDesfecho;
|
|
use App\Enums\AtencaoBasica\VisitaDomiciliar\TipoImovel;
|
|
use App\Enums\Cadastro\SujeitoAtencao\Sexo;
|
|
use App\Models\AtencaoBasica\CadastroDomiciliar\CadastroDomiciliar;
|
|
use App\Models\AtencaoBasica\Exportacao\Exportacao;
|
|
use App\Models\AtencaoBasica\VisitaDomiciliar\VisitaDomiciliar;
|
|
use App\Models\AtencaoBasica\VisitaDomiciliar\VisitaDomiciliarIvcf;
|
|
use App\Rules\Cns;
|
|
use App\Services\Service;
|
|
use Carbon\Carbon;
|
|
use DOMDocument;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use ZipArchive;
|
|
|
|
class FichaVisitaDomiciliarService extends Service
|
|
{
|
|
|
|
public static function create($arquivo_caminho, $arquivo_nome, $exportacaoArquivoId, $usuarioId = null)
|
|
{
|
|
$mes_ano = request()->mes_ano;
|
|
|
|
foreach (self::getFichasProfissional($mes_ano) as $fichaProfissional) {
|
|
|
|
$iteracoes = self::getIteracoesCount($fichaProfissional, $mes_ano);
|
|
|
|
for ($i = 0; $i < $iteracoes; $i++) {
|
|
|
|
$dadosExportacao = self::getDadosExportacao($fichaProfissional, $mes_ano, true, $exportacaoArquivoId, $usuarioId);
|
|
|
|
$xmlPath = Storage::path($arquivo_caminho . 'xml_temp.xml');
|
|
|
|
$dadosExportacao['dom']->save($xmlPath);
|
|
$zip = new ZipArchive;
|
|
$zip->open(Storage::path($arquivo_caminho . $arquivo_nome), ZipArchive::CREATE);
|
|
$zip->addFile($xmlPath, 'VD_' . $dadosExportacao['exportacao']->uuid . '.esus.xml');
|
|
$zip->close();
|
|
|
|
unlink($xmlPath);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static function gerarExportacoes($mesAnoInicial)
|
|
{
|
|
$exportacoes = collect();
|
|
|
|
foreach (self::getFichasProfissional($mesAnoInicial, false) as $fichaProfissional) {
|
|
|
|
$iteracoes = self::getIteracoesCount($fichaProfissional, $mesAnoInicial, false);
|
|
|
|
for ($i = 0; $i < $iteracoes; $i++) {
|
|
|
|
$dadosExportacao = self::getDadosExportacao($fichaProfissional, $mesAnoInicial, false);
|
|
|
|
$exportacoes->push([
|
|
'exportacao_id' => $dadosExportacao['exportacao']->id,
|
|
'data_atendimento' => $fichaProfissional->data_usuario_responsavel,
|
|
'usuario_id' => $fichaProfissional->usuario->id,
|
|
'ocupacao_id' => $fichaProfissional->ocupacao->id,
|
|
'equipe_id' => $fichaProfissional->equipe->id,
|
|
'visitas_domiciliares' => $dadosExportacao['visitas_domiciliares'],
|
|
'xml' => [
|
|
'nome_arquivo' => 'VD_' . $dadosExportacao['exportacao']->uuid . '.esus.xml',
|
|
'conteudo' => $dadosExportacao['dom']->saveXml(),
|
|
]
|
|
]);
|
|
}
|
|
}
|
|
|
|
return $exportacoes;
|
|
}
|
|
|
|
private static function getFichasProfissional($mes_ano, $somenteMesAno = true)
|
|
{
|
|
return VisitaDomiciliar::whereNull('exportacao_id')
|
|
->when($somenteMesAno,
|
|
fn ($q) => $q->whereYear('data_usuario_responsavel', substr($mes_ano, 2))
|
|
->whereMonth('data_usuario_responsavel', substr($mes_ano, 0, 2)),
|
|
fn ($q) => $q->where(function ($q) use ($mes_ano) {
|
|
$q->whereYear('data_usuario_responsavel', '>', substr($mes_ano, 2))
|
|
->orWhere(function ($q) use ($mes_ano) {
|
|
$q->whereYear('data_usuario_responsavel', substr($mes_ano, 2))
|
|
->whereMonth('data_usuario_responsavel', '>=', substr($mes_ano, 0, 2));
|
|
});
|
|
})
|
|
)
|
|
->groupBy([
|
|
DB::raw('DATE(data_usuario_responsavel)'),
|
|
'usuario_id',
|
|
'equipe_id',
|
|
'usuario_ocupacao_id',
|
|
])
|
|
->get();
|
|
}
|
|
|
|
private static function getIteracoesCount($fichaProfissional, $mes_ano, $somenteMesAno = true)
|
|
{
|
|
$count = VisitaDomiciliar::whereNull('exportacao_id')
|
|
->when($somenteMesAno,
|
|
fn ($q) => $q->whereYear('data_usuario_responsavel', substr($mes_ano, 2))
|
|
->whereMonth('data_usuario_responsavel', substr($mes_ano, 0, 2)),
|
|
fn ($q) => $q->where(function ($q) use ($mes_ano) {
|
|
$q->whereYear('data_usuario_responsavel', '>', substr($mes_ano, 2))
|
|
->orWhere(function ($q) use ($mes_ano) {
|
|
$q->whereYear('data_usuario_responsavel', substr($mes_ano, 2))
|
|
->whereMonth('data_usuario_responsavel', '>=', substr($mes_ano, 0, 2));
|
|
});
|
|
})
|
|
)
|
|
->where('usuario_id', $fichaProfissional->usuario_id)
|
|
->where('equipe_id', $fichaProfissional->equipe_id)
|
|
->where('usuario_ocupacao_id', $fichaProfissional->usuario_ocupacao_id)
|
|
->whereDate('data_usuario_responsavel', $fichaProfissional->data_usuario_responsavel)
|
|
->count();
|
|
|
|
return ceil($count / 99);
|
|
}
|
|
|
|
private static function getDadosExportacao($fichaProfissional, $mes_ano, $somenteMesAno = true, $exportacaoArquivoId = null, $usuarioId = null)
|
|
{
|
|
$visitasDomiciliaresPosicoes = collect();
|
|
|
|
$uuid = ExportacaoService::getUuid($fichaProfissional->equipe->unidade->cnes);
|
|
|
|
$exportacao = new Exportacao();
|
|
$exportacao->uuid = $uuid;
|
|
$exportacao->exportacao_arquivo_id = $exportacaoArquivoId;
|
|
$exportacao->save();
|
|
|
|
$dom = new DOMDocument('1.0', 'UTF-8');
|
|
$dadoTransporteTransportXml = $dom->createElementNS('http://esus.ufsc.br/dadotransporte', 'ns3:dadoTransporteTransportXml');
|
|
$dadoTransporteTransportXml->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:ns2', 'http://esus.ufsc.br/dadoinstalacao');
|
|
$dadoTransporteTransportXml->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:ns3', 'http://esus.ufsc.br/dadotransporte');
|
|
$dadoTransporteTransportXml->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:ns4', 'http://esus.ufsc.br/fichavisitadomiciliarmaster');
|
|
|
|
$dadoTransporteTransportXml->appendChild($dom->createElement('uuidDadoSerializado', $uuid));
|
|
$dadoTransporteTransportXml->appendChild($dom->createElement('tipoDadoSerializado', TipoDadoSerializado::VISITA_DOMICILIAR));
|
|
$dadoTransporteTransportXml->appendChild($dom->createElement('codIbge', $fichaProfissional->equipe->infraestrutura->endereco->logradouro->municipio->ibge));
|
|
$dadoTransporteTransportXml->appendChild($dom->createElement('cnesDadoSerializado', $fichaProfissional->equipe->unidade->cnes));
|
|
|
|
if($fichaProfissional->equipe->area->numero_ine){
|
|
|
|
$dadoTransporteTransportXml->appendChild($dom->createElement('ineDadoSerializado', $fichaProfissional->equipe->area->numero_ine));
|
|
}
|
|
|
|
$fichaVisitaDomiciliarMasterTransport = $dom->createElement('ns4:fichaVisitaDomiciliarMasterTransport');
|
|
$dadoTransporteTransportXml->appendChild($fichaVisitaDomiciliarMasterTransport);
|
|
|
|
$fichaVisitaDomiciliarMasterTransport->appendChild($dom->createElement('uuidFicha', $uuid));
|
|
$fichaVisitaDomiciliarMasterTransport->appendChild($dom->createElement('tpCdsOrigem', '3'));
|
|
|
|
$headerTransport = $dom->createElement('headerTransport');
|
|
$fichaVisitaDomiciliarMasterTransport->appendChild($headerTransport);
|
|
|
|
$headerTransport->appendChild($dom->createElement('profissionalCNS', $fichaProfissional->usuario->cidadao->cns ?? ''));
|
|
$headerTransport->appendChild($dom->createElement('cboCodigo_2002', $fichaProfissional->ocupacao->codigo ));
|
|
$headerTransport->appendChild($dom->createElement('cnes', $fichaProfissional->equipe->unidade->cnes));
|
|
|
|
if($fichaProfissional->equipe->area->numero_ine){
|
|
|
|
$headerTransport->appendChild($dom->createElement('ine', $fichaProfissional->equipe->area->numero_ine));
|
|
}
|
|
$headerTransport->appendChild($dom->createElement('dataAtendimento', strtotime($fichaProfissional->data_usuario_responsavel) * 1000));
|
|
$headerTransport->appendChild($dom->createElement('codigoIbgeMunicipio', $fichaProfissional->equipe->infraestrutura->endereco->logradouro->municipio->ibge));
|
|
|
|
$dom->appendChild($dadoTransporteTransportXml);
|
|
|
|
$fichasVisitaDomiciliar = VisitaDomiciliar::whereNull('exportacao_id')
|
|
->when($somenteMesAno,
|
|
fn ($q) => $q->whereYear('data_usuario_responsavel', substr($mes_ano, 2))
|
|
->whereMonth('data_usuario_responsavel', substr($mes_ano, 0, 2)),
|
|
fn ($q) => $q->where(function ($q) use ($mes_ano) {
|
|
$q->whereYear('data_usuario_responsavel', '>', substr($mes_ano, 2))
|
|
->orWhere(function ($q) use ($mes_ano) {
|
|
$q->whereYear('data_usuario_responsavel', substr($mes_ano, 2))
|
|
->whereMonth('data_usuario_responsavel', '>=', substr($mes_ano, 0, 2));
|
|
});
|
|
})
|
|
)
|
|
->where('usuario_id', $fichaProfissional->usuario_id)
|
|
->where('equipe_id', $fichaProfissional->equipe_id)
|
|
->where('usuario_ocupacao_id', $fichaProfissional->usuario_ocupacao_id)
|
|
->whereDate('data_usuario_responsavel', $fichaProfissional->data_usuario_responsavel)
|
|
->take(99)
|
|
->get();
|
|
|
|
foreach ($fichasVisitaDomiciliar as $i => $fichaVisitaDomiciliar) {
|
|
|
|
$visitasDomiciliaresPosicoes->push([
|
|
'posicao' => $i + 1,
|
|
'id' => $fichaVisitaDomiciliar->id,
|
|
]);
|
|
|
|
$visitasDomiciliares = $dom->createElement('visitasDomiciliares');
|
|
$fichaVisitaDomiciliarMasterTransport->appendChild($visitasDomiciliares);
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('turno', $fichaVisitaDomiciliar->turno_id));
|
|
|
|
$cadastroDomiciliar = null;
|
|
$foraArea = null;
|
|
|
|
if (isset($fichaVisitaDomiciliar->paciente)){
|
|
$cadastroDomiciliar = CadastroDomiciliar::where('domicilio_id', $fichaVisitaDomiciliar->paciente->cidadao->domicilio_id)->first();
|
|
|
|
if ($cadastroDomiciliar) {
|
|
|
|
$foraArea = $cadastroDomiciliar->fora_area ? 'true' : 'false';
|
|
}
|
|
}
|
|
|
|
if (isset($fichaVisitaDomiciliar->paciente)
|
|
&& $fichaVisitaDomiciliar->paciente->prontuario
|
|
&& !in_array($fichaVisitaDomiciliar->imovel_tipo_id, [
|
|
TipoImovel::COMERCIO,
|
|
TipoImovel::TERRENO_BALDIO,
|
|
TipoImovel::PONTO_ESTRATEGICO,
|
|
TipoImovel::ESCOLA,
|
|
TipoImovel::CRECHE,
|
|
TipoImovel::ESTABELECIMENTO_RELIGIOSO
|
|
])
|
|
) {
|
|
$visitasDomiciliares->appendChild($dom->createElement('numProntuario', $fichaVisitaDomiciliar->paciente->prontuario));
|
|
}
|
|
|
|
if(isset($fichaVisitaDomiciliar->paciente->cidadao)
|
|
&& !in_array($fichaVisitaDomiciliar->imovel_tipo_id, [
|
|
TipoImovel::COMERCIO,
|
|
TipoImovel::TERRENO_BALDIO,
|
|
TipoImovel::PONTO_ESTRATEGICO,
|
|
TipoImovel::ESCOLA,
|
|
TipoImovel::CRECHE,
|
|
TipoImovel::ESTABELECIMENTO_RELIGIOSO
|
|
])
|
|
){
|
|
|
|
if (Cns::isValid($fichaVisitaDomiciliar->paciente->cidadao->cns)) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('cnsCidadao', $fichaVisitaDomiciliar->paciente->cidadao->cns ?? ''));
|
|
}
|
|
|
|
if (!Cns::isValid($fichaVisitaDomiciliar->paciente->cidadao->cns)) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('cpfCidadao', $fichaVisitaDomiciliar->paciente->cidadao->cpf ?? ''));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->paciente->cidadao->data_nascimento) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('dtNascimento', strtotime($fichaVisitaDomiciliar->paciente->cidadao->data_nascimento->format('Y-m-d')) * 1000));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->paciente->cidadao->sexo->id) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('sexo', self::sexo($fichaVisitaDomiciliar->paciente->cidadao->sexo->id)));
|
|
}
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->visita_compartilhada) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('statusVisitaCompartilhadaOutroProfissional', $fichaVisitaDomiciliar->visita_compartilhada ? 'true' : 'false'));
|
|
}
|
|
|
|
if($fichaVisitaDomiciliar->desfecho_id == VisitaDomiciliarDesfecho::VISITA_REALIZADA){
|
|
|
|
self::getMotivoVisita($dom, $fichaVisitaDomiciliar, $visitasDomiciliares);
|
|
}
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('desfecho', $fichaVisitaDomiciliar->desfecho->codigo_esus));
|
|
|
|
if ($cadastroDomiciliar) {
|
|
|
|
if ($foraArea == 'false' && $cadastroDomiciliar->microarea) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('microArea', str_pad($cadastroDomiciliar->microarea->descricao, 2, '0', STR_PAD_LEFT)));
|
|
|
|
}
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('stForaArea', $foraArea));
|
|
}
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('tipoDeImovel', $fichaVisitaDomiciliar->imovelTipo->codigo_esus));
|
|
|
|
if ($fichaVisitaDomiciliar->peso) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('pesoAcompanhamentoNutricional', $fichaVisitaDomiciliar->peso));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->altura) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('alturaAcompanhamentoNutricional', $fichaVisitaDomiciliar->altura));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->afericao_pa) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('pressaoSistolica', substr($fichaVisitaDomiciliar->afericao_pa, 0, 3)));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->afericao_pa) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('pressaoDiastolica', substr($fichaVisitaDomiciliar->afericao_pa, -3)));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->temperatura) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('temperatura', $fichaVisitaDomiciliar->temperatura));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->glicemia) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('glicemia', $fichaVisitaDomiciliar->glicemia));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->momento_coleta_id) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('tipoGlicemia', $fichaVisitaDomiciliar->momentoColeta->codigo_esus));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->latitude) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('latitude', $fichaVisitaDomiciliar->latitude));
|
|
}
|
|
|
|
if ($fichaVisitaDomiciliar->longitude) {
|
|
|
|
$visitasDomiciliares->appendChild($dom->createElement('longitude', $fichaVisitaDomiciliar->longitude));
|
|
}
|
|
|
|
self::getIvcf($dom, $fichaVisitaDomiciliar, $visitasDomiciliares);
|
|
|
|
$fichaVisitaDomiciliar->uuid_ficha = $uuid;
|
|
$fichaVisitaDomiciliar->exportacao_id = $exportacao->id;
|
|
$fichaVisitaDomiciliar->data_hora_exportacao = Carbon::now()->format('Y-m-d H:i:s');
|
|
$fichaVisitaDomiciliar->usuario_exportacao_id = $usuarioId ?? self::getCurrentLotacao()->usuario_id ?? null;
|
|
|
|
retry(3, function() use ($fichaVisitaDomiciliar) {
|
|
$fichaVisitaDomiciliar->save();
|
|
}, 200);
|
|
}
|
|
|
|
ExportacaoService::elementRemetente($dom, $dadoTransporteTransportXml);
|
|
ExportacaoService::elementOriginadora($dom, $dadoTransporteTransportXml);
|
|
ExportacaoService::elementVersao($dom, $dadoTransporteTransportXml);
|
|
|
|
return [
|
|
'exportacao' => $exportacao,
|
|
'dom' => $dom,
|
|
'visitas_domiciliares' => $visitasDomiciliaresPosicoes,
|
|
];
|
|
}
|
|
|
|
private static function getMotivoVisita($dom, $fichaVisitaDomiciliar, $visitasDomiciliares) {
|
|
|
|
$fichaVisitaDomiciliarMotivoVisita = DB::table('atencao_basica_visita_domiciliar_motivo_visita')
|
|
->select([
|
|
'atencao_basica_cadastro_motivo_visita.codigo_esus',
|
|
])
|
|
->join(
|
|
'atencao_basica_cadastro_motivo_visita',
|
|
'atencao_basica_cadastro_motivo_visita.id',
|
|
'atencao_basica_visita_domiciliar_motivo_visita.motivo_visita_id'
|
|
)
|
|
->where('atencao_basica_visita_domiciliar_motivo_visita.visita_domiciliar_id', $fichaVisitaDomiciliar->id)
|
|
->first();
|
|
|
|
if($fichaVisitaDomiciliarMotivoVisita){
|
|
$visitasDomiciliares->appendChild($dom->createElement('motivosVisita', $fichaVisitaDomiciliarMotivoVisita->codigo_esus));
|
|
}
|
|
}
|
|
|
|
private static function sexo($sexo_id)
|
|
{
|
|
return $sexo_id
|
|
? ($sexo_id == Sexo::MASCULINO ? ExportacaoSexo::MASCULINO : ExportacaoSexo::FEMININO)
|
|
: ExportacaoSexo::IGNORADO;
|
|
}
|
|
|
|
private static function getIvcf(&$dom, $atendimento, &$visitasDomiciliares)
|
|
{
|
|
$visitaDomiciliarIvcf = VisitaDomiciliarIvcf::where('visita_domiciliar_id', $atendimento->id)->first();
|
|
|
|
if ($visitaDomiciliarIvcf) {
|
|
$pacienteIdade = $visitaDomiciliarIvcf->visitaDomiciliar->paciente->cidadao->idade['anos'] ?? null;
|
|
|
|
$resultado = null;
|
|
$hasSgIdade = true;
|
|
$hasSgPercepcaoSaude = false;
|
|
$hasSgAvdInstrumental = false;
|
|
$hasSgAvdBasica = false;
|
|
$hasSgCognicao = false;
|
|
$hasSgHumor = false;
|
|
$hasSgAlcancePreensaoPinca = false;
|
|
$hasSgCapAerobicaMuscular = false;
|
|
$hasSgMarcha = false;
|
|
$hasSgContinencia = false;
|
|
$hasSgVisao = false;
|
|
$hasSgAudicao = false;
|
|
$hasSgComorbidade = false;
|
|
$dataAtendimento = strtotime($atendimento->data_usuario_responsavel) * 1000;
|
|
$dataResultado = min(strtotime($visitaDomiciliarIvcf->updated_at) * 1000, $dataAtendimento);
|
|
|
|
if ($pacienteIdade >= 75 && $pacienteIdade <= 84) {
|
|
$resultado += 1;
|
|
}
|
|
else if ($pacienteIdade >= 85) {
|
|
$resultado += 3;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->estado_saude_geral === 'regular_ou_ruim') {
|
|
$resultado += 1;
|
|
$hasSgPercepcaoSaude = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->limitacao_compras || $visitaDomiciliarIvcf->limitacao_gestao_financeira || $visitaDomiciliarIvcf->limitacao_tarefas_domesticas) {
|
|
$resultado += 4;
|
|
$hasSgAvdInstrumental = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->banho_independencia) {
|
|
$resultado += 6;
|
|
$hasSgAvdBasica = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->relato_esquecimento_por_terceiros) {
|
|
$resultado += 1;
|
|
$hasSgCognicao = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->esquecimento_piorando) {
|
|
$resultado += 1;
|
|
$hasSgCognicao = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->esquecimento_impacta_atividades) {
|
|
$resultado += 2;
|
|
$hasSgCognicao = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->humor_tristeza_desanimo) {
|
|
$resultado += 2;
|
|
$hasSgHumor = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->perda_interesse_atividades) {
|
|
$resultado += 2;
|
|
$hasSgHumor = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->limitacao_elevar_bracos) {
|
|
$resultado += 1;
|
|
$hasSgAlcancePreensaoPinca = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->limitacao_motricidade_fina) {
|
|
$resultado += 1;
|
|
$hasSgAlcancePreensaoPinca = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->perda_peso_nao_intencional || $visitaDomiciliarIvcf->imc_abaixo_22 || $visitaDomiciliarIvcf->panturrilha_abaixo_31 || $visitaDomiciliarIvcf->marcha_lenta_4m_maior_5s) {
|
|
$resultado += 2;
|
|
$hasSgCapAerobicaMuscular = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->dificuldade_caminhar_impacto_atividades) {
|
|
$resultado += 2;
|
|
$hasSgMarcha = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->quedas_recorrentes) {
|
|
$resultado += 2;
|
|
$hasSgMarcha = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->incontinencia) {
|
|
$resultado += 2;
|
|
$hasSgContinencia = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->problema_visao_impacto_atividades) {
|
|
$resultado += 2;
|
|
$hasSgVisao = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->problema_audicao_impacto_atividades) {
|
|
$resultado += 2;
|
|
$hasSgAudicao = true;
|
|
}
|
|
|
|
if ($visitaDomiciliarIvcf->doencas_cronicas_multiplas || $visitaDomiciliarIvcf->polifarmacia_5_ou_mais_medicamentos || $visitaDomiciliarIvcf->internacao_ultimos_6_meses) {
|
|
$resultado += 4;
|
|
$hasSgComorbidade = true;
|
|
}
|
|
|
|
$ivcf = $dom->createElement('ivcf');
|
|
$visitasDomiciliares->appendChild($ivcf);
|
|
|
|
$ivcf->appendChild($dom->createElement('resultado', $resultado));
|
|
$ivcf->appendChild($dom->createElement('hasSgIdade', $hasSgIdade ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgPercepcaoSaude', $hasSgPercepcaoSaude ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgAvdInstrumental', $hasSgAvdInstrumental ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgAvdBasica', $hasSgAvdBasica ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgCognicao', $hasSgCognicao ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgHumor', $hasSgHumor ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgAlcancePreensaoPinca', $hasSgAlcancePreensaoPinca ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgCapAerobicaMuscular', $hasSgCapAerobicaMuscular ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgMarcha', $hasSgMarcha ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgContinencia', $hasSgContinencia ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgVisao', $hasSgVisao ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgAudicao', $hasSgAudicao ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('hasSgComorbidade', $hasSgComorbidade ? 'true' : 'false'));
|
|
$ivcf->appendChild($dom->createElement('dataResultado', $dataResultado));
|
|
}
|
|
}
|
|
}
|