Alejo760 commited on
Commit
19e6757
verified
1 Parent(s): 99fdb26

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -14
app.py CHANGED
@@ -48,16 +48,21 @@ def extract_texts_from_pdfs(pdfs):
48
  text += pdf_text + "\n"
49
  return text
50
 
 
 
 
 
 
 
 
 
51
  def organize_clinical_record(current_text, transcription_text, pdf_text):
52
  clinical_record_template = """
53
  MOTIVO DE CONSULTA: usa una frase en palabras del paciente entre comillas
54
-
55
  ENFERMEDAD ACTUAL:
56
  (usa terminologia m茅dica En orden cronol贸gico desde el inicio de los s铆ntomas, no incluir la edad ni los antecedentes en esta secci贸n, evoluci贸n de los s铆ntomas, factores desencadenantes, hitos de la enfermedad del paciente, finaliza como se siente hoy)
57
-
58
  REVISI脫N POR SISTEMAS:
59
  (usa terminologia m茅dica)
60
-
61
  ANTECEDENTES:
62
  **Patol贸gicos: (describir en lenguaje tecnico medico la enfermedad con clasificaci贸n y complicaciones relacionadas de cada antecedente )
63
  ** Al茅rgicos: (con tipo de reacci贸n y a cu谩l medicamento)
@@ -70,25 +75,19 @@ def organize_clinical_record(current_text, transcription_text, pdf_text):
70
  ** Estado de vacunaci贸n:
71
  ** Hospitalizaciones previas (fecha y descripci贸n breve )
72
  ** Medicamentos:
73
-
74
  AYUDAS DIAGNOSTICAS:
75
- (ordenar todas las ayudas diagn贸sticas por fecha de forma que sea simple y sencillo leer los resultados para el m茅dico, cuando se requiera presenta los resultados en miles, asegurate que no te falte ninguna ayuda, y no interpretes, solo pon los valores sin rango de normalidad en prosa separa cada examen con una coma, usa minusculas y organiza por fechas. Por ejemplo: 11/10/2024: resultado 1 , resultado 2, ... 12/11/2023: resultado 1 , resultado 2, ... )
76
  """
77
  prompt = f"""
78
  Toma el siguiente borrador del registro cl铆nico y actual铆zalo con la nueva informaci贸n proporcionada, siguiendo la estructura dada:
79
-
80
  Estructura del Registro Cl铆nico:
81
  {clinical_record_template}
82
-
83
  Borrador Actual del Registro Cl铆nico:
84
  {current_text}
85
-
86
  Nueva Informaci贸n de Audio:
87
  {transcription_text}
88
-
89
  Nueva Informaci贸n del PDF:
90
  {pdf_text}
91
-
92
  Actualiza el borrador incorporando la nueva informaci贸n en las secciones correspondientes, sin eliminar informaci贸n previa que a煤n sea relevante.
93
  """
94
  try:
@@ -96,7 +95,7 @@ def organize_clinical_record(current_text, transcription_text, pdf_text):
96
  return organized_text
97
  except Exception as e:
98
  print(f"Error al invocar ChatGroq: {e}")
99
- return current_text # Devuelve el texto actual si falla
100
 
101
  def process_input(audio, pdfs, current_text):
102
  try:
@@ -109,8 +108,33 @@ def process_input(audio, pdfs, current_text):
109
  except Exception as e:
110
  pdf_text = ""
111
  print(f"Error en extracci贸n de PDFs: {e}")
112
- organized_record = organize_clinical_record(current_text, transcription_text, pdf_text)
113
- return organized_record.content, "Informaci贸n de depuraci贸n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
  # Configuraci贸n del tema
116
  theme = gr.themes.Base(
@@ -159,7 +183,7 @@ with gr.Blocks(theme=theme) as iface:
159
  )
160
  current_state = gr.State(value=initial_text)
161
  audio_filepath = gr.Audio(sources=["microphone"], type="filepath", label="Entrada de Audio")
162
- pdf_files = gr.File(file_types=[".pdf"], label="Subir PDF", file_count="simple")
163
  debug_output = gr.Textbox(label="Informaci贸n de Depuraci贸n", lines=10)
164
 
165
  # Funci贸n para capturar cambios en el iterative_output
 
48
  text += pdf_text + "\n"
49
  return text
50
 
51
+ def split_text_into_chunks(text, max_words_per_chunk):
52
+ words = text.split()
53
+ chunks = []
54
+ for i in range(0, len(words), max_words_per_chunk):
55
+ chunk = ' '.join(words[i:i + max_words_per_chunk])
56
+ chunks.append(chunk)
57
+ return chunks
58
+
59
  def organize_clinical_record(current_text, transcription_text, pdf_text):
60
  clinical_record_template = """
61
  MOTIVO DE CONSULTA: usa una frase en palabras del paciente entre comillas
 
62
  ENFERMEDAD ACTUAL:
63
  (usa terminologia m茅dica En orden cronol贸gico desde el inicio de los s铆ntomas, no incluir la edad ni los antecedentes en esta secci贸n, evoluci贸n de los s铆ntomas, factores desencadenantes, hitos de la enfermedad del paciente, finaliza como se siente hoy)
 
64
  REVISI脫N POR SISTEMAS:
65
  (usa terminologia m茅dica)
 
66
  ANTECEDENTES:
67
  **Patol贸gicos: (describir en lenguaje tecnico medico la enfermedad con clasificaci贸n y complicaciones relacionadas de cada antecedente )
68
  ** Al茅rgicos: (con tipo de reacci贸n y a cu谩l medicamento)
 
75
  ** Estado de vacunaci贸n:
76
  ** Hospitalizaciones previas (fecha y descripci贸n breve )
77
  ** Medicamentos:
 
78
  AYUDAS DIAGNOSTICAS:
79
+ (ordenar todas las ayudas diagn贸sticas por fecha de forma que sea simple y sencillo leer los resultados para el m茅dico, cuando se requiera presenta los resultados en miles, asegurate que no te falte ninguna ayuda, y no interpretes, solo pon los valores sin rango de normalidad en prosa separa cada examen con una coma, usa minusculas y organiza por fechas. Por ejemplo: 11/10/2024: resultado 1 , resultado 2, ... 12/11/2023: resultado 1 , resultado 2, ... )
80
  """
81
  prompt = f"""
82
  Toma el siguiente borrador del registro cl铆nico y actual铆zalo con la nueva informaci贸n proporcionada, siguiendo la estructura dada:
 
83
  Estructura del Registro Cl铆nico:
84
  {clinical_record_template}
 
85
  Borrador Actual del Registro Cl铆nico:
86
  {current_text}
 
87
  Nueva Informaci贸n de Audio:
88
  {transcription_text}
 
89
  Nueva Informaci贸n del PDF:
90
  {pdf_text}
 
91
  Actualiza el borrador incorporando la nueva informaci贸n en las secciones correspondientes, sin eliminar informaci贸n previa que a煤n sea relevante.
92
  """
93
  try:
 
95
  return organized_text
96
  except Exception as e:
97
  print(f"Error al invocar ChatGroq: {e}")
98
+ return current_text # Return the current text if the API call fails
99
 
100
  def process_input(audio, pdfs, current_text):
101
  try:
 
108
  except Exception as e:
109
  pdf_text = ""
110
  print(f"Error en extracci贸n de PDFs: {e}")
111
+
112
+ # Now process the transcription_text and pdf_text in batches
113
+ updated_text = current_text
114
+
115
+ # Define the maximum words per chunk (adjust as needed)
116
+ max_chunk_words = 1000 # Adjust this number based on your API limits
117
+
118
+ for text_label, text_content in [("Audio", transcription_text), ("PDF", pdf_text)]:
119
+ if not text_content:
120
+ continue
121
+
122
+ text_chunks = split_text_into_chunks(text_content, max_chunk_words)
123
+
124
+ for chunk in text_chunks:
125
+ transcription_chunk = chunk if text_label == "Audio" else ""
126
+ pdf_chunk = chunk if text_label == "PDF" else ""
127
+ organized_record = organize_clinical_record(updated_text, transcription_chunk, pdf_chunk)
128
+ if organized_record:
129
+ updated_text = organized_record.content
130
+ else:
131
+ # Handle error
132
+ print("Error processing chunk.")
133
+ continue
134
+
135
+ return updated_text, "Informaci贸n de depuraci贸n"
136
+
137
+
138
 
139
  # Configuraci贸n del tema
140
  theme = gr.themes.Base(
 
183
  )
184
  current_state = gr.State(value=initial_text)
185
  audio_filepath = gr.Audio(sources=["microphone"], type="filepath", label="Entrada de Audio")
186
+ pdf_files = gr.File(file_types=[".pdf"], label="Subir PDF", file_count="multiple")
187
  debug_output = gr.Textbox(label="Informaci贸n de Depuraci贸n", lines=10)
188
 
189
  # Funci贸n para capturar cambios en el iterative_output