Upload 9 files
Browse files- common/Config.py +84 -0
- common/Interview.py +51 -0
- common/RespondentAgent.py +87 -0
- common/UserProfile.py +560 -0
- common/Utilities.py +70 -0
- config/chatbot.env +11 -0
- config/horlicks/ChatBotProfile.xlsx +0 -0
- config/horlicks/MD3_fast_facts.xlsx +0 -0
- config/horlicks/MD3_transcript.txt +659 -0
common/Config.py
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from dotenv import load_dotenv
|
| 2 |
+
import os
|
| 3 |
+
|
| 4 |
+
class Config:
|
| 5 |
+
env_name = None
|
| 6 |
+
num_respondents = None
|
| 7 |
+
num_triads = None
|
| 8 |
+
base_dir = None
|
| 9 |
+
config_dir = None
|
| 10 |
+
test_result_dir = None
|
| 11 |
+
input_dir = None
|
| 12 |
+
output_dir = None
|
| 13 |
+
respondent_summary_file = None
|
| 14 |
+
triad_summary_file = None
|
| 15 |
+
personality_question_file = None
|
| 16 |
+
personality_scoring_file = None
|
| 17 |
+
style_tone_question_file = None
|
| 18 |
+
interview_question_file = None
|
| 19 |
+
survey_question_file = None
|
| 20 |
+
interview_validation_files = None
|
| 21 |
+
agent_model = None
|
| 22 |
+
model = None
|
| 23 |
+
groq_api_key = None
|
| 24 |
+
replicate_api_key = None
|
| 25 |
+
openai_api_key = None
|
| 26 |
+
|
| 27 |
+
# Function to load the environment variables based on the given environment name
|
| 28 |
+
@classmethod
|
| 29 |
+
def load_environment(cls, base_dir, my_env_name):
|
| 30 |
+
# Determine the path to the .env file based on the environment name
|
| 31 |
+
env_file = f'{base_dir}/config/{my_env_name}.env' # Update the base path as needed
|
| 32 |
+
|
| 33 |
+
# Load the environment variables from the specified .env file
|
| 34 |
+
load_dotenv(dotenv_path=env_file)
|
| 35 |
+
|
| 36 |
+
cls.base_dir = base_dir
|
| 37 |
+
cls.env_name = my_env_name
|
| 38 |
+
cls.num_respondents = int(os.getenv('NUM_RESPONDENTS', 0))
|
| 39 |
+
cls.num_triads = int(os.getenv('NUM_TRIADS', 0))
|
| 40 |
+
|
| 41 |
+
# Construct paths based on BASE_DIR and subdirectories/filenames
|
| 42 |
+
cls.config_dir = f"{base_dir}/{os.getenv('CONFIG_SUBDIR')}"
|
| 43 |
+
cls.test_result_dir = f"{base_dir}/{os.getenv('TEST_SUBDIR')}"
|
| 44 |
+
cls.input_dir = f"{base_dir}/{os.getenv('INPUT_SUBDIR')}"
|
| 45 |
+
cls.output_dir = f"{base_dir}/{os.getenv('OUTPUT_SUBDIR')}"
|
| 46 |
+
cls.respondent_summary_file = f"{cls.config_dir}/{os.getenv('RESPONDENT_SUMMARY_FILENAME')}"
|
| 47 |
+
cls.triad_summary_file = f"{cls.config_dir}/{os.getenv('TRIAD_SUMMARY_FILENAME')}"
|
| 48 |
+
cls.personality_question_file = f"{cls.config_dir}/{os.getenv('PERSONALITY_QUESTION_FILENAME')}"
|
| 49 |
+
cls.personality_scoring_file = f"{cls.config_dir}/{os.getenv('PERSONALITY_SCORING_FILENAME')}"
|
| 50 |
+
cls.style_tone_question_file = f"{cls.config_dir}/{os.getenv('STYLE_TONE_QUESTION_FILENAME')}"
|
| 51 |
+
cls.interview_question_file = f"{cls.config_dir}/{os.getenv('INTERVIEW_QUESTION_FILENAME')}"
|
| 52 |
+
cls.survey_question_file = f"{cls.config_dir}/{os.getenv('SURVEY_QUESTION_FILENAME')}"
|
| 53 |
+
cls.interview_validation_files = f"{cls.config_dir}/{os.getenv('INTERVIEW_VALIDATION_FILES')}"
|
| 54 |
+
|
| 55 |
+
# Access API keys and model details
|
| 56 |
+
cls.agent_model = os.getenv('AGENT_MODEL')
|
| 57 |
+
cls.model = os.getenv('MODEL')
|
| 58 |
+
cls.groq_api_key = os.getenv('GROQ_API_KEY')
|
| 59 |
+
cls.replicate_api_key = os.getenv('REPLICATE_API_KEY')
|
| 60 |
+
cls.openai_api_key = os.getenv('OPENAI_API_KEY')
|
| 61 |
+
|
| 62 |
+
@classmethod
|
| 63 |
+
def print_environment(cls):
|
| 64 |
+
print(f"Environment Name: {cls.env_name}")
|
| 65 |
+
print(f"Number of Respondents: {cls.num_respondents}")
|
| 66 |
+
print(f"Number of Triads: {cls.num_triads}")
|
| 67 |
+
print(f"Base Directory: {cls.base_dir}")
|
| 68 |
+
print(f"Config Directory: {cls.config_dir}")
|
| 69 |
+
print(f"Test Result Directory: {cls.test_result_dir}")
|
| 70 |
+
print(f"Input Directory: {cls.input_dir}")
|
| 71 |
+
print(f"Output Directory: {cls.output_dir}")
|
| 72 |
+
print(f"Respondent Summary File: {cls.respondent_summary_file}")
|
| 73 |
+
print(f"Triad Summary File: {cls.triad_summary_file}")
|
| 74 |
+
print(f"Personality Question File: {cls.personality_question_file}")
|
| 75 |
+
print(f"Personality Scoring File: {cls.personality_scoring_file}")
|
| 76 |
+
print(f"Style Tone Question File: {cls.style_tone_question_file}")
|
| 77 |
+
print(f"Interview Question File: {cls.interview_question_file}")
|
| 78 |
+
print(f"Survey Question File: {cls.survey_question_file}")
|
| 79 |
+
print(f"Interview Validation Files: {cls.interview_validation_files}")
|
| 80 |
+
print(f"Agent Model: {cls.agent_model}")
|
| 81 |
+
print(f"Model: {cls.model}")
|
| 82 |
+
print(f"GROQ API Key: {cls.groq_api_key}")
|
| 83 |
+
print(f"REPLICATE API Key: {cls.replicate_api_key}")
|
| 84 |
+
print(f"Open API Key: {cls.openai_api_key}")
|
common/Interview.py
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import List, Optional
|
| 2 |
+
from pydantic import BaseModel
|
| 3 |
+
import pandas as pd
|
| 4 |
+
from itertools import groupby
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
class QAEntry(BaseModel):
|
| 8 |
+
Num: int
|
| 9 |
+
Section: str
|
| 10 |
+
Question: str
|
| 11 |
+
Answer: Optional[str]
|
| 12 |
+
|
| 13 |
+
class InterviewReport(BaseModel):
|
| 14 |
+
Entries: List[QAEntry]
|
| 15 |
+
|
| 16 |
+
def __repr__(self):
|
| 17 |
+
output = ""
|
| 18 |
+
for section, entries in groupby(self.Entries, key=lambda entry: entry.Section):
|
| 19 |
+
output += f"{section}:\n"
|
| 20 |
+
for entry in entries:
|
| 21 |
+
output += f"Q {entry.Num}: {entry.Question}\n"
|
| 22 |
+
output += f"A: {entry.Answer if entry.Answer else 'No Answer'}\n"
|
| 23 |
+
return output
|
| 24 |
+
|
| 25 |
+
@staticmethod
|
| 26 |
+
def generate_interview_script(interview_file):
|
| 27 |
+
df = pd.read_excel(interview_file)
|
| 28 |
+
qa_entries = []
|
| 29 |
+
|
| 30 |
+
for _, row in df.iterrows():
|
| 31 |
+
qa_entries.append(QAEntry (Num = row['Num'],
|
| 32 |
+
Section = row['Section'],
|
| 33 |
+
Question = row['Question'],
|
| 34 |
+
Answer = None))
|
| 35 |
+
|
| 36 |
+
return InterviewReport(Entries = qa_entries)
|
| 37 |
+
|
| 38 |
+
@staticmethod
|
| 39 |
+
def generate_interview_report(interview_file):
|
| 40 |
+
df = pd.read_excel(interview_file)
|
| 41 |
+
qa_entries = []
|
| 42 |
+
|
| 43 |
+
for _, row in df.iterrows():
|
| 44 |
+
# If 'Answer' is NaN or blank, replace it with the default value
|
| 45 |
+
answer = row['Answer'] if pd.notna(row['Answer']) else "No Answer Provided"
|
| 46 |
+
qa_entries.append(QAEntry (Num = row['Num'],
|
| 47 |
+
Section = row['Section'],
|
| 48 |
+
Question = row['Question'],
|
| 49 |
+
Answer = answer))
|
| 50 |
+
|
| 51 |
+
return InterviewReport(Entries = qa_entries)
|
common/RespondentAgent.py
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from crewai import Agent,Task,Process,Crew
|
| 2 |
+
from crewai_tools import FileReadTool, TXTSearchTool
|
| 3 |
+
from crewai.tasks import OutputFormat
|
| 4 |
+
from pydantic import BaseModel
|
| 5 |
+
from typing import List, Dict
|
| 6 |
+
|
| 7 |
+
import datetime
|
| 8 |
+
import json
|
| 9 |
+
import os
|
| 10 |
+
import pandas as pd
|
| 11 |
+
import pprint
|
| 12 |
+
|
| 13 |
+
from UserProfile import *
|
| 14 |
+
|
| 15 |
+
class RespondentAgent:
|
| 16 |
+
def __init__(self, user_profile, agent):
|
| 17 |
+
self.user_profile = user_profile
|
| 18 |
+
self.agent = agent
|
| 19 |
+
|
| 20 |
+
def set_user_profile(self, user_profile):
|
| 21 |
+
self.user_profile = user_profile
|
| 22 |
+
|
| 23 |
+
def set_agent(self, agent):
|
| 24 |
+
self.agent = agent
|
| 25 |
+
|
| 26 |
+
def __repr__(self):
|
| 27 |
+
return f"RespondentAgent(user_profile={self.user_profile}, agent={self.agent})"
|
| 28 |
+
|
| 29 |
+
@staticmethod
|
| 30 |
+
def create(user_profile, agent_detail_file, llm):
|
| 31 |
+
"""
|
| 32 |
+
Static method to create a respondent agent using user data and other details.
|
| 33 |
+
|
| 34 |
+
:param user_profile: The backstory and user information.
|
| 35 |
+
:param agent_detail_file: File that contains agent details.
|
| 36 |
+
:param llm: The language model to be used by the agent.
|
| 37 |
+
:return: A configured Agent object.
|
| 38 |
+
"""
|
| 39 |
+
|
| 40 |
+
myGoal = ("Answer questions based on your backstory, "
|
| 41 |
+
"and ensure that you are answering your "
|
| 42 |
+
"questions within your cultural context and demographic profile. "
|
| 43 |
+
"For interviews:"
|
| 44 |
+
" - Provide thoughtful and considered answers"
|
| 45 |
+
" - Answers should be provided in a narrative but factual style"
|
| 46 |
+
" - Do not give one-line answers. "
|
| 47 |
+
" - Use examples from your personal data to support your answers."
|
| 48 |
+
"For surveys:"
|
| 49 |
+
" - Select the option that most aligns with your personal data"
|
| 50 |
+
" - Where appropriate, explain why you selected that option"
|
| 51 |
+
" - Explanations should be based on your personal data"
|
| 52 |
+
)
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
if user_profile.name is None or pd.isna(user_profile.name):
|
| 56 |
+
myRole = "Your details are as follows:" + repr(user_profile.demographics)
|
| 57 |
+
else:
|
| 58 |
+
myRole = f"Your name is {user_profile.name} and your details are as follows:" + repr(user_profile.demographics)
|
| 59 |
+
|
| 60 |
+
myBackstory = repr(user_profile.category) + " " + repr (user_profile.preferences)
|
| 61 |
+
|
| 62 |
+
# if values have been generated, add to backstory
|
| 63 |
+
if user_profile.values is not None:
|
| 64 |
+
myBackstory = myBackstory + " Personality values ranked on a Likert scale of 1 to 5 (lowest to highest) are: " + repr(user_profile.values)
|
| 65 |
+
|
| 66 |
+
# if agent_detail_file exists, add in read in fast_facts
|
| 67 |
+
if agent_detail_file is not None and os.path.isfile(agent_detail_file):
|
| 68 |
+
print(f"Reading fast facts from {agent_detail_file}")
|
| 69 |
+
fast_facts = FastFacts.read_from_excel(agent_detail_file)
|
| 70 |
+
myBackstory = repr(fast_facts) + " " + myBackstory
|
| 71 |
+
|
| 72 |
+
print(f"Role: {myRole}")
|
| 73 |
+
print(f"Backstory: {myBackstory}")
|
| 74 |
+
|
| 75 |
+
# Create agent object
|
| 76 |
+
agent = Agent(
|
| 77 |
+
role=myRole,
|
| 78 |
+
goal=myGoal,
|
| 79 |
+
backstory=myBackstory,
|
| 80 |
+
llm=llm,
|
| 81 |
+
verbose=True,
|
| 82 |
+
max_retry_limit=5,
|
| 83 |
+
allow_delegation=False,
|
| 84 |
+
memory=True
|
| 85 |
+
)
|
| 86 |
+
|
| 87 |
+
return RespondentAgent(user_profile, agent)
|
common/UserProfile.py
ADDED
|
@@ -0,0 +1,560 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import re
|
| 2 |
+
import datetime
|
| 3 |
+
import textwrap
|
| 4 |
+
|
| 5 |
+
from Config import Config
|
| 6 |
+
|
| 7 |
+
import pandas as pd
|
| 8 |
+
import numpy as np
|
| 9 |
+
|
| 10 |
+
# Category class
|
| 11 |
+
class Category:
|
| 12 |
+
def __init__(self):
|
| 13 |
+
self.Proactiveness_around_health = None
|
| 14 |
+
self.Satisfaction_level_with_current_health = None
|
| 15 |
+
self.Perceptions_Around_Home_Remedies = None
|
| 16 |
+
self.Perceptions_Around_Supplements = None
|
| 17 |
+
self.Health_Concern_1 = None
|
| 18 |
+
self.Health_Concern_2 = None
|
| 19 |
+
self.Health_Concern_3 = None
|
| 20 |
+
self.Bone_Health_Importance = None
|
| 21 |
+
self.Bone_Health_Rating = None
|
| 22 |
+
self.Physical_Activity = None
|
| 23 |
+
self.Price_Sensitivity = None
|
| 24 |
+
self.Propensity_To_Influence_With_Ads = None
|
| 25 |
+
self.Propensity_To_Be_Influenced_By_Others = None
|
| 26 |
+
self.Health_Conciousness = None
|
| 27 |
+
self.Brand_Trust_Loyalty = None
|
| 28 |
+
self.Household_Professional_Industry = None
|
| 29 |
+
self.Womens_Horlicks_Perception = None
|
| 30 |
+
|
| 31 |
+
def set_field(self, field_name, value):
|
| 32 |
+
if hasattr(self, field_name):
|
| 33 |
+
setattr(self, field_name, value)
|
| 34 |
+
else:
|
| 35 |
+
print(f"Field {field_name} does not exist in {self.__class__.__name__} class.")
|
| 36 |
+
|
| 37 |
+
def __repr__(self):
|
| 38 |
+
fields = {k: v for k, v in self.__dict__.items() if v and v != "Unable to map"}
|
| 39 |
+
formatted_fields = [f"{k}='{v}'" for k, v in fields.items()]
|
| 40 |
+
return f"{self.__class__.__name__}: " + ", ".join(formatted_fields) + ")"
|
| 41 |
+
|
| 42 |
+
def to_dict(self):
|
| 43 |
+
return {k: v for k, v in self.__dict__.items()}
|
| 44 |
+
|
| 45 |
+
# Demographics class
|
| 46 |
+
class Demographics:
|
| 47 |
+
def __init__(self):
|
| 48 |
+
self.Age_Group_classification = None
|
| 49 |
+
self.Age = None
|
| 50 |
+
self.Gender = None
|
| 51 |
+
self.Marital_Status = None
|
| 52 |
+
self.Family_Structure = None
|
| 53 |
+
self.Country_of_Current_Residence = None
|
| 54 |
+
self.Region_of_Current_Residence = None
|
| 55 |
+
self.Income_class = None
|
| 56 |
+
self.LSM = None
|
| 57 |
+
self.Country_of_Birth = None
|
| 58 |
+
self.Region_of_Birth = None
|
| 59 |
+
self.Education_Level = None
|
| 60 |
+
self.Number_of_Children = None
|
| 61 |
+
self.Health_Status = None
|
| 62 |
+
self.Occupation_Categories = None
|
| 63 |
+
self.Professional_Expertise_level = None
|
| 64 |
+
self.Lifestage_Segment = None
|
| 65 |
+
self.Parental_Status = None
|
| 66 |
+
self.Has_Dependents = None
|
| 67 |
+
|
| 68 |
+
def set_field(self, field_name, value):
|
| 69 |
+
if hasattr(self, field_name):
|
| 70 |
+
setattr(self, field_name, value)
|
| 71 |
+
else:
|
| 72 |
+
print(f"Field {field_name} does not exist in {self.__class__.__name__} class.")
|
| 73 |
+
|
| 74 |
+
def __repr__(self):
|
| 75 |
+
fields = {k: v for k, v in self.__dict__.items() if v and v != "Unable to map"}
|
| 76 |
+
formatted_fields = [f"{k}='{v}'" for k, v in fields.items()]
|
| 77 |
+
return f"{self.__class__.__name__}: " + ", ".join(formatted_fields) + ")"
|
| 78 |
+
|
| 79 |
+
def to_dict(self):
|
| 80 |
+
return {k: v for k, v in self.__dict__.items()}
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
# Preferences class
|
| 84 |
+
class Preferences:
|
| 85 |
+
def __init__(self):
|
| 86 |
+
self.Exercise_For_Bone_Health = None
|
| 87 |
+
self.Home_Remedies_For_Bone_Health = None
|
| 88 |
+
self.Limits_Caffeine_For_Bone_Health = None
|
| 89 |
+
self.Regular_Scans_For_Bone_Health = None
|
| 90 |
+
self.Consumes_HFDs_For_Bone_Health = None
|
| 91 |
+
self.Consumes_Supplements_For_Bone_Health = None
|
| 92 |
+
self.HFD_Brand_Awareness = None
|
| 93 |
+
self.HFD_Brand_Consumption = None
|
| 94 |
+
self.HFD_Usage_Period = None
|
| 95 |
+
self.HFD_Weekly_Usage = None
|
| 96 |
+
self.Recommended_Womens_Horlicks_Within_6_Months = None
|
| 97 |
+
self.Womens_Horlicks_Recommendations_Count = None
|
| 98 |
+
self.Aware_Of_Womens_Horlicks = None
|
| 99 |
+
self.Accompaniments_with_Horlicks = None
|
| 100 |
+
self.HFD_Preparation_Preference = None
|
| 101 |
+
self.HFD_Taste_Preference = None
|
| 102 |
+
self.Method_Of_Consuming_Horlicks = None
|
| 103 |
+
self.Consumes_Womens_Horlicks = None
|
| 104 |
+
self.Consumes_Horlicks_Lite = None
|
| 105 |
+
self.Health_Management_Proactivity = None
|
| 106 |
+
self.Wellness_Savvy_Influencer = None
|
| 107 |
+
self.Digital_Consumption_Propensity = None
|
| 108 |
+
self.Physical_Vitality_Index = None
|
| 109 |
+
self.Stress_Management_Capacity = None
|
| 110 |
+
self.Fitness_Level = None
|
| 111 |
+
|
| 112 |
+
def set_field(self, field_name, value):
|
| 113 |
+
if hasattr(self, field_name):
|
| 114 |
+
setattr(self, field_name, value)
|
| 115 |
+
else:
|
| 116 |
+
print(f"Field {field_name} does not exist in {self.__class__.__name__} class.")
|
| 117 |
+
|
| 118 |
+
def __repr__(self):
|
| 119 |
+
fields = {k: v for k, v in self.__dict__.items() if v and v != "Unable to map"}
|
| 120 |
+
formatted_fields = [f"{k}='{v}'" for k, v in fields.items()]
|
| 121 |
+
return f"{self.__class__.__name__}: " + ", ".join(formatted_fields) + ")"
|
| 122 |
+
|
| 123 |
+
def to_dict(self):
|
| 124 |
+
return {k: v for k, v in self.__dict__.items()}
|
| 125 |
+
|
| 126 |
+
# Values class
|
| 127 |
+
class Values:
|
| 128 |
+
def __init__(self):
|
| 129 |
+
self.Self_Direction = None
|
| 130 |
+
self.Stimulation = None
|
| 131 |
+
self.Hedonism = None
|
| 132 |
+
self.Achievement = None
|
| 133 |
+
self.Power = None
|
| 134 |
+
self.Security = None
|
| 135 |
+
self.Conformity = None
|
| 136 |
+
self.Tradition = None
|
| 137 |
+
self.Benevolence = None
|
| 138 |
+
self.Universalism = None
|
| 139 |
+
self.Assertiveness = None
|
| 140 |
+
self.Emotional_Responsiveness = None
|
| 141 |
+
self.Directness_Clarity = None
|
| 142 |
+
self.Focus = None
|
| 143 |
+
self.Detail_Orientation = None
|
| 144 |
+
|
| 145 |
+
def set_field(self, field_name, value):
|
| 146 |
+
if hasattr(self, field_name):
|
| 147 |
+
setattr(self, field_name, value)
|
| 148 |
+
else:
|
| 149 |
+
print(f"Field {field_name} does not exist in {self.__class__.__name__} class.")
|
| 150 |
+
|
| 151 |
+
def __repr__(self):
|
| 152 |
+
fields = {k: v for k, v in self.__dict__.items() if v and v != "Unable to map"}
|
| 153 |
+
formatted_fields = [f"{k}='{v}'" for k, v in fields.items()]
|
| 154 |
+
return f"{self.__class__.__name__}: " + ", ".join(formatted_fields) + ")"
|
| 155 |
+
|
| 156 |
+
def to_dict(self):
|
| 157 |
+
return {k: v for k, v in self.__dict__.items()}
|
| 158 |
+
|
| 159 |
+
@staticmethod
|
| 160 |
+
def read_from_excel(values_file):
|
| 161 |
+
# Load the Excel file into a pandas DataFrame
|
| 162 |
+
df = pd.read_excel(values_file)
|
| 163 |
+
|
| 164 |
+
# Create an instance of Values
|
| 165 |
+
values_instance = Values()
|
| 166 |
+
|
| 167 |
+
# Map each row from the filtered DataFrame to a corresponding field in the Tone instance
|
| 168 |
+
for _, row in df.iterrows():
|
| 169 |
+
value = row['Value'].replace(" ", "_") # Ensure field names match class attributes
|
| 170 |
+
score = row['Score']
|
| 171 |
+
|
| 172 |
+
# Use the set_field method to dynamically assign the field values
|
| 173 |
+
values_instance.set_field(value, score)
|
| 174 |
+
|
| 175 |
+
# Return the populated Values instance
|
| 176 |
+
return values_instance
|
| 177 |
+
|
| 178 |
+
|
| 179 |
+
# Style class
|
| 180 |
+
class Style:
|
| 181 |
+
def __init__(self):
|
| 182 |
+
self.Cultural_References = None
|
| 183 |
+
self.Descriptiveness = None
|
| 184 |
+
self.Sentence_Structure = None
|
| 185 |
+
self.Repetition = None
|
| 186 |
+
self.Dialogue_Usage = None
|
| 187 |
+
|
| 188 |
+
def set_field(self, field_name, value):
|
| 189 |
+
if hasattr(self, field_name):
|
| 190 |
+
setattr(self, field_name, value)
|
| 191 |
+
else:
|
| 192 |
+
print(f"Field {field_name} does not exist in {self.__class__.__name__} class.")
|
| 193 |
+
|
| 194 |
+
def __repr__(self):
|
| 195 |
+
fields = {k: v for k, v in self.__dict__.items() if v and v != "Unable to map"}
|
| 196 |
+
formatted_fields = [f"{k}='{v}'" for k, v in fields.items()]
|
| 197 |
+
return f"{self.__class__.__name__}: " + ", ".join(formatted_fields) + ")"
|
| 198 |
+
|
| 199 |
+
def to_dict(self):
|
| 200 |
+
return {k: v for k, v in self.__dict__.items()}
|
| 201 |
+
|
| 202 |
+
@staticmethod
|
| 203 |
+
def read_from_excel(style_tone_file):
|
| 204 |
+
# Load the Excel file into a pandas DataFrame
|
| 205 |
+
df = pd.read_excel(style_tone_file)
|
| 206 |
+
|
| 207 |
+
# Filter to keep only rows where Category is 'Style'
|
| 208 |
+
df_filtered = df[df['Category'] == 'Style']
|
| 209 |
+
|
| 210 |
+
# Create an instance of Style
|
| 211 |
+
style_instance = Style()
|
| 212 |
+
|
| 213 |
+
# Map each row from the filtered DataFrame to a corresponding field in the Style instance
|
| 214 |
+
for _, row in df_filtered.iterrows():
|
| 215 |
+
criterion = row['Criterion'].replace(" ", "_") # Ensure field names match class attributes
|
| 216 |
+
assessment = row['Assessment']
|
| 217 |
+
|
| 218 |
+
# Use the set_field method to dynamically assign the field values
|
| 219 |
+
style_instance.set_field(criterion, assessment)
|
| 220 |
+
|
| 221 |
+
# Return the populated Style instance
|
| 222 |
+
return style_instance
|
| 223 |
+
|
| 224 |
+
# Tone class
|
| 225 |
+
class Tone:
|
| 226 |
+
def __init__(self):
|
| 227 |
+
self.Emotional_Tone = None
|
| 228 |
+
self.Humor = None
|
| 229 |
+
self.Subjectivity_vs_Objectivity = None
|
| 230 |
+
self.Persuasiveness = None
|
| 231 |
+
self.Optimism_vs_Pessimism = None
|
| 232 |
+
self.Tone_Specificity = None
|
| 233 |
+
self.Tension_Level = None
|
| 234 |
+
self.Intensity = None
|
| 235 |
+
self.Cultural_Tone = None
|
| 236 |
+
|
| 237 |
+
def set_field(self, field_name, value):
|
| 238 |
+
if hasattr(self, field_name):
|
| 239 |
+
setattr(self, field_name, value)
|
| 240 |
+
else:
|
| 241 |
+
print(f"Field {field_name} does not exist in {self.__class__.__name__} class.")
|
| 242 |
+
|
| 243 |
+
def __repr__(self):
|
| 244 |
+
fields = {k: v for k, v in self.__dict__.items() if v and v != "Unable to map"}
|
| 245 |
+
formatted_fields = [f"{k}='{v}'" for k, v in fields.items()]
|
| 246 |
+
return f"{self.__class__.__name__}: " + ", ".join(formatted_fields) + ")"
|
| 247 |
+
|
| 248 |
+
def to_dict(self):
|
| 249 |
+
return {k: v for k, v in self.__dict__.items()}
|
| 250 |
+
|
| 251 |
+
@staticmethod
|
| 252 |
+
def read_from_excel(style_tone_file):
|
| 253 |
+
# Load the Excel file into a pandas DataFrame
|
| 254 |
+
df = pd.read_excel(style_tone_file)
|
| 255 |
+
|
| 256 |
+
# Filter to keep only rows where Category is 'Tone'
|
| 257 |
+
df_filtered = df[df['Category'] == 'Tone']
|
| 258 |
+
|
| 259 |
+
# Create an instance of Tone
|
| 260 |
+
tone_instance = Tone()
|
| 261 |
+
|
| 262 |
+
# Map each row from the filtered DataFrame to a corresponding field in the Tone instance
|
| 263 |
+
for _, row in df_filtered.iterrows():
|
| 264 |
+
criterion = row['Criterion'].replace(" ", "_") # Ensure field names match class attributes
|
| 265 |
+
assessment = row['Assessment']
|
| 266 |
+
|
| 267 |
+
# Use the set_field method to dynamically assign the field values
|
| 268 |
+
tone_instance.set_field(criterion, assessment)
|
| 269 |
+
|
| 270 |
+
# Return the populated Tone instance
|
| 271 |
+
return tone_instance
|
| 272 |
+
|
| 273 |
+
|
| 274 |
+
class FastFacts:
|
| 275 |
+
def __init__(self):
|
| 276 |
+
self.facts = []
|
| 277 |
+
|
| 278 |
+
def add_fact(self, fact):
|
| 279 |
+
if isinstance(fact, str):
|
| 280 |
+
self.facts.append(fact)
|
| 281 |
+
else:
|
| 282 |
+
print("Only strings are allowed as facts.")
|
| 283 |
+
|
| 284 |
+
def __repr__(self):
|
| 285 |
+
formatted_facts = ", ".join(f"<{fact}>" for fact in self.facts)
|
| 286 |
+
return f"{self.__class__.__name__}: {formatted_facts}"
|
| 287 |
+
|
| 288 |
+
def to_dict(self):
|
| 289 |
+
return {"facts": self.facts}
|
| 290 |
+
|
| 291 |
+
@staticmethod
|
| 292 |
+
def read_from_excel(fact_file):
|
| 293 |
+
# Read the Excel file
|
| 294 |
+
try:
|
| 295 |
+
df = pd.read_excel(fact_file)
|
| 296 |
+
facts_list = df["FastFacts"].tolist() # Assuming the facts are in a column named 'FastFacts'
|
| 297 |
+
|
| 298 |
+
# Create a FastFacts object and populate it with facts
|
| 299 |
+
fast_facts_obj = FastFacts()
|
| 300 |
+
for fact in facts_list:
|
| 301 |
+
fast_facts_obj.add_fact(fact)
|
| 302 |
+
|
| 303 |
+
return fast_facts_obj
|
| 304 |
+
except Exception as e:
|
| 305 |
+
print(f"An error occurred while reading from the Excel file: {e}")
|
| 306 |
+
return None
|
| 307 |
+
|
| 308 |
+
|
| 309 |
+
class UserProfile:
|
| 310 |
+
def __init__(self):
|
| 311 |
+
self.ID = None
|
| 312 |
+
self.name = None
|
| 313 |
+
self.transcript_file = None
|
| 314 |
+
self.demographics = Demographics() # Contains demographic-related fields
|
| 315 |
+
self.category = Category() # Contains health-related fields
|
| 316 |
+
self.preferences = Preferences() # Contains user preferences
|
| 317 |
+
self.values = Values() # Contains user values
|
| 318 |
+
self.style = Style() # Contains style-related fields
|
| 319 |
+
self.tone = Tone() # Contains tone-related fields
|
| 320 |
+
self.fast_facts = FastFacts() # Contains fast facts as a list of strings
|
| 321 |
+
|
| 322 |
+
def set_ID(self, ID):
|
| 323 |
+
self.ID = ID
|
| 324 |
+
|
| 325 |
+
def set_name(self, name):
|
| 326 |
+
self.name = name
|
| 327 |
+
|
| 328 |
+
def set_transcript_file(self, transcript_file):
|
| 329 |
+
self.transcript_file = transcript_file
|
| 330 |
+
|
| 331 |
+
def set_field(self, type, field_name, value):
|
| 332 |
+
if type == 'Demographics':
|
| 333 |
+
self.demographics.set_field(field_name, value)
|
| 334 |
+
elif type == 'Category':
|
| 335 |
+
self.category.set_field(field_name, value)
|
| 336 |
+
elif type == 'Preferences':
|
| 337 |
+
self.preferences.set_field(field_name, value)
|
| 338 |
+
elif type == 'Values':
|
| 339 |
+
self.values.set_field(field_name, value)
|
| 340 |
+
elif type == 'Style':
|
| 341 |
+
self.style.set_field(field_name, value)
|
| 342 |
+
elif type == 'Tone':
|
| 343 |
+
self.tone.set_field(field_name, value)
|
| 344 |
+
|
| 345 |
+
def set_demographics_field(self, field_name, value):
|
| 346 |
+
self.demographics.set_field(field_name, value)
|
| 347 |
+
|
| 348 |
+
def set_category_field(self, field_name, value):
|
| 349 |
+
self.category.set_field(field_name, value)
|
| 350 |
+
|
| 351 |
+
def set_preferences_field(self, field_name, value):
|
| 352 |
+
self.preferences.set_field(field_name, value)
|
| 353 |
+
|
| 354 |
+
def set_values_field(self, field_name, value):
|
| 355 |
+
self.values.set_field(field_name, value)
|
| 356 |
+
|
| 357 |
+
def set_style_field(self, field_name, value):
|
| 358 |
+
self.style.set_field(field_name, value)
|
| 359 |
+
|
| 360 |
+
def set_tone_field(self, field_name, value):
|
| 361 |
+
self.tone.set_field(field_name, value)
|
| 362 |
+
|
| 363 |
+
def set_fast_facts(self, facts_list):
|
| 364 |
+
if isinstance(facts_list, list) and all(isinstance(fact, str) for fact in facts_list):
|
| 365 |
+
self.fast_facts.facts = facts_list
|
| 366 |
+
else:
|
| 367 |
+
print("FastFacts must be a list of strings.")
|
| 368 |
+
|
| 369 |
+
def __repr__(self):
|
| 370 |
+
return (f"UserProfile(ID='{self.ID}', Name='{self.name}', Transcript File='{self.transcript_file}'\n"
|
| 371 |
+
f" Demographics={self.demographics},\n"
|
| 372 |
+
f" Category={self.category},\n"
|
| 373 |
+
f" Preferences={self.preferences},\n"
|
| 374 |
+
f" Values={self.values},\n"
|
| 375 |
+
f" Style={self.style},\n"
|
| 376 |
+
f" Tone={self.tone},\n"
|
| 377 |
+
f" FastFacts={self.fast_facts}\n"
|
| 378 |
+
f")")
|
| 379 |
+
|
| 380 |
+
def to_dict(self):
|
| 381 |
+
"""
|
| 382 |
+
Converts the UserProfile object to a dictionary for easy CSV export.
|
| 383 |
+
"""
|
| 384 |
+
user_dict = {
|
| 385 |
+
'ID': self.ID,
|
| 386 |
+
'Name': self.name,
|
| 387 |
+
'Transcript File': self.transcript_file,
|
| 388 |
+
}
|
| 389 |
+
|
| 390 |
+
# Convert category, demographics, preferences, values, style, tone, and fast facts fields to dict
|
| 391 |
+
user_dict.update(self.demographics.to_dict())
|
| 392 |
+
user_dict.update(self.category.to_dict())
|
| 393 |
+
user_dict.update(self.preferences.to_dict())
|
| 394 |
+
user_dict.update(self.values.to_dict())
|
| 395 |
+
user_dict.update(self.style.to_dict())
|
| 396 |
+
user_dict.update(self.tone.to_dict())
|
| 397 |
+
user_dict.update(self.fast_facts.to_dict())
|
| 398 |
+
|
| 399 |
+
return user_dict
|
| 400 |
+
|
| 401 |
+
|
| 402 |
+
@staticmethod
|
| 403 |
+
def write_user_profiles_to_excel(user_profiles, filename):
|
| 404 |
+
"""
|
| 405 |
+
Writes a list of UserProfile objects to an Excel file.
|
| 406 |
+
|
| 407 |
+
Args:
|
| 408 |
+
user_profiles (list): List of UserProfile objects.
|
| 409 |
+
filename (str): Path to the Excel file.
|
| 410 |
+
"""
|
| 411 |
+
if not user_profiles:
|
| 412 |
+
print("No user profiles to write.")
|
| 413 |
+
return
|
| 414 |
+
|
| 415 |
+
# Convert user profiles to a list of dictionaries
|
| 416 |
+
profiles_data = [user_profile.to_dict() for user_profile in user_profiles]
|
| 417 |
+
|
| 418 |
+
# Create a DataFrame
|
| 419 |
+
df = pd.DataFrame(profiles_data)
|
| 420 |
+
|
| 421 |
+
# Write the DataFrame to an Excel file
|
| 422 |
+
df.to_excel(filename, index=False)
|
| 423 |
+
|
| 424 |
+
print(f"User profiles successfully written to {filename}")
|
| 425 |
+
|
| 426 |
+
@staticmethod
|
| 427 |
+
def read_user_profiles_from_excel(filename):
|
| 428 |
+
"""
|
| 429 |
+
Reads a list of UserProfile objects from an Excel file.
|
| 430 |
+
|
| 431 |
+
Args:
|
| 432 |
+
filename (str): Path to the Excel file.
|
| 433 |
+
|
| 434 |
+
Returns:
|
| 435 |
+
list: List of UserProfile objects.
|
| 436 |
+
"""
|
| 437 |
+
user_profiles = []
|
| 438 |
+
|
| 439 |
+
# Read the Excel file into a DataFrame
|
| 440 |
+
df = pd.read_excel(filename)
|
| 441 |
+
|
| 442 |
+
# Iterate over the rows in the DataFrame
|
| 443 |
+
for _, row in df.iterrows():
|
| 444 |
+
user_profile = UserProfile()
|
| 445 |
+
|
| 446 |
+
# Set basic fields for UserProfile if they are present
|
| 447 |
+
if row.get('ID') is not None:
|
| 448 |
+
user_profile.set_ID(row.get('ID'))
|
| 449 |
+
|
| 450 |
+
if row.get('Name') is not None:
|
| 451 |
+
user_profile.set_name(row.get('Name'))
|
| 452 |
+
|
| 453 |
+
if row.get('Interview_Date') is not None:
|
| 454 |
+
user_profile.set_interview_date(row.get('Interview_Date'))
|
| 455 |
+
|
| 456 |
+
if row.get('Transcript_Input_File') is not None:
|
| 457 |
+
user_profile.set_transcript_file(row.get('Transcript_Input_File'))
|
| 458 |
+
|
| 459 |
+
# Set fields for Demographics if present
|
| 460 |
+
for field_name in user_profile.demographics.to_dict().keys():
|
| 461 |
+
value = row.get(field_name)
|
| 462 |
+
if value is not None and not (isinstance(value, float) and np.isnan(value)):
|
| 463 |
+
user_profile.set_demographics_field(field_name, value)
|
| 464 |
+
|
| 465 |
+
# Set fields for Category if present
|
| 466 |
+
for field_name in user_profile.category.to_dict().keys():
|
| 467 |
+
value = row.get(field_name)
|
| 468 |
+
if value is not None and not (isinstance(value, float) and np.isnan(value)):
|
| 469 |
+
user_profile.set_category_field(field_name, value)
|
| 470 |
+
|
| 471 |
+
# Set fields for Preferences if present
|
| 472 |
+
for field_name in user_profile.preferences.to_dict().keys():
|
| 473 |
+
value = row.get(field_name)
|
| 474 |
+
if value is not None and not (isinstance(value, float) and np.isnan(value)):
|
| 475 |
+
user_profile.set_preferences_field(field_name, value)
|
| 476 |
+
|
| 477 |
+
# Set fields for Values if present
|
| 478 |
+
for field_name in user_profile.values.to_dict().keys():
|
| 479 |
+
value = row.get(field_name)
|
| 480 |
+
if value is not None and not (isinstance(value, float) and np.isnan(value)):
|
| 481 |
+
user_profile.set_values_field(field_name, value)
|
| 482 |
+
|
| 483 |
+
# Set fields for Style if present
|
| 484 |
+
for field_name in user_profile.style.to_dict().keys():
|
| 485 |
+
value = row.get(field_name)
|
| 486 |
+
if value is not None and not (isinstance(value, float) and np.isnan(value)):
|
| 487 |
+
user_profile.set_style_field(field_name, value)
|
| 488 |
+
|
| 489 |
+
# Set fields for Tone if present
|
| 490 |
+
for field_name in user_profile.tone.to_dict().keys():
|
| 491 |
+
value = row.get(field_name)
|
| 492 |
+
if value is not None and not (isinstance(value, float) and np.isnan(value)):
|
| 493 |
+
user_profile.set_tone_field(field_name, value)
|
| 494 |
+
|
| 495 |
+
user_profiles.append(user_profile)
|
| 496 |
+
|
| 497 |
+
print(f"User profiles successfully read from {filename}")
|
| 498 |
+
return user_profiles
|
| 499 |
+
|
| 500 |
+
|
| 501 |
+
class UserProfileDetail:
|
| 502 |
+
def __init__(self, key, original_value, qa_check, value):
|
| 503 |
+
"""
|
| 504 |
+
Initialize a UserProfileDetail entry.
|
| 505 |
+
"""
|
| 506 |
+
self.key = key
|
| 507 |
+
self.original_value = original_value
|
| 508 |
+
self.qa_check = qa_check
|
| 509 |
+
self.value = value
|
| 510 |
+
|
| 511 |
+
def __repr__(self):
|
| 512 |
+
fields = {k: v for k, v in self.__dict__.items() if v and v != "Unable to map"}
|
| 513 |
+
formatted_fields = [f"{k}='{v}'" for k, v in fields.items()]
|
| 514 |
+
return f"{self.__class__.__name__}: " + ", ".join(formatted_fields) + ")"
|
| 515 |
+
|
| 516 |
+
@staticmethod
|
| 517 |
+
def filter_profiles(profiles, key=None, qa_check=None, value=None):
|
| 518 |
+
"""
|
| 519 |
+
Static method to filter user profiles by key, QA check status, or value.
|
| 520 |
+
|
| 521 |
+
Args:
|
| 522 |
+
profiles (list): List of UserProfileDetail objects.
|
| 523 |
+
key (str, optional): The key to filter by.
|
| 524 |
+
qa_check (str, optional): The QA check status to filter by.
|
| 525 |
+
value (str, optional): The value to filter by.
|
| 526 |
+
|
| 527 |
+
Returns:
|
| 528 |
+
list: A list of UserProfileDetail entries that match the criteria.
|
| 529 |
+
"""
|
| 530 |
+
return [
|
| 531 |
+
profile for profile in profiles
|
| 532 |
+
if (key is None or profile.key == key) and
|
| 533 |
+
(qa_check is None or profile.qa_check == qa_check) and
|
| 534 |
+
(value is None or profile.value == value)
|
| 535 |
+
]
|
| 536 |
+
|
| 537 |
+
@staticmethod
|
| 538 |
+
def generate_user_profiles(file_path):
|
| 539 |
+
"""
|
| 540 |
+
Static method to generate a list of UserProfileDetail entries from an Excel (.xlsx) file.
|
| 541 |
+
|
| 542 |
+
Args:
|
| 543 |
+
file_path (str): The path to the Excel file containing user profile entries.
|
| 544 |
+
|
| 545 |
+
Returns:
|
| 546 |
+
list: A list of UserProfileDetail objects generated from the file.
|
| 547 |
+
"""
|
| 548 |
+
# Read the Excel file
|
| 549 |
+
df = pd.read_excel(file_path)
|
| 550 |
+
|
| 551 |
+
profiles = []
|
| 552 |
+
for _, row in df.iterrows():
|
| 553 |
+
profile = UserProfileDetail(
|
| 554 |
+
key=row['Key'],
|
| 555 |
+
original_value=row['Value'],
|
| 556 |
+
qa_check=row['QA Check'],
|
| 557 |
+
value=row['Revised Value']
|
| 558 |
+
)
|
| 559 |
+
profiles.append(profile)
|
| 560 |
+
return profiles
|
common/Utilities.py
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
from collections import OrderedDict
|
| 3 |
+
from datetime import datetime
|
| 4 |
+
import pandas as pd
|
| 5 |
+
import os
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def read_text_file(file_path):
|
| 9 |
+
with open(file_path, 'r') as file:
|
| 10 |
+
content = file.read()
|
| 11 |
+
return content
|
| 12 |
+
|
| 13 |
+
def generate_file_excerpt(file_path, pattern, max_chars=5000):
|
| 14 |
+
# Step 1: Read the file content
|
| 15 |
+
with open(file_path, 'r') as file:
|
| 16 |
+
lines = file.readlines()
|
| 17 |
+
|
| 18 |
+
# Step 2: Extract lines starting with "pattern"
|
| 19 |
+
extracted_lines = [line.replace(pattern, '').strip() for line in lines if line.startswith(pattern) and len(line.split()) >= 6]
|
| 20 |
+
|
| 21 |
+
# Step 3: Join all extracted lines into a single string
|
| 22 |
+
full_text = '\n'.join(extracted_lines)
|
| 23 |
+
|
| 24 |
+
# Step 4: Return the first max_chars characters
|
| 25 |
+
return full_text[-max_chars:] # Taking the last max_chars characters
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def generate_dict_from_file(file_name, column_name1, column_name2):
|
| 29 |
+
df = pd.read_excel(file_name, usecols=[column_name1, column_name2], engine='openpyxl') # Specify the engine
|
| 30 |
+
|
| 31 |
+
# Convert the DataFrame to a dictionary with Questions as keys and Answers as values
|
| 32 |
+
ordered_dict = OrderedDict(zip(df[column_name1], df[column_name2]))
|
| 33 |
+
|
| 34 |
+
return ordered_dict
|
| 35 |
+
|
| 36 |
+
def find_latest_timestamped_file(directory, filename_pattern):
|
| 37 |
+
"""Finds the file with the latest timestamp within a given directory.
|
| 38 |
+
|
| 39 |
+
Args:
|
| 40 |
+
directory: The directory to search for files.
|
| 41 |
+
filename_pattern: The pattern to match filenames (e.g., "interview_results.xlsx").
|
| 42 |
+
|
| 43 |
+
Returns:
|
| 44 |
+
The path to the latest timestamped file, or None if no matching files were found.
|
| 45 |
+
"""
|
| 46 |
+
|
| 47 |
+
files = [f for f in os.listdir(directory) if f.endswith(filename_pattern)]
|
| 48 |
+
if not files:
|
| 49 |
+
print(f"Unable to find file with {filename_pattern} in {directory}")
|
| 50 |
+
return None
|
| 51 |
+
|
| 52 |
+
latest_file = sorted(files, key=lambda f: os.path.getmtime(os.path.join(directory, f)), reverse=True)[0]
|
| 53 |
+
return os.path.join(directory, latest_file)
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
def generate_pivot_table(original_table, index, columns, values):
|
| 57 |
+
# Step 1: Flatten all SurveyEntry objects into a DataFrame
|
| 58 |
+
df = pd.json_normalize(entry.dict() for report in original_table for entry in report.Entries)
|
| 59 |
+
|
| 60 |
+
# Step 2: Extract the original order of 'columns' (e.g., questions)
|
| 61 |
+
original_order = df[columns].drop_duplicates().tolist()
|
| 62 |
+
|
| 63 |
+
# Step 3: Pivot the DataFrame
|
| 64 |
+
summary_df = df.pivot(index=index, columns=columns, values=values)
|
| 65 |
+
|
| 66 |
+
# Step 4: Reindex to preserve the original order of columns
|
| 67 |
+
summary_df = summary_df.reindex(columns=original_order).reset_index().fillna("No Response")
|
| 68 |
+
|
| 69 |
+
# Return the summary DataFrame
|
| 70 |
+
return summary_df
|
config/chatbot.env
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# dev1.env
|
| 2 |
+
|
| 3 |
+
ENV_NAME=chatbot
|
| 4 |
+
RESPONDENT_SUMMARY_FILENAME='ChatBotProfile.xlsx'
|
| 5 |
+
CONFIG_SUBDIR='config/horlicks'
|
| 6 |
+
|
| 7 |
+
MODEL='gpt-4o'
|
| 8 |
+
OPENAI_API_KEY='sk-svcacct-hpdy33Vh_HJXLTnZeqjhbO7HgNVWISNGtFz7XtitFkiZFB8WsTBm0D0TnOdlO3-RkHa7kT3BlbkFJjUT-gn5C_Cviz_fqLuHvgWcTxDxVvGOZdyywdLjK1PVuQ-4K4fO43Noy4DODIIsC1ftAA'
|
| 9 |
+
|
| 10 |
+
AGENT_MODEL='groq/llama3-8b-8192'
|
| 11 |
+
GROQ_API_KEY='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' # elaine@aishophouse.com
|
config/horlicks/ChatBotProfile.xlsx
ADDED
|
Binary file (258 kB). View file
|
|
|
config/horlicks/MD3_fast_facts.xlsx
ADDED
|
Binary file (9.03 kB). View file
|
|
|
config/horlicks/MD3_transcript.txt
ADDED
|
@@ -0,0 +1,659 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
UH 086 Stree Skati_Madurai_MD3_DI_Female- 41-45years_Working_LSM 10+_Recent trialists of Women’s Horlicks
|
| 2 |
+
Tamil to English
|
| 3 |
+
Duration:1.31 mins
|
| 4 |
+
Note : Between duration 31 to 63 translator voice was overlapping ….tried maximum to capture the conversation.
|
| 5 |
+
M: One is studying 2nd yr and another kid is studying 9th standard?
|
| 6 |
+
R: Yes
|
| 7 |
+
M: Mother in law is there?
|
| 8 |
+
R: Yes
|
| 9 |
+
M: Only mother in law?
|
| 10 |
+
R: Yes
|
| 11 |
+
M: Ok, tell me how your time goes, at what time you will wake up?
|
| 12 |
+
R: No time at all, it is going so busy
|
| 13 |
+
M: Busy means what and all you do?
|
| 14 |
+
R: Morning I wake up at 5.becuase elder daughter goes in van and it arrives at 6.45. So I need to complete doing Tiffin and lunch by 6.30 and leave her in the bus stop.
|
| 15 |
+
M: Will you get mother in law or husband’s help?
|
| 16 |
+
R: No she can’t do, she is in bed.
|
| 17 |
+
M: And what about daughters?
|
| 18 |
+
R: She wakes up and gets ready, that much only time will be there for her. So I will prepare lunch, breakfast, leave her for van, then I will come back and I make my younger daughter to get ready, for her van comes at 8.30. After that I need to take bath and get ready. Since I am going for school visit, now it is too hurry burry.
|
| 19 |
+
M: At what time you will come back to home?
|
| 20 |
+
R: Icome back to home at 5pm.
|
| 21 |
+
M: Which time in a day you will be busy and also stressed?
|
| 22 |
+
R: Morning between 5-7.because I need to make her ready and leave her before the van arrives. That will be very stressful, afternoon time it will be little hectic at school
|
| 23 |
+
M: When you can relax?
|
| 24 |
+
R: Between 3-4 I will be little free
|
| 25 |
+
M: Again in the evening?
|
| 26 |
+
R: Again after coming back to home, things will be here and there, so I will start my work. After coming back also I will have work in lap top, all the work that was seen in the morning, must be seen again in the evening
|
| 27 |
+
M: You have some duties and responsibilities right. As a mother, as a wife, as a daughter in law. Other than that when you work, you will have work stress apart from this you have some responsibilities for yourself. So what kind of differences in each role. When we see responsibilities?
|
| 28 |
+
R: Responsibilities means recently only I am going for work. It is not much stressful work. Since 6months only the work is too heavy. Since my posting is raised work tension is more and before that I won’t have this much of work. I will go to office at 9.30 and it gets over at 4pm and I will be at home by 5.30.it was less stressful, so I was able to take care of myself, if I get any problems also I can correct. Then going out, coming back, whereas now the work is more, there is no time to think about me.
|
| 29 |
+
M: At home, being mother to kids and as wife to husband what kind of responsibilities you have?
|
| 30 |
+
R: I need to give good education for kids, I have somewhat made my elder daughter to stand. She is studying management course it is fulfilling for my mind. After 2yrs of completion she will have a job in her hand.
|
| 31 |
+
M: As a wife what kind of responsibilities are there?
|
| 32 |
+
R: We need to take care of his food and all, since he has crossed 50 I need to be little more careful
|
| 33 |
+
M: What is the age of husband?
|
| 34 |
+
R: 51yrs
|
| 35 |
+
M: Since when you started taking care of his food?
|
| 36 |
+
R: From age 45 itself I have started bringing into control.
|
| 37 |
+
M: What kind of changes you did?
|
| 38 |
+
R: Reduced oil. He is also a diabetes patient. Since he has sugar...
|
| 39 |
+
M: You know it before itself?
|
| 40 |
+
R: When he said he is becoming very tired we tested and came to know.
|
| 41 |
+
M: When he said he feels tired you tested?
|
| 42 |
+
R: Yes he said he feels tired and often he passes urine. His mother got sugar at early 40’s itself, since 35yrs she has sugar, now she has crossed 70. Now also she is taking tablet.
|
| 43 |
+
M: Mother in law got sugar in 40 and husband got in 50?
|
| 44 |
+
R: So I am taking little care and seeing.
|
| 45 |
+
M: Now you said you want to take care in their studies and next you said for your husband, he got diabetes and so you want to control his food. What kind of responsibilities are taking for yourself?
|
| 46 |
+
R: When we have these responsibilities I am not getting a mind to take care of myself. After 30 itself small changes have started in the body
|
| 47 |
+
M: Like what kind of changes?
|
| 48 |
+
R: Physically I am saying, since I had two kids, I used to feed for them and so I get issues in bone. Both were caesarean for me. So I got back pain since 6-7yrs. If I see heavy work means I get back pain. Accordingly I will reduce the work. I will have a person to help during that time
|
| 49 |
+
M: Like for what kind of work?
|
| 50 |
+
R: For cleaning utensils and for mopping the floor I had maid but that was not suitable. Because they are not coming to the time we say. After I leave for work if she comes there is no use, so I stopped her since 2months and now I am doing everything on my own.
|
| 51 |
+
M: When you are busily doing other works and when you are taking care of everybody, what kind of challenges you have?
|
| 52 |
+
R: Time management is very difficult. We need to make everyone get ready at that time and I should also get ready. And we need to put attendance there also.
|
| 53 |
+
M: What is the result of it, when you want to do everything before that time?
|
| 54 |
+
R: When we see work like that, we can’t even sit and enjoy having a cup of coffee. We need to gulp it and see the cooking work; like that we are losing a lot.
|
| 55 |
+
M: What is happening due to that?
|
| 56 |
+
R: I am becoming tired in few minutes, after completing the work here and when we got our work place I am getting tired after sometime. And also sleep hours are getting reduced, after coming back to home also we are doing work at home and also in the laptop. It will be 11 to go to bed. And again we need to wake up at 5am. So sleep is also getting spoiled much.
|
| 57 |
+
M: What is happening due to sleeplessness?
|
| 58 |
+
R: Body wise we are getting affected and getting more stressed .
|
| 59 |
+
M: What is happening health wise?
|
| 60 |
+
R: I will be very tired and back pain will be more.
|
| 61 |
+
M: If you don’t sleep means?
|
| 62 |
+
R: If I don’t sleep properly means I will get head ache, and when we sit and see the work heavily we are getting back pain. Since 6months work is heavy and due to that started getting neck pain.
|
| 63 |
+
M: You are working in laptop sorry desktop?
|
| 64 |
+
R: Yes
|
| 65 |
+
M: When you think the word health, what is the feel?
|
| 66 |
+
R: I am very low in health.
|
| 67 |
+
M: If I put 1-10 scale means.1 is bad and 2, 3, 4, means gradually increasing and 10 means very healthy. Where will you place yourself in this scale?
|
| 68 |
+
R: I can keep myself in six.
|
| 69 |
+
M: If you have kept up to 6 means. Because 6 is good right?
|
| 70 |
+
R: Yes
|
| 71 |
+
M: For that 6 what are the good things would you say?
|
| 72 |
+
R: We should fresh-up ourselves. We should increase in the food.
|
| 73 |
+
M: 6 means you are saying you are that much healthy correct?
|
| 74 |
+
R: Yes
|
| 75 |
+
M: What are the indications for it, to say you are healthy?
|
| 76 |
+
R: Otherwise I don’t have any other issues like pressure, sugar and all. Due to increase in work load only I am getting back pain.
|
| 77 |
+
M: Reason for giving 6 means I don’t have BP, Sugar?
|
| 78 |
+
R: When we don’t have that kind of problem means we won’t have thought about it.
|
| 79 |
+
M: That’s why you have given 6?
|
| 80 |
+
R: Yes
|
| 81 |
+
M: Why you reduced 4 now?
|
| 82 |
+
R: At the age of 40 itself back pain is there. And it will get down means we will get knee pain means many people are suffering while climbing the stairs, I do more travelling.
|
| 83 |
+
M: Where do you travel?
|
| 84 |
+
R: I need to go to different schools and that’s why I am getting very tired.
|
| 85 |
+
M: You said the pain will go down, what do you mean by that?
|
| 86 |
+
R: Those who have knee pain they are saying they are getting back pain later. They are saying it will affect each bone. Since I have back pain I think it may come down to knee in later days, I have fear.
|
| 87 |
+
M: Do you mean to say it will spread?
|
| 88 |
+
R: Our body weight is next borne by our knee so we may get knee pain.
|
| 89 |
+
M: Let’s imagine a lady is healthy, let’s say your age. Tell me what are the indications to say she is healthy?
|
| 90 |
+
R: She will be fresh and she can do all the work actively.
|
| 91 |
+
M: What else she will do. If we are fixing 24hrs camera and watching her means, what and all she will be doing? What and all you are noticing and you are giving certificate she is healthy lady?
|
| 92 |
+
R: She will be without much stress. She will take healthy food
|
| 93 |
+
M: What else she is doing. You are noticing her activities, like what and all she is doing?
|
| 94 |
+
R: She will do the house chores.
|
| 95 |
+
M: Like what kind of work give example?
|
| 96 |
+
R: She will do every work at home like washing clothes, cleaning the house, taking care of the kids, cooking for kids and taking them to school and taking them back. Teaching them etc. Like that she will do all the works at home by her own
|
| 97 |
+
M: If we look at her in the scale means where she will be?
|
| 98 |
+
R: She will be in 9. When she is without any pressure, she can do every work without tiredness. She does it with smiling face, that is main. If we take work means she won’t feel like’ ayyo we need to see this work after this work’. She will do it faster and completes.
|
| 99 |
+
M: So there is no frustration basically. Next, you are seeing another lady. She is not that much healthy, how will you find this? What are the indications? When you see inside her house what and all can be seen?
|
| 100 |
+
R: Her house will be unclean, because definitely she will have laziness when health issue comes, she will postpone the work. When she does one work she can do that one work only. And she will push the next work to next day.
|
| 101 |
+
M: What other indications we can see with her?
|
| 102 |
+
R: She will do the work shortly , for e.g. if we take cooking , if two people are asking two different dishes means we think to do both whereas she will do one and says’ that’s all I can’t do more, I don’t have energy in body to do different stuffs for each of them , I will become tired’.
|
| 103 |
+
M: One thing is she becomes tired. What else you found with her. You are mentioning in the report card about her like’ this lady is not healthy at all, she is bad’?
|
| 104 |
+
R: When we look at her she looks very dull. She sees the work very lazily. Every work she stops and does, she won’t do it continuously. She feels fatigue.
|
| 105 |
+
M: Then what else will be there. Why you will give less mark for her health? How much mark will you give?
|
| 106 |
+
R: Below 5.
|
| 107 |
+
M: Any other indications will be there?
|
| 108 |
+
R: She will have physical related issues like hand, leg pain, and knee pain. She might have pressure, sugar and some problem in the inner parts. If she has any health issues like that means she will think.
|
| 109 |
+
M: Next if we see means age between 20-29yrs. What kind of health issues this age group will have? There will be any issues?
|
| 110 |
+
R: Maximum there are no chances.
|
| 111 |
+
M: How will be their health scale usually?
|
| 112 |
+
R: It will be up to 10. May be for some ladies today have baby problem (pregnancy).
|
| 113 |
+
M: Now between 30-39 yrs old women, are there chances for any issues?
|
| 114 |
+
R: Yes definitely it is there.
|
| 115 |
+
M: Like what?
|
| 116 |
+
R: Mainly they get pain related problems. Other than that I haven’t heard any other issues as far as ladies are concerned. As the age increases they will get leg, hand pain, knee pain, tiredness and all.
|
| 117 |
+
M: What sort of pains will come?
|
| 118 |
+
R: When they cross 39 they will be much affected due to period’s problem.
|
| 119 |
+
M: So this problem comes due to period’s problem?
|
| 120 |
+
R: Yes due to that they will become tired mind wise also.
|
| 121 |
+
M: That is fine, due to period’s problem for 3 or 5 days...
|
| 122 |
+
R: That is monthly, I mean menopause
|
| 123 |
+
M: Not menopause, I am asking during 30-39?
|
| 124 |
+
R: Between 30-39 and all no issues will be there. After 40 only issues will increase.
|
| 125 |
+
M: From that time period problem will be there and so pains will be there?
|
| 126 |
+
R: Yes
|
| 127 |
+
M: Just help me out to understand, how you are connecting. What happens due to period problem? How pain is coming?
|
| 128 |
+
R: Physically we are putting more weight. When I touched 39 itself periods has changed 2-3 months once. Periods started changing to irregular.
|
| 129 |
+
M: What is due to that?
|
| 130 |
+
R: Body started putting weight. When the knee bears the whole body weight we will start getting pains. And back pain will increase.
|
| 131 |
+
M: All of these are due to weight gain?
|
| 132 |
+
R: Due to hormonal imbalance those kind of problems are coming.
|
| 133 |
+
M: Between 40-49yrs of age what kind of things, anything will be different in this?
|
| 134 |
+
R: Mostly uterus related issues will come for women. Other than that, if we remove uterus or not we are getting back pain, knee pain. Now everyone who are all crossing 45 are getting knee joint pain.
|
| 135 |
+
M:Anything else?
|
| 136 |
+
R: For some people they get sugar, BP due to family history.
|
| 137 |
+
M: You are saying, all this begins from 40?
|
| 138 |
+
R: While nearing 45
|
| 139 |
+
M: Above the 50-59 yrs means?
|
| 140 |
+
R: Compulsorily every women is saying about knee pain. To my knowledge and up to what I have seen, I have knee pain and others also have.
|
| 141 |
+
M: You said two things like knee pain and back pain. What is the actual meaning can you explain?
|
| 142 |
+
R: As the calcium level decreases from the body we start getting these problems and also we are not doing regular exercises. Everything is machine and we are not putting that much of physical effort and personally also we are not doing anything.
|
| 143 |
+
M: What should we do?
|
| 144 |
+
R: None is doing work, machine is washing the clothes. There is no physical work for us so we will get those issues.
|
| 145 |
+
M: You are saying two things, on one side it is because of not doing exercise and on other side you are saying calcium is decreasing?
|
| 146 |
+
R: As our age increases the calcium levels will decrease from our body.
|
| 147 |
+
M: How will it decrease, why calcium is going to decrease?
|
| 148 |
+
R: That is compulsory, it happens to all. While crossing the age, our bones won’t be as strong as before. We won’t have the strength in the bone like how we had after birth.
|
| 149 |
+
M: How you came to know all these, who told you all this?
|
| 150 |
+
R: My daughter only says all these. She said like’ after one stage the growth of the bone will not be proper and that’s all. After this age bone health will be less. Because many patients are coming to hospital, then old lady fell down and her bone got broken.
|
| 151 |
+
M: Oh she works in hospital, what she is studying?
|
| 152 |
+
R: She is accident emergency technician.
|
| 153 |
+
M: You are getting more information from her?
|
| 154 |
+
R: She only gives me lot of information. So she says these kind of issues will be there
|
| 155 |
+
M: What other information you collect from her?
|
| 156 |
+
R: When I say I am getting pain, she says to take calcium rich foods.
|
| 157 |
+
M: Like what?
|
| 158 |
+
R: Egg, milk etc
|
| 159 |
+
M: One thing is your daughter is saying, from where else are you knowing things, because now only she is 2nd yr?
|
| 160 |
+
R: Before this she studied as lesson. And now she is practically seeing many patients.
|
| 161 |
+
M: Which means you know all these information’s since one year only?
|
| 162 |
+
R: Since 6months I know
|
| 163 |
+
M: Since when do you know calcium deficiency is the reason for pain?
|
| 164 |
+
R: That I know before itself
|
| 165 |
+
M: From where did you came to know?
|
| 166 |
+
R: While interacting with my friends circle they used to say this. We have reached 40.and we get problems, for me the periods stopped at 40 itself. So they told as ‘since your periods stopped earlier at 40 itself you might get these problems and your bone will lose its strength, may be due to that you are getting pains’.
|
| 167 |
+
M: One is thru friends. From where else we are knowing it?
|
| 168 |
+
R: TV ads we are watching
|
| 169 |
+
M: What kind of ads you have seen?
|
| 170 |
+
R: I have seen Horlicks ad which states, bone density will decrease after 30yrs. Taapsee comes for that ad.
|
| 171 |
+
M: What else you have seen?
|
| 172 |
+
R: I have read about calcium tablets in newspaper and in internet. In that it is stated like ’take more supplementary’.
|
| 173 |
+
M: What is that ad about supplementary?
|
| 174 |
+
R: Not ad, I just read an article.
|
| 175 |
+
M: In the newspaper?
|
| 176 |
+
R: Yes I read an article
|
| 177 |
+
M: What did you saw?
|
| 178 |
+
R: Glucosamine tablet is there.
|
| 179 |
+
M: What kind of newspaper it is?
|
| 180 |
+
R: I saw in Amazon and my husband was saying about, he has heard thru someone known to him. If this tablet is taken means we will not get knee pain. We can’t say pain will not come, but it will support without getting worsen further.
|
| 181 |
+
M: I want to know what it does. Will it remove the pain or it gives solution or prevents without coming?
|
| 182 |
+
R: It will keep in control without increasing further. Gel formation will be controlled. It will be healthy for bones and bone will be better without going bad.
|
| 183 |
+
M: Prevents bone becoming weak further?
|
| 184 |
+
R: Yes
|
| 185 |
+
M: Where did you saw suddenly in Amazon?
|
| 186 |
+
R: Known friend of my husband said, so we searched in Amazon.
|
| 187 |
+
M: And you said you saw something in the newspaper. Do you remember that?
|
| 188 |
+
R: Supplementary books like Vaaramalar and all.
|
| 189 |
+
M: About what?
|
| 190 |
+
R: As the age increases bone strength will decrease. Bones will become very soft. If elders get hurt it is very difficult to correct the bones whereas if kids get hurt means, soon their bones will join. If we get injured now means we need to fix plate, there are no chances for the bones to join. And for those who have crossed above 50 and all it is very difficult
|
| 191 |
+
M: You said the word supplementary. Have you heard anything else other than glucosamine?
|
| 192 |
+
R: I haven’t heard anything in tablet, I have heard in tonic only. Calcium tonic and all will be given when the kids were small. Doctor used to prescribe calcium tonic.
|
| 193 |
+
M: Have you given for your daughter?
|
| 194 |
+
R: Yes for elder daughter I have given.
|
| 195 |
+
M: How many days you gave and who told to give?
|
| 196 |
+
R: Paediatric only suggested, kids those have low calcium they will start eating white ones. So she was suggested to give calcium tonic
|
| 197 |
+
M: At what age this happened?
|
| 198 |
+
R: While she went to Pre kg, LKG i.e. during 3-3.5yrs old.
|
| 199 |
+
M: How many days you gave that tonic?
|
| 200 |
+
R: I gave for 6months
|
| 201 |
+
M: Did they say to give or you gave till 6 months?
|
| 202 |
+
R: No they told to give. If calcium is decreasing in body means kids will look for white colour things, they eat sugar, salt.
|
| 203 |
+
M: After taking calcium tonic there was difference?
|
| 204 |
+
R: Yes after that she stopped looking for white things
|
| 205 |
+
M: Then you also stopped giving?
|
| 206 |
+
R: Yes I also stopped. They told to give up to 6months and I also gave continuously for 6months.
|
| 207 |
+
M: Have you ever thought like; we shall also take what was given for the kid?
|
| 208 |
+
R:It was given for baby
|
| 209 |
+
M: You said about calcium deficiency?
|
| 210 |
+
R: Yes there will be medicines for adults separately but I didn’t preferred to take
|
| 211 |
+
M: Oh, this one is for kids?
|
| 212 |
+
R: Yes for kid
|
| 213 |
+
M: One is tonic, what else is there?
|
| 214 |
+
R: Can take health drinks like that.
|
| 215 |
+
M: You said tablet, tonic, health drinks. That’s all or you have heard anything else?
|
| 216 |
+
R: Nothing else, they say to take egg, milk, grains like that which is good for bone.
|
| 217 |
+
M: When it comes to your health, till what age you felt you are superb. In a scale of 1-10. You felt you have dropped a little in that scale?
|
| 218 |
+
R: At around 37 I felt it is dropping down
|
| 219 |
+
M: What is the indication at the age of 37?
|
| 220 |
+
R: First I had back pain. When I sit for long time and work in system in the office, when I sit whole day I feel tired, at that time only I felt. Slightly only the pain was coming. After that we will travel, we come back to home and see other chores. At that time only I felt I started getting back pain. Our body is also losing strength
|
| 221 |
+
M: Strength in what?
|
| 222 |
+
R: In bone
|
| 223 |
+
M: You are 37yrs. And some years back you got back pain. What was the effect due to?
|
| 224 |
+
That? What happened due to that pain?
|
| 225 |
+
R: If pain is there means it will be little difficult to bend and do work and we can’t sit for long time and do work, it will be very difficult , few minutes once I will get up and go out.
|
| 226 |
+
M: That pain is a challenge for you?
|
| 227 |
+
R: Yes
|
| 228 |
+
M: What and all you thought during that time, what and all was there in your mind during that moment?
|
| 229 |
+
R: It will be very difficult to bend down and sweep the floor. If I bend down and sweep means I couldn’t raise up due to pain. Like that, I started getting heavy pain. During Diwali time and all pain will be heavy and I will lie down for two days
|
| 230 |
+
M: Ok then what else?
|
| 231 |
+
R: I can’t bend down and rinse clothes or I can’t put clothes for drying, I am using machine for it.
|
| 232 |
+
M: Tell me that story, then what happened?
|
| 233 |
+
R: During that time kids were also small and there are none to help me, I need to see all the work. At that time it was situation like I need to read myself.
|
| 234 |
+
M: What did you do? You did anything to come out of that pain during that time at 37yrs of age?
|
| 235 |
+
R: I was told to do physio therapy but I can’t go and do there.
|
| 236 |
+
M: Who told to do physio therapy?
|
| 237 |
+
R: When I had severe pain for two days, I couldn’t get out from the bed even and so we went to doctor.
|
| 238 |
+
M: At the age of 37 itself?
|
| 239 |
+
R: Yes the pain was heavy
|
| 240 |
+
M: Did you went to the doctor?
|
| 241 |
+
R: Yes I went to doctor
|
| 242 |
+
M: Who gave the suggestion for going to the doctor?
|
| 243 |
+
R: Since back pain was more I myself decided to go to my regular doctor
|
| 244 |
+
M: Did you went to a general physician?
|
| 245 |
+
R: Yes. He only said like’ let’s take an X-ray and see. After seeing that we will decide.
|
| 246 |
+
M: What did he say after taking x-ray?
|
| 247 |
+
R: He said ligament has slightly moved and he suggested putting belt and I was wearing belt for some days
|
| 248 |
+
M: What else he said?
|
| 249 |
+
R: He told, not to lift more weight
|
| 250 |
+
M: He said only that one point due to ligament only or he explained anything else?
|
| 251 |
+
R: After this age you should reduce weight. At that time he didn’t say anything else, he said ‘if you wear belt you will be fine’. He told to wear 3-6months
|
| 252 |
+
M: He didn’t say anything else?
|
| 253 |
+
R: I wore it for 6 months I felt better and then I left it, again if I do more work means again the same problem will come.
|
| 254 |
+
M: Why did you removed after 6months?
|
| 255 |
+
R: I didn’t had that much pain, while doing the work I will be wearing. While working, when I at home, while sweeping he told to wear and told to remove it while going for sleep. I was wearing it and it was better. If we are not straining the back much means it will be better. Then I left it. Then I it got over and I also left.
|
| 256 |
+
M: After that you were ok?
|
| 257 |
+
R: Yes
|
| 258 |
+
M: What happened then?
|
| 259 |
+
R: Then I thought I am fine, it got cured. I thought belt was the solution and left it.
|
| 260 |
+
M: Then what happened?
|
| 261 |
+
R: After that I was fine for 2-3yrs. Without fetching water and without taking weight I felt better. After periods got stopped again the same problem started.
|
| 262 |
+
M: Periods stopped at 40?
|
| 263 |
+
R: Yes at 40, since 4yrs I don’t a have periods
|
| 264 |
+
M: What happened once period stopped?
|
| 265 |
+
R: I started putting weight. Again same problem started and I also felt pain in the knee also. While climbing the stairs and while walking. Again I went to gynaecologist to say that periods got stopped since my age was less.
|
| 266 |
+
M: What did she say?
|
| 267 |
+
R: She took x-ray, scan and said everything is normal. For some people it will be like that she said.
|
| 268 |
+
M: What x-ray?
|
| 269 |
+
R: No, for uterus they took scan. And I asked ‘I have back pain what is the reason’ she said this could be the reason for you to get more back pain. And she suggested Ortho there and told to meet.
|
| 270 |
+
M: Did you met Ortho?
|
| 271 |
+
R: Yes he took x-ray and said’ you don’t have any bulge, don’t lift more weight and also reduce your weight’.
|
| 272 |
+
M: He told to reduce your weight?
|
| 273 |
+
R: Yes
|
| 274 |
+
M: That’s all he didn’t say anything else?
|
| 275 |
+
R: He asked whether my periods are proper or irregular. Then I said it has got stopped and I showed the reports and he said, this could be a reason for this problem. He told me to eat healthy food. After this age issues will come in bones. That too periods have stopped for you so definitely the calcium levels will drop. So you take food accordingly’. He told to do changes in the food and eat.
|
| 276 |
+
M: At the age of 37 yrs when you went to the Gp for first time. He told about ligament. Did you checked here with ortho that you went for treatment at the age of 37?
|
| 277 |
+
R: Yes I said that, and that’s why they told me to take x-ray again. And after checking he said there are no issues, everything is normal
|
| 278 |
+
M: Food alone he suggested. What kind of food he suggested?
|
| 279 |
+
R: He told to take food which has more calcium. He told to have egg, milk, ragi like that which has more calcium
|
| 280 |
+
M: Then what happened?
|
| 281 |
+
R: So the food changed. Already I was taking milk and egg.
|
| 282 |
+
M: How many days once you will have milk, egg?
|
| 283 |
+
R: Egg I take weekly 3 times and milk I take daily.
|
| 284 |
+
M: Then what else he said, not to lift weight?
|
| 285 |
+
R: Yes
|
| 286 |
+
M: Now you are 44, what happened after that? What and all happened 4yrs?
|
| 287 |
+
R: Still I am having pain. I don’t know what to do, as like they said I am taking everything. But still there is pain. We need to reduce our work, if I do more work means the pain will be more. If I do less work means I will not have that much pain.
|
| 288 |
+
M: Which are the works you have reduced?
|
| 289 |
+
R: Since the kids are little grown up, they have started taking care of brooming and all. Cooking alone I do, rest of the works my daughters will divide and do.
|
| 290 |
+
M: So you have reduced the work load?
|
| 291 |
+
R: If Lorry water comes means they will fetch water. They have reduced my work of carrying weight. So pain is reduced
|
| 292 |
+
M: What else is there, they have shared the works. What other issues you have?
|
| 293 |
+
R: This is the only problem and no other problem is there. At the age of 37 periods was irregular, at that time it was difficult for me. Suddenly I will be heavy and suddenly for 6months nothing will happen. And 10 days I will be lying down like that.
|
| 294 |
+
M: When it is about pain, whether pain is reduced or increased or maintained?
|
| 295 |
+
R: to some extent, slightly reduced I feel.
|
| 296 |
+
M: How do you feel that the pain is reduced? How will you say?
|
| 297 |
+
R: I am able to extend the duration of the time, whatever work I am doing now I am doing. Previously I was reducing the time. Earlier and all if I stat work at 9.30 means I can sit only up to 11am. I had to get up and walk around, go for wash room and come back.
|
| 298 |
+
M: What is the lunch time?
|
| 299 |
+
R: Up to 12.30.Now I am able to stretch myself little more hours also and walk. I am able to now lift a water pot also.
|
| 300 |
+
M: Now these are all the improvements. It means the pain is reduced?
|
| 301 |
+
R: Previously I was finding it difficult to walk down also.
|
| 302 |
+
M: So now you are saying that it has improved from 40 to 44.What reason will you attribute for the improvement?
|
| 303 |
+
I was not like that from 40yrs of age itself, recently in the last 6-7 months only. Once kids started seeing the work I got some rest. Actually very recently, 7 months only I am free from such problems. And my children have taken up more responsibility. That is the main reason that I am free. You know habits, your food habits, and lifestyle.
|
| 304 |
+
M: So your food habits and your life style has changed?
|
| 305 |
+
R: Some changes would have happened in my body because of the food. I take Horlicks. 5 months. Before that I was not taking.
|
| 306 |
+
M: Until that how was it. Let us keep it 40 to 43. What was the state?
|
| 307 |
+
R: Pain was continuous process. In spite of the pain I should keep running. Then and there I had to take a rest. Actually when I apply spray or pain balm, it was giving a temporary relief.
|
| 308 |
+
M: Thailam (medicated oil) means what kind of thailam?
|
| 309 |
+
R: Like Volini spray then Diclo ointment. I don't use tablets.
|
| 310 |
+
M: Why?
|
| 311 |
+
R: Why should I invite more problems? Already I have got existing problems.
|
| 312 |
+
M: These and all you will not get addicted?
|
| 313 |
+
R: Those are applied externally only no.
|
| 314 |
+
M: When do you apply Diclo, Volini and all?
|
| 315 |
+
R: In the leg. Diclo is a spray
|
| 316 |
+
M: Where did you apply?
|
| 317 |
+
R: On the back
|
| 318 |
+
M: What happens when you apply, What it does?
|
| 319 |
+
R: When you apply, initially it gives burning sensation simmers down, till such time I will feel there is no pain. So I don't feel the pain.
|
| 320 |
+
M: This is during night time, during day time you will have pain?
|
| 321 |
+
R: Night I will apply so that I was able to sleep well.
|
| 322 |
+
M: So how do you know when to apply?
|
| 323 |
+
R: When the system is working more, when I travel more also, I have to visit different schools also. Definitely I do feel the pain. I have to go for distant places to different schools. They say to go to villages and all; there I need to go to schools for checking
|
| 324 |
+
M: This also you did after the pain started?
|
| 325 |
+
R: Yes
|
| 326 |
+
M: You didn’t do anything before itself?
|
| 327 |
+
R: No, Second time daughter also said. Probably she must be working. Since 6months I am taking Horlicks .I was shifted to CEO office and my colleagues suggested. They also made fun out of me. Saying like a moving medical shop, always carrying something in the bag. You are always having spray in the bag. Then I said ‘mam I have more pain that’s why’. There is no other way. Since she told only I am buying Horlicks, but before that I have been consuming Horlicks since childhood. I have seen kids also taking Horlicks have seen Women’s plus ad, but I just thought, some other issue must not come on taking this.
|
| 328 |
+
M: Children do they consume anything?
|
| 329 |
+
R: Now they don't consume.
|
| 330 |
+
M: What your kids had?
|
| 331 |
+
R: Both the children had consumed Horlicks.
|
| 332 |
+
M: When did you stop?
|
| 333 |
+
R: During their 6th or 7th standard.
|
| 334 |
+
M: Did you consume?
|
| 335 |
+
R: Yes, I also had.
|
| 336 |
+
M: Your children have consumed. Did you took?
|
| 337 |
+
R: I didn't take. Only when I am sick, probably at that time.
|
| 338 |
+
M: Otherwise they won’t have?
|
| 339 |
+
R: Suppose when they say no for it. Whatever Horlicks I have made for the children. I cannot waste it.
|
| 340 |
+
M: Why you gave it to kids?
|
| 341 |
+
R: They won’t take plain milk when they are kids. It's a ritual to give Horlicks to the children. On the pack Elephant image will be there, that interests them.
|
| 342 |
+
M: That is junior Horlicks...Then why did you switch to Horlicks?
|
| 343 |
+
R: It became a habit to give Horlicks only. They did not like to take plain milk.
|
| 344 |
+
M: Did you thought it has any benefit or Main purpose is to make them to consume it?
|
| 345 |
+
R: Main purpose is to make them have milk. Then health.
|
| 346 |
+
M: What kind of health?
|
| 347 |
+
R: They are able to continue to be healthy and active also.
|
| 348 |
+
M: You know Horlicks and Junior Horlicks. But you have not consumed it willingly.
|
| 349 |
+
Any reason? During pregnancy you had anything?
|
| 350 |
+
R: I have consumed during pregnancy.
|
| 351 |
+
M: What did you do during pregnancy?
|
| 352 |
+
R: At that time I had Horlicks only, mothers Horlicks,
|
| 353 |
+
M: Who gave you Horlicks?
|
| 354 |
+
R: My father. He gave me Horlicks when I was pregnant. And also mothers Horlicks while feeding.
|
| 355 |
+
M: How long did you take Horlicks?
|
| 356 |
+
R: I was asked to take Horlicks for 6 months.
|
| 357 |
+
M: After that?
|
| 358 |
+
R: I stopped
|
| 359 |
+
M: Who told to stop?
|
| 360 |
+
R: I only dropped Horlicks.
|
| 361 |
+
M: Why?
|
| 362 |
+
R: I did not like it.
|
| 363 |
+
M: What you did not like?
|
| 364 |
+
R: After that my children also started eating other foods.
|
| 365 |
+
M:Which means you said you already had a habit of taking Horlicks? Actually family known product is Horlicks. During pregnancy I had consumed Horlicks. During lactation period also I had consumed Horlicks. And you said you took Horlicks since your colleagues said at work place?
|
| 366 |
+
R: They said they felt better after taking Horlicks. So you should also try Horlicks. If it is a new product means we need to think but this is already known one. That's what was suggested. So that's what she is saying. You said you already saw the advertisement.
|
| 367 |
+
M: What did you see in the ad?
|
| 368 |
+
R: After 30 years it is quite obvious women bone strength will decrease and they suffer due to pain. In the ad she is not able to go to sofa. She is not able to push the weights. She was holding the hip so tight. So the woman will start facing such problems after 30 years. It is quite natural.
|
| 369 |
+
M: What it has?
|
| 370 |
+
R: In the ad it says, it has Vitamin D, Calcium. So you have to drink it. At that time, I didn't feel like taking it. I had my own doubt. Just by drinking it will I get Calcium. And the bone Calcium everything. Will I get it? I felt like that, I had mothers Horlicks. in that we have nutrition. Whereas in this they are saying, it has calcium.
|
| 371 |
+
M: What is meant by nutrition, what is meant by calcium?
|
| 372 |
+
R: That might have Protein also. Children should put on weight. They should be healthy. And particularly they say Calcium only is highlighted in this. They are telling it as a common objective only. Calcium just that side. They don't talk about the growth aspect.
|
| 373 |
+
M: Ok
|
| 374 |
+
R: For children example brain development. So many things are being addressed too. But here in this women are always talking about just Calcium.
|
| 375 |
+
M: How far that is worth helping? But specifically they say mainly for the bone. Why you didn't feel like trying it as least once? How did you feel like that? What did you thought tell me that first when you saw the ad?
|
| 376 |
+
R: While watching the ad I thought, ok Horlicks has bought another variant for women. Already Sugar Horlicks and all is there, I have heard many. Earlier women’s Horlicks and now it is Women’s plus, then mother’s Horlicks for pregnant women, then Junior Horlicks for kids. I remember women Horlicks has been there from the beginning. They are specifically talking about the bone. Mainly indicated for the bone.
|
| 377 |
+
M: Generally if we say as Bone related. Bone health care. Means what's the meaning according to you?
|
| 378 |
+
R: Mainly we are the backbone for our family. Actually everybody is suffering because of bone pains. No work will be done. If we get pain. For that we should be healthy. Bone is very very important.
|
| 379 |
+
M: From what age?
|
| 380 |
+
R: From 35 onwards. We are giving birth to kid. You have to pay attention to it. Mandatory when we reach 35.
|
| 381 |
+
M: What is the link between giving birth to baby and for bone?
|
| 382 |
+
R: Necessarily we have to care ourselves. At particular age only our body will be active. Because by 35. We have to complete the delivery process. Or else we are getting many physical relate problems. Problem which I say at the age of 35 and above.
|
| 383 |
+
M: Now we are in 2024, maybe if we take 2014 i.e. 10yrs back, is there any difference in their approach towards health or bone related things, how they are seeing it? How important it is?
|
| 384 |
+
R: I don’t think this problem was there this much earlier and all. My mother was good at that age. But it has started 30 years. 5 years in advance.
|
| 385 |
+
M: I am asking during 2014. 10 years before?
|
| 386 |
+
R: My mother was ok only, even at the age of 65yrs also my mom was fine. She is stable. I got knee pain at the age of 37 itself but my mom didn’t had anything like that. She is actually 68 plus. She was able to walk very stable. Father was healthy.
|
| 387 |
+
Now when I compare. My own leg is aching. Now only. My daughter is 18.
|
| 388 |
+
M: Pains are from many years, I am not saying that bone pain starts from 2015 only. We are giving importance no. How much pain women had at that time and to which extent people gave importance and how much importance is given these days?
|
| 389 |
+
R: We are taking many medicine and we are asking for it whereas mother and all didn’t looked for it
|
| 390 |
+
M: Why we have started to search medicines?
|
| 391 |
+
R: Actually they were at home, whereas now we had to do all our household work and professional work. In physical labour has increased for us now
|
| 392 |
+
M: You said you are going to the doctor. Did you straightly went to the doctor when you got pain?
|
| 393 |
+
R: I didn't go straight away to the doctor. I tried Pain relieving oil.
|
| 394 |
+
M: At the age of 37?
|
| 395 |
+
R: Yes
|
| 396 |
+
M: Why you directly went and you didn’t do any other Option?
|
| 397 |
+
R: The pain intensity increases. I think of going to the doctor. I couldn’t get up from the bed, someone needs to lend their hand me for support. i managed for one day, I couldn’t stand and cook food
|
| 398 |
+
M: At what stage you felt. You had to go to the doctor?
|
| 399 |
+
R: When the limb pains were there. We didn't take it so seriously. When I reached to the stage. I was not able to get up from the bed. And children were too young also at that time. I had to make them get ready. To get ready for school and all.
|
| 400 |
+
M: You went to the different doctors. Normal GP you went to and next time you went to gynaecologist for periods. Since you said. It could be because of bone and backbone pain. Did you feel like going to the doctor for that?
|
| 401 |
+
R: Generally we got the tendency to go to the regular doctor only. They said take x-rays. And they said disc problem.
|
| 402 |
+
M: What did the second doctor said?
|
| 403 |
+
R: Second doctor said. It is normal. I went to the *orthopaedic also. He checked everything. If there is no problem.
|
| 404 |
+
M: Suppose a lady was free from all issues means. We are sitting in there and watching her by fixing a camera. What do you think will take place in that house?
|
| 405 |
+
R: She will be mopping her house and brooming, since I have back pain I can’t do that.
|
| 406 |
+
M: So without hesitation she will do all the works, what other signs and symptoms you will be able to find there?
|
| 407 |
+
R: If I want to take something means I need to pester others
|
| 408 |
+
M: What could be the age of the healthy lady?
|
| 409 |
+
R: 40yrs .my age
|
| 410 |
+
M: What she will be doing, she is free from pain and she is strong means what could be the reason?
|
| 411 |
+
R: Without hesitation she will carry out all the work. The person was really healthy.
|
| 412 |
+
M: What are the other signs and symptoms you are able to find out?
|
| 413 |
+
R: I don't know what she eats.
|
| 414 |
+
M: What could be the reason?
|
| 415 |
+
R: I don’t know why I got this problem. Water problem was there and I fetched water many times. Due to giving more weight only bone issue came .
|
| 416 |
+
M: So there is pain or bone itself got issue?
|
| 417 |
+
R: No bone problem earlier, now only I got this issue and it is said the bone density got decreased. If the pain is increasing since 4 years means probably the calcium levels have gone down from your body. But specifically, authentically, nobody is telling.
|
| 418 |
+
M: When it is about pain, we talked about the back and the knee joint. Only these two pains or anything else?
|
| 419 |
+
R: And the cervical region also.
|
| 420 |
+
M: Which one did you realize first?
|
| 421 |
+
R: The back only first.
|
| 422 |
+
M: Now, only the back alone?
|
| 423 |
+
R: Because of sitting and working the cervical region also will get pain. Because continuously I am sitting in the system and also after coming back to home also I am working.6-8hrs I am working in the system
|
| 424 |
+
M: So in these two areas i.e. back and cervical region you have pain and nowhere else?
|
| 425 |
+
R: No
|
| 426 |
+
M: Because as you said, Bone depletion?
|
| 427 |
+
R: One of her period leads to depletion of calcium. There will be depreciation of the bone also. Probably one more joint is failing. Next time I get knee joint pain also. If the bones is strong means I won’t get this problem no?
|
| 428 |
+
M: Yes correct. So there is a fear for you whether it comes to knee joints also?
|
| 429 |
+
R: I got the cervical pain and the lower back pain. Next time I get knee joint pain also. The pain might spread. Because anatomically there is a joint here also.
|
| 430 |
+
M: Ok. We were talking about your concern, when you realized the pain may come down. Did you discuss with anybody? When you got a slight thought?
|
| 431 |
+
R: When I got the thought. I Spoke with my colleague in the new office , she noticed me applying thailam and she said.
|
| 432 |
+
M: Can you just elaborate your conversation to the extent possible? How you started the topic?
|
| 433 |
+
R: I used to keep the ointment in my bag. Because of the long distance travel I get pain, I need to go to villages and all.
|
| 434 |
+
M: How do you travel?
|
| 435 |
+
R: Bus or sometimes they may take me in the jeep also. It is because of the bad road conditions. Sometimes the senior person also comes or they ask me to travel alone. It is very difficult to travel in the area.
|
| 436 |
+
M: So the roads will be bad?
|
| 437 |
+
R: Even the road conditions are too bad . Bumpy roads are there. I find it very difficult.
|
| 438 |
+
One way or the other I have been facing very bad road conditions.
|
| 439 |
+
M: What happened when you went like that?
|
| 440 |
+
There is a jump. It has an impact on bone joints. After coming back I need to again work in the system.
|
| 441 |
+
I will apply the ointment. I will keep my bag in my bag. I have to go to the restroom and apply the ointment. At that time the conversation started. And she asked ‘are you having in this problem in this age itself? Then I said for a very long time I have been facing this problem. I have to travel this long distance also. I explained to her Then she asked, Why at this age itself, you are only 40 no?
|
| 442 |
+
M: what is her age?
|
| 443 |
+
R: She will be above 50yrs. then she started the conversation. Are you taking any tablet? I said no tablet. I am applying pain balm only. She only said as ‘I am taking women Horlicks and I feel better and she told me also to try.
|
| 444 |
+
M: How long she is taking?
|
| 445 |
+
R: Since 1 ½ -2yrs she is taking
|
| 446 |
+
M: What improvement did she get?
|
| 447 |
+
R: The pain was so intensified earlier. Now it is less, while climbing the stairs.
|
| 448 |
+
But pain has subsided for me also. I do have pain. But it is not to the extent of unbearable
|
| 449 |
+
Pain. It is slowly settling down. I feel strength in my limbs also. It is known to you. I have seen the ads.
|
| 450 |
+
M: It is known to you, you have seen the ad and you know everything. What was the next step once she said?
|
| 451 |
+
R: I Decided to try once.
|
| 452 |
+
M: What is the reason? that made you to decide’ I want to buy’?
|
| 453 |
+
R: As the pain kept on increasing. People were talking about that itself. Bone related problems. Definitely it is quite natural. People say like that. Some kind of depreciation is happening in the bone. People are recommending to take calcium tablet. I don’t like tonic, tablet and all, instead of taking that, let me try that also. Why I should keep on applying pain balm. Let us buy this drink and try; I felt it was okay for me.
|
| 454 |
+
M: In one month what did you find?
|
| 455 |
+
R: I am free from tiredness. I am able to continuously work. I feel better.
|
| 456 |
+
M: How often do you drink? How many times do you drink?
|
| 457 |
+
R: I drink at night.
|
| 458 |
+
M: Any reason for drinking at night?
|
| 459 |
+
R: It is natural. In the morning hours if I take milk means while travelling it may affect my sensation, evening time I will come back tired so I will have coffee something like that, so I take during the night hours.
|
| 460 |
+
M: Did she say how many times you have to drink?
|
| 461 |
+
R: While referring. She said that I am just drinking it. I didn't go much into it.
|
| 462 |
+
M: One month, two months, three months. In each month you found any difference or after four months?
|
| 463 |
+
R: I felt little bit fresh on the first month. I was not getting tired easily. I really found it very comfortable. I could start my day with working. In the very first month I was able to feel that. So I thought I can take it till the one bottle is getting completed.
|
| 464 |
+
M: How long did it last?
|
| 465 |
+
R: 15-20 days.
|
| 466 |
+
M: Which means, you said you wanted to drink one bottle? You drank one bottle, then what happened? Again why you thought of buying?
|
| 467 |
+
R: It is better to drink it for two to three months.
|
| 468 |
+
M: For how much period you thought of taking it?
|
| 469 |
+
R: Two to three months.
|
| 470 |
+
M: After that should you stop or continue? Continue. You gave the time line. After having one month you didn’t had tiredness and after 3 months according to your time. What do you think?
|
| 471 |
+
R: I was able to extend my working hours. Little more time. In the third month. By the time I completed all my work. So I feel better.
|
| 472 |
+
M: This is the fourth month? How long would you like to continue?
|
| 473 |
+
R: I like the taste so much. I want to continue for some time.
|
| 474 |
+
M: Let us leave the Taste part. Otherwise according to you what do you think? You said you used belt for 6months and then you removed, in the same way this drink...
|
| 475 |
+
R: During that time age was very less, I was 30+. Doctor told to wear 3-6 months .I was wearing it for six months.
|
| 476 |
+
M: For how many days you are thinking to continue this, if you want to say honestly means?
|
| 477 |
+
R: Let me continue for one year to see whether I feel better
|
| 478 |
+
M: Is it something that can be continued or it has to be stopped?
|
| 479 |
+
R: I want to continue.
|
| 480 |
+
M: How long do you want to continue? What is the benefit?
|
| 481 |
+
R: They are saying for bon, that I can know only when I am completely free from pain. Since I am getting freshness, I am able to do my work well, so I will continue.
|
| 482 |
+
M: What it actually does by drinking it? Based upon what was told or what you saw, anything that you understood?
|
| 483 |
+
R: It increases the calcium level in the body. Because of hormonal imbalance. There is a depletion of calcium levels in the body. Probably it will help to increase the calcium level.
|
| 484 |
+
M: What is in this, so you think it will help you?
|
| 485 |
+
R: This has wheat
|
| 486 |
+
M: What else is there?
|
| 487 |
+
R: It is mentioned it has calcium and so I believe. We can’t go inside and research it what is in it, I will just read what is given upon the pack.
|
| 488 |
+
M: Suppose if I don’t give this for a week and you didn’t take it means will it make any difference?
|
| 489 |
+
R: Since I have taken it so many days it may work I don’t know. Since I got used taking it, I may feel like ‘since I didn’t took it I feel low’.
|
| 490 |
+
M: Do you think it will be like that?
|
| 491 |
+
R: Suppose if we are going out means we miss taking it and in-between if it gets over means we think of buying but we won’t get time to buy.
|
| 492 |
+
M: Like that gap will come?
|
| 493 |
+
R: One week gap and all has come.
|
| 494 |
+
M: When I say as women Horlicks what are the immediate thoughts coming in your mind, what kind of thoughts?
|
| 495 |
+
R: She can’t move the item. She can’t bend down and take. When I see that, I feel like it is similar like what is happening for me.
|
| 496 |
+
M: But at that time when you saw, what was lagging and it was not interesting for you to try it?
|
| 497 |
+
R: At that time I felt it is one more variant like plain Horlicks, mothers Horlicks and so I thought now they are introducing women’s Horlicks.
|
| 498 |
+
M: You didn’t get the trust when you saw the ad?
|
| 499 |
+
R: No
|
| 500 |
+
M: What was the thing lagging in it?
|
| 501 |
+
R: The credible aspect was not full; it was not like an ad. They are talking like taking a class. So it was not so realistic
|
| 502 |
+
M: How that ad should have been?
|
| 503 |
+
R: They can show a family, someone can buy and give the product for them. It was too mechanical like, after 30yrs bones will density will reduce. It is like keeping a board and taking class.
|
| 504 |
+
M: What difference it will make when a family is shown in the ad?
|
| 505 |
+
R: It will be consoling. The ad means like, similar person like me is undergoing the problems. She is also suffering like me and that I can connect myself. Whereas this ad is like taking a class. It is not giving a thought to buy it and use immediately
|
| 506 |
+
M: One thing you said, it was like taking a class. Anything else was not clear, anything that you couldn’t understand nor not trustable like that?
|
| 507 |
+
R: Nothing like that. Horlicks is generally taken from small kid. There is no change in the trust.
|
| 508 |
+
M: If we take that means we will get relief .it gives improvement for bone, is that leaving the message?
|
| 509 |
+
R: That they are stating clearly, above 30yrs our bone strength will start reducing. In the ad it was like giving a definition by a doctor and it didn’t stood in the mind.
|
| 510 |
+
M: It shouldn’t be like doctor saying?
|
| 511 |
+
R: It was similar like getting advice from doctor. Ad means it should mingle with our family and it should touch our heart , then only we will get a thought to buy.
|
| 512 |
+
M: Is there any other product as like Women’s Horlicks in the market for women, something that is related to bone?
|
| 513 |
+
R: I don’t know whether there is product related to bone but I have heard Proteinx then Ensure
|
| 514 |
+
M: From where did you came to know about Proteinx?
|
| 515 |
+
R: I have seen in the medical shops and also ad I have seen
|
| 516 |
+
M: What is told in that?
|
| 517 |
+
R: They will say about protein in that. It has protein that is required for healthy body, like that I have heard, I don’t know how it will. But it can be taken for health improvement.
|
| 518 |
+
M: Have you heard anything else?
|
| 519 |
+
R: I have heard about Pedia sure, if that is given for kids means they will grow well. Then also Ensure
|
| 520 |
+
M: Ensure is for what?
|
| 521 |
+
R: That also says it has calcium, it is also a health drink and it is very good for health, but I didn’t went and see what is in it.
|
| 522 |
+
M: What was shown in the Ensure ad do you remember?
|
| 523 |
+
R: I don’t remember.
|
| 524 |
+
M: Then where did you saw it has calcium?
|
| 525 |
+
R: I have seen it in the medical shop.
|
| 526 |
+
M: Where do you buy women’s Horlicks from?
|
| 527 |
+
R: I buy from Big bazaar
|
| 528 |
+
M: Now I am going to play you some ads, watch it and then we will talk...
|
| 529 |
+
Playing the ads...
|
| 530 |
+
Have you seen?
|
| 531 |
+
R: I remember I have seen
|
| 532 |
+
M: Is that so?
|
| 533 |
+
R: This kind of ad, but I am not sure the exact ad or what.
|
| 534 |
+
M: No problem, tell me how was the ad?
|
| 535 |
+
R: Ad is nice. They are saying for tablet
|
| 536 |
+
M: What is the name?
|
| 537 |
+
R: Shelcal.
|
| 538 |
+
M: What did you saw?
|
| 539 |
+
R: After that age definitely bone related issues will come. If we take this tablet means we can also dance
|
| 540 |
+
M: What age, you think?
|
| 541 |
+
R: She has neared 50 no. They are celebrating their anniversary. So after that age, definitely women should concentrate upon their health.
|
| 542 |
+
M: What kind of feel while seeing this?
|
| 543 |
+
R: By seeing this I can understand how the husband is taking care upon his wife. At this age wife will get health related issues and we need to take care of her and see. Like that he is giving the tablet.
|
| 544 |
+
M: You said her age is 50. What do you think this age can be shown for this kind of problem or some other age can be shown?
|
| 545 |
+
R: Above 45 is the age where it affects more. So this is correct only, when we see the ad.
|
| 546 |
+
M: Tell about the lady. What kind of life style will be there when you look at her?
|
| 547 |
+
R: Both have been with unity so many years. Now also he is taking much care and placing the pillow when she kneels down.
|
| 548 |
+
M: So the closeness and care is known...
|
| 549 |
+
R: There it is denoting that her health is also important for him. Since it pains for her, he is doing so.
|
| 550 |
+
M: Again if we look her life means, how will be her lifestyle, what kind of lifestyle she is leading?
|
| 551 |
+
R: She appears to be rich
|
| 552 |
+
M: Otherwise what and all she does in day to day life?
|
| 553 |
+
R: She does all the house chores; she will have grown up children only. Everyone will go for work, so she has to wake up and see all the works. She actively wakes up in the morning, does all the work and send them all for work. After that she will take rest but still there won’t be anyone to say her pain, she will be alone, now at this age he is taking care of her. Even at this age they also have a new lease of life and they also think to be active. Which means we can do everything in all age and no need to sit back tired.
|
| 554 |
+
M: What are they saying, what did you understood. Are you understanding anything out of Shelcal ad?
|
| 555 |
+
R: Maximum they are saying to take milk and these2 tablets has 4 glass milk.
|
| 556 |
+
M: While hearing this, what is your opinion? There is 4 glass of milk in 2 tablets?
|
| 557 |
+
R: It is like biscuit ad, milk bikis ad says know it is equal to 4 glasses of milk.
|
| 558 |
+
M: But what is the feel when you see the shelcal ad?
|
| 559 |
+
R: If we take milk means calcium will reach our body. So if we take two tablets means we get that calcium
|
| 560 |
+
M: Imagine this as a world. Project this ad as a world and people are living there. You want to see this world thru this ad, when you see like that, how is that world?
|
| 561 |
+
R: If we look at this ad means they are showing women dancing. People who struggled to fold their leg are now able to dance. Which means bone and muscles are so strong. So the people living there are very healthy and strong. Even though the age is more they are able to do all works. They will be actively doing their work. I mean the women there.
|
| 562 |
+
M: You said she struggled to sit whereas she is dancing and this change will happen by taking shelcal they are saying. While seeing that, are you getting that trust?
|
| 563 |
+
R: If we take tablet means pain only goes, but I don’t know whether it gives solution when taken continuously.
|
| 564 |
+
M: Anything shown in the ad or anything told in the ad is giving you a trust?
|
| 565 |
+
R: Since I don’t like tablet I feel like that or what I don’t know what to say.
|
| 566 |
+
M: Ok, now I will show you one more ad...
|
| 567 |
+
Playing the ad... (Nestle resource active)
|
| 568 |
+
Have you seen this ad?
|
| 569 |
+
R: No I haven’t seen this.
|
| 570 |
+
M: How was this to see?
|
| 571 |
+
R: Will someone be so slow at the age of 35 is doubtful.
|
| 572 |
+
M: Which age can be shown then?
|
| 573 |
+
R: Above 40 means ok. Whereas in this they are showing from 35 itself, like she couldn’t walk. I have a doubt whether it will be so severe at 35 itself.
|
| 574 |
+
M: Otherwise the way it was shown and all?
|
| 575 |
+
R: Excluding the age If we see means this ad is nice
|
| 576 |
+
M: What is nice?
|
| 577 |
+
R: At the age of 35 itself they are showing which means their health is so bad at this age itself.
|
| 578 |
+
M: What name, which brand did you noticed?
|
| 579 |
+
R: Nestlé’s resource active
|
| 580 |
+
M: About what benefit they are talking about?
|
| 581 |
+
R: They are also mainly saying about bones only. If this is taken means people will stay active. And also she looks like she has lost weight and she appears fit. If that is taken means we can be active and fit
|
| 582 |
+
M: The previous one is also related to bone and in this also it is stated?
|
| 583 |
+
R: Yes
|
| 584 |
+
M: Was there any difference in the way it was told between Shelcal and resource active?
|
| 585 |
+
R: They are saying about the age. After this much age bone problem will be there.
|
| 586 |
+
M: Between these two which one has shown better?
|
| 587 |
+
R: Showing the age was better in Shelcal. Whereas in this, the ad is nice, but the age is told less. When they showed person climbing the stairs I thought they will be 45 above but in the ad they are saying 35 above.
|
| 588 |
+
M: How is their life style to see?
|
| 589 |
+
R: They are also royal, rich and they think to be with fun and joy. So they are doing surprise on her 35th birthday in the terrace. She will be a person who goes for parties I think. They are enjoying.
|
| 590 |
+
M: If you are seeing this as a world means how is it. How the mood is and how the people in that world will be?
|
| 591 |
+
R: While everybody is enjoying I felt, one person is missing that enjoyment. After taking this, she also left there to take part in that enjoyment.
|
| 592 |
+
M: Is there trust while seeing this ad?
|
| 593 |
+
R: Since this is like a health drink we can take it regularly daily whereas that is tablet kind, we will have a fear like if we take more tablet will it gives any side effect. Whereas this one is like health drink, so I feel ok.
|
| 594 |
+
M: One thing is there won’t be any ‘side effect in this, other than that, as told in the ad, if this is taken means we get that result?
|
| 595 |
+
R: Yes we will get
|
| 596 |
+
M: Which part or scene of the ad is giving you that trust?
|
| 597 |
+
R: When we take as a heath drink they are adding it to milk and taking. So I am getting trust
|
| 598 |
+
M: What happens when it is taken as health drink?
|
| 599 |
+
R: That energy will go inside body. Whereas tablet format means I have a doubt because, so far we have taken tablet only for pain. So far we haven’t put any tablet for strength.
|
| 600 |
+
M: What strength?
|
| 601 |
+
R: Mainly they are saying calcium for bone. She is having knee pain in it.
|
| 602 |
+
M: You saw two ads right, I will show the 3rd ad in the mobile...
|
| 603 |
+
Playing the ad... (Horlicks women’s plus)
|
| 604 |
+
Have you seen this ad?
|
| 605 |
+
R: I have seen taapsee coming in the ad but I haven’t seen this ad.
|
| 606 |
+
M: What they are saying?
|
| 607 |
+
R: Mainly they are saying it will strengthen the bones.
|
| 608 |
+
M: What was the feel while seeing the ad?
|
| 609 |
+
R: When her mother finds difficult to water the plants she will be doing it with tube. And she says like’ if you bend and pour water means it will pain’. In that part we will also think that if we get pain when we bend and do work we need to keep our hand in the hip and rise.
|
| 610 |
+
M: So you are able to connect with you and see?
|
| 611 |
+
R: Yes
|
| 612 |
+
M: What they came to say?
|
| 613 |
+
R: If we apply gel means it is working externally, it is making that part feeling numb and it is not going inside and doing nothing. If we take internally only bones will be strong, like that they are saying.
|
| 614 |
+
M: While hearing that what was the thought in your mind?
|
| 615 |
+
R: If we take something internally only it will go and work.
|
| 616 |
+
M: This is already known to you or it is a new thing?
|
| 617 |
+
R: It is already know thing only. Doctor used to say to intake. They are saying to take more calcium thru some food. That is what here also they are saying
|
| 618 |
+
M: Any other information was told in this?
|
| 619 |
+
R: They have told ‘in 6 months your bones will become stronger’.
|
| 620 |
+
M: What did you thought while hearing that?
|
| 621 |
+
R: If we eat this and if the bone becomes strong means we will not have pain. Since the bones are weak only we are not able to bend and do any work. So they are saying bones will become strong.
|
| 622 |
+
M: They have told as 6 months, what is your thought about it?
|
| 623 |
+
R: In the previous Horlicks women’s plus ad also they told the same. Now they are saying like ‘there is no use in applying outside, take inside’
|
| 624 |
+
M: Saying as ‘ in 6 months’ what was told in this or the things stated in it is different or it is similar, better or worse?
|
| 625 |
+
R: It was better
|
| 626 |
+
M: What aspect makes you feel better in this ad?
|
| 627 |
+
R: In that they are not showing like applying gel and all, they are showing in that ad ,in which a lady couldn’t push the sofa and they are saying as ‘strength of the bone will reduce after30yrs, so women need this and if they take this means they will be fine. Whereas in this they have rightly told what we are usually doing, if we get pain means immediately we will apply some oil or gel, believing it will cure. Again on the next day the same pain is coming back. Unless we don’t take anything inside it can’t be cured. And that is stated clearly in this.
|
| 628 |
+
M: You saw three ads right?
|
| 629 |
+
R: Yes
|
| 630 |
+
M: Suppose you had issue but you didn’t buy anything. You didn’t meet doctor, friends or anybody; you are just watching the ad. While seeing these 3 ads which ad is creating curiosity for trying?
|
| 631 |
+
R: Trying means HORLICKS only I felt like that, because in that ad they are showing less age
|
| 632 |
+
M: Let us leave the age. Actually how was the women’s Horlicks world?
|
| 633 |
+
R: In this world people will be always struggling with pains. After taking this, they are doing all the works happily.
|
| 634 |
+
M: If we forget the age, otherwise the way the problem was shown. In which one it was good according to you. Take the problem alone?
|
| 635 |
+
R: For me means I can relate with Horlicks.
|
| 636 |
+
M: They spoke about the product no, which thing in the ad gave you that trust while talking about the product. Definitely I think this will work?
|
| 637 |
+
R: It was nice in Horlicks and it was not that much in active plus.
|
| 638 |
+
M: You saw one more ad no?
|
| 639 |
+
R: Shelcal since it is tablet.
|
| 640 |
+
M:SheLcaltablet, what about resource?
|
| 641 |
+
R: I didn’t felt anything like that
|
| 642 |
+
M: What was the told thing that was convincing for you?
|
| 643 |
+
R: They said bones will become strong, it has Vitamin D, Calcium and that helps for the growth of the bones. Bones will be strong in 6 months. Whereas in active they are saying only about ‘ being active’. They are saying ‘couldn’t climb stairs, you can be active’.
|
| 644 |
+
M: And in Shelcal?
|
| 645 |
+
R: In Shelcal also they told the same. Equal to 4 glass of milk if you this tablet is taken means we can dance. Muscles, bones will be strong. Since it is tablet I hesitate to try.
|
| 646 |
+
M: You said you liked the Horlicks ad. In which they are talking with each other i.e. Taapsee and the lady. They interacted something and shared, there was conversation and on the other side a graphics was shown about the product. Taapsee was also explaining something. And in the graphics also it was shown. Between these two which one is giving you the confidence and motivation to try?
|
| 647 |
+
R: The interaction between them. She told no’ whatever you apply externally it will work externally only, if you take internally only it will make your bones strong’. That one point only comes to our thought because we are also doing the same. We are applying externally.
|
| 648 |
+
M: Somewhere you are saying no, it is told by doctor and known factor only no?
|
| 649 |
+
R: Doctor is saying different things, daily we can’t search, find and eat them. So we can get this , have it daily by mixing with one glass of milk. So we can take this.
|
| 650 |
+
M: In this ad also was it like a lecture, because in the earlier ad you said doctor’s saying was like a lecture?
|
| 651 |
+
R: In this also it was somewhat like that only, she is saying like’dont apply balm, take internally’. What she spoke before that was nice
|
| 652 |
+
M: The way she spoke I mean tone?
|
| 653 |
+
R: Tone is similar. But the conversation was better. In the earlier ad they say like’ after 30yrs your bone density will reduce’ whereas in this she is saying ‘if you apply externally means it will be effective only at that time, take internally’.
|
| 654 |
+
M: So you saying not to say the age?
|
| 655 |
+
R: Age can be told no problem. The way he told was like a lecture in the earlier ad whereas in this she is saying about what we are doing and later on she is saying about the product’. Usually we will do that only, immediately we will apply balm for pain.
|
| 656 |
+
M: Ok thank you! Can I see where you have kept it?
|
| 657 |
+
R: In the kitchen.
|
| 658 |
+
M: Can I see it?
|
| 659 |
+
R: Ok
|