Exemplo n.º 1
0
def carrega_plano():
    URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-plano.php'
    parametros = {'id_operadora':19, 'formatacao_texto':2, 'conv_id':'',
                  'default_label_sessao_outros_planos':'Outros planos', 
                  'default_label_sessao_meus_planos':'Meu plano'}
    tipo = 'html'
    metodo = 'get'
    
    plano = None
    
    
    # Chamada da função para criar um BS a partir de uma url
    while True:
        try:
            erro, msg_erro, bs = busca_pagina(URL, tipo, parametros, metodo)
            break
        except Exception as e:
            print(e)
            print(parametros)
            continue
    
    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return
    
    try:
        planos = bs.find_all('li')
    except Exception as e:
        msg_erro = gera_msg_erro(e, 'Falhou no bs.find_all')
        grava_msg_erro(msg_erro)
        return
    
    
    if not planos:
        msg_erro = gera_msg_erro(None, 'Falhou no bs.find_all')
        grava_msg_erro(msg_erro)
        return


    for plano in planos:
        
        try:
            id_plano = plano.find('div').get('data-id')
            nome = plano.find('div').get('data-nome')
            ans = plano.find('em').text.split('|')[0].strip().split(':')[1].strip()
            tipo = plano.find('em').text.split('|')[1].strip()
            status = plano.find('strong').text.strip()
        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca de atributos')
            grava_msg_erro(msg_erro)
            return
        
        erro, msg_erro = grava_plano(id_plano, nome, ans, tipo, status)
        if erro:
            grava_msg_erro(msg_erro)
            return 
Exemplo n.º 2
0
def grava_especialidade(id_plano, cd_especialidade, nm_especialidade):
    '''Grava uma UF no banco de dados
    
    Parameters
    ----------
    id_plano : int
        Identificador do Plano.
    cd_especialidade : string
        Código da especialidade.
    nm_especialidade : string
        Nome da especialidade.

    Returns
    -------
    erro : int
       Flag de erro. 
    msg_erro : string
        Mensagem de erro formatada.
    '''
    erro = 0
    msg_erro = None    
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'INSERT INTO tb_especialidade (id_plano, cd_especialidade, nm_especialidade) '
        sql += 'VALUES (%s, %s, %s)'
        cursor.execute(sql, (id_plano, cd_especialidade, nm_especialidade))
        con.commit()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(e, 'Falhou na gravação da especialidade: ' + nm_especialidade + ' (' + str(cd_especialidade) + ')')
        
    return erro, msg_erro
Exemplo n.º 3
0
def grava_municipio_temp(id_uf, cd_municipio, nm_municipio):
    '''Grava uma UF no banco de dados
    
    Parameters
    ----------
    id_uf : int
        Identificador da UF.
    cd_municipio : string
        Código de identificação do município.
    nm_municipio : string
        Nome do municpio.

    Returns
    -------
    erro : int
       Flag de erro. 
    msg_erro : string
        Mensagem de erro formatada.
    '''
    erro = 0
    msg_erro = None    
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'INSERT INTO tb_municipio_temp (id_uf, cd_municipio, nm_municipio) '
        sql += 'VALUES (%s, %s, %s)'
        cursor.execute(sql, (id_uf, cd_municipio, nm_municipio))
        con.commit()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(e, 'Falhou na gravação do municipio: ' + nm_municipio)
        
    return erro, msg_erro
Exemplo n.º 4
0
def busca_uf(id_uf=None):
    '''Busca UFs no banco de dados
    
    Parameters
    ----------
    id_uf : int
        Identificador da UF (opcional).

    Returns
    -------
    erro : string
        Indicador de erro.
    msg_erro : string
        Mensagem de erro formatada.
    ufs : list
        Lista de UFs.
    '''
    erro = 0
    msg_erro = None
    ufs = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'SELECT id_uf, id_plano, cd_uf, sg_uf, nm_uf, cd_ibge from tb_uf'
        if id_uf is not None:
            sql += ' where id_uf = ' + str(id_uf)
        cursor.execute(sql)
        ufs = cursor.fetchall()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(e, 'Falhou na consulta da UF')

    return erro, msg_erro, ufs
Exemplo n.º 5
0
def grava_uf(id_plano, cd_uf, sg, nome, codigo_IBGE):
    '''Grava uma UF no banco de dados
    
    Parameters
    ----------
    id : int
        identificador da UF.
    sg : string
        Sigla da UF.
    nome : string
        Nome da UF.
    codigo_IBGE : string
        Código da UF no IBGE.

    Returns
    -------
    msg_erro : string
        Mensagem de erro formatada.
    '''
    erro = 0
    msg_erro = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'INSERT INTO tb_uf (id_plano, cd_uf, sg_uf, nm_uf, cd_IBGE) '
        sql += 'VALUES (%s, %s, %s, %s, %s)'
        cursor.execute(sql, (id_plano, cd_uf, sg, nome, codigo_IBGE))
        con.commit()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(e, 'Falhou na gravação da uf')

    return erro, msg_erro
Exemplo n.º 6
0
def grava_plano(id_plano, nome, ans, tipo, status):
    '''Grava um plano no banco de dados
    
    Parameters
    ----------
    nome : string
        Nome do plano.
    ans : string
        Número do plano na ANS.
    tipo : string
        Tipo do plano (empresarial, individual etc).
    status : string
        Status do plano (ativo, inativo etc).

    Returns
    -------
    msg_erro : string
        Mensagem de rro formatada.
    '''
    erro = 0
    msg_erro = None    
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'INSERT INTO tb_plano (id_plano, nm_plano, cd_ans, tp_plano, st_plano) '
        sql += 'VALUES (%s, %s, %s, %s, %s)'
        cursor.execute(sql, (id_plano, nome, ans, tipo, status))
        con.commit()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(e, 'Falhou na gravação do plano: ' + nome)
        
    return erro, msg_erro
Exemplo n.º 7
0
def grava_tipo_prestador_bairro(id_tipo_prestador, id_bairro):
    '''Grava uma UF no banco de dados
    
    Parameters
    ----------
    id_bairro : int
        Identificador do Bairro.
    nm_tipo_prestador : string
        Nome do Tipo prestador.

    Returns
    -------
    erro : int
       Flag de erro. 
    msg_erro : string
        Mensagem de erro formatada.
    '''
    erro = 0
    msg_erro = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'INSERT INTO tb_tipo_prestador_bairro (id_tipo_prestador, id_bairro) '
        sql += 'VALUES (%s, %s)'
        cursor.execute(sql, (id_tipo_prestador, id_bairro))
        con.commit()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(
            e, 'Falhou na gravação do tipo prestador bairro: ' +
            str(id_tipo_prestador) + ' (' + str(id_bairro) + ')')

    return erro, msg_erro
Exemplo n.º 8
0
def carrega_municipio():

    erro, msg_erro, ufs = busca_uf()

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for uf in ufs:
        id_uf = uf[0]
        id_plano = uf[1]
        sg_uf = uf[3]
        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-cidade.php'
        parametros = {
            'id_operadora': 19,
            'id_estado': sg_uf,
            'id_plano': id_plano,
            'formatacao_texto': '1590362791956'
        }
        tipo = 'html'
        metodo = 'get'

        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros,
                                                  metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue

        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        try:
            municipios = bs.find('ul').find_all('a')
            for municipio in municipios:
                cd_municipio = municipio.get('data-id')
                nm_municipio = municipio.text

                erro, msg_erro = grava_municipio(id_uf, cd_municipio,
                                                 nm_municipio)

        except Exception as e:
            msg_erro = gera_msg_erro(
                e, 'Falhou na busca montagem dos municipios')
            grava_msg_erro(msg_erro)
            return

        #erro, msg_erro = grava_plano(nome, ans, tipo, status)
        if erro:
            grava_msg_erro(msg_erro)
            return
Exemplo n.º 9
0
def carrega_uf():
    erro, msg_erro, planos = busca_plano()

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for plano in planos:
        id_plano = plano[0]

        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-estado-unico.php'
        parametros = {
            'true': '',
            'id_operadora': 19,
            'id_plano': id_plano,
            '_': '1590356909735'
        }
        tipo = 'json'
        metodo = 'get'

        # Chamada da função para criar um BS a partir de uma url
        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros,
                                                  metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue

        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        try:
            for uf in bs['estados']:
                cd_uf = uf['id']
                sg = uf['uf']
                nome = uf['nome']
                codigo_IBGE = uf['codigo_IBGE']

                erro, msg_erro = grava_uf(id_plano, cd_uf, sg, nome,
                                          codigo_IBGE)

                if erro:
                    grava_msg_erro(msg_erro)
                    return

        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca de estados')
            grava_msg_erro(msg_erro)
            return
Exemplo n.º 10
0
def carrega_especialidade():
    erro, msg_erro, planos = busca_plano()
    
    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return
    
    for plano in planos:
        id_plano = plano[0]
        
        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-especialidade.php'
        parametros = {'id_operadora':19, 'id_cidade': '',  
                      'id_plano': id_plano, 'id_estado': '', 'bairro': '',
                      'formatacao_texto':'2',
                      'force_especialidade':'S', 'id_tipo_prestador': ''}
        tipo = 'html'
        metodo = 'get'
    
        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros, metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue
    
        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return
    
        try:
            especialidades = bs.find('ul').find_all('a')
            for especialidade in especialidades:
                cd_especialidade = especialidade.get('data-id')
                nm_especialidade = especialidade.text
                
                erro, msg_erro = grava_especialidade(id_plano, cd_especialidade, nm_especialidade)              
                
        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca montagem dos bairros')
            grava_msg_erro(msg_erro)
            return
    
        if erro:
            grava_msg_erro(msg_erro)
            return
Exemplo n.º 11
0
def busca_especialidade(id_especialidade = None, id_plano = None, cd_especialidade = None, nm_especialidade = None):
    '''Busca Especialidade no banco de dados
    
    Parameters
    ----------
    id_especialidade : int
        Identificador da Especialidade (opcional).
    id_plano : int
        Identificador do Plano (opcional)
    cd_especialidade : int
        Código da Especialidade no Plano (opcional).
    nm_especialidade : string
        Nome da especialidade (opcional)
    
    Returns
    -------
    erro : string
        Indicador de erro.
    msg_erro : string
        Mensagem de erro formatada.
    bairros : list
        Lista de Bairros.
    '''
    erro = 0
    msg_erro = None
    tipos_prestador = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'SELECT id_especialidade, id_plano, cd_especialidade, nm_especialidade'
        sql += ' from tb_especialidade where 1 = 1'
        if id_especialidade is not None:
            sql += ' and id_especialidade = ' + str(id_especialidade)
        if id_plano is not None:
            sql += ' and id_plano = ' + str(id_plano)
        if cd_especialidade is not None:
            sql += ' and cd_especialidade = \'' + str(cd_especialidade) + '\''
        if nm_especialidade is not None:
            sql += ' and nm_especialidade = \'' + str(nm_especialidade) + '\''
        cursor.execute(sql)
        tipos_prestador = cursor.fetchall()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(e, 'Falhou na consulta da Especialidade: ' + str(id_especialidade))
        
    return erro, msg_erro, tipos_prestador
Exemplo n.º 12
0
def busca_tipo_prestador(id_tipo_prestador=None,
                         id_plano=None,
                         cd_tipo_prestador=None):
    '''Busca Tipos Prestador no banco de dados
    
    Parameters
    ----------
    id_tipo_prestador : int
        Identificador do Tipo Prestador (opcional).
    cd_tipo_prestador_bairro : int
        Código do Tipo Prestador (opcional).
    
    Returns
    -------
    erro : string
        Indicador de erro.
    msg_erro : string
        Mensagem de erro formatada.
    bairros : list
        Lista de Bairros.
    '''
    erro = 0
    msg_erro = None
    tipos_prestador = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'SELECT id_tipo_prestador, id_plano, cd_tipo_prestador, nm_tipo_prestador'
        sql += ' from tb_tipo_prestador where 1 = 1'
        if id_tipo_prestador is not None:
            sql += ' and id_tipo_prestador = ' + str(id_tipo_prestador)
        if id_plano is not None:
            sql += ' and id_plano = ' + str(id_plano)
        if cd_tipo_prestador is not None:
            sql += ' and cd_tipo_prestador = ' + str(cd_tipo_prestador)
        cursor.execute(sql)
        tipos_prestador = cursor.fetchall()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(
            e,
            'Falhou na consulta do Tipo Prestador: ' + str(id_tipo_prestador))

    return erro, msg_erro, tipos_prestador
def grava_tipo_prestador_bairro_especialidade(id_tipo_prestador, id_bairro,
                                              id_especialidade):
    erro = 0
    msg_erro = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'INSERT INTO tb_tipo_prestador_bairro_especialidade (id_tipo_prestador, id_bairro, id_especialidade) '
        sql += 'VALUES (%s, %s, %s)'
        cursor.execute(sql, (id_tipo_prestador, id_bairro, id_especialidade))
        con.commit()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(
            e, 'Falhou na gravação do tipo prestador bairro especialidade: ' +
            str(id_tipo_prestador) + ' (' + str(id_bairro) + ')')

    return erro, msg_erro
def busca_uf_temp(id_uf=None):
    erro = 0
    msg_erro = None
    ufs = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'SELECT id_uf, id_plano, cd_uf, sg_uf, nm_uf, cd_ibge from tb_uf'
        sql += ' where id_uf >= 106'
        if id_uf is not None:
            sql += ' where id_uf = ' + str(id_uf)
        cursor.execute(sql)
        ufs = cursor.fetchall()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(e, 'Falhou na consulta da UF')

    return erro, msg_erro, ufs
def busca_bairro_temp(id_municipio, id_bairro=None):
    erro = 0
    msg_erro = None
    bairros = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'SELECT id_bairro, id_municipio, nm_bairro'
        sql += ' from tb_bairro where id_municipio = ' + str(id_municipio)
        sql += ' and id_bairro >= 24393'
        if id_bairro is not None:
            sql += ' and id_municipio = ' + str(id_bairro)
        cursor.execute(sql)
        bairros = cursor.fetchall()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(
            e, 'Falhou na consulta do Municipio: ' + id_municipio)

    return erro, msg_erro, bairros
Exemplo n.º 16
0
def busca_municipio(id_uf, id_municipio=None):
    '''Busca UFs no banco de dados
    
    Parameters
    ----------
    id_uf : int
        Identificador da UF.
    id_municipio : int
        Identificador do Município (opcional).
    
    Returns
    -------
    erro : string
        Indicador de erro.
    msg_erro : string
        Mensagem de erro formatada.
    municipios : list
        Lista de Municípios.
    '''
    erro = 0
    msg_erro = None
    municipios = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'SELECT id_municipio, id_uf, cd_municipio, nm_municipio'
        sql += ' from tb_municipio where id_uf = ' + str(id_uf)
        if id_municipio is not None:
            sql += ' and id_municipio = ' + str(id_municipio)
        cursor.execute(sql)
        municipios = cursor.fetchall()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(
            e, 'Falhou na consulta do Municipio: ' + id_municipio)

    return erro, msg_erro, municipios
Exemplo n.º 17
0
def carrega_tipo_prestador():
    erro, msg_erro, planos = busca_plano()

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for plano in planos:
        id_plano = plano[0]

        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-tipo-prestador.php'
        parametros = {
            'id_operadora': 19,
            'id_cidade': '',
            'id_plano': id_plano,
            'id_estado': '',
            'bairro': '',
            'formatacao_texto': '2',
            '_': '1590376516866',
            'force_especialidade': 'S'
        }
        tipo = 'html'
        metodo = 'get'

        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros,
                                                  metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue

        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        try:
            tipos_prestador = bs.find('ul').find_all('a')
            for tp in tipos_prestador:
                cd_tipo_prestador = tp.get('data-id')
                if cd_tipo_prestador:
                    nm_tipo_prestador = tp.text
                else:
                    continue

                erro, msg_erro = grava_tipo_prestador(id_plano,
                                                      cd_tipo_prestador,
                                                      nm_tipo_prestador)

        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca montagem dos bairros')
            grava_msg_erro(msg_erro)
            return

        #erro, msg_erro = grava_plano(nome, ans, tipo, status)
        if erro:
            grava_msg_erro(msg_erro)
            return
Exemplo n.º 18
0
def carrega_lista_prestador():
    erro, msg_erro, prestador_bairro_especialidade = busca_tipo_prestador_bairro_especialidade(
    )

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for pbe in prestador_bairro_especialidade:
        id_plano = pbe[0]
        id_uf = pbe[2]
        id_cidade = pbe[3]
        id_bairro = pbe[5]
        bairro = pbe[6]
        id_tipo_prestador = pbe[7]
        cd_tipo_prestador = pbe[8]
        id_especialidade = pbe[10]
        cd_especialidade = pbe[11]

        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-busca.php'
        parametros = {
            'id_operadora': 19,
            'id_plano': id_plano,
            'id_estado': id_uf,
            'id_cidade': id_cidade,
            'bairro': bairro,
            'id_tipo_prestador': cd_tipo_prestador,
            'id_especialidade': cd_especialidade,
            'regiao_tipo': 'endereco',
            'utiliza_secoes': 'N',
            'agrupa_espec': 'N',
            'formatacao_texto': '2',
            'paged': '0'
        }
        tipo = 'html'
        metodo = 'get'

        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros,
                                                  metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue
        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        try:
            prestadores = bs.find_all('table', {'class': 'resultados-lista'})
            if prestadores is None:
                prestadores = bs.find_all('table',
                                          {'class': 'resultados-lista '})

            for prestador in prestadores:
                cd_prestador = prestador.get('data-id')

                nome = prestador.find('h5')
                if nome is not None:
                    nm_prestador = nome.text.strip()
                else:
                    nm_prestador = ''

                especialidade = prestador.find("span", {"class": "color-2"})
                if especialidade is not None:
                    nm_especialidade = especialidade.text.strip()
                else:
                    nm_especialidade = ''
                tel_todos = ''
                telefones = prestador.find('div', {
                    'class': 'telefones'
                }).find_all('p')
                if telefones is not None:
                    for telefone in telefones:
                        if tel_todos == '':
                            tel_todos += f'{telefone.span.text}'
                        else:
                            tel_todos += f'|{telefone.span.text}'

                endereco = prestador.find('h6')
                if endereco is not None:
                    nm_logradouro_ampliado = endereco.text.strip()
                else:
                    nm_logradouro_ampliado = ''

                bairro = endereco.next_sibling.next_sibling
                nm_bairro = bairro.span.text

                mun_uf = bairro.next_sibling.next_sibling.span.text
                nm_municipio = mun_uf.split('/')[0]
                sg_uf = mun_uf.split('/')[1]

                # print(cd_prestador)
                # print(nome)
                # print(especialidade)
                # print(f'Nome: {nm_prestador}, especialidade: {nm_especialidade}')
                # print(tel_todos)
                # print(nm_logradouro_ampliado)
                # print(nm_bairro)
                # print(f'{nm_municipio}/{sg_uf}')

                erro, msg_erro = grava_lista_prestador(
                    id_tipo_prestador, id_bairro, id_especialidade,
                    cd_prestador, nm_prestador, nm_especialidade,
                    nm_logradouro_ampliado, nm_bairro, nm_municipio, sg_uf,
                    tel_todos)

        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca montagem dos bairros')
            grava_msg_erro(msg_erro)
            return

        # erro, msg_erro = grava_plano(nome, ans, tipo, status)
        if erro:
            grava_msg_erro(msg_erro)
            return
Exemplo n.º 19
0
def grava_lista_prestador(id_tipo_prestador, id_bairro, id_especialidade,
                          cd_prestador, nm_prestador, nm_especialidade,
                          nm_logradouro_ampliado, nm_bairro, nm_municipio,
                          sg_uf, tel_todos):
    '''Grava um registro de prestador no tipo lista no banco de dados

    Parameters
    ----------
    id_tipo_prestador : int
        Identificador do Tipo Prestador.
    id_bairro: int
        Identificador do bairro.
    id_especialidade : int
        Identificador da especialidade.
    cd_prestador : int
        Código do prestador no sistema de origem
    nm_prestador : string
        Nome do prestador
    nm_especialidade : string
        Nome da especialidade
    nm_logradouro_ampliado : string
        Nome do logradouro, número e complemento
    nm_bairro : string
        Nome do bairro
    nm_municipio : string
        Nome do município
    sg_uf : string
        Sigla da UF
    tel_todos : string
        Lista de telefones do prestador separado por |

    Returns
    -------
    erro : int
       Flag de erro.
    msg_erro : string
        Mensagem de erro formatada.
    '''
    erro = 0
    msg_erro = None
    try:
        con = conecta_banco()
        cursor = con.cursor()
        sql = 'INSERT INTO tb_lista_prestador(id_tipo_prestador, id_bairro, ' \
              'id_especialidade, cd_prestador, nm_prestador, ' \
              'nm_especialidade, nm_logradouro_ampliado, ' \
              'nm_bairro, nm_municipio, sg_uf, nr_telefones) '
        sql += 'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'
        cursor.execute(
            sql, (id_tipo_prestador, id_bairro, id_especialidade, cd_prestador,
                  nm_prestador, nm_especialidade, nm_logradouro_ampliado,
                  nm_bairro, nm_municipio, sg_uf, tel_todos))
        con.commit()
        con.close()
    except Exception as e:
        erro = 1
        msg_erro = gera_msg_erro(
            e, f'Falhou na gravação de lista prestador: '
            f'id_tipo_prestador: {id_tipo_prestador}, id_bairro: {id_bairro}, '
            f'id_especialidade: {id_especialidade}, '
            f'cd_prestador: {cd_prestador}')

    return erro, msg_erro
def carrega_tipo_prestador_bairro_especialidade_temp():

    erro, msg_erro, ufs = busca_uf_temp()

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for uf in ufs:
        id_uf = uf[0]
        id_plano = uf[1]
        sg_uf = uf[3]

        erro, msg_erro, municipios = busca_municipio_temp(id_uf)

        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        for municipio in municipios:
            id_municipio = municipio[0]
            cd_municipio = municipio[2]

            erro, msg_erro, bairros = busca_bairro_temp(id_municipio)

            if erro:
                # Salva log de erro
                grava_msg_erro(msg_erro)
                return

            for bairro in bairros:
                id_bairro = bairro[0]
                nm_bairro = remover_acentos(bairro[2].strip().upper())

                erro, msg_erro, tipos_prestador_bairros = busca_tipo_prestador_bairro(
                    None, id_bairro)

                if erro:
                    grava_msg_erro(msg_erro)
                    return

                for tipo_prestador_bairro in tipos_prestador_bairros:
                    id_tipo_prestador = tipo_prestador_bairro[0]

                    erro, msg_erro, tipo_prestador = busca_tipo_prestador(
                        id_tipo_prestador, id_plano)

                    if erro:
                        grava_msg_erro(msg_erro)
                        return

                    cd_tipo_prestador = tipo_prestador[0][2]

                    URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-especialidade.php'
                    parametros = {
                        'id_operadora': 19,
                        'id_cidade': cd_municipio,
                        'id_plano': id_plano,
                        'id_estado': sg_uf,
                        'bairro': nm_bairro,
                        'id_tipo_prestador': cd_tipo_prestador,
                        'formatacao_texto': '2',
                        '_': '1590376516866',
                        'force_especialidade': 'S'
                    }
                    tipo = 'html'
                    metodo = 'get'

                    while True:
                        try:
                            erro, msg_erro, bs = busca_pagina(
                                URL, tipo, parametros, metodo)
                            break
                        except Exception as e:
                            print(e)
                            print(parametros)
                            continue

                    if erro:
                        # Salva log de erro
                        grava_msg_erro(msg_erro)
                        return

                    try:
                        especialidades = bs.find('ul').find_all('a')
                        for especialidade in especialidades:
                            cd_especialidade = especialidade.get('data-id')

                            erro, msg_erro, especialidade = busca_especialidade(
                                None, id_plano, cd_especialidade, None)

                            if erro:
                                grava_msg_erro(msg_erro)
                                return

                            id_especialidade = especialidade[0][0]

                            erro, msg_erro = grava_tipo_prestador_bairro_especialidade(
                                id_tipo_prestador, id_bairro, id_especialidade)

                    except Exception as e:
                        msg_erro = gera_msg_erro(
                            e, 'Falhou na busca montagem dos bairros')
                        grava_msg_erro(msg_erro)
                        return

                    if erro:
                        grava_msg_erro(msg_erro)
                        return