config('app.integracao_cidadao_senha') ])->post($url . '/integracao', $data); if ($response->status() === Response::HTTP_NOT_FOUND && $response->json() && $response->json('code') === 1) { // TODO: Verificar o que vai fazer quando não tiver cliente cadastrado na integração. } elseif ($response->status() !== Response::HTTP_CREATED) { throw new \Exception('Erro na integração entre sistemas', Response::HTTP_INTERNAL_SERVER_ERROR); } } private static function getPacienteData($cidadaoId) { $cidadao = Cidadao::findOrFail($cidadaoId); $telefoneCelular = $cidadao->telefones ->filter(fn ($t) => Str::length($t->numero) === 11)->first()->numero ?? null; $telefoneResidencial = $cidadao->telefones ->filter(fn ($t) => Str::length($t->numero) === 10)->first()->numero ?? null; $telefoneRecado = $cidadao->telefones ->filter(fn ($t) => !in_array($t->numero, [$telefoneCelular, $telefoneResidencial])) ->first()->numero ?? null; return [ 'sistema' => 'conectasus_v2', 'cliente' => app('config')->get('database.default'), 'tipo_origem_id' => 1, // CADASTRO_CIDADAO 'dados' => [ 'aposentado_pensionista' => null, 'bairro_nome' => $cidadao->domicilio->endereco->logradouro->bairro->nome ?? null, 'certidao_cartorio_codigo' => $cidadao->certidao->cartorio_codigo ?? null, 'certidao_cartorio_nome' => $cidadao->certidao->cartorio_nome ?? null, 'certidao_data_emissao' => ($cidadao->certidao->data_emissao ?? null) ? $cidadao->certidao->data_emissao->format('Y-m-d') : null, 'certidao_folha' => $cidadao->certidao->folha ?? null, 'certidao_livro' => $cidadao->certidao->livro ?? null, 'certidao_modelo_id' => $cidadao->certidao->modelo_id ?? null, 'certidao_municipio_ibge' => $cidadao->certidao->municipio->ibge ?? null, 'certidao_numero' => ($cidadao->certidao->modelo_id ?? null) === CertidaoModelo::NOVO ? ($cidadao->certidao->numero ?? null) : null, 'certidao_termo' => ($cidadao->certidao->modelo_id ?? null) === CertidaoModelo::ANTIGO ? ($cidadao->certidao->numero ?? null) : null, 'certidao_tipo_id' => $cidadao->certidao->tipo_id ?? null, 'cidadao_id_v2' => $cidadao->id, 'classificacao_id' => $cidadao->paciente->classificacao_id ?? null, 'cnh_categoria_id' => $cidadao->carteiraHabilitacao->categoria_id ?? null, 'cnh_data_emissao' => ($cidadao->carteiraHabilitacao->data_emissao ?? null) ? $cidadao->carteiraHabilitacao->data_emissao->format('Y-m-d') : null, 'cnh_data_validade' => ($cidadao->carteiraHabilitacao->data_validade ?? null) ? $cidadao->carteiraHabilitacao->data_validade->format('Y-m-d') : null, 'cnh_estado_uf' => $cidadao->carteiraHabilitacao->estado->uf ?? null, 'cnh_numero' => $cidadao->carteiraHabilitacao->numero ?? null, 'cns' => $cidadao->cns, 'comorbidade_descricao' => null, 'complemento' => $cidadao->domicilio->endereco->complemento ?? null, 'convenio_medico_nome' => $cidadao->conveniosMedico->first()->nome ?? null, 'convenio_odontologico_nome' => null, 'cpf_numero' => $cidadao->cpf, 'ctps_data_emissao' => ($cidadao->carteiraTrabalho->data_emissao ?? null) ? $cidadao->carteiraTrabalho->data_emissao->format('Y-m-d') : null, 'ctps_estado_uf' => $cidadao->carteiraTrabalho->estado->uf ?? null, 'ctps_nis_pis_pasep' => $cidadao->carteiraTrabalho->nis_pis_pasep ?? null, 'ctps_numero' => $cidadao->carteiraTrabalho->numero ?? null, 'ctps_serie' => $cidadao->carteiraTrabalho->serie ?? null, 'data_entrada_brasil' => ($cidadao->estrangeiroEntradaBrasil->data_entrada ?? null) ? $cidadao->estrangeiroEntradaBrasil->data_entrada->format('Y-m-d') : null, 'data_nascimento' => $cidadao->data_nascimento ? $cidadao->data_nascimento->format('Y-m-d') : null, 'data_naturalizacao' => $cidadao->data_naturalizacao ? $cidadao->data_naturalizacao->format('Y-m-d') : null, 'data_obito' => $cidadao->obito ? $cidadao->obito->obito_em->format('Y-m-d H:i:s') : null, 'deficiencia_id' => $cidadao->deficiencia_id, 'deficiencia_outra' => $cidadao->deficiencia_outro, 'desconhece_mae' => $cidadao->desconhece_nome_mae, 'desconhece_pai' => $cidadao->desconhece_nome_pai, 'doador_orgao' => null, 'email' => $cidadao->paciente->email ?? null, 'escolaridade_id' => $cidadao->escolaridade_id, 'esporte_descricao' => null, 'esta_empregado_atualmente' => null, 'estado_civil_id' => $cidadao->estado_civil_id, 'etnia_indigena_descricao' => $cidadao->etniaIndigena->descricao ?? null, 'faixa_renda_id' => null, 'id' => $cidadao->cidadao_id ?? null, 'identidade_genero_id' => $cidadao->identidade_genero_id, 'local_nascimento_id' => $cidadao->local_nascimento_id, 'logradouro_cep' => $cidadao->domicilio->endereco->logradouro->cep ?? null, 'logradouro_nome' => $cidadao->domicilio->endereco->logradouro->nome ?? null, 'logradouro_tipo_nome' => $cidadao->domicilio->endereco->logradouro->tipo->descricao ?? null, 'loteamento_nome' => $cidadao->domicilio->endereco->loteamento->nome ?? null, 'mobilidade_reduzida_id' => $cidadao->mobilidade_reduzida_id, 'municipio_ibge' => $cidadao->domicilio->endereco->logradouro->municipio->ibge ?? null, 'municipio_nascimento_ibge' => $cidadao->municipioNascimento->ibge ?? null, 'nacionalidade_id' => $cidadao->nacionalidade_id, 'nome' => $cidadao->nome, 'nome_conjuge' => $cidadao->conjuge, 'nome_mae' => $cidadao->nome_mae, 'nome_pai' => $cidadao->nome_pai, 'nome_social' => $cidadao->nome_social, 'numero' => $cidadao->domicilio->endereco->numero ?? null, 'ocupacao_descricao' => null, 'orientacao_sexual_id' => null, 'pais_codigo' => $cidadao->domicilio->endereco->logradouro->municipio->estado->pais->codigo ?? null, 'pais_nome' => $cidadao->domicilio->endereco->logradouro->municipio->estado->pais->nome ?? null, 'pais_nascimento_codigo' => $cidadao->paisNascimento->codigo ?? null, 'pais_nascimento_nome' => $cidadao->paisNascimento->nome ?? null, 'plano_funerario_nome' => null, 'ponto_referencia' => $cidadao->domicilio->endereco->referencia ?? null, 'portador_alguma_comorbidade' => null, 'pratica_algum_esporte' => null, 'preferencia_nome_id' => $cidadao->preferencia_nome_id, 'raca_cor_id' => $cidadao->raca_cor_id, 'reside_domicilio_desde' => $cidadao->data_entrada_domicilio ? $cidadao->data_entrada_domicilio->format('Y-m-d') : null, 'rg_data_emissao' => ($cidadao->carteiraIdentidade->data_emissao ?? null) ? $cidadao->carteiraIdentidade->data_emissao->format('Y-m-d') : null, 'rg_estado_uf' => $cidadao->carteiraIdentidade->estado->uf ?? null, 'rg_numero' => $cidadao->carteiraIdentidade->numero ?? null, 'rg_orgao_emissor' => $cidadao->carteiraIdentidade->orgao_emissor ?? null, 'rne_numero' => $cidadao->estrangeiroEntradaBrasil->rne ?? null, 'sem_numero' => $cidadao->domicilio->endereco->sem_numero ?? null, 'sexo_id' => $cidadao->sexo_id, 'situacao_familiar_conjugal_id' => $cidadao->situacao_familiar_conjugal_id, 'subclassificacao_id' => $cidadao->paciente->subclassificacao_id ?? null, 'telefone_celular' => $telefoneCelular, 'telefone_recado' => $telefoneRecado, 'telefone_residencial' => $telefoneResidencial, 'tipo_moradia_id' => null, 'tipo_sanguineo_id' => $cidadao->tipo_sanguineo_id, 'titulo_eleitor_municipio_ibge' => null, 'titulo_eleitor_numero' => $cidadao->tituloEleitor->numero ?? null, 'titulo_eleitor_secao' => $cidadao->tituloEleitor->secao ?? null, 'titulo_eleitor_zona' => $cidadao->tituloEleitor->zona ?? null, 'unidade_referencia_nome' => $cidadao->paciente->unidade->nome_fantasia ?? null, 'utiliza_transporte_coletivo' => null, 'zona_id' => $cidadao->domicilio->endereco->zona_id ?? null, ] ]; } private static function getUsuarioData($cidadaoId) { $cidadao = Cidadao::findOrFail($cidadaoId); $usuario = $cidadao->usuario; $telefoneCelular = $cidadao->telefones ->filter(fn ($t) => Str::length($t->numero) === 11)->first()->numero ?? null; $telefoneResidencial = $cidadao->telefones ->filter(fn ($t) => Str::length($t->numero) === 10)->first()->numero ?? null; $telefoneRecado = $cidadao->telefones ->filter(fn ($t) => !in_array($t->numero, [$telefoneCelular, $telefoneResidencial])) ->first()->numero ?? null; return [ 'sistema' => 'conectasus_v2', 'cliente' => app('config')->get('database.default'), 'tipo_origem_id' => 2, // CADASTRO_USUARIO 'dados' => [ 'cd_usuario_sistema_v1' => $usuario->cd_usuario_sistema_v1, 'usuario_id_v2' => $usuario->id, 'registro_numero' => $usuario->registro_numero, 'escolaridade_id' => $cidadao->escolaridade_id, 'estado_civil_id' => $cidadao->estado_civil_id, 'bairro_nome' => $cidadao->domicilio->endereco->logradouro->bairro->nome ?? null, 'logradouro_nome' => $cidadao->domicilio->endereco->logradouro->nome ?? null, 'numero' => $cidadao->domicilio->endereco->numero ?? null, 'logradouro_cep' => $cidadao->domicilio->endereco->logradouro->cep ?? null, 'municipio_ibge' => $cidadao->domicilio->endereco->logradouro->municipio->ibge ?? null, 'logradouro_tipo_nome' => $cidadao->domicilio->endereco->logradouro->tipo->descricao ?? null, 'complemento' => $cidadao->domicilio->endereco->complemento ?? null, 'registro_tipo_id' => $usuario->registro_tipo_id, 'sexo_id' => $cidadao->sexo_id, 'data_nascimento' => $cidadao->data_nascimento->format('Y-m-d'), 'email' => $usuario->email, 'tipo_usuario' => $usuario->lotacoes()->exists() ? 'MED' : 'USU', 'nome_mae' => $cidadao->nome_mae, 'nome_pai' => $cidadao->nome_pai, 'nome' => $cidadao->nome, 'cns' => $cidadao->cns, 'cpf' => $cidadao->cpf, 'rg_numero' => $cidadao->carteiraIdentidade->numero ?? null, 'registro_uf' => $usuario->registroEstado->uf ?? null, 'nome_usuario' => $usuario->usuario, 'loteamento_nome' => $cidadao->domicilio->endereco->loteamento->nome ?? null, 'ponto_referencia' => $cidadao->domicilio->endereco->referencia ?? null, 'zona_id' => $cidadao->domicilio->endereco->zona_id ?? null, 'estado_nascimento_uf' => $cidadao->estadoNascimento->uf ?? null, 'municipio_nascimento_ibge' => $cidadao->municipioNascimento->ibge ?? null, 'telefone_recado' => $telefoneRecado, 'telefone_celular' => $telefoneCelular, 'telefone_residencial' => $telefoneResidencial, 'telefones' => $cidadao->telefones->map(fn ($telefone) => [ 'numero' => $telefone->numero, 'autoriza_sms' => $telefone->autoriza_sms, 'principal' => $telefone->principal, ]) ] ]; } }