Tell us what’s happening:
“Code raised an error” in terminal but not console
I’m getting that error when trying complete step 44. There are no errors in the console that correspond to the terminal message so I’m not sure how to proceed.
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)
}
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
# User Editable Region
invalid_records = find_invalid_records(**dictionary)
for records in invalid_records:
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 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Challenge Information:
Build a Medical Data Validator - Step 44

