Advocate_Life_Style / test_patients.py
DocUA's picture
Convert all prompts and code to English
d213aa7
# test_patients.py - Test patient data for Testing Lab
from typing import Dict, Any, Tuple
class TestPatientData:
"""Class for managing test patient data"""
@staticmethod
def get_patient_types() -> Dict[str, str]:
"""Returns available test patient types with descriptions"""
return {
"elderly": "👵 Elderly Mary (76 years old, complex comorbidity)",
"athlete": "🏃 Athletic John (24 роки, відновлення після травми)",
"pregnant": "🤰 Pregnant Sarah (28 років, вагітність з ускладненнями)"
}
@staticmethod
def get_elderly_patient() -> Tuple[Dict[str, Any], Dict[str, Any]]:
"""Повертає дані для літнього пацієнта з множинними захворюваннями"""
clinical_data = {
"patient_summary": {
"active_problems": [
"Essential hypertension (uncontrolled)",
"Type 2 diabetes mellitus with complications",
"Chronic kidney disease stage 3",
"Falls risk - history of 3 falls last year"
],
"current_medications": [
"Amlodipine 10mg daily",
"Metformin 1000mg twice daily",
"Lisinopril 20mg daily",
"Furosemide 40mg daily"
],
"allergies": "Penicillin - rash, NSAIDs - GI upset"
},
"vital_signs_and_measurements": [
"Blood Pressure: 165/95 (last visit)",
"Weight: 78kg",
"BMI: 31.2 kg/m²"
],
"critical_alerts": [
"High fall risk - requires mobility assessment",
"Uncontrolled hypertension and diabetes"
],
"assessment_and_plan": "76-year-old female with multiple cardiovascular risk factors and functional limitations."
}
lifestyle_data = {
"patient_name": "Mary",
"patient_age": "76",
"conditions": ["essential hypertension", "type 2 diabetes", "high fall risk"],
"primary_goal": "Improve mobility and independence while managing chronic conditions safely",
"exercise_preferences": ["chair exercises", "gentle walking"],
"exercise_limitations": [
"High fall risk - balance issues",
"Limited endurance due to heart condition",
"Requires walking frame for mobility"
],
"dietary_notes": [
"Diabetic diet - needs simple carb counting",
"Low sodium for hypertension"
],
"personal_preferences": [
"very cautious due to fall anxiety",
"needs frequent encouragement"
],
"journey_summary": "Elderly patient with complex medical needs seeking to maintain independence.",
"last_session_summary": "",
"progress_metrics": {
"exercise_frequency": "0 times/week - afraid to move",
"fall_incidents": "3 in past 12 months"
}
}
return clinical_data, lifestyle_data
@staticmethod
def get_athlete_patient() -> Tuple[Dict[str, Any], Dict[str, Any]]:
"""Повертає дані для спортсмена після травми"""
clinical_data = {
"patient_summary": {
"active_problems": [
"ACL reconstruction recovery (3 months post-op)",
"Post-surgical knee pain and swelling",
"Anxiety related to return to sport"
],
"current_medications": [
"Ibuprofen 400mg as needed for pain",
"Physiotherapy exercises daily"
],
"allergies": "No known drug allergies"
},
"vital_signs_and_measurements": [
"Blood Pressure: 118/72",
"Weight: 82kg (lost 3kg since surgery)",
"BMI: 24.0 kg/m²"
],
"critical_alerts": [
"Do not exceed physiotherapy exercise guidelines",
"No pivoting or cutting movements until cleared"
],
"assessment_and_plan": "24-year-old male athlete 3 months post ACL reconstruction."
}
lifestyle_data = {
"patient_name": "John",
"patient_age": "24",
"conditions": ["ACL reconstruction recovery", "sports performance anxiety"],
"primary_goal": "Return to competitive football safely and regain pre-injury fitness",
"exercise_preferences": ["weight training", "swimming", "cycling"],
"exercise_limitations": [
"No pivoting or cutting movements yet",
"Must follow physiotherapy protocol strictly"
],
"dietary_notes": [
"High protein intake for muscle recovery",
"Anti-inflammatory foods"
],
"personal_preferences": [
"highly motivated and goal-oriented",
"impatient with slow recovery process"
],
"journey_summary": "Motivated athlete recovering from major knee surgery.",
"last_session_summary": "",
"progress_metrics": {
"knee_flexion_range": "120 degrees (target: 135+)",
"return_to_sport_timeline": "3-4 months if progress continues"
}
}
return clinical_data, lifestyle_data
@staticmethod
def get_pregnant_patient() -> Tuple[Dict[str, Any], Dict[str, Any]]:
"""Повертає дані для вагітної пацієнтки з ускладненнями"""
clinical_data = {
"patient_summary": {
"active_problems": [
"Pregnancy 28 weeks gestation",
"Gestational diabetes mellitus (diet-controlled)",
"Pregnancy-induced hypertension (mild)"
],
"current_medications": [
"Prenatal vitamins with iron",
"Additional iron supplement 65mg daily"
],
"allergies": "No known drug allergies"
},
"vital_signs_and_measurements": [
"Blood Pressure: 142/88 (elevated for pregnancy)",
"Current weight: 78kg",
"Weight gain: 10kg (appropriate)"
],
"critical_alerts": [
"Monitor blood pressure - risk of preeclampsia",
"Avoid exercises lying flat on back after 20 weeks"
],
"assessment_and_plan": "28-year-old female, 28 weeks pregnant with gestational diabetes."
}
lifestyle_data = {
"patient_name": "Sarah",
"patient_age": "28",
"conditions": ["pregnancy 28 weeks", "gestational diabetes"],
"primary_goal": "Maintain healthy pregnancy with good blood sugar control",
"exercise_preferences": ["prenatal yoga", "walking", "swimming"],
"exercise_limitations": [
"No lying flat on back after 20 weeks",
"Monitor heart rate - shouldn't exceed 140 bpm"
],
"dietary_notes": [
"Gestational diabetes diet - controlled carbohydrates",
"Small frequent meals to manage blood sugar"
],
"personal_preferences": [
"motivated to have healthy pregnancy",
"anxious about blood sugar control"
],
"journey_summary": "Second pregnancy with gestational diabetes.",
"last_session_summary": "",
"progress_metrics": {
"blood_glucose_control": "diet-controlled, monitoring 4x daily"
}
}
return clinical_data, lifestyle_data
@classmethod
def get_patient_data(cls, patient_type: str) -> Tuple[Dict[str, Any], Dict[str, Any]]:
"""Універсальний метод для отримання даних пацієнта за типом"""
if patient_type == "elderly":
return cls.get_elderly_patient()
elif patient_type == "athlete":
return cls.get_athlete_patient()
elif patient_type == "pregnant":
return cls.get_pregnant_patient()
else:
raise ValueError(f"Невідомий тип пацієнта: {patient_type}")