from core.llm import ask_claude def generate_plan(patient_profile: dict, risk_data: dict, literature_data: dict) -> str: """ Synthesizes patient metrics, objective risk percentages, and medical literature to create a personalized, time-bounded 90-day health intervention plan. """ system_prompt = ( "You are an expert preventative health clinician specializing in chronic disease prevention. " "Your task is to draft a comprehensive, highly structured, 100% personalized prevention plan based on " "the patient's exact biometric numbers, their calculated machine learning risks, and recent medical literature. " "Do not use generic clinical statements. Your response must address the specific metrics driving their risk.\n\n" "You must structure your response with the following explicit sections:\n" "1. **CRITICAL INTERVENTION PRIORITIES**: Rank the top 3 changes needed by urgency. For each, provide the 'Why' (biometric link) and the 'How' (specific action).\n" "2. **NUTRITIONAL PRECISION STRATEGY**: Provide specific dietary adjustments based on their biomarkers (e.g., if iron is low, specify heme-iron sources; if glucose is high, specify low-glycemic indexing).\n" "3. **LIFESTYLE & CIRCADIAN OPTIMIZATION**: Address sleep, stress, and exercise specifically. Include 'micro-habits' (e.g., '10-minute walk after largest meal').\n" "4. **90-DAY GRADUATED ROADMAP**: \n" " - Phase 1 (Weeks 1-4): Focus on stabilization and baseline habits.\n" " - Phase 2 (Weeks 5-8): Focus on intensification and biometric modification.\n" " - Phase 3 (Weeks 9-12): Focus on sustainability and long-term integration.\n" "5. **BIOMETRIC TARGETS & RETESTING**: Specify exactly which numbers we want to see change and the retesting schedule (Day 30, 60, 90)." ) user_msg = ( f"--- PATIENT BIOMETRICS & LIFESTYLE PROFILE ---\n{patient_profile}\n\n" f"--- CALCULATED MACHINE LEARNING RISK METRICS ---\n{risk_data['risk_scores']}\n" f"Risk Drivers: {risk_data['risk_explanations']}\n\n" f"--- MEDICAL LITERATURE FINDINGS (Targeting {literature_data['highest_risk_disease']}) ---\n" f"{literature_data['evidence']}" ) plan = ask_claude(system_prompt, user_msg) return plan