Build a Medical Data Validator - Step 18

Tell us what’s happening:

I checked the forum and got the code to pass but I would like someone to look over this version of my code if I am missing some logic error or if it’s failing due to how the tests are written

No console errors and initial validations show the logic is fine.

I am specifically referring to the use of “symmetric_diference” on line 53

”””

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

”””

Your code so far

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


# User Editable Region

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


# 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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36

Challenge Information:

Build a Medical Data Validator - Step 18

I checked my browser’s console logs

{
“name”: “AssertionError”,
“message”: “Unspecified AssertionError”,
“showDiff”: false,
“actual”: null,
”expected: undefined,
“stack”: “AssertionError: Unspecified AssertionError\n at test (eval at #s (https://www.freecodecamp.org/js/test-runner/9.0.0/python-test-evaluator.js:2:155087), :2:16)\n at #s (https://www.freecodecamp.org/js/test-runner/9.0.0/python-test-evaluator.js:2:155789)\n at PythonTestEvaluator.handleMessage (https://www.freecodecamp.org/js/test-runner/9.0.0/python-test-evaluator.js:2:156676)\n at globalThis.onmessage (https://www.freecodecamp.org/js/test-runner/9.0.0/python-test-evaluator.js:2:156979)”
}

I’m led to believe I am failing some kind of assertion test where it’s expecting undefined instead of null

I would still appreciate some insight into this

Welcome back @madKNIGHT!

As it turns out, the tests are looking for specific conditions: either set(dictionary.keys()) != key_set or key_set != set(dictionary.keys()).

Happy coding!