Spaces:
Sleeping
Sleeping
File size: 3,134 Bytes
acaf471 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | """
Convert multilingual_pain_data.json to Python dictionary format
for pain_mapping.py
"""
import json
import os
def format_dict_for_python(data, indent=1):
"""Format dictionary data as Python code"""
lines = []
tab = " " * indent
for key, value in data.items():
if isinstance(value, dict):
# Check if it's a descriptor dict or category dict
if 'english' in value:
# It's a descriptor
lines.append(f'{tab}"{key}": {{')
lines.append(f'{tab} "english": "{value["english"]}",')
lines.append(f'{tab} "mcgill_dimension": "sensory",')
# Add SNOMED CT if available
if value.get('snomed_ct'):
lines.append(f'{tab} "snomed_ct": "{value["snomed_ct"]}"')
else:
lines.append(f'{tab} "snomed_ct": None')
lines.append(f'{tab}}},')
else:
# It's a category
lines.append(f'{tab}"{key}": {{')
lines.extend(format_dict_for_python(value, indent + 1))
lines.append(f'{tab}}},')
return lines
def main():
script_dir = os.path.dirname(os.path.abspath(__file__))
json_path = os.path.join(script_dir, 'multilingual_pain_data.json')
with open(json_path, 'r', encoding='utf-8') as f:
data = json.load(f)
output_lines = []
# Generate dictionaries for each language
lang_names = {
'chinese': 'CHINESE',
'korean': 'KOREAN',
'spanish': 'SPANISH',
'hmong': 'HMONG'
}
for lang_key, lang_upper in lang_names.items():
output_lines.append(f"\n# {lang_upper} Pain Descriptors")
output_lines.append(f"{lang_upper}_PAIN_DESCRIPTORS = {{")
lang_data = data[lang_key]
for category in ['neuropathic', 'nociceptive', 'affective']:
if category in lang_data and lang_data[category]:
output_lines.append(f' "{category}": {{')
for term, info in lang_data[category].items():
output_lines.append(f' "{term}": {{')
output_lines.append(f' "english": "{info["english"]}",')
output_lines.append(f' "mcgill_dimension": "sensory"')
output_lines.append(f' }},')
output_lines.append(f' }},')
output_lines.append(f"}}\n")
# Save to file
output_path = os.path.join(script_dir, 'pain_descriptors_formatted.py')
with open(output_path, 'w', encoding='utf-8') as f:
f.write('\n'.join(output_lines))
print(f"✅ Formatted pain descriptors saved to: {output_path}")
print(f"\nStatistics:")
for lang_key, lang_upper in lang_names.items():
total = sum(len(data[lang_key].get(cat, {})) for cat in ['neuropathic', 'nociceptive', 'affective'])
print(f" {lang_upper}: {total} terms")
if __name__ == '__main__':
main()
|