Build a Medical Data Validator - Step 44

Tell us what’s happening:

Hi guys, I’ve been strugling with the Step 44. I declared the variables. I copied and pasted the sentence that has to be printed, however it’s not working yet. I’d appreciate any help.

Your code so far


# User Editable Region

import re

medical_records = [
    {
        'patient_id': 'P1001',
        'age': 34,
        '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': 'Male',
        '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]

    return [(key, locals()[key]) for key, valid in constraints.items() if not valid]

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 = {'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)
        for key in invalid_records:
            val = dictionary[key]
            print(f"Unexpected format '{key}: {val}' at position {index}.")
            is_invalid = True


    if is_invalid:
        return False

    print('Valid format.')
    return True

validate(medical_records)


# User Editable Region

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36

Challenge Information:

Build a Medical Data Validator - Step 44

Welcome to the forum @cornejocristopher25

Here is a comparison of the original code and your code.

The code in blue is the original code, the code in red is your code.
The code in magenta is the overlap.

It looks like you modified the seed code which you were not asked to do.

Please reset the step to restore the original code and try again.

Happy coding

1 Like