s1Eva_IIT2017_T2 Texto de examen de sangre

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.
>>>