Ejercicio: 1Eva_IIT2017_T2 Texto de Examen de sangre
Propuesta de solución en Python:
Para simplificar el ejercicio, se supondrá que el resultado corresponde al texto del ejemplo en el enunciado:
resultado = "Resultado de Laboratorio 'Su Salud' Nombre del paciente: José Aimas E-mail del paciente: jose.aimas@gmail.com Resultados del laboratorio: INR 1.25 segundos BGT 180.12 mmol/dL HGB 13 g/dL ESR 3.2 mm/hora RBC 4000024.2 cel/ul TA 1.5 ng/dL WBC 123233.23 cel/uL. Los valores de éste informe no representan un diagnóstico. Firma médico responsable: Dr. Juan Pozo"
El texto se analiza separando las partes usando los espacios ' '
.
>>> partes = resultado.split(' ') >>> partes ['Resultado', 'de', 'Laboratorio', "'Su", "Salud'", 'Nombre', 'del', 'paciente:', 'José', 'Aimas', ... ] >>>
Se analiza cada una de las partes, considerando que los «indicadores buscados» tienen todas las letras en mayúsculas a diferencia del resto de partes o palabras. Por lo que se compara la conversión de la parte en mayúsculas y su forma original o sinconvertir, si son iguales se encontró un indicador.
Considere que si la parte es numérica, no se afecta al convertir en mayúscula.
>>> i=0 >>> mayusculas = partes[i].upper() >>> sinconvertir = partes[i] >>> mayusculas 'RESULTADO' >>> sinconvertir 'Resultado' >>> mayusculas == sinconvertir False >>>
Al encontrar un indicador, se lo separa en otra lista de solo indicadores.
# CCPG1001 Fundamentos de Programación FIEC-ESPOL # 1Eva_IIT2017_T2 Examen de sangre # Tarea: Encontrar nombre del médico # INGRESO resultado = "Resultado de Laboratorio 'Su Salud' Nombre del paciente: José Aimas E-mail del paciente: jose.aimas@gmail.com Resultados del laboratorio: INR 1.25 segundos BGT 180.12 mmol/dL HGB 13 g/dL ESR 3.2 mm/hora RBC 4000024.2 cel/ul TA 1.5 ng/dL WBC 123233.23 cel/uL. Los valores de éste informe no representan un diagnóstico. Firma médico responsable: Dr. Juan Pozo" # PROCEDIMIENTO partes = resultado.split(' ') n = len(partes) # Encontrar indicadores numero = '0123456789' indicador = [] i = 0 while not(i>=n): mayusculas = partes[i].upper() sinconvertir = partes[i] unapalabra = partes[i] unaletra = unapalabra[0] if (mayusculas==sinconvertir and not(unaletra in numero)): indicador.append(partes[i]) i = i + 1 m = len(indicador) # Busca por indicadores valor = [] unidad = [] k = 0 while not(k>=m): i = 0 while not(i>=n): if (partes[i]==indicador[k]): valor.append(partes[i+1]) unidad.append(partes[i+2]) i = i + 1 k = k + 1 # SALIDA print('INFORME DE LABORATORIO') print('**********************') i = 0 while not(i>=m): print(indicador[i],valor[i],unidad[i]) i = i + 1
Resultado del algoritmo
INFORME DE LABORATORIO ********************** INR 1.25 segundos BGT 180.12 mmol/dL HGB 13 g/dL ESR 3.2 mm/hora RBC 4000024.2 cel/ul TA 1.5 ng/dL WBC 123233.23 cel/uL. >>>