email crid, automation test 1

This commit is contained in:
Ubuntu 2025-06-09 19:09:33 +05:30
parent 2debd6f73a
commit 9137286651
66 changed files with 25355 additions and 115 deletions

792
chat.py
View File

@ -130,7 +130,7 @@ def setup_logging():
return root_logger, access_logger, perf_logger
load_dotenv()
# Initialize loggers
logger, access_logger, perf_logger = setup_logging()
@ -149,20 +149,6 @@ logger, access_logger, perf_logger = setup_logging()
# }
# Redis Configuration
# REDIS_CONFIG = {
# "host": "localhost",
# "port": 6379,
# "db": 0,
# "decode_responses": True, # For string operations
# }
# DB_CONFIG = {
# "host": os.getenv("DB_HOST", "localhost"),
# "user": os.getenv("DB_USER", "spurrinuser"),
# "password": os.getenv("DB_PASSWORD", "Admin@123"),
# "database": os.getenv("DB_NAME", "spurrin-live"),
# }
REDIS_CONFIG = {
"host": "localhost",
"port": 6379,
@ -171,10 +157,10 @@ REDIS_CONFIG = {
}
DB_CONFIG = {
"host": os.getenv("DB_HOST", "localhost"),
"user": os.getenv("DB_USER", "testuser"),
"password": os.getenv("DB_PASSWORD", "Admin@123"),
"database": os.getenv("DB_NAME", "spurrintest"),
"host": os.getenv("DB_HOST"),
"user": os.getenv("DB_USER"),
"password": os.getenv("DB_PASSWORD"),
"database": os.getenv("DB_NAME"),
}
# Redis connection pool
@ -229,7 +215,6 @@ if not os.path.exists(uploads_dir):
nlp = spacy.load("en_core_web_sm")
load_dotenv()
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
client = OpenAI(api_key=OPENAI_API_KEY)
@ -284,8 +269,8 @@ async def get_hospital_id(hospital_code):
await pool.wait_closed()
CHUNK_SIZE = 1000
CHUNK_OVERLAP = 50
CHUNK_SIZE = 4000
CHUNK_OVERLAP = 150
BATCH_SIZE = 1000
text_splitter = RecursiveCharacterTextSplitter(
@ -669,6 +654,108 @@ async def add_document_to_index(doc_id, hospital_id):
return False
def is_general_knowledge_question(
query: str, context: str, conversation_context=None
) -> bool:
"""
Determine if a question is likely a general knowledge question not covered in the documents.
Takes conversation history into account to reduce repeated confirmations.
"""
query_lower = query.lower()
context_lower = context.lower()
if conversation_context:
for interaction in conversation_context:
prev_question = interaction.get("question", "").lower()
if (
prev_question
and query_lower in prev_question
or prev_question in query_lower
):
logging.info(
f"Question is similar to previous conversation, skipping confirmation"
)
return False
stop_words = {
"search",
"query:",
"can",
"you",
"some",
"at",
"the",
"a",
"an",
"in",
"on",
"at",
"to",
"for",
"with",
"by",
"about",
"give",
"full",
"is",
"are",
"was",
"were",
"define",
"what",
"how",
"why",
"when",
"where",
"year",
"list",
"form",
"table",
"who",
"which",
"me",
"tell",
"explain",
"describe",
"of",
"and",
"or",
"there",
"their",
"please",
"could",
"would",
"various",
"different",
"type",
"types",
"kind",
"kinds",
"has",
"have",
"had",
"many",
"say",
}
key_words = [
word for word in query_lower.split() if word not in stop_words and len(word) > 2
]
logging.info(f"Key words: {key_words}")
if not key_words:
logging.info("No significant keywords found, directing to general knowledge")
return True
matches = sum(1 for word in key_words if word in context_lower)
logging.info(f"Matches: {matches} out of {len(key_words)} keywords")
match_ratio = matches / len(key_words)
logging.info(f"Match ratio: {match_ratio}")
return match_ratio < 0.6
def is_table_request(query: str) -> bool:
"""
Determine if the user is requesting a response in tabular format.
@ -768,15 +855,19 @@ def ensure_html_response(text: str) -> str:
return text
class RAGConversationManager:
class HybridConversationManager:
"""
Conversation manager that uses Redis for RAG-based conversations only.
Hybrid conversation manager that uses Redis for RAG-based conversations
and in-memory storage for general knowledge conversations.
"""
def __init__(self, redis_client, ttl=3600, max_history_items=5):
self.redis_client = redis_client
self.ttl = ttl
self.max_history_items = max_history_items
# For general knowledge questions (in-memory)
self.general_knowledge_histories = {}
self.lock = Lock()
def _get_redis_key(self, user_id, hospital_id, session_id=None):
@ -785,6 +876,12 @@ class RAGConversationManager:
return f"conv_history:{user_id}:{hospital_id}:{session_id}"
return f"conv_history:{user_id}:{hospital_id}"
def _get_memory_key(self, user_id, hospital_id, session_id=None):
"""Create memory key for general knowledge conversations."""
if session_id:
return f"{user_id}:{hospital_id}:{session_id}"
return f"{user_id}:{hospital_id}"
async def add_rag_interaction(
self, user_id, hospital_id, question, answer, session_id=None
):
@ -814,6 +911,35 @@ class RAGConversationManager:
except Exception as e:
logging.error(f"Failed to store RAG interaction in Redis: {e}")
def add_general_knowledge_interaction(
self, user_id, hospital_id, question, answer, session_id=None
):
"""Add general knowledge interaction to in-memory store."""
key = self._get_memory_key(user_id, hospital_id, session_id)
with self.lock:
if key not in self.general_knowledge_histories:
self.general_knowledge_histories[key] = []
self.general_knowledge_histories[key].append(
{
"question": question,
"answer": answer,
"timestamp": time.time(),
"type": "general", # Mark as general knowledge interaction
}
)
# Keep only the most recent interactions
if len(self.general_knowledge_histories[key]) > self.max_history_items:
self.general_knowledge_histories[key] = (
self.general_knowledge_histories[key][-self.max_history_items :]
)
logging.info(
f"Stored general knowledge interaction in memory for {user_id}:{hospital_id}:{session_id}"
)
def get_rag_history(self, user_id, hospital_id, session_id=None):
"""Get document-based (RAG) conversation history from Redis."""
key = self._get_redis_key(user_id, hospital_id, session_id)
@ -824,21 +950,51 @@ class RAGConversationManager:
logging.error(f"Failed to retrieve RAG history from Redis: {e}")
return []
def get_general_knowledge_history(self, user_id, hospital_id, session_id=None):
"""Get general knowledge conversation history from memory."""
key = self._get_memory_key(user_id, hospital_id, session_id)
with self.lock:
return self.general_knowledge_histories.get(key, []).copy()
def get_combined_history(self, user_id, hospital_id, session_id=None):
"""Get combined conversation history from both sources, sorted by timestamp."""
rag_history = self.get_rag_history(user_id, hospital_id, session_id)
general_history = self.get_general_knowledge_history(
user_id, hospital_id, session_id
)
# Combine histories
combined_history = rag_history + general_history
# Sort by timestamp (newest first)
combined_history.sort(key=lambda x: x.get("timestamp", 0), reverse=True)
# Return most recent N items
return combined_history[: self.max_history_items]
def get_context_window(self, user_id, hospital_id, session_id=None, window_size=2):
"""Get the most recent interactions for context."""
history = self.get_rag_history(user_id, hospital_id, session_id)
"""Get the most recent interactions for context from combined history."""
combined_history = self.get_combined_history(user_id, hospital_id, session_id)
# Sort by timestamp (oldest first) for context window
sorted_history = sorted(history, key=lambda x: x.get("timestamp", 0))
sorted_history = sorted(combined_history, key=lambda x: x.get("timestamp", 0))
return sorted_history[-window_size:] if sorted_history else []
def clear_history(self, user_id, hospital_id):
"""Clear conversation history."""
"""Clear conversation history from both stores."""
# Clear Redis history
redis_key = self._get_redis_key(user_id, hospital_id)
try:
self.redis_client.delete(redis_key)
except Exception as e:
logging.error(f"Failed to clear Redis history: {e}")
# Clear memory history
memory_key = self._get_memory_key(user_id, hospital_id)
with self.lock:
if memory_key in self.general_knowledge_histories:
del self.general_knowledge_histories[memory_key]
class ContextMapper:
"""Enhanced context mapping using shared model manager"""
@ -1013,7 +1169,6 @@ def is_follow_up(current_question: str, conversation_history: list) -> bool:
)
)
async def get_relevant_context(question, hospital_id, doc_id=None):
try:
cache_key = f"context:hospital_{hospital_id}"
@ -1022,15 +1177,10 @@ async def get_relevant_context(question, hospital_id, doc_id=None):
cache_key += f":{question.lower().strip()}"
redis_client = get_redis_client()
cached_context = redis_client.get(cache_key)
if cached_context:
logging.info(f"Cache hit for key: {cache_key}")
return (
cached_context.decode("utf-8")
if isinstance(cached_context, bytes)
else cached_context
)
return cached_context.decode("utf-8") if isinstance(cached_context, bytes) else cached_context
vector_store = await initialize_or_load_vector_store(hospital_id)
if not vector_store:
@ -1039,17 +1189,33 @@ async def get_relevant_context(question, hospital_id, doc_id=None):
retriever = vector_store.as_retriever(
search_type="mmr",
search_kwargs={
"k": 10,
"fetch_k": 20,
"lambda_mult": 0.6,
# "filter": {"doc_id": str(doc_id)} if doc_id else {"hospital_id": str(hospital_id)}
"k": 5, # Reduced number of documents for precision
"fetch_k": 10, # Reduced fetch size
"lambda_mult": 0.8, # Increase diversity in MMR
"score_threshold": 0.7, # Add minimum similarity score
"filter": {"doc_id": str(doc_id)} if doc_id else {"hospital_id": str(hospital_id)}
},
)
docs = await asyncio.to_thread(retriever.get_relevant_documents, question)
if not docs:
logging.info(f"No relevant documents found for question: {question}")
return ""
# # Filter documents by relevance using spaCy similarity
# question_doc = nlp(question)
# relevant_docs = []
# for doc in docs:
# doc_content = nlp(doc.page_content)
# similarity = question_doc.similarity(doc_content)
# if similarity >= 0.7: # Strict similarity threshold
# relevant_docs.append(doc)
# if not relevant_docs:
# logging.info({relevant_docs})
# logging.info(f"No sufficiently relevant documents after similarity filtering for: {question}")
# return ""
sorted_docs = sorted(
docs,
key=lambda x: (
@ -1076,7 +1242,6 @@ async def get_relevant_context(question, hospital_id, doc_id=None):
logging.error(f"Error getting relevant context: {e}")
return ""
def format_conversation_context(conv_history):
"""Format conversation history into a string"""
if not conv_history:
@ -1122,6 +1287,348 @@ def get_fuzzy_icd_context(question, hospital_id, top_n=5, threshold=70):
return "\n".join(matched_context)
# async def generate_answer_with_rag(
# question,
# hospital_id,
# client,
# doc_id=None,
# user_id="default",
# conversation_manager=None,
# session_id=None,
# ):
# """Generate an answer using RAG with improved conversation flow"""
# try:
# # Continue with regular RAG processing if not an ICD code or if no ICD match found
# html_instruction = """
# IMPORTANT: Format your ENTIRE response as HTML. Use appropriate HTML tags for all content:
# - Use <p> tags for paragraphs
# - Use <h2>, <h3> tags for headings and subheadings
# - Use <ul>, <li> tags for bullet points
# - Use <ol>, <li> tags for numbered lists
# - Use <blockquote> for quoted text
# - Use <strong> for bold text and <em> for emphasis
# """
# table_instruction = """
# - For tables, use proper HTML table structure:
# <table border="1">
# <thead>
# <tr>
# <th colspan="{total_columns}">{table_title}</th>
# </tr>
# <tr>
# {table_headers}
# </tr>
# </thead>
# <tbody>
# {table_rows}
# </tbody>
# </table>
# """
# # Get conversation history first
# conv_history = (
# conversation_manager.get_context_window(user_id, hospital_id, session_id)
# if conversation_manager
# else []
# )
# # Get contextual query and relevant context first
# contextual_query = await generate_contextual_query(
# question, user_id, hospital_id, conversation_manager
# )
# # Track ICD context across conversation
# icd_context = {}
# if conv_history:
# # Extract ICD code from previous interaction
# last_answer = conv_history[-1].get("answer", "")
# icd_codes = re.findall(r"\b([A-Z][0-9A-Z]{2,6}[A-Z]?)\b", last_answer)
# if icd_codes:
# icd_context["last_code"] = icd_codes[0]
# # Check if current question is about a previously discussed ICD code
# is_icd_followup = False
# if icd_context.get("last_code"):
# followup_indicators = [
# "what causes",
# "what is causing",
# "why",
# "how",
# "symptoms",
# "treatment",
# "diagnosis",
# "causes",
# "effects",
# "complications",
# "risk factors",
# "prevention",
# "prognosis",
# "this",
# "disease",
# "that",
# "it",
# ]
# is_icd_followup = any(
# indicator in question.lower() for indicator in followup_indicators
# )
# if is_icd_followup:
# # Add the previous ICD code context to the current question
# icd_exact_context = get_icd_context_from_question(
# icd_context["last_code"], hospital_id
# )
# icd_fuzzy_context = get_fuzzy_icd_context(
# f"{icd_context['last_code']} {question}", hospital_id
# )
# else:
# icd_exact_context = get_icd_context_from_question(question, hospital_id)
# icd_fuzzy_context = get_fuzzy_icd_context(question, hospital_id)
# else:
# icd_exact_context = get_icd_context_from_question(question, hospital_id)
# icd_fuzzy_context = get_fuzzy_icd_context(question, hospital_id)
# # Get contextual query and relevant context
# contextual_query = await generate_contextual_query(
# question, user_id, hospital_id, conversation_manager
# )
# doc_context = await get_relevant_context(contextual_query, hospital_id, doc_id)
# # Combine context with priority for ICD information
# context_parts = []
# if is_icd_followup:
# context_parts.append(
# f"## Previous ICD Code Context\nContinuing discussion about: {icd_context['last_code']}"
# )
# if icd_exact_context:
# context_parts.append("## ICD Code Match\n" + icd_exact_context)
# if icd_fuzzy_context:
# context_parts.append("## Related ICD Suggestions\n" + icd_fuzzy_context)
# if doc_context:
# context_parts.append("## Document Context\n" + doc_context)
# context = "\n\n".join(context_parts)
# # Initialize follow-up detection
# is_follow_up = False
# # Check if this is a follow-up question
# if conv_history:
# last_interaction = conv_history[-1]
# last_question = last_interaction["question"].lower()
# last_answer = last_interaction.get("answer", "").lower()
# current_question = question.lower()
# # Define meaningful keywords that indicate entity-related follow-ups
# entity_related_keywords = {
# "achievements",
# "awards",
# "accomplishments",
# "work",
# "contributions",
# "career",
# "company",
# "products",
# "life",
# "background",
# "education",
# "role",
# "experience",
# "history",
# "details",
# "places",
# "place",
# "information",
# "facts",
# "about",
# "birth",
# "death",
# "family",
# "books",
# "projects",
# "population",
# }
# # Check if question is asking about attributes/achievements of previously discussed entity
# has_entity_attribute = any(
# word in current_question.split() for word in entity_related_keywords
# )
# # Extract entities from last answer to maintain context
# def extract_entities(text):
# # Split into words and get potential entities (capitalized words)
# words = text.split()
# entities = set()
# current_entity = []
# for word in words:
# if word[0].isupper():
# current_entity.append(word)
# elif current_entity:
# if len(current_entity) > 0:
# entities.add(" ".join(current_entity))
# current_entity = []
# if current_entity:
# entities.add(" ".join(current_entity))
# return entities
# last_entities = extract_entities(last_answer)
# # Check for referential words
# referential_words = {
# "it",
# "this",
# "that",
# "these",
# "those",
# "they",
# "their",
# "he",
# "she",
# "him",
# "her",
# "his",
# "hers",
# "them",
# "there",
# "such",
# "its",
# }
# has_referential = any(
# word in referential_words for word in current_question.split()
# )
# # Calculate term overlap with both question and answer context
# def get_significant_terms(text):
# stop_words = {
# "what",
# "when",
# "where",
# "who",
# "why",
# "how",
# "is",
# "are",
# "was",
# "were",
# "be",
# "been",
# "the",
# "a",
# "an",
# "in",
# "on",
# "at",
# "to",
# "for",
# "of",
# "with",
# "by",
# "about",
# "as",
# "tell",
# "me",
# "please",
# }
# return set(
# word
# for word in text.split()
# if len(word) > 2 and word.lower() not in stop_words
# )
# current_terms = get_significant_terms(current_question)
# last_terms = get_significant_terms(last_question)
# answer_terms = get_significant_terms(last_answer)
# # Include terms from both question and answer in context
# all_prev_terms = last_terms | answer_terms
# term_overlap = len(current_terms & all_prev_terms)
# total_terms = len(current_terms | all_prev_terms)
# term_similarity = term_overlap / total_terms if total_terms > 0 else 0
# # Enhanced follow-up detection combining multiple signals
# is_follow_up = (
# has_referential
# or term_similarity
# >= 0.2 # Lower threshold when including answer context
# or (
# has_entity_attribute and bool(last_entities)
# ) # Check if asking about attributes of known entity
# or (
# last_interaction.get("type") == "general"
# and term_similarity >= 0.15
# )
# )
# logging.info(f"Follow-up analysis enhanced:")
# logging.info(f"- Referential words: {has_referential}")
# logging.info(f"- Term similarity: {term_similarity:.2f}")
# logging.info(f"- Entity attribute question: {has_entity_attribute}")
# logging.info(f"- Last entities found: {last_entities}")
# logging.info(f"- Is follow-up: {is_follow_up}")
# # For entirely new topics (not follow-ups), use is_general_knowledge_question
# if not is_follow_up:
# if not context or is_general_knowledge_question(question, context, conv_history):
# logging.info("No relevant context or general knowledge question detected")
# answer = "<p>No relevant information found in the hospital documents for this query.</p>"
# if conversation_manager:
# await conversation_manager.add_rag_interaction(
# user_id, hospital_id, question, answer, session_id
# )
# return {"answer": answer}, 200
# # Generate RAG answer with enhanced context
# prompt_template = f"""Based on the following context and conversation history, provide a detailed answer to the question.
# Previous conversation:
# {format_conversation_context(conv_history)}
# Context from documents:
# {context}
# Current question: {question}
# Instructions:
# 1. When providing medical codes (ICD, CPT, etc.):
# - Always use the ICD codes listed in the sections titled "ICD Code Match" and "Related ICD Suggestions" from the context.
# - Do not use or invent ICD codes from your own training knowledge unless they appear in the provided context.
# - If multiple codes are relevant, return the one that best matches the users question. If unsure, return multiple options in HTML list format.
# - Remove all decimal points (e.g., use 'A150' instead of 'A15.0')
# - Format the response as: '<p>The medical code for [condition] is [code]</p>'
# 2. Address the current question while maintaining conversation continuity
# 3. Resolve any ambiguous references using conversation history
# 4. Format the response in clear HTML
# {html_instruction}
# {table_instruction if is_table_request(question) else ""}
# """
# response = await asyncio.to_thread(
# lambda: client.chat.completions.create(
# model="gpt-3.5-turbo-16k",
# messages=[
# {"role": "system", "content": prompt_template},
# {"role": "user", "content": question},
# ],
# temperature=0.3,
# max_tokens=1000,
# )
# )
# answer = ensure_html_response(response.choices[0].message.content)
# logging.info(f"Generated RAG answer for question: {question}")
# # Store interaction in history
# if conversation_manager:
# await conversation_manager.add_rag_interaction(
# user_id, hospital_id, question, answer, session_id
# )
# return {"answer": answer}, 200
# except Exception as e:
# logging.error(f"Error in generate_answer_with_rag: {e}")
# return {"answer": f"<p>Error: {str(e)}</p>"}, 500
async def generate_answer_with_rag(
question,
hospital_id,
@ -1131,7 +1638,7 @@ async def generate_answer_with_rag(
conversation_manager=None,
session_id=None,
):
"""Generate an answer using RAG with improved conversation flow"""
"""Generate an answer using RAG, strictly using provided document context and ICD data."""
try:
html_instruction = """
IMPORTANT: Format your ENTIRE response as HTML. Use appropriate HTML tags for all content:
@ -1141,6 +1648,8 @@ async def generate_answer_with_rag(
- Use <ol>, <li> tags for numbered lists
- Use <blockquote> for quoted text
- Use <strong> for bold text and <em> for emphasis
- If no relevant information is found in the provided context, respond ONLY with:
<p>No relevant information found in the hospital documents for this query.</p>
"""
table_instruction = """
@ -1159,51 +1668,179 @@ async def generate_answer_with_rag(
</tbody>
</table>
"""
# Get conversation history first
# Get conversation history
conv_history = (
conversation_manager.get_context_window(user_id, hospital_id, session_id)
if conversation_manager
else []
)
# Get contextual query and relevant context first
# Generate contextual query
contextual_query = await generate_contextual_query(
question, user_id, hospital_id, conversation_manager
)
# Get document context
# Retrieve document context with strict relevance
doc_context = await get_relevant_context(contextual_query, hospital_id, doc_id)
if not doc_context:
return {
"answer": """
<p>I apologize, but I couldn't find any relevant information in the hospital documents to answer your question.</p>
<p>Please try rephrasing your question or asking about a different topic that might be covered in the documents.</p>
"""
}, 200
# Handle ICD context
icd_context = {}
if conv_history:
last_answer = conv_history[-1].get("answer", "")
icd_codes = re.findall(r"\b([A-Z][0-9A-Z]{2,6}[A-Z]?)\b", last_answer)
if icd_codes:
icd_context["last_code"] = icd_codes[0]
is_icd_followup = False
if icd_context.get("last_code"):
followup_indicators = [
"what causes", "what is causing", "why", "how", "symptoms",
"treatment", "diagnosis", "causes", "effects", "complications",
"risk factors", "prevention", "prognosis", "this", "disease",
"that", "it",
]
is_icd_followup = any(indicator in question.lower() for indicator in followup_indicators)
if is_icd_followup:
icd_exact_context = get_icd_context_from_question(icd_context["last_code"], hospital_id)
icd_fuzzy_context = get_fuzzy_icd_context(f"{icd_context['last_code']} {question}", hospital_id)
else:
icd_exact_context = get_icd_context_from_question(question, hospital_id)
icd_fuzzy_context = get_fuzzy_icd_context(question, hospital_id)
else:
icd_exact_context = get_icd_context_from_question(question, hospital_id)
icd_fuzzy_context = get_fuzzy_icd_context(question, hospital_id)
# Combine context with priority for ICD information
context_parts = []
if is_icd_followup:
context_parts.append(f"## Previous ICD Code Context\nContinuing discussion about: {icd_context['last_code']}")
if icd_exact_context:
context_parts.append("## ICD Code Match\n" + icd_exact_context)
if icd_fuzzy_context:
context_parts.append("## Related ICD Suggestions\n" + icd_fuzzy_context)
if doc_context:
context_parts.append("## Document Context\n" + doc_context)
context = "\n\n".join(context_parts)
logging.info(f"Total context length: {len(context.split())} words")
logging.info({context})
# Check context length
if len(doc_context.split()) == 0:
logging.info("A")
logging.info(f"Context too short ({len(context.split())} words), returning no information found")
answer = "<p>No relevant information found in the hospital documents for this query.</p>"
if conversation_manager:
await conversation_manager.add_rag_interaction(
user_id, hospital_id, question, answer, session_id
)
return {"answer": answer}, 200
# Check if question lacks relevant context
if not context or is_general_knowledge_question(question, context, conv_history):
logging.info("B")
logging.info("No relevant context or general knowledge question detected")
answer = "<p>No relevant information found in the hospital documents for this query.</p>"
if conversation_manager:
await conversation_manager.add_rag_interaction(
user_id, hospital_id, question, answer, session_id
)
return {"answer": answer}, 200
# Check follow-up status with stricter criteria
is_follow_up = False
if conv_history:
last_interaction = conv_history[-1]
last_question = last_interaction["question"].lower()
last_answer = last_interaction.get("answer", "").lower()
current_question = question.lower()
# Define entity-related keywords
entity_related_keywords = {
"achievements", "awards", "accomplishments", "work", "contributions",
"career", "company", "products", "life", "background", "education",
"role", "experience", "history", "details", "places", "place",
"information", "facts", "about", "birth", "death", "family",
"books", "projects", "population",
}
has_entity_attribute = any(word in current_question.split() for word in entity_related_keywords)
# Extract entities using spaCy for better precision
doc_last = nlp(f"{last_question} {last_answer}")
doc_current = nlp(current_question)
last_entities = {ent.text.lower() for ent in doc_last.ents}
current_entities = {ent.text.lower() for ent in doc_current.ents}
# Check for referential words
referential_words = {
"it", "this", "that", "these", "those", "they", "their",
"he", "she", "him", "her", "his", "hers", "them", "there",
"such", "its",
}
has_referential = any(word in referential_words for word in current_question.split())
# Calculate term overlap with stricter criteria
def get_significant_terms(text):
stop_words = {
"what", "when", "where", "who", "why", "how", "is", "are",
"was", "were", "be", "been", "the", "a", "an", "in", "on",
"at", "to", "for", "of", "with", "by", "about", "as",
"tell", "me", "please",
}
return set(word for word in text.split() if len(word) > 2 and word.lower() not in stop_words)
current_terms = get_significant_terms(current_question)
last_terms = get_significant_terms(last_question)
answer_terms = get_significant_terms(last_answer)
all_prev_terms = last_terms | answer_terms
term_overlap = len(current_terms & all_prev_terms)
total_terms = len(current_terms | all_prev_terms)
term_similarity = term_overlap / total_terms if total_terms > 0 else 0
# Use spaCy similarity for follow-up detection
similarity = doc_current.similarity(doc_last)
is_follow_up = (
has_referential
or term_similarity >= 0.4 # Stricter threshold
or (has_entity_attribute and bool(last_entities & current_entities))
or (last_interaction.get("type") == "general" and term_similarity >= 0.3)
)
logging.info(f"Follow-up analysis:")
logging.info(f"- Referential words: {has_referential}")
logging.info(f"- Term similarity: {term_similarity:.2f}")
logging.info(f"- Entity overlap: {bool(last_entities & current_entities)}")
logging.info(f"- SpaCy similarity: {similarity:.2f}")
logging.info(f"- Is follow-up: {is_follow_up}")
# Generate answer with strict document-based instruction
prompt_template = f"""You are a document-based question-answering system. You must ONLY use the provided context and conversation history to answer the question. Do NOT use any external knowledge, assumptions, or definitions beyond the given context, even if the query seems familiar. If the context does not contain sufficient information to directly answer the question, respond ONLY with:
<p>No relevant information found in the hospital documents for this query.</p>
# Generate RAG answer with enhanced context
prompt_template = f"""Based on the following context and conversation history, provide a detailed answer to the question.
Previous conversation:
{format_conversation_context(conv_history)}
Context from documents:
{doc_context}
{context}
Current question: {question}
Instructions:
1. ONLY use information from the provided document context to answer the question
2. If the answer cannot be fully derived from the context, state that clearly
3. Do not use any external knowledge or make assumptions
4. When providing medical codes (ICD, CPT, etc.):
- Only use codes that appear in the provided context
- Do not invent or use codes from external knowledge
- If multiple codes are relevant, list them all
- Remove all decimal points (e.g., use 'A150' instead of 'A15.0')
5. Format the response in clear HTML with appropriate tags
6. If the context doesn't contain enough information to answer the question completely,
acknowledge this limitation and only provide the information that is available
1. When providing medical codes (ICD, CPT, etc.):
- ONLY use the ICD codes listed in the sections titled "ICD Code Match" and "Related ICD Suggestions" from the context.
- Do not use or invent ICD codes from your own knowledge.
- If multiple codes are relevant, return the one that best matches the users question. If unsure, return multiple options in HTML list format.
- Remove all decimal points (e.g., use 'A150' instead of 'A15.0').
- Format the response as: '<p>The medical code for [condition] is [code]</p>'.
2. Address the current question while maintaining conversation continuity.
3. Resolve any ambiguous references using conversation history.
4. Format the response in clear HTML.
5. Strictly adhere and provide a detailed answer only from the {context}.No extra knowledge or assumptions.
6. Every answer must be detailed and only from the provided context.
7. Answer should be 400-500 words long.
{html_instruction}
{table_instruction if is_table_request(question) else ""}
@ -1211,12 +1848,12 @@ async def generate_answer_with_rag(
response = await asyncio.to_thread(
lambda: client.chat.completions.create(
model="gpt-3.5-turbo-16k",
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": prompt_template},
{"role": "user", "content": question},
],
temperature=0.3,
temperature=0.1, # Lower temperature for strict adherence
max_tokens=1000,
)
)
@ -1236,7 +1873,6 @@ async def generate_answer_with_rag(
logging.error(f"Error in generate_answer_with_rag: {e}")
return {"answer": f"<p>Error: {str(e)}</p>"}, 500
async def load_existing_vector_stores():
"""Load existing Chroma vector stores for each hospital"""
pool = await get_db_pool()
@ -1405,9 +2041,9 @@ def process_pdf():
return jsonify({"error": str(e)}), 500
# Initialize the RAG conversation manager
# Initialize the hybrid conversation manager
redis_client = get_redis_client()
conversation_manager = RAGConversationManager(redis_client)
conversation_manager = HybridConversationManager(redis_client)
@app.route("/flask-api/generate-answer", methods=["POST"])
@ -1426,6 +2062,9 @@ def rag_answer_api():
logging.info(f"Received hospital code: {hospital_code}")
logging.info(f"Received session_id: {session_id}")
# is_confirmation_response = data.get("is_confirmation_response", False)
original_query = data.get("original_query", "")
def process_rag_answer():
try:
hospital_id = async_to_sync(get_hospital_id(hospital_code))
@ -1436,6 +2075,15 @@ def rag_answer_api():
"error": "Invalid or missing 'hospital_code' in request"
}, 400
if original_query:
response_message = """
<p>I can only answer questions based on information found in the hospital documents.</p>
<p>The question you asked doesn't seem to be covered in the available documents.</p>
<p>You can try rephrasing your question or asking about a different topic.</p>
"""
return {"answer": response_message}, 200
else:
# Regular RAG answer
return async_to_sync(
generate_answer_with_rag(
@ -1444,12 +2092,12 @@ def rag_answer_api():
client=client,
doc_id=doc_id,
user_id=user_id,
conversation_manager=conversation_manager,
conversation_manager=conversation_manager, # Pass the hybrid manager
session_id=session_id,
)
)
except Exception as e:
logging.error(f"Error in process_rag_answer: {e}")
logging.error(f"Thread processing error: {str(e)}")
return {"error": str(e)}, 500
if not question:

2331
error.log

File diff suppressed because it is too large Load Diff

View File

@ -63,3 +63,89 @@
2025-06-09 09:46:52,876 - INFO - "DELETE /flask-api/delete-document-vectors" 200 - Duration: 0.009s - IP: 127.0.0.1
2025-06-09 09:46:52,899 - INFO - "DELETE /flask-api/delete-document-vectors" 400 - Duration: 0.000s - IP: 127.0.0.1
2025-06-09 11:46:24,367 - INFO - "GET /flask-api/" 404 - Duration: 0.001s - IP: 127.0.0.1
2025-06-09 13:03:46,712 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 13:03:48,998 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 2.286s - IP: 127.0.0.1
2025-06-09 13:04:09,164 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 13:04:10,537 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 1.373s - IP: 127.0.0.1
2025-06-09 13:05:37,649 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 13:05:40,884 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 3.235s - IP: 127.0.0.1
2025-06-09 13:13:27,932 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:13:30,230 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 2.298s - IP: 127.0.0.1
2025-06-09 13:13:54,677 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:13:59,714 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 5.037s - IP: 127.0.0.1
2025-06-09 13:14:17,423 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:14:21,231 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 3.809s - IP: 127.0.0.1
2025-06-09 13:15:00,789 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:15:02,264 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 1.475s - IP: 127.0.0.1
2025-06-09 13:15:22,589 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:15:27,812 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 5.224s - IP: 127.0.0.1
2025-06-09 13:15:46,770 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:15:48,958 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 2.188s - IP: 127.0.0.1
2025-06-09 13:15:57,542 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:16:00,169 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 2.627s - IP: 127.0.0.1
2025-06-09 13:16:28,464 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:16:30,519 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 2.056s - IP: 127.0.0.1
2025-06-09 13:16:44,514 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:16:47,898 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 3.384s - IP: 127.0.0.1
2025-06-09 13:16:58,457 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:17:04,739 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 6.282s - IP: 127.0.0.1
2025-06-09 13:17:18,870 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:17:23,466 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 4.596s - IP: 127.0.0.1
2025-06-09 13:20:14,649 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 13:20:15,718 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 1.069s - IP: 127.0.0.1
2025-06-09 13:20:32,522 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:20:40,394 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 7.873s - IP: 127.0.0.1
2025-06-09 13:21:34,927 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:21:35,482 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 0.555s - IP: 127.0.0.1
2025-06-09 13:21:57,067 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:22:00,013 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 2.945s - IP: 127.0.0.1
2025-06-09 13:22:31,965 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:22:46,900 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 14.935s - IP: 127.0.0.1
2025-06-09 13:24:29,026 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:24:31,314 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 2.289s - IP: 127.0.0.1
2025-06-09 13:26:40,340 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:26:42,389 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 2.049s - IP: 127.0.0.1
2025-06-09 13:26:51,824 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:26:53,120 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 1.296s - IP: 127.0.0.1
2025-06-09 13:30:06,806 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:30:08,790 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 1.985s - IP: 127.0.0.1
2025-06-09 13:30:23,416 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:30:24,623 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 1.207s - IP: 127.0.0.1
2025-06-09 13:30:34,372 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:30:35,613 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 1.241s - IP: 127.0.0.1
2025-06-09 13:30:47,901 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 13:30:49,237 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 1.336s - IP: 127.0.0.1
2025-06-09 14:22:55,613 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:22:56,751 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 1.138s - IP: 127.0.0.1
2025-06-09 14:23:38,767 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:24:10,108 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 31.340s - IP: 127.0.0.1
2025-06-09 14:28:06,695 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:28:07,741 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 1.046s - IP: 127.0.0.1
2025-06-09 14:32:26,845 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:32:28,707 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 1.862s - IP: 127.0.0.1
2025-06-09 14:32:53,549 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:32:54,767 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 1.219s - IP: 127.0.0.1
2025-06-09 14:35:10,483 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:35:11,708 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 1.225s - IP: 127.0.0.1
2025-06-09 14:36:59,949 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:37:00,881 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 0.933s - IP: 127.0.0.1
2025-06-09 14:38:11,319 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:38:12,359 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 1.039s - IP: 127.0.0.1
2025-06-09 14:39:57,788 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:39:58,523 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 0.734s - IP: 127.0.0.1
2025-06-09 14:41:12,960 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:41:15,346 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 2.387s - IP: 127.0.0.1
2025-06-09 14:43:29,539 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:43:29,954 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 0.415s - IP: 127.0.0.1
2025-06-09 14:43:48,119 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:43:50,697 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 2.577s - IP: 127.0.0.1
2025-06-09 14:50:29,262 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 14:50:31,330 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 2.068s - IP: 127.0.0.1
2025-06-09 15:47:22,968 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 15:47:28,583 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 5.616s - IP: 127.0.0.1
2025-06-09 16:02:30,977 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 16:02:31,615 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 0.639s - IP: 127.0.0.1
2025-06-09 16:11:44,675 - INFO - PDF processing request received from 127.0.0.1
2025-06-09 16:11:45,079 - INFO - "POST /flask-api/process-pdf" 200 - Duration: 0.404s - IP: 127.0.0.1
2025-06-09 18:14:32,690 - INFO - Generate answer request received from 127.0.0.1
2025-06-09 18:14:50,087 - INFO - "POST /flask-api/generate-answer" 200 - Duration: 17.397s - IP: 127.0.0.1

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -315,3 +315,23 @@ TypeError: cannot unpack non-iterable coroutine object
2025-06-09 09:45:53,436 - root - ERROR - [chat.py:1299] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 09:46:12,551 - root - ERROR - [chat.py:1299] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 09:46:14,686 - root - ERROR - [chat.py:1299] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 13:03:46,719 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 13:04:09,169 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 13:05:37,658 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 13:20:14,654 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:22:55,622 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:23:38,899 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:28:06,701 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:32:26,852 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:32:53,553 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:35:10,487 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:36:59,953 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:38:11,324 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:39:57,795 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:41:12,969 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:43:29,632 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:43:48,129 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 14:50:29,272 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 15:47:23,058 - root - ERROR - [chat.py:1934] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 16:02:31,062 - root - ERROR - [chat.py:1935] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")
2025-06-09 16:11:44,795 - root - ERROR - [chat.py:1935] - Database update error: (1265, "Data truncated for column 'processed_status' at row 1")

View File

@ -22,8 +22,8 @@ const transporter = nodemailer.createTransport({
port: 465,
secure: true,
auth: {
user: "no-reply@spurrin.com", // Your Zoho email address
pass: "8TFvKswgH69Y", // Your Zoho App Password (not your account password)
user: "kavya.j@tech4biz.io", // Your Zoho email address
pass: "8pQfkBw8gbrz", // Your Zoho App Password (not your account password)
},
// tls: {
// rejectUnauthorized: false, // Allow self-signed certificates
@ -1026,7 +1026,7 @@ exports.changePinByOtp = async (req, res) => {
async function sendMail(email, hospital_name, username, otp) {
const mailOptions = {
from: "no-reply@spurrin.com", // Sender's email
from: "kavya.j@tech4biz.io", // Sender's email
to: email, // Recipient's email
subject: "Spurrinai Login Credentials", // Email subject
html: `<!DOCTYPE html>
@ -1555,7 +1555,7 @@ exports.forgotPin = async (req, res) => {
// Send pin via email
const mailOptions = {
from: "no-reply@spurrin.com",
from: "kavya.j@tech4biz.io",
to: email,
subject: "Your Spurrinai PIN",
html: `<!DOCTYPE html>

View File

@ -14,8 +14,8 @@ const transporter = nodemailer.createTransport({
port: 465,
secure: true,
auth: {
user: "no-reply@spurrin.com", // Your Zoho email address
pass: "8TFvKswgH69Y", // Your Zoho App Password (not your account password)
user: "kavya.j@tech4biz.io", // Your Zoho email address
pass: "8pQfkBw8gbrz", // Your Zoho App Password (not your account password)
},
// tls: {
// rejectUnauthorized: false, // Allow self-signed certificates
@ -138,7 +138,7 @@ async function sendEmails(users, hospitalResult, back_url) {
for (const user of users) {
const mailOptions = {
from: "no-reply@spurrin.com", // Sender's email
from: "kavya.j@tech4biz.io", // Sender's email
to: user.email, // Unique recipient email
subject: 'Spurrinai Login Credentials', // Email subject
html: `<!DOCTYPE html>

View File

@ -14,8 +14,8 @@ const transporter = nodemailer.createTransport({
port: 465, // Use 465 for SSL or 587 for TLS
secure: true, // Set to true for port 465, false for port 587
auth: {
user: "no-reply@spurrin.com", // Your Zoho email address
pass: "8TFvKswgH69Y", // Your Zoho App Password (not your account password)
user: "kavya.j@tech4biz.io", // Your Zoho email address
pass: "8pQfkBw8gbrz", // Your Zoho App Password (not your account password)
}
// tls: {
// minVersion: "TLSv1.2",
@ -116,7 +116,7 @@ exports.createHospital = async (req, res) => {
// ✅ Step 6: Send an email to notify
const mailOptions = {
from: 'no-reply@spurrin.com', // Sender's email
from: 'kavya.j@tech4biz.io', // Sender's email
to: primary_admin_email, // Recipient's email
subject: "Spurrinai Login Credentials", // Email subject
html: `<!DOCTYPE html>
@ -1117,7 +1117,7 @@ exports.changeTempPassword = async (req, res) => {
async function sendMail(email, hospital_name, adminName, randomPassword) {
const mailOptions = {
from: "no-reply@spurrin.com", // Sender's email
from: "kavya.j@tech4biz.io", // Sender's email
to: email, // Recipient's email
subject: "Spurrinai temporary password", // Email subject
html: `<!DOCTYPE html>
@ -1291,9 +1291,11 @@ async function sendMail(email, hospital_name, adminName, randomPassword) {
};
try {
await transporter.sendMail(mailOptions);
const info = await transporter.sendMail(mailOptions);
return info; // Return the info object for further processing if needed
} catch (error) {
console.error(`Error sending email to ${email}:`, error);
return error
}
}

View File

@ -10,8 +10,8 @@ const transporter = nodemailer.createTransport({
port: 465, // Use 465 for SSL or 587 for TLS
secure: true, // Set to true for port 465, false for port 587
auth: {
user: "no-reply@spurrin.com", // Your Zoho email address
pass: "8TFvKswgH69Y", // Your Zoho App Password (not your account password)
user: "kavya.j@tech4biz.io", // Your Zoho email address
pass: "8pQfkBw8gbrz", // Your Zoho App Password (not your account password)
},
// tls: {
// minVersion: "TLSv1.2",
@ -318,7 +318,7 @@ exports.changeTempPassword = async (req, res) => {
async function sendMail(email, hospital_name, adminName, randomPassword) {
const mailOptions = {
from: 'no-reply@spurrin.com', // Sender's email
from: 'kavya.j@tech4biz.io', // Sender's email
to: email, // Recipient's email
subject: "Spurrinai temporary password", // Email subject
html: `<!DOCTYPE html>

View File

@ -22,8 +22,8 @@ const transporter = nodemailer.createTransport({
port: 465,
secure: true,
auth: {
user: "no-reply@spurrin.com", // Your Zoho email address
pass: "8TFvKswgH69Y", // Your Zoho App Password (not your account password)
user: "kavya.j@tech4biz.io", // Your Zoho email address
pass: "8pQfkBw8gbrz", // Your Zoho App Password (not your account password)
},
// tls: {
// rejectUnauthorized: false, // Allow self-signed certificates
@ -112,7 +112,7 @@ WHERE hospital_id = ?
const passwordHash = await bcrypt.hash(req.body.password, 10);
const mailOptions = {
from: "no-reply@spurrin.com", // Sender's email
from: "kavya.j@tech4biz.io", // Sender's email
to: rest.email, // Unique recipient email
subject: 'Spurrinai Login Credentials', // Email subject
html: `<!DOCTYPE html>

View File

@ -0,0 +1,747 @@
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 595.2799999999999727 841.8899999999999864]
/Contents 4 0 R
>>
endobj
4 0 obj
<<
/Length 8084
>>
stream
0.5670000000000001 w
0 G
q
141.7322834645669332 0 0 56.6929133858267775 28.3464566929133888 756.8506299212598378 cm
/I0 Do
Q
BT
/F1 16 Tf
18.3999999999999986 TL
0 g
198.4251968503937178 785.1970866141732586 Td
(Hospital Name: test) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
42.5196850393700814 728.5041732283464171 Td
(Mobile: 916498798798) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
396.8503937007874356 728.5041732283464171 Td
(Email: testone@gmail.com) Tj
ET
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
40. 700.1577165354329964 26.6000000000000014 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
45. 686.65771653543311 Td
(S/N) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
66.5999999999999943 700.1577165354329964 59.9434536368753896 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
71.5999999999999943 686.65771653543311 Td
(Name) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
126.5434536368753839 700.1577165354329964 103.4000000000000199 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
131.5434536368753697 686.65771653543311 Td
(Email) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
229.9434536368754038 700.1577165354329964 92.4000000000000057 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
234.9434536368754038 686.65771653543311 Td
(Hospital Code) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
322.3434536368753811 700.1577165354329964 86.9999999999999858 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
327.3434536368753811 686.65771653543311 Td
(Location) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
409.3434536368753811 700.1577165354329964 40.3000000000000043 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
414.3434536368753811 686.65771653543311 Td
(Status) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
449.6434536368753356 700.1577165354329964 105.6365463631438786 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
454.6434536368753356 686.65771653543311 Td
(Department) Tj
ET
0. G
0.5670000000000001 w
1. g
0.78 G
0.2834645669291339 w
1. g
40. 678.65771653543311 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 665.15771653543311 Td
(61) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 678.65771653543311 59.9434536368753896 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 665.15771653543311 Td
(test) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 678.65771653543311 103.4000000000000199 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 665.15771653543311 Td
(testone@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 678.65771653543311 92.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 665.15771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 678.65771653543311 86.9999999999999858 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 665.15771653543311 Td
(##############) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 678.65771653543311 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 665.15771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 678.65771653543311 105.6365463631438786 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 665.15771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 645.6577165354329964 26.6000000000000014 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 632.15771653543311 Td
(64) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 645.6577165354329964 59.9434536368753896 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 632.15771653543311 Td
(John Doee) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 645.6577165354329964 103.4000000000000199 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 632.15771653543311 Td
(johnn@example.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 645.6577165354329964 92.4000000000000057 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 632.15771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 645.6577165354329964 86.9999999999999858 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 632.15771653543311 Td
(New York) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 645.6577165354329964 40.3000000000000043 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 632.15771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 645.6577165354329964 105.6365463631438786 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 632.15771653543311 Td
(Cardiology) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 624.1577165354329964 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 610.65771653543311 Td
(65) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 624.1577165354329964 59.9434536368753896 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 610.65771653543311 Td
(Jane) Tj
T* (Smithh) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 624.1577165354329964 103.4000000000000199 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 610.65771653543311 Td
(janne@example.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 624.1577165354329964 92.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 610.65771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 624.1577165354329964 86.9999999999999858 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 610.65771653543311 Td
(Boston) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 624.1577165354329964 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 610.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 624.1577165354329964 105.6365463631438786 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 610.65771653543311 Td
(Neurology) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 591.1577165354329964 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 577.65771653543311 Td
(66) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 591.1577165354329964 59.9434536368753896 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 577.65771653543311 Td
(adminone) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 591.1577165354329964 103.4000000000000199 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 577.65771653543311 Td
(admin@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 591.1577165354329964 92.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 577.65771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 591.1577165354329964 86.9999999999999858 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 577.65771653543311 Td
(Andhra Pradesh) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 591.1577165354329964 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 577.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 591.1577165354329964 105.6365463631438786 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 577.65771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
0. G
0.5670000000000001 w
0.78 G
0. w
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
>>
endobj
5 0 obj
<<
/Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
6 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
7 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
8 0 obj
<<
/Type /Font
/BaseFont /Helvetica-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
9 0 obj
<<
/Type /Font
/BaseFont /Courier
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
10 0 obj
<<
/Type /Font
/BaseFont /Courier-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
11 0 obj
<<
/Type /Font
/BaseFont /Courier-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
12 0 obj
<<
/Type /Font
/BaseFont /Courier-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
13 0 obj
<<
/Type /Font
/BaseFont /Times-Roman
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
14 0 obj
<<
/Type /Font
/BaseFont /Times-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
15 0 obj
<<
/Type /Font
/BaseFont /Times-Italic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
16 0 obj
<<
/Type /Font
/BaseFont /Times-BoldItalic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
17 0 obj
<<
/Type /Font
/BaseFont /ZapfDingbats
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
18 0 obj
<<
/Type /Font
/BaseFont /Symbol
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
19 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 0
/Height 0
/ColorSpace /DeviceGray
/BitsPerComponent 8
/Length 96
/Filter /DCTDecode
>>
stream
https://backendlatest.spurrinai.com/uploads/profile_photos/profile_photo-1747114697812-755139618
endstream
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
/F3 7 0 R
/F4 8 0 R
/F5 9 0 R
/F6 10 0 R
/F7 11 0 R
/F8 12 0 R
/F9 13 0 R
/F10 14 0 R
/F11 15 0 R
/F12 16 0 R
/F13 17 0 R
/F14 18 0 R
>>
/XObject <<
/I0 19 0 R
>>
>>
endobj
20 0 obj
<<
/Producer (jsPDF 2.5.2)
/CreationDate (D:20250513111056+05'30')
>>
endobj
21 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 22
0000000000 65535 f
0000008288 00000 n
0000010365 00000 n
0000000015 00000 n
0000000152 00000 n
0000008345 00000 n
0000008470 00000 n
0000008600 00000 n
0000008733 00000 n
0000008870 00000 n
0000008993 00000 n
0000009122 00000 n
0000009254 00000 n
0000009390 00000 n
0000009518 00000 n
0000009645 00000 n
0000009774 00000 n
0000009907 00000 n
0000010009 00000 n
0000010105 00000 n
0000010624 00000 n
0000010710 00000 n
trailer
<<
/Size 22
/Root 21 0 R
/Info 20 0 R
/ID [ <DC39A51F89A29BBA0FA16AC2BB44F2CE> <DC39A51F89A29BBA0FA16AC2BB44F2CE> ]
>>
startxref
10814
%%EOF

View File

@ -0,0 +1,747 @@
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 595.2799999999999727 841.8899999999999864]
/Contents 4 0 R
>>
endobj
4 0 obj
<<
/Length 8084
>>
stream
0.5670000000000001 w
0 G
q
141.7322834645669332 0 0 56.6929133858267775 28.3464566929133888 756.8506299212598378 cm
/I0 Do
Q
BT
/F1 16 Tf
18.3999999999999986 TL
0 g
198.4251968503937178 785.1970866141732586 Td
(Hospital Name: test) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
42.5196850393700814 728.5041732283464171 Td
(Mobile: 916498798798) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
396.8503937007874356 728.5041732283464171 Td
(Email: testone@gmail.com) Tj
ET
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
40. 700.1577165354329964 26.6000000000000014 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
45. 686.65771653543311 Td
(S/N) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
66.5999999999999943 700.1577165354329964 59.9434536368753896 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
71.5999999999999943 686.65771653543311 Td
(Name) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
126.5434536368753839 700.1577165354329964 103.4000000000000199 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
131.5434536368753697 686.65771653543311 Td
(Email) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
229.9434536368754038 700.1577165354329964 92.4000000000000057 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
234.9434536368754038 686.65771653543311 Td
(Hospital Code) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
322.3434536368753811 700.1577165354329964 86.9999999999999858 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
327.3434536368753811 686.65771653543311 Td
(Location) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
409.3434536368753811 700.1577165354329964 40.3000000000000043 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
414.3434536368753811 686.65771653543311 Td
(Status) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
449.6434536368753356 700.1577165354329964 105.6365463631438786 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
454.6434536368753356 686.65771653543311 Td
(Department) Tj
ET
0. G
0.5670000000000001 w
1. g
0.78 G
0.2834645669291339 w
1. g
40. 678.65771653543311 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 665.15771653543311 Td
(61) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 678.65771653543311 59.9434536368753896 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 665.15771653543311 Td
(test) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 678.65771653543311 103.4000000000000199 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 665.15771653543311 Td
(testone@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 678.65771653543311 92.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 665.15771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 678.65771653543311 86.9999999999999858 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 665.15771653543311 Td
(##############) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 678.65771653543311 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 665.15771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 678.65771653543311 105.6365463631438786 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 665.15771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 645.6577165354329964 26.6000000000000014 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 632.15771653543311 Td
(64) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 645.6577165354329964 59.9434536368753896 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 632.15771653543311 Td
(John Doee) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 645.6577165354329964 103.4000000000000199 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 632.15771653543311 Td
(johnn@example.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 645.6577165354329964 92.4000000000000057 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 632.15771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 645.6577165354329964 86.9999999999999858 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 632.15771653543311 Td
(New York) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 645.6577165354329964 40.3000000000000043 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 632.15771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 645.6577165354329964 105.6365463631438786 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 632.15771653543311 Td
(Cardiology) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 624.1577165354329964 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 610.65771653543311 Td
(65) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 624.1577165354329964 59.9434536368753896 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 610.65771653543311 Td
(Jane) Tj
T* (Smithh) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 624.1577165354329964 103.4000000000000199 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 610.65771653543311 Td
(janne@example.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 624.1577165354329964 92.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 610.65771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 624.1577165354329964 86.9999999999999858 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 610.65771653543311 Td
(Boston) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 624.1577165354329964 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 610.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 624.1577165354329964 105.6365463631438786 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 610.65771653543311 Td
(Neurology) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 591.1577165354329964 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 577.65771653543311 Td
(66) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 591.1577165354329964 59.9434536368753896 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 577.65771653543311 Td
(adminone) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 591.1577165354329964 103.4000000000000199 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 577.65771653543311 Td
(admin@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 591.1577165354329964 92.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 577.65771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 591.1577165354329964 86.9999999999999858 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 577.65771653543311 Td
(Andhra Pradesh) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 591.1577165354329964 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 577.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 591.1577165354329964 105.6365463631438786 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 577.65771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
0. G
0.5670000000000001 w
0.78 G
0. w
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
>>
endobj
5 0 obj
<<
/Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
6 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
7 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
8 0 obj
<<
/Type /Font
/BaseFont /Helvetica-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
9 0 obj
<<
/Type /Font
/BaseFont /Courier
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
10 0 obj
<<
/Type /Font
/BaseFont /Courier-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
11 0 obj
<<
/Type /Font
/BaseFont /Courier-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
12 0 obj
<<
/Type /Font
/BaseFont /Courier-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
13 0 obj
<<
/Type /Font
/BaseFont /Times-Roman
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
14 0 obj
<<
/Type /Font
/BaseFont /Times-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
15 0 obj
<<
/Type /Font
/BaseFont /Times-Italic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
16 0 obj
<<
/Type /Font
/BaseFont /Times-BoldItalic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
17 0 obj
<<
/Type /Font
/BaseFont /ZapfDingbats
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
18 0 obj
<<
/Type /Font
/BaseFont /Symbol
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
19 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 0
/Height 0
/ColorSpace /DeviceGray
/BitsPerComponent 8
/Length 96
/Filter /DCTDecode
>>
stream
https://backendlatest.spurrinai.com/uploads/profile_photos/profile_photo-1747114697812-755139618
endstream
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
/F3 7 0 R
/F4 8 0 R
/F5 9 0 R
/F6 10 0 R
/F7 11 0 R
/F8 12 0 R
/F9 13 0 R
/F10 14 0 R
/F11 15 0 R
/F12 16 0 R
/F13 17 0 R
/F14 18 0 R
>>
/XObject <<
/I0 19 0 R
>>
>>
endobj
20 0 obj
<<
/Producer (jsPDF 2.5.2)
/CreationDate (D:20250513111056+05'30')
>>
endobj
21 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 22
0000000000 65535 f
0000008288 00000 n
0000010365 00000 n
0000000015 00000 n
0000000152 00000 n
0000008345 00000 n
0000008470 00000 n
0000008600 00000 n
0000008733 00000 n
0000008870 00000 n
0000008993 00000 n
0000009122 00000 n
0000009254 00000 n
0000009390 00000 n
0000009518 00000 n
0000009645 00000 n
0000009774 00000 n
0000009907 00000 n
0000010009 00000 n
0000010105 00000 n
0000010624 00000 n
0000010710 00000 n
trailer
<<
/Size 22
/Root 21 0 R
/Info 20 0 R
/ID [ <DC39A51F89A29BBA0FA16AC2BB44F2CE> <DC39A51F89A29BBA0FA16AC2BB44F2CE> ]
>>
startxref
10814
%%EOF

View File

@ -0,0 +1,472 @@
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 841.8899999999999864 595.2799999999999727]
/Contents 4 0 R
>>
endobj
4 0 obj
<<
/Length 3996
>>
stream
0.5670000000000001 w
0 G
BT
/F1 16 Tf
18.3999999999999986 TL
0 g
42.5196850393700814 538.5870866141732449 Td
(Member Export Report) Tj
ET
BT
/F1 10 Tf
11.5 TL
0 g
42.5196850393700814 510.2406299212598242 Td
(Generated on: 6/6/2025, 12:07:29 PM) Tj
ET
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
0.16 0.5 0.73 rg
0.78 G
0. w
0.16 0.5 0.73 rg
40. 481.8941732283464034 51.4649947457741419 -26.2078740157480325 re
f
BT
/F2 8 Tf
9.1999999999999993 TL
1. g
48.5039370078740077 466.5902362204724341 Td
(S/N) Tj
ET
0.16 0.5 0.73 rg
0.78 G
0. w
0.16 0.5 0.73 rg
91.4649947457741348 481.8941732283464034 65.7382301547608563 -26.2078740157480325 re
f
BT
/F2 8 Tf
9.1999999999999993 TL
1. g
99.9689317536481497 466.5902362204724341 Td
(Name) Tj
ET
0.16 0.5 0.73 rg
0.78 G
0. w
0.16 0.5 0.73 rg
157.2032249005349911 481.8941732283464034 126.0936255984760095 -26.2078740157480325 re
f
BT
/F2 8 Tf
9.1999999999999993 TL
1. g
165.7071619084090059 466.5902362204724341 Td
(Email) Tj
ET
0.16 0.5 0.73 rg
0.78 G
0. w
0.16 0.5 0.73 rg
283.2968504990109864 481.8941732283464034 131.8029197620706725 -26.2078740157480325 re
f
BT
/F2 8 Tf
9.1999999999999993 TL
1. g
291.8007875068850012 466.5902362204724341 Td
(Hospital Code) Tj
ET
0.16 0.5 0.73 rg
0.78 G
0. w
0.16 0.5 0.73 rg
415.0997702610817441 481.8941732283464034 111.1407123128708747 -26.2078740157480325 re
f
BT
/F2 8 Tf
9.1999999999999993 TL
1. g
423.603707268955759 466.5902362204724341 Td
(Location) Tj
ET
0.16 0.5 0.73 rg
0.78 G
0. w
0.16 0.5 0.73 rg
526.2404825739525904 481.8941732283464034 70.088168565118707 -26.2078740157480325 re
f
BT
/F2 8 Tf
9.1999999999999993 TL
1. g
534.7444195818266053 466.5902362204724341 Td
(Status) Tj
ET
0.16 0.5 0.73 rg
0.78 G
0. w
0.16 0.5 0.73 rg
596.3286511390713258 481.8941732283464034 104.0720623960394136 -26.2078740157480325 re
f
BT
/F2 8 Tf
9.1999999999999993 TL
1. g
604.8325881469453407 466.5902362204724341 Td
(Department) Tj
ET
0.16 0.5 0.73 rg
0.78 G
0. w
0.16 0.5 0.73 rg
700.4007135351107536 481.8941732283464034 101.4892864648894175 -26.2078740157480325 re
f
BT
/F2 8 Tf
9.1999999999999993 TL
1. g
708.9046505429847684 466.5902362204724341 Td
(Role) Tj
ET
0. G
0.5670000000000001 w
0.96 g
0.78 G
0. w
0.96 g
40. 455.6862992125983851 51.4649947457741419 -26.2078740157480325 re
f
BT
/F1 8 Tf
9.1999999999999993 TL
0.314 g
48.5039370078740077 440.3823622047243589 Td
(510) Tj
ET
0.96 g
0.78 G
0. w
0.96 g
91.4649947457741348 455.6862992125983851 65.7382301547608563 -26.2078740157480325 re
f
BT
/F1 8 Tf
9.1999999999999993 TL
0.314 g
99.9689317536481497 440.3823622047243589 Td
(test) Tj
ET
0.96 g
0.78 G
0. w
0.96 g
157.2032249005349911 455.6862992125983851 126.0936255984760095 -26.2078740157480325 re
f
BT
/F1 8 Tf
9.1999999999999993 TL
0.314 g
165.7071619084090059 440.3823622047243589 Td
(test@gmail.com) Tj
ET
0.96 g
0.78 G
0. w
0.96 g
283.2968504990109864 455.6862992125983851 131.8029197620706725 -26.2078740157480325 re
f
BT
/F1 8 Tf
9.1999999999999993 TL
0.314 g
291.8007875068850012 440.3823622047243589 Td
(HDT97L2RR9Q7) Tj
ET
0.96 g
0.78 G
0. w
0.96 g
415.0997702610817441 455.6862992125983851 111.1407123128708747 -26.2078740157480325 re
f
BT
/F1 8 Tf
9.1999999999999993 TL
0.314 g
423.603707268955759 440.3823622047243589 Td
(###########) Tj
ET
0.96 g
0.78 G
0. w
0.96 g
526.2404825739525904 455.6862992125983851 70.088168565118707 -26.2078740157480325 re
f
BT
/F1 8 Tf
9.1999999999999993 TL
0.314 g
534.7444195818266053 440.3823622047243589 Td
(Active) Tj
ET
0.96 g
0.78 G
0. w
0.96 g
596.3286511390713258 455.6862992125983851 104.0720623960394136 -26.2078740157480325 re
f
BT
/F1 8 Tf
9.1999999999999993 TL
0.314 g
604.8325881469453407 440.3823622047243589 Td
(N/A) Tj
ET
0.96 g
0.78 G
0. w
0.96 g
700.4007135351107536 455.6862992125983851 101.4892864648894175 -26.2078740157480325 re
f
BT
/F1 8 Tf
9.1999999999999993 TL
0.314 g
708.9046505429847684 440.3823622047243589 Td
(Superadmin) Tj
ET
0. G
0.5670000000000001 w
0.78 G
0. w
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
>>
endobj
5 0 obj
<<
/Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
6 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
7 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
8 0 obj
<<
/Type /Font
/BaseFont /Helvetica-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
9 0 obj
<<
/Type /Font
/BaseFont /Courier
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
10 0 obj
<<
/Type /Font
/BaseFont /Courier-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
11 0 obj
<<
/Type /Font
/BaseFont /Courier-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
12 0 obj
<<
/Type /Font
/BaseFont /Courier-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
13 0 obj
<<
/Type /Font
/BaseFont /Times-Roman
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
14 0 obj
<<
/Type /Font
/BaseFont /Times-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
15 0 obj
<<
/Type /Font
/BaseFont /Times-Italic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
16 0 obj
<<
/Type /Font
/BaseFont /Times-BoldItalic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
17 0 obj
<<
/Type /Font
/BaseFont /ZapfDingbats
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
18 0 obj
<<
/Type /Font
/BaseFont /Symbol
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
/F3 7 0 R
/F4 8 0 R
/F5 9 0 R
/F6 10 0 R
/F7 11 0 R
/F8 12 0 R
/F9 13 0 R
/F10 14 0 R
/F11 15 0 R
/F12 16 0 R
/F13 17 0 R
/F14 18 0 R
>>
/XObject <<
>>
>>
endobj
19 0 obj
<<
/Producer (jsPDF 2.5.2)
/Title (Members Export - test - All Members List.pdf)
/Subject (Member List)
/Author (Spurrin Innovations)
/CreationDate (D:20250606120729+05'30')
>>
endobj
20 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 21
0000000000 65535 f
0000004200 00000 n
0000006017 00000 n
0000000015 00000 n
0000000152 00000 n
0000004257 00000 n
0000004382 00000 n
0000004512 00000 n
0000004645 00000 n
0000004782 00000 n
0000004905 00000 n
0000005034 00000 n
0000005166 00000 n
0000005302 00000 n
0000005430 00000 n
0000005557 00000 n
0000005686 00000 n
0000005819 00000 n
0000005921 00000 n
0000006265 00000 n
0000006458 00000 n
trailer
<<
/Size 21
/Root 20 0 R
/Info 19 0 R
/ID [ <AF31B973066A39B68937177E1E886AA7> <AF31B973066A39B68937177E1E886AA7> ]
>>
startxref
6562
%%EOF

View File

@ -0,0 +1,82 @@
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Filter /FlateDecode /Length 676>>
stream
<EFBFBD>”MsÚ0†ïù{k2%ª-YþàFqóÑ™d(xÚK.ª-@<40>¨$Ú¡¿¾kIZÏ„<06>ìÝW«÷Ù…Ïgá ü>ûXÀ‡«ˆsøT4¯hÈe<>dœ„ œ<>….e]Ë
&Â+©=LeiluÅ<>]R«CŸt~B€àðÏ
vÉBf<>pÜ„·ê{Í\z¡j·…/<2F>,…0|-{¬DSD­ÒÕ¦®á^¬ä¦âQº%̖®ēä¿òNXÜæ<C39C>˜ÑÞð8¥$NÛðk©+i‡p'jÙŸí+<2B>ö¢ôp¿Y}orßgáe&1<> ƒ~ƺB«ÊJç†Àã\[)5|h S#ªÜ¡ºPøx~á–ÞŠÜêJõ[c'ÄÏ¡ÜæC˜ŒŠKP~d!}<7D>çmÔyÊö=ucÜZyQŸŠ<C5B8>ó„dñs©ýl£­rM¨½rkY*Q+¿…}X¯œqB;¼¹\ ëWèÂÆÂVÊÔf±íÏF3âàyQV“Ú wC€²Œtµ”VÁ7éü¯ˆP§½»DiF²}#¬”sÊhȅdzw˜ðÇúâd?}»ÙFܯDŽûñØZ™t° +Eëä©´£õ»s%Ú8…ŽŽ<C5BD>5ZØ-Œ¬—øÈ»@òçãQþpÑkKv 'µÐ/·C•CijPf] ‡}#t<14><>¥lú•cl¡® ¦XÚ:7Ž}îQ³ö¸qóÝ,RTj>—¶YMïV ÞÀ\¬T½…µ•íÇR¾4òm„c$¡<>«¦ôXʼnxX<78> ½s»aÌ-A3qPÚ-WÇe¯w4å$íZ{¶›Ü?;Ën52þ…Žà
Çê0Êõã 1Þ9üÿ—oFiš†!=ºÙþäY
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj
5 0 obj
<</Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
6 0 obj
<</Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
>>
/XObject <<
>>
>>
endobj
7 0 obj
<<
/Producer (PyFPDF 1.7.2 http://pyfpdf.googlecode.com/)
/CreationDate (D:20250511021926)
>>
endobj
8 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 9
0000000000 65535 f
0000000833 00000 n
0000001117 00000 n
0000000009 00000 n
0000000087 00000 n
0000000920 00000 n
0000001021 00000 n
0000001231 00000 n
0000001340 00000 n
trailer
<<
/Size 9
/Root 8 0 R
/Info 7 0 R
>>
startxref
1443
%%EOF

View File

@ -0,0 +1,747 @@
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 595.2799999999999727 841.8899999999999864]
/Contents 4 0 R
>>
endobj
4 0 obj
<<
/Length 8038
>>
stream
0.5670000000000001 w
0 G
q
141.7322834645669332 0 0 56.6929133858267775 28.3464566929133888 756.8506299212598378 cm
/I0 Do
Q
BT
/F1 16 Tf
18.3999999999999986 TL
0 g
198.4251968503937178 785.1970866141732586 Td
(Hospital Name: srikanth) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
42.5196850393700814 728.5041732283464171 Td
(Mobile: 919899797987) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
396.8503937007874356 728.5041732283464171 Td
(Email: srikanth.1@gmail.com) Tj
ET
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
40. 700.1577165354329964 26.6000000000000014 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
45. 686.65771653543311 Td
(S/N) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
66.5999999999999943 700.1577165354329964 62.1804203285882764 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
71.5999999999999943 686.65771653543311 Td
(Name) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
128.780420328588292 700.1577165354329964 114.3999999999999915 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
133.780420328588292 686.65771653543311 Td
(Email) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
243.1804203285882693 700.1577165354329964 84.4000000000000057 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
248.1804203285882693 686.65771653543311 Td
(Hospital Code) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
327.580420328588275 700.1577165354329964 77.8208941535705918 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
332.580420328588275 686.65771653543311 Td
(Location) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
405.4013144821587957 700.1577165354329964 40.3000000000000043 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
410.4013144821587957 686.65771653543311 Td
(Status) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
445.7013144821588071 700.1577165354329964 109.5786855177115342 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
450.7013144821588071 686.65771653543311 Td
(Department) Tj
ET
0. G
0.5670000000000001 w
1. g
0.78 G
0.2834645669291339 w
1. g
40. 678.65771653543311 26.6000000000000014 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 665.15771653543311 Td
(909) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 678.65771653543311 62.1804203285882764 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 665.15771653543311 Td
(srikanth) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
128.780420328588292 678.65771653543311 114.3999999999999915 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
133.780420328588292 665.15771653543311 Td
(srikanth.1@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
243.1804203285882693 678.65771653543311 84.4000000000000057 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
248.1804203285882693 665.15771653543311 Td
(X4BYKTU40UL4) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
327.580420328588275 678.65771653543311 77.8208941535705918 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
332.580420328588275 665.15771653543311 Td
(######) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
405.4013144821587957 678.65771653543311 40.3000000000000043 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
410.4013144821587957 665.15771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
445.7013144821588071 678.65771653543311 109.5786855177115342 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
450.7013144821588071 665.15771653543311 Td
(N/A) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 657.15771653543311 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 643.65771653543311 Td
(933) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 657.15771653543311 62.1804203285882764 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 643.65771653543311 Td
(new) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
128.780420328588292 657.15771653543311 114.3999999999999915 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
133.780420328588292 643.65771653543311 Td
(ne@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
243.1804203285882693 657.15771653543311 84.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
248.1804203285882693 643.65771653543311 Td
(X4BYKTU40UL4) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
327.580420328588275 657.15771653543311 77.8208941535705918 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
332.580420328588275 643.65771653543311 Td
(Andhra) Tj
T* (Pradesh) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
405.4013144821587957 657.15771653543311 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
410.4013144821587957 643.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
445.7013144821588071 657.15771653543311 109.5786855177115342 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
450.7013144821588071 643.65771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 624.1577165354329964 26.6000000000000014 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 610.65771653543311 Td
(936) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 624.1577165354329964 62.1804203285882764 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 610.65771653543311 Td
(John Doee) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
128.780420328588292 624.1577165354329964 114.3999999999999915 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
133.780420328588292 610.65771653543311 Td
(johnnw@example.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
243.1804203285882693 624.1577165354329964 84.4000000000000057 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
248.1804203285882693 610.65771653543311 Td
(X4BYKTU40UL4) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
327.580420328588275 624.1577165354329964 77.8208941535705918 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
332.580420328588275 610.65771653543311 Td
(New York) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
405.4013144821587957 624.1577165354329964 40.3000000000000043 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
410.4013144821587957 610.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
445.7013144821588071 624.1577165354329964 109.5786855177115342 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
450.7013144821588071 610.65771653543311 Td
(Cardiology) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 602.65771653543311 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 589.1577165354329964 Td
(937) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 602.65771653543311 62.1804203285882764 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 589.1577165354329964 Td
(Jane) Tj
T* (Smithh) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
128.780420328588292 602.65771653543311 114.3999999999999915 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
133.780420328588292 589.1577165354329964 Td
(janndde@example.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
243.1804203285882693 602.65771653543311 84.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
248.1804203285882693 589.1577165354329964 Td
(X4BYKTU40UL4) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
327.580420328588275 602.65771653543311 77.8208941535705918 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
332.580420328588275 589.1577165354329964 Td
(Boston) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
405.4013144821587957 602.65771653543311 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
410.4013144821587957 589.1577165354329964 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
445.7013144821588071 602.65771653543311 109.5786855177115342 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
450.7013144821588071 589.1577165354329964 Td
(Neurology) Tj
ET
0. G
0.5670000000000001 w
0.78 G
0. w
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
>>
endobj
5 0 obj
<<
/Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
6 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
7 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
8 0 obj
<<
/Type /Font
/BaseFont /Helvetica-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
9 0 obj
<<
/Type /Font
/BaseFont /Courier
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
10 0 obj
<<
/Type /Font
/BaseFont /Courier-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
11 0 obj
<<
/Type /Font
/BaseFont /Courier-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
12 0 obj
<<
/Type /Font
/BaseFont /Courier-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
13 0 obj
<<
/Type /Font
/BaseFont /Times-Roman
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
14 0 obj
<<
/Type /Font
/BaseFont /Times-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
15 0 obj
<<
/Type /Font
/BaseFont /Times-Italic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
16 0 obj
<<
/Type /Font
/BaseFont /Times-BoldItalic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
17 0 obj
<<
/Type /Font
/BaseFont /ZapfDingbats
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
18 0 obj
<<
/Type /Font
/BaseFont /Symbol
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
19 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 0
/Height 0
/ColorSpace /DeviceGray
/BitsPerComponent 8
/Length 93
/Filter /DCTDecode
>>
stream
https://backend.spurrinai.com/uploads/profile_photos/profile_photo-1746760332952-40143858.png
endstream
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
/F3 7 0 R
/F4 8 0 R
/F5 9 0 R
/F6 10 0 R
/F7 11 0 R
/F8 12 0 R
/F9 13 0 R
/F10 14 0 R
/F11 15 0 R
/F12 16 0 R
/F13 17 0 R
/F14 18 0 R
>>
/XObject <<
/I0 19 0 R
>>
>>
endobj
20 0 obj
<<
/Producer (jsPDF 2.5.2)
/CreationDate (D:20250509143308+05'30')
>>
endobj
21 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 22
0000000000 65535 f
0000008242 00000 n
0000010316 00000 n
0000000015 00000 n
0000000152 00000 n
0000008299 00000 n
0000008424 00000 n
0000008554 00000 n
0000008687 00000 n
0000008824 00000 n
0000008947 00000 n
0000009076 00000 n
0000009208 00000 n
0000009344 00000 n
0000009472 00000 n
0000009599 00000 n
0000009728 00000 n
0000009861 00000 n
0000009963 00000 n
0000010059 00000 n
0000010575 00000 n
0000010661 00000 n
trailer
<<
/Size 22
/Root 21 0 R
/Info 20 0 R
/ID [ <AEAC09F326028AA573A05482AF851B6B> <AEAC09F326028AA573A05482AF851B6B> ]
>>
startxref
10765
%%EOF

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,604 @@
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 595.2799999999999727 841.8899999999999864]
/Contents 4 0 R
>>
endobj
4 0 obj
<<
/Length 5717
>>
stream
0.5670000000000001 w
0 G
q
141.7322834645669332 0 0 56.6929133858267775 28.3464566929133888 756.8506299212598378 cm
/I0 Do
Q
BT
/F1 16 Tf
18.3999999999999986 TL
0 g
198.4251968503937178 785.1970866141732586 Td
(Hospital Name: latestone) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
42.5196850393700814 728.5041732283464171 Td
(Mobile: 918798798798) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
396.8503937007874356 728.5041732283464171 Td
(Email: latestone@gmail.com) Tj
ET
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
40. 700.1577165354329964 80.3268222962861387 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
45. 686.65771653543311 Td
(Name) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
120.3268222962861387 700.1577165354329964 155.9000000000000341 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
125.3268222962861245 686.65771653543311 Td
(Email) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
276.2268222962861159 700.1577165354329964 90.1000000000000085 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
281.2268222962861159 686.65771653543311 Td
(Hospital Code) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
366.3268222962861387 700.1577165354329964 51.5 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
371.3268222962860818 686.65771653543311 Td
(Location) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
417.8268222962861387 700.1577165354329964 40.3000000000000043 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
422.8268222962860818 686.65771653543311 Td
(Status) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
458.1268222962860932 700.1577165354329964 97.1531777036134372 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
463.1268222962860932 686.65771653543311 Td
(Department) Tj
ET
0. G
0.5670000000000001 w
1. g
0.78 G
0.2834645669291339 w
1. g
40. 678.65771653543311 80.3268222962861387 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 665.15771653543311 Td
(latestone) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
120.3268222962861387 678.65771653543311 155.9000000000000341 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
125.3268222962861245 665.15771653543311 Td
(latestone@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
276.2268222962861159 678.65771653543311 90.1000000000000085 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
281.2268222962861159 665.15771653543311 Td
(XF3DHMGYN43P) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
366.3268222962861387 678.65771653543311 51.5 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
371.3268222962860818 665.15771653543311 Td
(N/A) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
417.8268222962861387 678.65771653543311 40.3000000000000043 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
422.8268222962860818 665.15771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
458.1268222962860932 678.65771653543311 97.1531777036134372 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
463.1268222962860932 665.15771653543311 Td
(N/A) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 657.15771653543311 80.3268222962861387 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 643.65771653543311 Td
(srikanth) Tj
T* (mallikarjun) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
120.3268222962861387 657.15771653543311 155.9000000000000341 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
125.3268222962861245 643.65771653543311 Td
(srikanth.mallikarjuna@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
276.2268222962861159 657.15771653543311 90.1000000000000085 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
281.2268222962861159 643.65771653543311 Td
(XF3DHMGYN43P) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
366.3268222962861387 657.15771653543311 51.5 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
371.3268222962860818 643.65771653543311 Td
(Delhi) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
417.8268222962861387 657.15771653543311 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
422.8268222962860818 643.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
458.1268222962860932 657.15771653543311 97.1531777036134372 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
463.1268222962860932 643.65771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 624.1577165354329964 80.3268222962861387 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 610.65771653543311 Td
(ramesh gupta) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
120.3268222962861387 624.1577165354329964 155.9000000000000341 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
125.3268222962861245 610.65771653543311 Td
(rameshgupta@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
276.2268222962861159 624.1577165354329964 90.1000000000000085 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
281.2268222962861159 610.65771653543311 Td
(XF3DHMGYN43P) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
366.3268222962861387 624.1577165354329964 51.5 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
371.3268222962860818 610.65771653543311 Td
(Delhi) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
417.8268222962861387 624.1577165354329964 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
422.8268222962860818 610.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
458.1268222962860932 624.1577165354329964 97.1531777036134372 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
463.1268222962860932 610.65771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
0. G
0.5670000000000001 w
0.78 G
0. w
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
>>
endobj
5 0 obj
<<
/Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
6 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
7 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
8 0 obj
<<
/Type /Font
/BaseFont /Helvetica-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
9 0 obj
<<
/Type /Font
/BaseFont /Courier
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
10 0 obj
<<
/Type /Font
/BaseFont /Courier-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
11 0 obj
<<
/Type /Font
/BaseFont /Courier-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
12 0 obj
<<
/Type /Font
/BaseFont /Courier-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
13 0 obj
<<
/Type /Font
/BaseFont /Times-Roman
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
14 0 obj
<<
/Type /Font
/BaseFont /Times-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
15 0 obj
<<
/Type /Font
/BaseFont /Times-Italic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
16 0 obj
<<
/Type /Font
/BaseFont /Times-BoldItalic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
17 0 obj
<<
/Type /Font
/BaseFont /ZapfDingbats
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
18 0 obj
<<
/Type /Font
/BaseFont /Symbol
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
19 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 0
/Height 0
/ColorSpace /DeviceGray
/BitsPerComponent 8
/Length 90
/Filter /DCTDecode
>>
stream
https://backend.spurrinai.com/uploads/profile_photos/profile_photo-1740364973351-879307880
endstream
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
/F3 7 0 R
/F4 8 0 R
/F5 9 0 R
/F6 10 0 R
/F7 11 0 R
/F8 12 0 R
/F9 13 0 R
/F10 14 0 R
/F11 15 0 R
/F12 16 0 R
/F13 17 0 R
/F14 18 0 R
>>
/XObject <<
/I0 19 0 R
>>
>>
endobj
20 0 obj
<<
/Producer (jsPDF 2.5.2)
/CreationDate (D:20250224082612+05'30')
>>
endobj
21 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 22
0000000000 65535 f
0000005921 00000 n
0000007992 00000 n
0000000015 00000 n
0000000152 00000 n
0000005978 00000 n
0000006103 00000 n
0000006233 00000 n
0000006366 00000 n
0000006503 00000 n
0000006626 00000 n
0000006755 00000 n
0000006887 00000 n
0000007023 00000 n
0000007151 00000 n
0000007278 00000 n
0000007407 00000 n
0000007540 00000 n
0000007642 00000 n
0000007738 00000 n
0000008251 00000 n
0000008337 00000 n
trailer
<<
/Size 22
/Root 21 0 R
/Info 20 0 R
/ID [ <6829EA2DD83632F839990EB70AA270F4> <6829EA2DD83632F839990EB70AA270F4> ]
>>
startxref
8441
%%EOF

View File

@ -0,0 +1,604 @@
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 595.2799999999999727 841.8899999999999864]
/Contents 4 0 R
>>
endobj
4 0 obj
<<
/Length 5717
>>
stream
0.5670000000000001 w
0 G
q
141.7322834645669332 0 0 56.6929133858267775 28.3464566929133888 756.8506299212598378 cm
/I0 Do
Q
BT
/F1 16 Tf
18.3999999999999986 TL
0 g
198.4251968503937178 785.1970866141732586 Td
(Hospital Name: latestone) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
42.5196850393700814 728.5041732283464171 Td
(Mobile: 918798798798) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
396.8503937007874356 728.5041732283464171 Td
(Email: latestone@gmail.com) Tj
ET
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
40. 700.1577165354329964 80.3268222962861387 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
45. 686.65771653543311 Td
(Name) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
120.3268222962861387 700.1577165354329964 155.9000000000000341 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
125.3268222962861245 686.65771653543311 Td
(Email) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
276.2268222962861159 700.1577165354329964 90.1000000000000085 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
281.2268222962861159 686.65771653543311 Td
(Hospital Code) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
366.3268222962861387 700.1577165354329964 51.5 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
371.3268222962860818 686.65771653543311 Td
(Location) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
417.8268222962861387 700.1577165354329964 40.3000000000000043 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
422.8268222962860818 686.65771653543311 Td
(Status) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
458.1268222962860932 700.1577165354329964 97.1531777036134372 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
463.1268222962860932 686.65771653543311 Td
(Department) Tj
ET
0. G
0.5670000000000001 w
1. g
0.78 G
0.2834645669291339 w
1. g
40. 678.65771653543311 80.3268222962861387 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 665.15771653543311 Td
(latestone) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
120.3268222962861387 678.65771653543311 155.9000000000000341 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
125.3268222962861245 665.15771653543311 Td
(latestone@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
276.2268222962861159 678.65771653543311 90.1000000000000085 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
281.2268222962861159 665.15771653543311 Td
(XF3DHMGYN43P) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
366.3268222962861387 678.65771653543311 51.5 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
371.3268222962860818 665.15771653543311 Td
(N/A) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
417.8268222962861387 678.65771653543311 40.3000000000000043 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
422.8268222962860818 665.15771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
458.1268222962860932 678.65771653543311 97.1531777036134372 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
463.1268222962860932 665.15771653543311 Td
(N/A) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 657.15771653543311 80.3268222962861387 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 643.65771653543311 Td
(srikanth) Tj
T* (mallikarjun) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
120.3268222962861387 657.15771653543311 155.9000000000000341 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
125.3268222962861245 643.65771653543311 Td
(srikanth.mallikarjuna@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
276.2268222962861159 657.15771653543311 90.1000000000000085 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
281.2268222962861159 643.65771653543311 Td
(XF3DHMGYN43P) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
366.3268222962861387 657.15771653543311 51.5 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
371.3268222962860818 643.65771653543311 Td
(Delhi) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
417.8268222962861387 657.15771653543311 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
422.8268222962860818 643.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
458.1268222962860932 657.15771653543311 97.1531777036134372 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
463.1268222962860932 643.65771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 624.1577165354329964 80.3268222962861387 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 610.65771653543311 Td
(ramesh gupta) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
120.3268222962861387 624.1577165354329964 155.9000000000000341 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
125.3268222962861245 610.65771653543311 Td
(rameshgupta@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
276.2268222962861159 624.1577165354329964 90.1000000000000085 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
281.2268222962861159 610.65771653543311 Td
(XF3DHMGYN43P) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
366.3268222962861387 624.1577165354329964 51.5 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
371.3268222962860818 610.65771653543311 Td
(Delhi) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
417.8268222962861387 624.1577165354329964 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
422.8268222962860818 610.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
458.1268222962860932 624.1577165354329964 97.1531777036134372 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
463.1268222962860932 610.65771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
0. G
0.5670000000000001 w
0.78 G
0. w
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
>>
endobj
5 0 obj
<<
/Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
6 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
7 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
8 0 obj
<<
/Type /Font
/BaseFont /Helvetica-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
9 0 obj
<<
/Type /Font
/BaseFont /Courier
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
10 0 obj
<<
/Type /Font
/BaseFont /Courier-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
11 0 obj
<<
/Type /Font
/BaseFont /Courier-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
12 0 obj
<<
/Type /Font
/BaseFont /Courier-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
13 0 obj
<<
/Type /Font
/BaseFont /Times-Roman
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
14 0 obj
<<
/Type /Font
/BaseFont /Times-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
15 0 obj
<<
/Type /Font
/BaseFont /Times-Italic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
16 0 obj
<<
/Type /Font
/BaseFont /Times-BoldItalic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
17 0 obj
<<
/Type /Font
/BaseFont /ZapfDingbats
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
18 0 obj
<<
/Type /Font
/BaseFont /Symbol
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
19 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 0
/Height 0
/ColorSpace /DeviceGray
/BitsPerComponent 8
/Length 90
/Filter /DCTDecode
>>
stream
https://backend.spurrinai.com/uploads/profile_photos/profile_photo-1740364973351-879307880
endstream
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
/F3 7 0 R
/F4 8 0 R
/F5 9 0 R
/F6 10 0 R
/F7 11 0 R
/F8 12 0 R
/F9 13 0 R
/F10 14 0 R
/F11 15 0 R
/F12 16 0 R
/F13 17 0 R
/F14 18 0 R
>>
/XObject <<
/I0 19 0 R
>>
>>
endobj
20 0 obj
<<
/Producer (jsPDF 2.5.2)
/CreationDate (D:20250224082612+05'30')
>>
endobj
21 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 22
0000000000 65535 f
0000005921 00000 n
0000007992 00000 n
0000000015 00000 n
0000000152 00000 n
0000005978 00000 n
0000006103 00000 n
0000006233 00000 n
0000006366 00000 n
0000006503 00000 n
0000006626 00000 n
0000006755 00000 n
0000006887 00000 n
0000007023 00000 n
0000007151 00000 n
0000007278 00000 n
0000007407 00000 n
0000007540 00000 n
0000007642 00000 n
0000007738 00000 n
0000008251 00000 n
0000008337 00000 n
trailer
<<
/Size 22
/Root 21 0 R
/Info 20 0 R
/ID [ <6829EA2DD83632F839990EB70AA270F4> <6829EA2DD83632F839990EB70AA270F4> ]
>>
startxref
8441
%%EOF

View File

@ -0,0 +1,747 @@
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 595.2799999999999727 841.8899999999999864]
/Contents 4 0 R
>>
endobj
4 0 obj
<<
/Length 8084
>>
stream
0.5670000000000001 w
0 G
q
141.7322834645669332 0 0 56.6929133858267775 28.3464566929133888 756.8506299212598378 cm
/I0 Do
Q
BT
/F1 16 Tf
18.3999999999999986 TL
0 g
198.4251968503937178 785.1970866141732586 Td
(Hospital Name: test) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
42.5196850393700814 728.5041732283464171 Td
(Mobile: 916498798798) Tj
ET
BT
/F1 12 Tf
13.7999999999999989 TL
0 g
396.8503937007874356 728.5041732283464171 Td
(Email: testone@gmail.com) Tj
ET
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
40. 700.1577165354329964 26.6000000000000014 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
45. 686.65771653543311 Td
(S/N) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
66.5999999999999943 700.1577165354329964 59.9434536368753896 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
71.5999999999999943 686.65771653543311 Td
(Name) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
126.5434536368753839 700.1577165354329964 103.4000000000000199 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
131.5434536368753697 686.65771653543311 Td
(Email) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
229.9434536368754038 700.1577165354329964 92.4000000000000057 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
234.9434536368754038 686.65771653543311 Td
(Hospital Code) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
322.3434536368753811 700.1577165354329964 86.9999999999999858 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
327.3434536368753811 686.65771653543311 Td
(Location) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
409.3434536368753811 700.1577165354329964 40.3000000000000043 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
414.3434536368753811 686.65771653543311 Td
(Status) Tj
ET
0.1 0.74 0.61 rg
0.78 G
0. w
0.1 0.74 0.61 rg
449.6434536368753356 700.1577165354329964 105.6365463631438786 -21.4999999999999964 re
f
BT
/F2 10 Tf
11.5 TL
1. g
454.6434536368753356 686.65771653543311 Td
(Department) Tj
ET
0. G
0.5670000000000001 w
1. g
0.78 G
0.2834645669291339 w
1. g
40. 678.65771653543311 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 665.15771653543311 Td
(61) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 678.65771653543311 59.9434536368753896 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 665.15771653543311 Td
(test) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 678.65771653543311 103.4000000000000199 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 665.15771653543311 Td
(testone@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 678.65771653543311 92.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 665.15771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 678.65771653543311 86.9999999999999858 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 665.15771653543311 Td
(##############) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 678.65771653543311 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 665.15771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 678.65771653543311 105.6365463631438786 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 665.15771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 645.6577165354329964 26.6000000000000014 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 632.15771653543311 Td
(64) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 645.6577165354329964 59.9434536368753896 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 632.15771653543311 Td
(John Doee) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 645.6577165354329964 103.4000000000000199 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 632.15771653543311 Td
(johnn@example.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 645.6577165354329964 92.4000000000000057 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 632.15771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 645.6577165354329964 86.9999999999999858 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 632.15771653543311 Td
(New York) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 645.6577165354329964 40.3000000000000043 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 632.15771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 645.6577165354329964 105.6365463631438786 -21.4999999999999964 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 632.15771653543311 Td
(Cardiology) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 624.1577165354329964 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 610.65771653543311 Td
(65) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 624.1577165354329964 59.9434536368753896 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 610.65771653543311 Td
(Jane) Tj
T* (Smithh) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 624.1577165354329964 103.4000000000000199 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 610.65771653543311 Td
(janne@example.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 624.1577165354329964 92.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 610.65771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 624.1577165354329964 86.9999999999999858 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 610.65771653543311 Td
(Boston) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 624.1577165354329964 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 610.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 624.1577165354329964 105.6365463631438786 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 610.65771653543311 Td
(Neurology) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
40. 591.1577165354329964 26.6000000000000014 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
45. 577.65771653543311 Td
(66) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
66.5999999999999943 591.1577165354329964 59.9434536368753896 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
71.5999999999999943 577.65771653543311 Td
(adminone) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
126.5434536368753839 591.1577165354329964 103.4000000000000199 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
131.5434536368753697 577.65771653543311 Td
(admin@gmail.com) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
229.9434536368754038 591.1577165354329964 92.4000000000000057 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
234.9434536368754038 577.65771653543311 Td
(1ZOLW8USOW6Z) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
322.3434536368753811 591.1577165354329964 86.9999999999999858 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
327.3434536368753811 577.65771653543311 Td
(Andhra Pradesh) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
409.3434536368753811 591.1577165354329964 40.3000000000000043 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
414.3434536368753811 577.65771653543311 Td
(Active) Tj
ET
1. g
0.78 G
0.2834645669291339 w
1. g
449.6434536368753356 591.1577165354329964 105.6365463631438786 -32.9999999999999929 re
B
BT
/F1 10 Tf
11.5 TL
0.314 g
454.6434536368753356 577.65771653543311 Td
(Emergency) Tj
T* (Department) Tj
ET
0. G
0.5670000000000001 w
0.78 G
0. w
0. G
0.5670000000000001 w
0. G
0.5670000000000001 w
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
>>
endobj
5 0 obj
<<
/Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
6 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
7 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
8 0 obj
<<
/Type /Font
/BaseFont /Helvetica-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
9 0 obj
<<
/Type /Font
/BaseFont /Courier
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
10 0 obj
<<
/Type /Font
/BaseFont /Courier-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
11 0 obj
<<
/Type /Font
/BaseFont /Courier-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
12 0 obj
<<
/Type /Font
/BaseFont /Courier-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
13 0 obj
<<
/Type /Font
/BaseFont /Times-Roman
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
14 0 obj
<<
/Type /Font
/BaseFont /Times-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
15 0 obj
<<
/Type /Font
/BaseFont /Times-Italic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
16 0 obj
<<
/Type /Font
/BaseFont /Times-BoldItalic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
17 0 obj
<<
/Type /Font
/BaseFont /ZapfDingbats
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
18 0 obj
<<
/Type /Font
/BaseFont /Symbol
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
19 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 0
/Height 0
/ColorSpace /DeviceGray
/BitsPerComponent 8
/Length 96
/Filter /DCTDecode
>>
stream
https://backendlatest.spurrinai.com/uploads/profile_photos/profile_photo-1747114697812-755139618
endstream
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
/F3 7 0 R
/F4 8 0 R
/F5 9 0 R
/F6 10 0 R
/F7 11 0 R
/F8 12 0 R
/F9 13 0 R
/F10 14 0 R
/F11 15 0 R
/F12 16 0 R
/F13 17 0 R
/F14 18 0 R
>>
/XObject <<
/I0 19 0 R
>>
>>
endobj
20 0 obj
<<
/Producer (jsPDF 2.5.2)
/CreationDate (D:20250513111056+05'30')
>>
endobj
21 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 22
0000000000 65535 f
0000008288 00000 n
0000010365 00000 n
0000000015 00000 n
0000000152 00000 n
0000008345 00000 n
0000008470 00000 n
0000008600 00000 n
0000008733 00000 n
0000008870 00000 n
0000008993 00000 n
0000009122 00000 n
0000009254 00000 n
0000009390 00000 n
0000009518 00000 n
0000009645 00000 n
0000009774 00000 n
0000009907 00000 n
0000010009 00000 n
0000010105 00000 n
0000010624 00000 n
0000010710 00000 n
trailer
<<
/Size 22
/Root 21 0 R
/Info 20 0 R
/ID [ <DC39A51F89A29BBA0FA16AC2BB44F2CE> <DC39A51F89A29BBA0FA16AC2BB44F2CE> ]
>>
startxref
10814
%%EOF

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB