Spaces:
				
			
			
	
			
			
		Sleeping
		
	
	
	
			
			
	
	
	
	
		
		
		Sleeping
		
	| import pandas as pd | |
| import os | |
| import sys | |
| import traceback | |
| # --- ETAPA 1: DEFINIR CAMINHOS DINAMICAMENTE --- | |
| try: | |
| script_dir = os.path.dirname(os.path.abspath(__file__)) | |
| except NameError: | |
| # Fallback para ambientes interativos | |
| script_dir = os.getcwd() | |
| excel_file_path = os.path.join(script_dir, 'TUSSxRolxSinônimosvs2.xlsx') | |
| csv_file_path = os.path.join(script_dir, 'rol_procedures_database.csv') | |
| print(f"Diretório de trabalho: {script_dir}") | |
| print(f"Arquivo de entrada (Excel): {excel_file_path}") | |
| print(f"Arquivo de saída (CSV): {csv_file_path}") | |
| # --- ETAPA 2: VERIFICAR E PROCESSAR OS ARQUIVOS --- | |
| if not os.path.exists(excel_file_path): | |
| print(f"\nERRO: Arquivo de entrada não encontrado!") | |
| print( | |
| f"Por favor, certifique-se de que o arquivo '{os.path.basename(excel_file_path)}' está na mesma pasta que este script.") | |
| sys.exit(1) | |
| try: | |
| print(f"\nLendo o arquivo Excel (forçando TODAS as colunas como texto)...") | |
| df = pd.read_excel(excel_file_path, dtype=str) | |
| print("Mapeando colunas e limpando dados...") | |
| df_mapped = pd.DataFrame() | |
| column_mapping = { | |
| 'Codigo_TUSS': 'Código', | |
| 'Descricao_TUSS': 'Terminologia de Procedimentos e Eventos em Saúde (Tab. 22.202503)', | |
| 'Correlacao_Rol': 'Correlação\n(Sim/Não)', | |
| 'Procedimento_Rol': 'PROCEDIMENTO', | |
| 'Resolucao_Normativa': 'Resolução\nNormativa (alteração)', | |
| 'Vigencia': 'VIGÊNCIA', | |
| 'OD': 'OD', 'AMB': 'AMB', 'HCO': 'HCO', 'HSO': 'HSO', 'PAC': 'PAC', 'DUT': 'DUT', | |
| 'SUBGRUPO': 'SUBGRUPO', 'GRUPO': 'GRUPO', 'CAPITULO': 'CAPÍTULO', | |
| 'Sinonimo_1': 'Sinônimo 1 (Popular/Explicativo)', | |
| 'Sinonimo_2': 'Sinônimo 2 (Abreviação/Técnico)', | |
| 'Sinonimo_3': 'Sinônimo 3 (Entre Tabelas AMB/CBHPM)', | |
| 'Sinonimo_4': 'Sinônimo 4 (Outros)', | |
| 'Semantico': 'Síntese semântica do procedimento'} | |
| for new_col, old_col in column_mapping.items(): | |
| if old_col in df.columns: | |
| # --- ALTERAÇÃO PRINCIPAL AQUI --- | |
| # 1. Substituímos qualquer quebra de linha (\n ou \r) por um espaço. | |
| # 2. Depois, limpamos os espaços em branco do início e do fim. | |
| # Usamos uma expressão regular (regex) para pegar todas as variações de quebra de linha. | |
| cleaned_series = df[old_col].str.replace(r'[\r\n]+', ' ', regex=True).str.strip() | |
| df_mapped[new_col] = cleaned_series | |
| # ------------------------------------ | |
| else: | |
| print(f"AVISO: Coluna '{old_col}' não encontrada. A coluna '{new_col}' será criada vazia.") | |
| df_mapped[new_col] = pd.Series(dtype='object') | |
| # Preencher valores nulos (NaN) com uma string vazia para garantir consistência | |
| df_mapped = df_mapped.fillna('') | |
| print(f"\nSalvando o arquivo CSV mapeado e limpo...") | |
| # Usando quoting=csv.QUOTE_MINIMAL pode ser uma boa prática, mas o padrão já é bom. | |
| df_mapped.to_csv(csv_file_path, index=False, encoding='utf-8-sig') | |
| print("\n--- Informações do arquivo CSV gerado ---") | |
| print(f"Número de linhas: {len(df_mapped)}") | |
| print(f"Número de colunas: {len(df_mapped.columns)}") | |
| print(f"\nSUCESSO! Arquivo CSV salvo em: {csv_file_path}") | |
| except Exception as e: | |
| print(f"\nERRO CRÍTICO ao processar o arquivo Excel: {e}") | |
| traceback.print_exc() | |
| sys.exit(1) | 
