Ejercicio: 1Eva2017TII_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.
Algoritmo en Python
# 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.
>>>