A random snippet I've used for generating accession metadata:
def accession_metadata():
def from_enum(e):
return fake.random_element([x.value for x in e])
m = {
'age': fake.pyint(1, 85),
'sex': fake.random_element(['male', 'female']),
'benign_malignant': from_enum(BenignMalignantEnum),
'diagnosis': from_enum(DiagnosisEnum),
'diagnosis_confirm_type': from_enum(DiagnosisConfirmTypeEnum),
'personal_hx_mm': fake.boolean(),
'family_hx_mm': fake.boolean(),
'clin_size_long_diam_mm': fake.pyfloat(
left_digits=3, right_digits=2, positive=True, max_value=100.0
),
'melanocytic': fake.boolean(),
'patient_id': f'IP_{fake.pyint(1_000_000,9_999_999)}',
'lesion_id': f'IL_{fake.pyint(1_000_000,9_999_999)}',
'acquisition_day': fake.pyint(),
'nevus_type': from_enum(NevusTypeEnum),
'image_type': from_enum(ImageTypeEnum),
'dermoscopic_type': from_enum(DermoscopicTypeEnum),
'anatom_site_general': from_enum(GeneralAnatomicSiteEnum),
'mel_class': from_enum(MelClassEnum),
'mel_mitotic_index': from_enum(MelMitoticIndexEnum),
'mel_thick_mm': fake.pyfloat(left_digits=1, right_digits=2, positive=True, max_value=5.0),
'mel_type': from_enum(MelTypeEnum),
'mel_ulcer': fake.boolean(),
}
for key in fake.random.sample(list(m.keys()), fake.pyint(0, len(m))):
del m[key]
return m
def accession_unstructured_metadata():
return fake.pydict(
value_types=list(set(Provider.default_value_types) - {'date_time', 'decimal'})
)
A random snippet I've used for generating accession metadata: