Spaces:
Sleeping
Sleeping
| """ | |
| Reframing Tools and Strategies | |
| Functions for generating reframes, finding similar situations, and suggesting micro-actions. | |
| """ | |
| import random | |
| def find_similar_situations(distortion_code: str, num_situations: int = 3) -> list[dict]: | |
| """ | |
| Find similar situations that involve the same cognitive distortion. | |
| Args: | |
| distortion_code: The cognitive distortion code | |
| num_situations: Number of situations to return | |
| Returns: | |
| List of similar situation examples with reframes | |
| """ | |
| # Database of example situations for each distortion | |
| situation_database = { | |
| "AO": [ | |
| { | |
| "situation": "Missing one deadline at work", | |
| "distorted": "I'm a complete failure at my job", | |
| "reframed": ( | |
| "I missed one deadline, but I've met many others. I can learn from this and " | |
| "improve my time management." | |
| ), | |
| }, | |
| { | |
| "situation": "Friend cancels plans", | |
| "distorted": "They hate me and never want to see me", | |
| "reframed": ( | |
| "They cancelled once, which could be for many reasons. Our friendship has many " | |
| "positive moments." | |
| ), | |
| }, | |
| { | |
| "situation": "Making a mistake in presentation", | |
| "distorted": "The entire presentation was a disaster", | |
| "reframed": ( | |
| "I made one error, but conveyed most information well. The audience was still " | |
| "engaged." | |
| ), | |
| }, | |
| ], | |
| "FT": [ | |
| { | |
| "situation": "Job interview tomorrow", | |
| "distorted": "I'll definitely mess up and embarrass myself", | |
| "reframed": ( | |
| "Interviews can go many ways. I've prepared and have relevant experience to " | |
| "share." | |
| ), | |
| }, | |
| { | |
| "situation": "Starting a new project", | |
| "distorted": "This will never work out", | |
| "reframed": ( | |
| "New projects have challenges and possibilities. I can adapt as I learn more." | |
| ), | |
| }, | |
| { | |
| "situation": "Asking someone out", | |
| "distorted": "They'll definitely reject me", | |
| "reframed": ( | |
| "They might say yes or no. Either way, I'm brave for trying and will " | |
| "learn from it." | |
| ), | |
| }, | |
| ], | |
| "CT": [ | |
| { | |
| "situation": "Making a typo in an email", | |
| "distorted": "This will ruin my professional reputation forever", | |
| "reframed": ( | |
| "It's a small error that most people understand. My work quality speaks louder " | |
| "than one typo." | |
| ), | |
| }, | |
| { | |
| "situation": "Feeling anxious at a party", | |
| "distorted": "I'll have a panic attack and everyone will think I'm crazy", | |
| "reframed": ( | |
| "I feel anxious, which is uncomfortable but manageable. I can take breaks if " | |
| "needed." | |
| ), | |
| }, | |
| { | |
| "situation": "Child struggles in one subject", | |
| "distorted": "They'll never succeed in life", | |
| "reframed": ( | |
| "They're having difficulty in one area while doing well in others. We can get " | |
| "help for this specific challenge." | |
| ), | |
| }, | |
| ], | |
| "SH": [ | |
| { | |
| "situation": "Taking a rest day", | |
| "distorted": "I should always be productive", | |
| "reframed": ( | |
| "I'd like to be productive, and rest is part of sustainable productivity." | |
| ), | |
| }, | |
| { | |
| "situation": "Asking for help", | |
| "distorted": "I should handle everything myself", | |
| "reframed": "I prefer independence, and asking for help when needed is a strength.", | |
| }, | |
| { | |
| "situation": "Making a parenting mistake", | |
| "distorted": "I should be a perfect parent", | |
| "reframed": ( | |
| "I aim to be a good parent, and making mistakes is part of learning and " | |
| "growing." | |
| ), | |
| }, | |
| ], | |
| "MW": [ | |
| { | |
| "situation": "Boss seems quiet", | |
| "distorted": "They think I'm doing a bad job", | |
| "reframed": ( | |
| "They seem quiet, which could mean many things - " | |
| "busy, tired, or thinking about something else." | |
| ), | |
| }, | |
| { | |
| "situation": "People laughing nearby", | |
| "distorted": "They're laughing at me", | |
| "reframed": ( | |
| "People are laughing, likely about their own conversation. I don't have " | |
| "evidence it's about me." | |
| ), | |
| }, | |
| { | |
| "situation": "Partner is distant", | |
| "distorted": "They're losing interest in me", | |
| "reframed": ( | |
| "They seem distant today. They might be stressed about something. I could ask " | |
| "how they're doing." | |
| ), | |
| }, | |
| ], | |
| "LB": [ | |
| { | |
| "situation": "Failed at a task", | |
| "distorted": "I'm such a loser", | |
| "reframed": ( | |
| "I struggled with this specific task. It doesn't define my worth as a person." | |
| ), | |
| }, | |
| { | |
| "situation": "Someone was rude", | |
| "distorted": "They're a horrible person", | |
| "reframed": ( | |
| "They acted rudely in this moment. People are complex and have good and bad " | |
| "moments." | |
| ), | |
| }, | |
| { | |
| "situation": "Made a social mistake", | |
| "distorted": "I'm so awkward and weird", | |
| "reframed": ( | |
| "I had an awkward moment, which happens to everyone. It's one small part of " | |
| "who I am." | |
| ), | |
| }, | |
| ], | |
| } | |
| # Get situations for this distortion, or return generic ones | |
| situations = situation_database.get(distortion_code, []) | |
| if not situations: | |
| # Return generic situations if specific ones not found | |
| situations = [ | |
| { | |
| "situation": "Challenging work situation", | |
| "distorted": "Everything is going wrong", | |
| "reframed": "This situation has both challenges and manageable aspects.", | |
| }, | |
| { | |
| "situation": "Social interaction difficulty", | |
| "distorted": "I always mess up socially", | |
| "reframed": "I had one difficult interaction among many neutral or positive ones.", | |
| }, | |
| { | |
| "situation": "Personal setback", | |
| "distorted": "I'll never recover from this", | |
| "reframed": "This is a setback I can learn from and gradually move past.", | |
| }, | |
| ] | |
| # Return requested number of situations (random selection if more available) | |
| if len(situations) > num_situations: | |
| return random.sample(situations, num_situations) | |
| return situations | |