#!/usr/bin/env python3 """ Simple script to check if a module exists for a given disease and generate it if not. """ import os import sys import json import subprocess import re # Constants DISEASE_NAME = sys.argv[1] if len(sys.argv) > 1 else "Excessive frequent and irregular menstruation" MODULES_DIR = "src/main/resources/modules" RUN_MODULE_GENERATOR_PATH = "src/main/python/run_module_generator.py" DISEASE_LIST_PATH = "src/main/resources/disease_list.json" # Function to normalize disease name for filenames def normalize_filename(name): """Convert disease name to normalized filename format.""" filename = name.lower() filename = re.sub(r'[^a-zA-Z0-9]', '_', filename) filename = re.sub(r'_+', '_', filename) filename = filename.strip('_') return filename # Main function def main(): print(f"Checking if module exists for: {DISEASE_NAME}") # Normalize disease name for filename normalized_name = normalize_filename(DISEASE_NAME) module_path = os.path.join(MODULES_DIR, f"{normalized_name}.json") # Check if module already exists if os.path.exists(module_path): print(f"✅ Module already exists at: {module_path}") return print(f"❌ Module not found at: {module_path}") print(f"Creating disease list entry for {DISEASE_NAME}...") # Create temporary disease list with just this disease create_disease_list(DISEASE_NAME) # Run the module generator print(f"Running module generator for {DISEASE_NAME}...") try: result = subprocess.run( [sys.executable, RUN_MODULE_GENERATOR_PATH, "--batch-size", "1"], capture_output=True, text=True, check=True ) print("Module generator output:") print(result.stdout) # Check if module was created if os.path.exists(module_path): print(f"✅ Module created successfully at: {module_path}") else: print(f"❌ Module generation failed, file not found at: {module_path}") print("Error output:") print(result.stderr) except subprocess.CalledProcessError as e: print(f"Error running module generator: {e}") print("STDOUT:") print(e.stdout) print("STDERR:") print(e.stderr) def create_disease_list(disease_name): """Create a temporary disease list with just the requested disease.""" disease_list = [] # Try to read original disease list if it exists if os.path.exists(DISEASE_LIST_PATH): try: with open(DISEASE_LIST_PATH, 'r') as f: original_diseases = json.load(f) # Check if our disease already exists name_lower = disease_name.lower() for disease in original_diseases: if disease.get("disease_name", "").lower() == name_lower: disease_list.append(disease) print(f"Found existing disease entry for '{disease_name}'") break else: # Disease not found in list disease_list.append({ "id": "", # ICD-10 code (empty as we don't have it) "disease_name": disease_name, "ICD-10_name": disease_name }) print(f"Created new disease entry for '{disease_name}'") except Exception as e: print(f"Error reading disease list: {e}") # Create new entry disease_list.append({ "id": "", "disease_name": disease_name, "ICD-10_name": disease_name }) else: # Create new entry disease_list.append({ "id": "", "disease_name": disease_name, "ICD-10_name": disease_name }) print(f"Created new disease list with '{disease_name}'") # Save disease list os.makedirs(os.path.dirname(DISEASE_LIST_PATH), exist_ok=True) with open(DISEASE_LIST_PATH, 'w') as f: json.dump(disease_list, f, indent=2) print(f"Saved disease list with {len(disease_list)} entries.") if __name__ == "__main__": main()