Build a Medical Data Validator - Step 44

Tell us what’s happening:

I cannot seem iTo understand what is wrong with. Changing indent does not wo

Your code so far

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)
    }i
    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

# User Editable Region

            continue

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


# User Editable Region


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

validate(medical_records)

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15

Challenge Information:

Build a Medical Data Validator - Step 44

Same Problem too

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\]

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)



    for key in invalid_records:

        print(f"Unexpected format '{key}': 'dictionary.get(key)' at position {index}.")

        is_invalid = True

if is_invalid:

    return False

print('Valid format.')

return True

validate(medical_records)

Please create your own topic when you have specific questions about your own challenge code. Only respond to another thread when you want to provide help to the original poster of the other thread or have follow up questions concerning other replies given to the original poster.

The easiest way to create a topic for help with your own solution is to click the Help button image located on each challenge. This will automatically import your code in a readable format and pull in the challenge URL while still allowing you to ask any question about the challenge or your code.

Thank you.

Hi @lisardean82 ,

Your new code is correct, but your indentation is not.

Please copy your new code, then reset this step to restore the starting code, which you have changed.

Then paste your code back in, making sure it’s aligned with the previous line of code.

Happy coding!

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