mes_ano; foreach (self::getFichasCadastroIndividual($mes_ano) as $fichaCadastroIndividual) { $dadosExportacao = self::getDadosExportacao($fichaCadastroIndividual, $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, 'CI_' . $dadosExportacao['exportacao']->uuid . '.esus.xml'); $zip->close(); unlink($xmlPath); } } public static function gerarExportacoes($mesAnoInicial) { $exportacoes = collect(); foreach (self::getFichasCadastroIndividual($mesAnoInicial, false) as $fichaCadastroIndividual) { $dadosExportacao = self::getDadosExportacao($fichaCadastroIndividual); $exportacoes->push([ 'exportacao_id' => $dadosExportacao['exportacao']->id, 'data_atendimento' => $fichaCadastroIndividual->data_usuario_responsavel, 'usuario_id' => optional($fichaCadastroIndividual->usuario)->id, 'ocupacao_id' => optional($fichaCadastroIndividual->usuarioOcupacao)->id, 'equipe_id' => optional($fichaCadastroIndividual->equipe)->id, 'cadastro_individual_id' => $fichaCadastroIndividual->id, 'xml' => [ 'nome_arquivo' => 'CI_' . $dadosExportacao['exportacao']->uuid . '.esus.xml', 'conteudo' => $dadosExportacao['dom']->saveXml(), ] ]); } return $exportacoes; } private static function getFichasCadastroIndividual($mes_ano, $somenteMesAno = true) { return CadastroIndividual::with(['paciente' => function ($query) { $query->withTrashed(); }]) ->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)); }); }) ) ->whereNull('exportacao_id') ->get(); } private static function getDadosExportacao($fichaCadastroIndividual, $exportacaoArquivoId = null, $usuarioId = null) { $internacao = $fichaCadastroIndividual->internacao ? 'true' : 'false'; $plantasMedicinais = $fichaCadastroIndividual->plantas_medicinais ? 'true' : 'false'; $comunidadeTradicional = $fichaCadastroIndividual->comunidade_tradicional ? 'true' : 'false'; $orientacaoSexual = $fichaCadastroIndividual->orientacao_sexual ? 'true' : 'false'; $identidadeGenero = $fichaCadastroIndividual->identidade_genero ? 'true' : 'false'; $cuidadorTradicional = $fichaCadastroIndividual->frequenta_cuidador_tradicional ? 'true' : 'false'; $grupoComunitario = $fichaCadastroIndividual->participa_grupo_comunitario ? 'true' : 'false'; $deficiente = $fichaCadastroIndividual->deficiente ? 'true' : 'false'; $planoSaude = $fichaCadastroIndividual->plano_saude ? 'true' : 'false'; $escola = $fichaCadastroIndividual->frequenta_escola_creche ? 'true' : 'false'; $recusaCadastro = $fichaCadastroIndividual->recusa_cadastro ? 'true' : 'false'; $gestante = $fichaCadastroIndividual->gestante ? 'true' : 'false'; $fumante = $fichaCadastroIndividual->fumante ? 'true' : 'false'; $usaAlcool = $fichaCadastroIndividual->usa_alcool ? 'true' : 'false'; $outrasDrogas = $fichaCadastroIndividual->outras_drogas ? 'true' : 'false'; $hipertensao = $fichaCadastroIndividual->hipertensao ? 'true' : 'false'; $diabetes = $fichaCadastroIndividual->diabetes ? 'true' : 'false'; $avcDerrame = $fichaCadastroIndividual->avc_derrame ? 'true' : 'false'; $infarto = $fichaCadastroIndividual->infarto ? 'true' : 'false'; $hanseniase = $fichaCadastroIndividual->hanseniase ? 'true' : 'false'; $tuberculose = $fichaCadastroIndividual->tuberculose ? 'true' : 'false'; $cancer = $fichaCadastroIndividual->cancer ? 'true' : 'false'; $internacao = $fichaCadastroIndividual->internacao ? 'true' : 'false'; $doencaCardiaca = $fichaCadastroIndividual->doenca_cardiaca ? 'true' : 'false'; $problemasRins = $fichaCadastroIndividual->problemas_rins ? 'true' : 'false'; $doencaRespiratoria = $fichaCadastroIndividual->doenca_respiratoria ? 'true' : 'false'; $acamado = $fichaCadastroIndividual->acamado ? 'true' : 'false'; $domiciliado = $fichaCadastroIndividual->domiciliado ? 'true' : 'false'; $praticasIntegrativas = $fichaCadastroIndividual->praticas_integrativas ? 'true' : 'false'; $outraInstituicao = $fichaCadastroIndividual->outra_instituicao ? 'true' : 'false'; $recebeBeneficio = $fichaCadastroIndividual->recebe_beneficio ? 'true' : 'false'; $referenciaFamiliar = $fichaCadastroIndividual->referencia_familiar ? 'true' : 'false'; $visitaFamiliar = $fichaCadastroIndividual->visita_familiar ? 'true' : 'false'; $responsavel = $fichaCadastroIndividual->responsavel ? 'true' : 'false'; $alimentosAcabaram = $fichaCadastroIndividual->alimentos_acabaram === null ? null : ($fichaCadastroIndividual->alimentos_acabaram ? 'true' : 'false'); $comeuAlgunsAlimentos = $fichaCadastroIndividual->comeu_alguns_alimentos === null ? null : ($fichaCadastroIndividual->comeu_alguns_alimentos ? 'true' : 'false'); $higienePessoal = $fichaCadastroIndividual->higiene_pessoal ? 'true' : 'false'; $tratamentoSaudeMental = $fichaCadastroIndividual->tratamento_saude_mental ? 'true' : 'false'; $situacaoRua = $fichaCadastroIndividual->situacao_rua_id != null ? 'true' : 'false'; $fichaAtualizada = $fichaCadastroIndividual->uuid_ficha != null ? 'true' : 'false'; $desconheceNomePai = $fichaCadastroIndividual->paciente->cidadao->nome_pai == null ? 'true' : 'false'; $desconheceNomeMae = $fichaCadastroIndividual->paciente->cidadao->nome_mae == null ? 'true' : 'false'; $uuid = ExportacaoService::getUuid($fichaCadastroIndividual->equipe->unidade->cnes ?? '9999999'); $telefoneCelular = $fichaCadastroIndividual->paciente->cidadao->telefones ->filter(fn ($t) => in_array(Str::length($t->numero), [10,11]))->first()->numero ?? null; $dataNascimento = new DateTime($fichaCadastroIndividual->paciente->cidadao->data_nascimento); $dataResponsavel = new DateTime($fichaCadastroIndividual->data_usuario_responsavel); $idade = $dataNascimento->diff($dataResponsavel)->y; $cadastroDomiciliar = CadastroDomiciliar::where('domicilio_id', $fichaCadastroIndividual->paciente->cidadao->domicilio_id)->first(); if ($cadastroDomiciliar) { $foraArea = $cadastroDomiciliar->fora_area ? 'true' : 'false'; } $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/cadastroindividual'); $dadoTransporteTransportXml->appendChild($dom->createElement('uuidDadoSerializado', $uuid)); $dadoTransporteTransportXml->appendChild($dom->createElement('tipoDadoSerializado', TipoDadoSerializado::CADASTRO_INDIVIDUAL)); $dadoTransporteTransportXml->appendChild($dom->createElement('codIbge', $fichaCadastroIndividual->equipe->infraestrutura->endereco->logradouro->municipio->ibge ?? '9999999')); $dadoTransporteTransportXml->appendChild($dom->createElement('cnesDadoSerializado', $fichaCadastroIndividual->equipe->unidade->cnes ?? '9999999')); if($fichaCadastroIndividual->equipe->area->numero_ine ?? false){ $dadoTransporteTransportXml->appendChild($dom->createElement('ineDadoSerializado', $fichaCadastroIndividual->equipe->area->numero_ine)); } $cadastroIndividualTransport = $dom->createElement('ns4:cadastroIndividualTransport'); $dadoTransporteTransportXml->appendChild($cadastroIndividualTransport); if ($recusaCadastro == 'false') { $condicoesDeSaude = $dom->createElement('condicoesDeSaude'); $cadastroIndividualTransport->appendChild($condicoesDeSaude); if ($internacao == 'true') { $condicoesDeSaude->appendChild($dom->createElement('descricaoCausaInternacaoEm12Meses', $fichaCadastroIndividual->internacao_motivo)); } $condicoesDeSaude->appendChild($dom->createElement('descricaoOutraCondicao1', $fichaCadastroIndividual->outras_condicoes_primaria)); $condicoesDeSaude->appendChild($dom->createElement('descricaoOutraCondicao2', $fichaCadastroIndividual->outras_condicoes_secundaria)); $condicoesDeSaude->appendChild($dom->createElement('descricaoOutraCondicao3', $fichaCadastroIndividual->outras_condicoes_terciaria)); if ($plantasMedicinais == 'true') { $condicoesDeSaude->appendChild($dom->createElement('descricaoPlantasMedicinaisUsadas', $fichaCadastroIndividual->plantas_medicinais_quais)); } if ($doencaCardiaca == 'true') { self::getDoencasCardiacas($dom, $fichaCadastroIndividual, $condicoesDeSaude); } if ($doencaRespiratoria == 'true') { self::getDoencasRespiratoria($dom, $fichaCadastroIndividual, $condicoesDeSaude); } if ($problemasRins == 'true') { self::getProblemasRins($dom, $fichaCadastroIndividual, $condicoesDeSaude); } if ($gestante == 'true' && $fichaCadastroIndividual->maternidade_referencia) { $condicoesDeSaude->appendChild($dom->createElement('maternidadeDeReferencia', $fichaCadastroIndividual->maternidade_referencia)); } if ($fichaCadastroIndividual->peso) { $condicoesDeSaude->appendChild($dom->createElement('situacaoPeso', $fichaCadastroIndividual->peso->codigo_esus)); } $condicoesDeSaude->appendChild($dom->createElement('statusEhDependenteAlcool', $usaAlcool)); $condicoesDeSaude->appendChild($dom->createElement('statusEhDependenteOutrasDrogas', $outrasDrogas)); $condicoesDeSaude->appendChild($dom->createElement('statusEhFumante', $fumante)); if(optional($fichaCadastroIndividual->paciente->cidadao->sexo)->id === Sexo::FEMININO && ($idade >= 9 && $idade <= 60)){ $condicoesDeSaude->appendChild($dom->createElement('statusEhGestante', $gestante)); } $condicoesDeSaude->appendChild($dom->createElement('statusEstaAcamado', $acamado)); $condicoesDeSaude->appendChild($dom->createElement('statusEstaDomiciliado', $domiciliado)); $condicoesDeSaude->appendChild($dom->createElement('statusTemDiabetes', $diabetes)); $condicoesDeSaude->appendChild($dom->createElement('statusTemDoencaRespiratoria', $doencaRespiratoria)); $condicoesDeSaude->appendChild($dom->createElement('statusTemHanseniase', $hanseniase)); $condicoesDeSaude->appendChild($dom->createElement('statusTemHipertensaoArterial', $hipertensao)); $condicoesDeSaude->appendChild($dom->createElement('statusTemTeveCancer', $cancer)); $condicoesDeSaude->appendChild($dom->createElement('statusTemTeveDoencasRins', $problemasRins)); $condicoesDeSaude->appendChild($dom->createElement('statusTemTuberculose', $tuberculose)); $condicoesDeSaude->appendChild($dom->createElement('statusTeveAvcDerrame', $avcDerrame)); $condicoesDeSaude->appendChild($dom->createElement('statusTeveDoencaCardiaca', $doencaCardiaca)); $condicoesDeSaude->appendChild($dom->createElement('statusTeveInfarto', $infarto)); $condicoesDeSaude->appendChild($dom->createElement('statusTeveInternadoEm12Meses', $internacao)); $condicoesDeSaude->appendChild($dom->createElement('statusUsaOutrasPraticasIntegrativasOuComplementares', $praticasIntegrativas)); $condicoesDeSaude->appendChild($dom->createElement('statusUsaPlantaMedicinais', $plantasMedicinais)); $condicoesDeSaude->appendChild($dom->createElement('statusDiagnosticoMental', $tratamentoSaudeMental)); $emSituacaoDeRua = $dom->createElement('emSituacaoDeRua'); $cadastroIndividualTransport->appendChild($emSituacaoDeRua); if ($situacaoRua == 'true') { $emSituacaoDeRua->appendChild($dom->createElement('grauParentescoFamiliarFrequentado', $fichaCadastroIndividual->parentesco)); self::getHigienePessoal($dom, $fichaCadastroIndividual, $emSituacaoDeRua); self::getOrigemAlimentos($dom, $fichaCadastroIndividual, $emSituacaoDeRua); if ($outraInstituicao == 'true') { $emSituacaoDeRua->appendChild($dom->createElement('outraInstituicaoQueAcompanha', $fichaCadastroIndividual->outra_instituicao_quais)); } $emSituacaoDeRua->appendChild($dom->createElement('quantidadeAlimentacoesAoDiaSituacaoRua', $fichaCadastroIndividual->alimentacaoDiaria->codigo_esus)); $emSituacaoDeRua->appendChild($dom->createElement('statusAcompanhadoPorOutraInstituicao', $outraInstituicao)); $emSituacaoDeRua->appendChild($dom->createElement('statusPossuiReferenciaFamiliar', $referenciaFamiliar)); $emSituacaoDeRua->appendChild($dom->createElement('statusRecebeBeneficio', $recebeBeneficio)); } $emSituacaoDeRua->appendChild($dom->createElement('statusSituacaoRua', $situacaoRua)); if ($situacaoRua == 'true') { $emSituacaoDeRua->appendChild($dom->createElement('statusTemAcessoHigienePessoalSituacaoRua', $higienePessoal)); $emSituacaoDeRua->appendChild($dom->createElement('statusVisitaFamiliarFrequentemente', $visitaFamiliar)); $emSituacaoDeRua->appendChild($dom->createElement('tempoSituacaoRua', $fichaCadastroIndividual->situacaoRua->codigo_esus)); } } $cadastroIndividualTransport->appendChild($dom->createElement('fichaAtualizada', $fichaAtualizada)); $identificacaoUsuarioCidadao = $dom->createElement('identificacaoUsuarioCidadao'); $cadastroIndividualTransport->appendChild($identificacaoUsuarioCidadao); if ($fichaCadastroIndividual->paciente->cidadao->nome_social) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('nomeSocial', $fichaCadastroIndividual->paciente->cidadao->nome_social)); } if ($fichaCadastroIndividual->paciente->cidadao->municipioNascimento && $fichaCadastroIndividual->paciente->cidadao->municipioNascimento->ibge) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('codigoIbgeMunicipioNascimento', $fichaCadastroIndividual->paciente->cidadao->municipioNascimento->ibge)); } $identificacaoUsuarioCidadao->appendChild($dom->createElement('dataNascimentoCidadao', strtotime($fichaCadastroIndividual->paciente->cidadao->data_nascimento->format('Y-m-d')) * 1000)); $identificacaoUsuarioCidadao->appendChild($dom->createElement('desconheceNomeMae', $desconheceNomeMae)); if ($fichaCadastroIndividual->paciente->email !== null) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('emailCidadao', $fichaCadastroIndividual->paciente->email)); } $identificacaoUsuarioCidadao->appendChild($dom->createElement('nacionalidadeCidadao', $fichaCadastroIndividual->paciente->cidadao->nacionalidade->codigo_esus)); $identificacaoUsuarioCidadao->appendChild($dom->createElement('nomeCidadao', $fichaCadastroIndividual->paciente->cidadao->nome)); if ($desconheceNomeMae == 'false') { $identificacaoUsuarioCidadao->appendChild($dom->createElement('nomeMaeCidadao', $fichaCadastroIndividual->paciente->cidadao->nome_mae)); } if (Cns::isValid($fichaCadastroIndividual->paciente->cidadao->cns)) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('cnsCidadao', $fichaCadastroIndividual->paciente->cidadao->cns ?? '')); } if (!Cns::isValid($fichaCadastroIndividual->paciente->cidadao->cns)) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('cpfCidadao', $fichaCadastroIndividual->paciente->cidadao->cpf ?? '')); } if ($telefoneCelular) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('telefoneCelular', $telefoneCelular)); } if ($fichaCadastroIndividual->paciente->cidadao->carteiraTrabalho && $fichaCadastroIndividual->paciente->cidadao->carteiraTrabalho->nis_pis_pasep) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('numeroNisPisPasep', $fichaCadastroIndividual->paciente->cidadao->carteiraTrabalho->nis_pis_pasep)); } $racaCorEsus = $fichaCadastroIndividual->paciente->cidadao->racaCor && $fichaCadastroIndividual->paciente->cidadao->racaCor->id ? ($fichaCadastroIndividual->paciente->cidadao->racaCor->id != RacaCor::SEM_INFORMACAO ? $fichaCadastroIndividual->paciente->cidadao->racaCor->codigo_esus : NULL) : NULL; $paisNascimento = optional(optional(optional($fichaCadastroIndividual->paciente)->cidadao)->paisNascimento)->codigo_esus; if ($paisNascimento) { $identificacaoUsuarioCidadao ->appendChild($dom->createElement('paisNascimento', $paisNascimento)); } $identificacaoUsuarioCidadao->appendChild($dom->createElement('racaCorCidadao', $racaCorEsus)); $identificacaoUsuarioCidadao->appendChild($dom->createElement('sexoCidadao', self::sexo(optional($fichaCadastroIndividual->paciente->cidadao->sexo)->id))); $identificacaoUsuarioCidadao->appendChild($dom->createElement('statusEhResponsavel', $responsavel)); if (optional($fichaCadastroIndividual->paciente->cidadao->racaCor)->id === RacaCor::INDIGENA) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('etnia', $fichaCadastroIndividual->paciente->cidadao->etniaIndigena->codigo_cadsus)); } if ($desconheceNomePai == 'false') { $identificacaoUsuarioCidadao->appendChild($dom->createElement('nomePaiCidadao', $fichaCadastroIndividual->paciente->cidadao->nome_pai)); } $identificacaoUsuarioCidadao->appendChild($dom->createElement('desconheceNomePai', $desconheceNomePai)); if ($fichaCadastroIndividual->paciente->cidadao->nacionalidade->id == Nacionalidade::NATURALIZADO_BRASILEIRO || $fichaCadastroIndividual->paciente->cidadao->nacionalidade->id == Nacionalidade::ESTRANGEIRO) { if ($fichaCadastroIndividual->paciente->cidadao->data_naturalizacao) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('dtNaturalizacao', strtotime($fichaCadastroIndividual->paciente->cidadao->data_naturalizacao->format('Y-m-d')) * 1000)); } if ($fichaCadastroIndividual->paciente->cidadao->portaria_naturalizacao) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('portariaNaturalizacao', $fichaCadastroIndividual->paciente->cidadao->portaria_naturalizacao)); } if ($fichaCadastroIndividual->paciente->cidadao->estrangeiroEntradaBrasil) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('dtEntradaBrasil', strtotime($fichaCadastroIndividual->paciente->cidadao->estrangeiroEntradaBrasil->data_entrada->format('Y-m-d')) * 1000)); } } if ($cadastroDomiciliar) { if ($foraArea == 'false' && $cadastroDomiciliar->microarea) { $identificacaoUsuarioCidadao->appendChild($dom->createElement('microArea', str_pad($cadastroDomiciliar->microarea->descricao, 2, '0', STR_PAD_LEFT))); } $identificacaoUsuarioCidadao->appendChild($dom->createElement('stForaArea', $foraArea)); } if ($recusaCadastro == 'false') { $informacoesSocioDemograficas = $dom->createElement('informacoesSocioDemograficas'); $cadastroIndividualTransport->appendChild($informacoesSocioDemograficas); self::getDeficiencias($dom, $fichaCadastroIndividual, $informacoesSocioDemograficas); if ($fichaCadastroIndividual->curso) { $informacoesSocioDemograficas->appendChild($dom->createElement('grauInstrucaoCidadao', $fichaCadastroIndividual->curso->codigo_esus)); } if ( $fichaCadastroIndividual->ocupacao) { $informacoesSocioDemograficas->appendChild($dom->createElement('ocupacaoCodigoCbo2002', $fichaCadastroIndividual->ocupacao->codigo)); } if ($orientacaoSexual == 'true' && $fichaCadastroIndividual->orientacaoSexual) { $informacoesSocioDemograficas->appendChild($dom->createElement('orientacaoSexualCidadao', $fichaCadastroIndividual->orientacaoSexual->codigo_esus)); } if ($fichaCadastroIndividual->parentescoResponsavel) { $informacoesSocioDemograficas->appendChild($dom->createElement('relacaoParentescoCidadao', $fichaCadastroIndividual->parentescoResponsavel->codigo_esus)); } if ($fichaCadastroIndividual->situacaoMercadoTrabalho) { $informacoesSocioDemograficas->appendChild($dom->createElement('situacaoMercadoTrabalhoCidadao', $fichaCadastroIndividual->situacaoMercadoTrabalho->codigo_esus)); } $informacoesSocioDemograficas->appendChild($dom->createElement('statusDesejaInformarOrientacaoSexual', $orientacaoSexual)); $informacoesSocioDemograficas->appendChild($dom->createElement('statusFrequentaBenzedeira', $cuidadorTradicional)); $informacoesSocioDemograficas->appendChild($dom->createElement('statusFrequentaEscola', $escola)); $informacoesSocioDemograficas->appendChild($dom->createElement('statusMembroPovoComunidadeTradicional', $comunidadeTradicional)); $informacoesSocioDemograficas->appendChild($dom->createElement('statusParticipaGrupoComunitario', $grupoComunitario)); $informacoesSocioDemograficas->appendChild($dom->createElement('statusPossuiPlanoSaudePrivado', $planoSaude)); $informacoesSocioDemograficas->appendChild($dom->createElement('statusTemAlgumaDeficiencia', $deficiente)); if ($identidadeGenero == 'true' && $fichaCadastroIndividual->paciente->cidadao->identidadeGenero) { $informacoesSocioDemograficas->appendChild($dom->createElement('identidadeGeneroCidadao', $fichaCadastroIndividual->paciente->cidadao->identidadeGenero->codigo_esus)); } $informacoesSocioDemograficas->appendChild($dom->createElement('statusDesejaInformarIdentidadeGenero', $identidadeGenero)); if ($idade <= 9) { self::getResponsavelPorCrianca($dom, $fichaCadastroIndividual, $informacoesSocioDemograficas); } if ($fichaCadastroIndividual->comunidadeTradicionalQual) { $informacoesSocioDemograficas->appendChild($dom->createElement('coPovoComunidadeTradicional', $fichaCadastroIndividual->comunidadeTradicionalQual->codigo_esus)); } if ($fichaCadastroIndividual->alimentos_acabaram !== null || $fichaCadastroIndividual->comeu_alguns_alimentos !== null) { $informacoesSocioEconomicas = $dom->createElement('informacoesSocioEconomicas'); $cadastroIndividualTransport->appendChild($informacoesSocioEconomicas); if ($alimentosAcabaram !== null) { $informacoesSocioEconomicas->appendChild($dom->createElement('alimentosAcabaramAntesTerDinheiroComprarMais', $alimentosAcabaram)); } if ($comeuAlgunsAlimentos !== null) { $informacoesSocioEconomicas->appendChild($dom->createElement('comeuAlgunsAlimentosQueTinhaDinheiroAcabou', $comeuAlgunsAlimentos)); } } if ($fichaCadastroIndividual->saidaCidadao) { $saidaCidadaoCadastro = $dom->createElement('saidaCidadaoCadastro'); $cadastroIndividualTransport->appendChild($saidaCidadaoCadastro); if ($fichaCadastroIndividual->saidaCidadao) { $saidaCidadaoCadastro->appendChild($dom->createElement('motivoSaidaCidadao', $fichaCadastroIndividual->saidaCidadao->codigo_esus)); } if ($fichaCadastroIndividual->saidaCidadao->id == SaidaCidadao::OBITO) { $dataObito = $fichaCadastroIndividual->paciente->cidadao->obito->obito_em ?? null; $dataObitoMs = $dataObito ? strtotime($dataObito) * 1000 : ''; $numeroDO = $fichaCadastroIndividual->paciente->cidadao->obito->declaracao ?? ''; $saidaCidadaoCadastro->appendChild( $dom->createElement('dataObito', $dataObitoMs) ); $saidaCidadaoCadastro->appendChild( $dom->createElement('numeroDO', $numeroDO) ); } } } $cadastroIndividualTransport->appendChild($dom->createElement('statusTermoRecusaCadastroIndividualAtencaoBasica', $recusaCadastro)); $cadastroIndividualTransport->appendChild($dom->createElement('tpCdsOrigem', '3')); $cadastroIndividualTransport->appendChild($dom->createElement('uuid', $uuid)); if ($fichaAtualizada == 'true') { $cadastroIndividualTransport->appendChild($dom->createElement('uuidFichaOriginadora', $fichaCadastroIndividual->uuid_ficha)); }else{ $cadastroIndividualTransport->appendChild($dom->createElement('uuidFichaOriginadora', $uuid)); } $headerTransport = $dom->createElement('headerTransport'); $cadastroIndividualTransport->appendChild($headerTransport); $headerTransport->appendChild($dom->createElement('profissionalCNS', $fichaCadastroIndividual->usuario->cidadao->cns ?? '')); $headerTransport->appendChild($dom->createElement('cboCodigo_2002', $fichaCadastroIndividual->usuarioOcupacao->codigo ?? null)); $headerTransport->appendChild($dom->createElement('cnes', $fichaCadastroIndividual->equipe->unidade->cnes ?? null)); if($fichaCadastroIndividual->equipe->area->numero_ine ?? false){ $headerTransport->appendChild($dom->createElement('ine', $fichaCadastroIndividual->equipe->area->numero_ine)); } $headerTransport->appendChild($dom->createElement('dataAtendimento', strtotime($fichaCadastroIndividual->data_usuario_responsavel) * 1000)); $headerTransport->appendChild($dom->createElement('codigoIbgeMunicipio', $fichaCadastroIndividual->equipe->infraestrutura->endereco->logradouro->municipio->ibge ?? null)); $dom->appendChild($dadoTransporteTransportXml); ExportacaoService::elementRemetente($dom, $dadoTransporteTransportXml); ExportacaoService::elementOriginadora($dom, $dadoTransporteTransportXml); ExportacaoService::elementVersao($dom, $dadoTransporteTransportXml); $exportacao = new Exportacao(); $exportacao->uuid = $uuid; $exportacao->exportacao_arquivo_id = $exportacaoArquivoId; $exportacao->save(); $fichaCadastroIndividual->uuid_ficha = $uuid; $fichaCadastroIndividual->exportacao_id = $exportacao->id; $fichaCadastroIndividual->data_hora_exportacao = Carbon::now()->format('Y-m-d H:i:s'); $fichaCadastroIndividual->usuario_exportacao_id = $usuarioId ?? self::getCurrentLotacao()->usuario_id ?? null; $fichaCadastroIndividual->save(); return [ 'exportacao' => $exportacao, 'dom' => $dom, ]; } private static function getDoencasCardiacas(&$dom, $fichaCadastroIndividual, &$condicoesDeSaude){ $doencasCardiaca = DB::table('atencao_basica_cadastro_individual_doenca_cardiaca') ->select([ 'atencao_basica_cadastro_doenca_cardiaca.codigo_esus', ]) ->join( 'atencao_basica_cadastro_doenca_cardiaca', 'atencao_basica_cadastro_doenca_cardiaca.id', 'atencao_basica_cadastro_individual_doenca_cardiaca.doenca_cardiaca_id' ) ->where('atencao_basica_cadastro_individual_doenca_cardiaca.cadastro_individual_id', $fichaCadastroIndividual->id) ->get(); foreach ($doencasCardiaca as $doencaCardiaca) { $condicoesDeSaude->appendChild($dom->createElement('doencaCardiaca', $doencaCardiaca->codigo_esus)); } } private static function getDeficiencias(&$dom, $fichaCadastroIndividual, &$informacoesSocioDemograficas) { $deficiencias = DB::table('atencao_basica_cadastro_individual_deficiencia_base') ->select([ 'cadastro_deficiencia_base.codigo_esus', ]) ->join( 'cadastro_deficiencia_base', 'cadastro_deficiencia_base.id', 'atencao_basica_cadastro_individual_deficiencia_base.deficiencia_base_id' ) ->where('atencao_basica_cadastro_individual_deficiencia_base.cadastro_individual_id', $fichaCadastroIndividual->id) ->get(); $fatoresRisco = $fichaCadastroIndividual->paciente->cidadao->fatoresRisco->pluck('id'); $transtornoEspectroAutista = $fatoresRisco->contains(FatorRisco::TEA); if ($transtornoEspectroAutista && !$deficiencias->pluck('codigo_esus')->contains('232')) { $deficiencias->push((object)['codigo_esus' => '232']); } foreach ($deficiencias as $deficiencia) { $informacoesSocioDemograficas->appendChild( $dom->createElement('deficienciasCidadao', $deficiencia->codigo_esus) ); } } private static function getResponsavelPorCrianca(&$dom, $fichaCadastroIndividual, &$informacoesSocioDemograficas){ $acompanhamentos = DB::table('atencao_basica_cadastro_individual_acompanhamento_infantil') ->select([ 'atencao_basica_cadastro_acompanhamento_infantil.codigo_esus', ]) ->join( 'atencao_basica_cadastro_acompanhamento_infantil', 'atencao_basica_cadastro_acompanhamento_infantil.id', 'atencao_basica_cadastro_individual_acompanhamento_infantil.acompanhamento_infantil_id' ) ->where('atencao_basica_cadastro_individual_acompanhamento_infantil.cadastro_individual_id', $fichaCadastroIndividual->id) ->get(); foreach ($acompanhamentos as $acompanhamento) { $informacoesSocioDemograficas->appendChild($dom->createElement('responsavelPorCrianca', $acompanhamento->codigo_esus)); } } private static function getDoencasRespiratoria(&$dom, $fichaCadastroIndividual, &$condicoesDeSaude){ $doencasRespiratoria = DB::table('atencao_basica_cadastro_individual_doenca_respiratoria') ->select([ 'atencao_basica_cadastro_doenca_respiratoria.codigo_esus', ]) ->join( 'atencao_basica_cadastro_doenca_respiratoria', 'atencao_basica_cadastro_doenca_respiratoria.id', 'atencao_basica_cadastro_individual_doenca_respiratoria.doenca_respiratoria_id' ) ->where('atencao_basica_cadastro_individual_doenca_respiratoria.cadastro_individual_id', $fichaCadastroIndividual->id) ->get(); foreach ($doencasRespiratoria as $doencaRespiratoria) { $condicoesDeSaude->appendChild($dom->createElement('doencaRespiratoria', $doencaRespiratoria->codigo_esus)); } } private static function getProblemasRins(&$dom, $fichaCadastroIndividual, &$condicoesDeSaude){ $doencasRins = DB::table('atencao_basica_cadastro_individual_problemas_rins') ->select([ 'atencao_basica_cadastro_problemas_rins.codigo_esus', ]) ->join( 'atencao_basica_cadastro_problemas_rins', 'atencao_basica_cadastro_problemas_rins.id', 'atencao_basica_cadastro_individual_problemas_rins.problemas_rins_id' ) ->where('atencao_basica_cadastro_individual_problemas_rins.cadastro_individual_id', $fichaCadastroIndividual->id) ->get(); foreach ($doencasRins as $doencaRins) { $condicoesDeSaude->appendChild($dom->createElement('doencaRins', $doencaRins->codigo_esus)); } } private static function getOrigemAlimentos(&$dom, $fichaCadastroIndividual, &$emSituacaoDeRua){ $origemAlimentos = DB::table('atencao_basica_cadastro_individual_origem_alimentacao') ->select([ 'atencao_basica_cadastro_origem_alimentacao.codigo_esus', ]) ->join( 'atencao_basica_cadastro_origem_alimentacao', 'atencao_basica_cadastro_origem_alimentacao.id', 'atencao_basica_cadastro_individual_origem_alimentacao.origem_alimentacao_id' ) ->where('atencao_basica_cadastro_individual_origem_alimentacao.cadastro_individual_id', $fichaCadastroIndividual->id) ->get(); foreach ($origemAlimentos as $origemAlimento) { $emSituacaoDeRua->appendChild($dom->createElement('origemAlimentoSituacaoRua', $origemAlimento->codigo_esus)); } } private static function getHigienePessoal(&$dom, $fichaCadastroIndividual, &$emSituacaoDeRua){ $higienesPessoal = DB::table('atencao_basica_cadastro_individual_higiene_pessoal') ->select([ 'atencao_basica_cadastro_higiene_pessoal.codigo_esus', ]) ->join( 'atencao_basica_cadastro_higiene_pessoal', 'atencao_basica_cadastro_higiene_pessoal.id', 'atencao_basica_cadastro_individual_higiene_pessoal.higiene_pessoal_id' ) ->where('atencao_basica_cadastro_individual_higiene_pessoal.cadastro_individual_id', $fichaCadastroIndividual->id) ->get(); foreach ($higienesPessoal as $higienePessoal) { $emSituacaoDeRua->appendChild($dom->createElement('higienePessoalSituacaoRua', $higienePessoal->codigo_esus)); } } private static function sexo($sexo_id) { $sexo = null; if ($sexo_id === Sexo::MASCULINO) { $sexo = ExportacaoSexo::MASCULINO; } else if ($sexo_id === Sexo::FEMININO) { $sexo = ExportacaoSexo::FEMININO; } else if ($sexo_id === Sexo::INDETERMINADO) { $sexo = ExportacaoSexo::INDETERMINADO; } else { $sexo = ExportacaoSexo::IGNORADO; } return $sexo; } }