Crear un Validador de Datos Médicos - Paso 44

Cuéntanos qué está pasando:

Hola, el paso 44 aunque a simple vista parece que devuelve el resultado, tiene algun error
la salida que produce con dos errores que he introducido en medical_records es:
Unexpected format ‘gender’:‘emale’ at position 0
Unexpected format ‘age’:‘16’ at position 3
Creo que no me ajusto al patron que piden pero no se el fallo

Tu código hasta el momento

import re

medical_records = [
    {
        'patient_id': 'P1001',
        'age': 4,
        'gender': 'Female',
        'diagnosis': 'Hypertension',
        'medications': ['Lisinopril'],
        'last_visit_id': 'V2301',
    },
    {
        'patient_id': 'p1002',
        'age': 47,
        'gender': 'male',
        'diagnosis': 'Type 2 Diabetes',
        'medications': ['Metformin', 'Insulin'],
        'last_visit_id': 'v2302',
    },
    {
        'patient_id': 'P1003',
        'age': 29,
        'gender': 'female',
        'diagnosis': 'Asthma',
        'medications': ['Albuterol'],
        'last_visit_id': 'v2303',
    },
    {
        'patient_id': 'p1004',
        'age': 56,
        'gender': 'pale',
        'diagnosis': 'Chronic Back Pain',
        'medications': ['Ibuprofen', 'Physical Therapy'],
        'last_visit_id': 'V2304',
    }
]

def find_invalid_records(
    patient_id, age, gender, diagnosis, medications, last_visit_id
):
    constraints = {
        'patient_id': isinstance(patient_id, str)
        and re.fullmatch('p\d+', patient_id, re.IGNORECASE),
        'age': isinstance(age, int) and age >= 18,
        'gender': isinstance(gender, str) and gender.lower() in ('male', 'female'),
        'diagnosis': isinstance(diagnosis, str) or diagnosis is None,
        'medications': isinstance(medications, list)
        and all([isinstance(i, str) for i in medications]),
        'last_visit_id': isinstance(last_visit_id, str)
        and re.fullmatch('v\d+', last_visit_id, re.IGNORECASE)
    }
    return [key for key, value in constraints.items() if not value]

def validate(data):
    is_sequence = isinstance(data, (list, tuple))

    if not is_sequence:
        print('Invalid format: expected a list or tuple.')
        return False
        
    is_invalid = False
    key_set = set(
        ['patient_id', 'age', 'gender', 'diagnosis', 'medications', 'last_visit_id']
    )

    for index, dictionary in enumerate(data):
        if not isinstance(dictionary, dict):
            print(f'Invalid format: expected a dictionary at position {index}.')
            is_invalid = True
            continue

        if set(dictionary.keys()) != key_set:
            print(f'Invalid format: {dictionary} at position {index} has missing and/or invalid keys.')
            is_invalid = True
            continue

        invalid_records = find_invalid_records(**dictionary)
        

# User Editable Region

        for key in invalid_records:
            print(f"Unexpected format '{key}':'{dictionary[key]}' at position {index}")
            is_invalid=True
                

# User Editable Region


    if is_invalid:
        return False
    print('Valid format.')
    return True

validate(medical_records)

Información de tu navegador:

El agente de usuario es: Mozilla/5.0 (X11; Linux x86_64; rv:149.0) Gecko/20100101 Firefox/149.0

Información del Desafío:

Crear un Validador de Datos Médicos - Paso 44

Welcome to the forum @tirsote!

Unexpected format 'age':'4' at position 0
Unexpected format 'gender':'pale' at position 3

This is what I see in the console, which is perfectly correct except for the missing punctuation at the end of the message.

Happy coding!

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.