tuliodisanto commited on
Commit
2f64469
·
verified ·
1 Parent(s): 80d977f

Upload 2 files

Browse files
convert_excel_to_csv.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import os
3
+ import sys
4
+ import traceback
5
+
6
+ # --- ETAPA 1: DEFINIR CAMINHOS DINAMICAMENTE ---
7
+ try:
8
+ script_dir = os.path.dirname(os.path.abspath(__file__))
9
+ except NameError:
10
+ # Fallback para ambientes interativos
11
+ script_dir = os.getcwd()
12
+
13
+ excel_file_path = os.path.join(script_dir, 'TUSSxRolxSinônimosvs2.xlsx')
14
+ csv_file_path = os.path.join(script_dir, 'rol_procedures_database.csv')
15
+
16
+ print(f"Diretório de trabalho: {script_dir}")
17
+ print(f"Arquivo de entrada (Excel): {excel_file_path}")
18
+ print(f"Arquivo de saída (CSV): {csv_file_path}")
19
+
20
+ # --- ETAPA 2: VERIFICAR E PROCESSAR OS ARQUIVOS ---
21
+ if not os.path.exists(excel_file_path):
22
+ print(f"\nERRO: Arquivo de entrada não encontrado!")
23
+ print(
24
+ f"Por favor, certifique-se de que o arquivo '{os.path.basename(excel_file_path)}' está na mesma pasta que este script.")
25
+ sys.exit(1)
26
+
27
+ try:
28
+ print(f"\nLendo o arquivo Excel (forçando TODAS as colunas como texto)...")
29
+ df = pd.read_excel(excel_file_path, dtype=str)
30
+
31
+ print("Mapeando colunas e limpando dados...")
32
+ df_mapped = pd.DataFrame()
33
+
34
+ column_mapping = {
35
+ 'Codigo_TUSS': 'Código',
36
+ 'Descricao_TUSS': 'Terminologia de Procedimentos e Eventos em Saúde (Tab. 22.202503)',
37
+ 'Correlacao_Rol': 'Correlação\n(Sim/Não)',
38
+ 'Procedimento_Rol': 'PROCEDIMENTO',
39
+ 'Resolucao_Normativa': 'Resolução\nNormativa (alteração)',
40
+ 'Vigencia': 'VIGÊNCIA',
41
+ 'OD': 'OD', 'AMB': 'AMB', 'HCO': 'HCO', 'HSO': 'HSO', 'PAC': 'PAC', 'DUT': 'DUT',
42
+ 'SUBGRUPO': 'SUBGRUPO', 'GRUPO': 'GRUPO', 'CAPITULO': 'CAPÍTULO',
43
+ 'Sinonimo_1': 'Sinônimo 1 (Popular/Explicativo)',
44
+ 'Sinonimo_2': 'Sinônimo 2 (Abreviação/Técnico)',
45
+ 'Sinonimo_3': 'Sinônimo 3 (Entre Tabelas AMB/CBHPM)',
46
+ 'Sinonimo_4': 'Sinônimo 4 (Outros)',
47
+ 'Semantico': 'Síntese semântica do procedimento'}
48
+
49
+ for new_col, old_col in column_mapping.items():
50
+ if old_col in df.columns:
51
+ # --- ALTERAÇÃO PRINCIPAL AQUI ---
52
+ # 1. Substituímos qualquer quebra de linha (\n ou \r) por um espaço.
53
+ # 2. Depois, limpamos os espaços em branco do início e do fim.
54
+ # Usamos uma expressão regular (regex) para pegar todas as variações de quebra de linha.
55
+ cleaned_series = df[old_col].str.replace(r'[\r\n]+', ' ', regex=True).str.strip()
56
+ df_mapped[new_col] = cleaned_series
57
+ # ------------------------------------
58
+ else:
59
+ print(f"AVISO: Coluna '{old_col}' não encontrada. A coluna '{new_col}' será criada vazia.")
60
+ df_mapped[new_col] = pd.Series(dtype='object')
61
+
62
+ # Preencher valores nulos (NaN) com uma string vazia para garantir consistência
63
+ df_mapped = df_mapped.fillna('')
64
+
65
+ print(f"\nSalvando o arquivo CSV mapeado e limpo...")
66
+ # Usando quoting=csv.QUOTE_MINIMAL pode ser uma boa prática, mas o padrão já é bom.
67
+ df_mapped.to_csv(csv_file_path, index=False, encoding='utf-8-sig')
68
+
69
+ print("\n--- Informações do arquivo CSV gerado ---")
70
+ print(f"Número de linhas: {len(df_mapped)}")
71
+ print(f"Número de colunas: {len(df_mapped.columns)}")
72
+ print(f"\nSUCESSO! Arquivo CSV salvo em: {csv_file_path}")
73
+
74
+ except Exception as e:
75
+ print(f"\nERRO CRÍTICO ao processar o arquivo Excel: {e}")
76
+ traceback.print_exc()
77
+ sys.exit(1)
rol_procedures_database.csv ADDED
The diff for this file is too large to render. See raw diff