Update app.py
Browse files
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 |
-
|
| 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 #
|
| 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 |
-
|
| 113 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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="
|
| 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
|