list all the ENT lectures and tutorials. i have Internals from 3rd August,2026 ( Final Year MBBS ).

Reading File
Running Command

cd /home/daytona/workspace/attachments/c2d8b31d-0abd-4f9e-a6bb-ce13dabbcba7/ && python3 -c " import pdfplumber with pdfplumber.open('Detailed Timetable_Final MBBS_2022 Batch.pdf') as pdf: print(f'Total pages: {len(pdf.pages)}') # Extract text from first few pages to understand structure for i, page in enumerate(pdf.pages[:3]): print(f'\\n=== PAGE {i+1} ===') text = page.extract_text() print(text[:2000] if text else 'No text') "

Running Command

cd /home/daytona/workspace/attachments/c2d8b31d-0abd-4f9e-a6bb-ce13dabbcba7/ && python3 -c " import pdfplumber import re ent_entries = [] with pdfplumber.open('Detailed Timetable_Final MBBS_2022 Batch.pdf') as pdf: for page_num, page in enumerate(pdf.pages): text = page.extract_text() if not text: continue lines = text.split('\n') for line in lines: if 'ENT' in line.upper(): ent_entries.append((page_num+1, line.strip())) for page, entry in ent_entries: print(f'[Page {page}] {entry}') "

Running Command

cd /home/daytona/workspace/attachments/c2d8b31d-0abd-4f9e-a6bb-ce13dabbcba7/ && python3 -c " import pdfplumber import re # Extract ALL text across all pages, then find ENT entries with their dates results = [] with pdfplumber.open('Detailed Timetable_Final MBBS_2022 Batch.pdf') as pdf: for page_num, page in enumerate(pdf.pages): text = page.extract_text() if not text: continue lines = text.split('\n') current_date = None for i, line in enumerate(lines): # Look for date pattern dd/mm/yy date_match = re.match(r'(\d{2}/\d{2}/\d{2})', line) if date_match: current_date = date_match.group(1) if 'ENT' in line.upper() and current_date: # Check if this line has ENT content that's meaningful if any(kw in line.upper() for kw in ['ENT TUT', 'ENT:', 'ENT LECT', 'ENT SDL', 'ENT LECTURE', 'INTERNAL ASSESSMENT - ENT', 'PRELIM', 'UNIVERSITY', 'ENT AND', 'IN ENT']): results.append((current_date, page_num+1, line.strip())) elif 'ENT' in line.upper() and not line.upper().startswith('AND') and not line.upper().startswith('OF') and not line.upper().startswith('FEATURES') and not line.upper().startswith('INVESTIGATIONS'): # Check if it starts with a date or contains specific ENT markers if re.search(r'ENT[:\s]', line.upper()) or 'ENT TUT' in line.upper() or 'ENT SDL' in line.upper(): results.append((current_date, page_num+1, line.strip())) for date, page, entry in results: print(f'{date} [p{page}]: {entry}') "

Running Command

cd /home/daytona/workspace/attachments/c2d8b31d-0abd-4f9e-a6bb-ce13dabbcba7/ && python3 -c " import pdfplumber import re # Need to get the FULL context of each ENT entry - read multi-line blocks # The timetable is structured with dates and multi-column entries # Let's extract by looking at date-anchored blocks with full text with pdfplumber.open('Detailed Timetable_Final MBBS_2022 Batch.pdf') as pdf: for page_num, page in enumerate(pdf.pages): text = page.extract_text() if not text: continue lines = text.split('\n') for i, line in enumerate(lines): # Look for lines that start with or contain core ENT lecture/tutorial markers if re.search(r'ENT\s*:', line) or re.search(r'ENT TUT', line) or 'INTERNAL ASSESSMENT - ENT' in line or 'PRELIM THEORY - ENT' in line or 'UNIVERSITY THEORY - ENT' in line or 'ENT SDL' in line or 'ENT TUT: TRAUMA' in line or 'ENT TUT: STRIDOR' in line or 'ENT TUT: EMERGENCY' in line or 'ENT TUT: MANAGEMENT' in line or 'ENT TUT: ANATOMY' in line: # Get date from this line or previous lines date = '' date_match = re.search(r'(\d{2}/\d{2}/\d{2})', line) if date_match: date = date_match.group(1) else: # Search backwards for date for j in range(i-1, max(i-5, -1), -1): dm = re.search(r'(\d{2}/\d{2}/\d{2})', lines[j]) if dm: date = dm.group(1) break # Get next line for continuation next_line = lines[i+1].strip() if i+1 < len(lines) else '' next_line2 = lines[i+2].strip() if i+2 < len(lines) else '' print(f'DATE: {date}') print(f' LINE: {line.strip()}') if next_line and not re.match(r'\d{2}/\d{2}/\d{2}', next_line): print(f' CONT: {next_line}') if next_line2 and not re.match(r'\d{2}/\d{2}/\d{2}', next_line2) and ('ENT' in next_line2.upper() or next_line2.startswith('\"') or next_line2.startswith(\"'\")): print(f' CONT2: {next_line2}') print() " 2>&1 | head -300

Running Command

cd /home/daytona/workspace/attachments/c2d8b31d-0abd-4f9e-a6bb-ce13dabbcba7/ && python3 << 'EOF' import pdfplumber import re # Strategy: extract full text from each page, then do a more careful parse # tracking the date + day + full row content for ENT entries with pdfplumber.open('Detailed Timetable_Final MBBS_2022 Batch.pdf') as pdf: # Get all text with proper line tracking full_text_pages = [] for page_num, page in enumerate(pdf.pages): text = page.extract_text() full_text_pages.append((page_num+1, text or '')) # Process pages 1-14 (Jan 2026 to Aug 2026 internals) - BEFORE internals # Then pages 14+ (after internals) all_lines_with_pages = [] for pnum, text in full_text_pages: for line in text.split('\n'): all_lines_with_pages.append((pnum, line)) # Now do a thorough parse current_date = None current_day = None ent_sessions = [] i = 0 while i < len(all_lines_with_pages): pnum, line = all_lines_with_pages[i] # Extract date from line date_match = re.match(r'(\d{2}/\d{2}/\d{2})\s+(\w+)', line) if date_match: current_date = date_match.group(1) current_day = date_match.group(2) # Check if this line or nearby lines are ENT-specific sessions is_ent = False ent_topic = '' session_type = '' # Patterns for ENT lectures (8:30-9:30 slot usually, full-row marker) lect_match = re.search(r'(ENT\s*:\s*[^|]+?)(?:CLINICS|LUNCH|\s{3,})', line) if lect_match and re.match(r'\d{2}/\d{2}/\d{2}', line): is_ent = True ent_topic = lect_match.group(1).strip() session_type = 'LECTURE' # Patterns for ENT tutorials elif 'ENT TUT:' in line: is_ent = True session_type = 'TUTORIAL' # Collect topic - may span next lines topic_parts = [line.strip()] j = i + 1 while j < len(all_lines_with_pages) and j < i + 4: next_pnum, next_line = all_lines_with_pages[j] if re.match(r'\d{2}/\d{2}/\d{2}', next_line): break # Check if the continuation is actually part of ENT TUT content # (not a surgery tutorial or ortho tut continuation) if re.match(r'(ORTHO|SURGERY|MEDICINE|OBGY|PSY|RADIO|ANAES|OPHTHAL|PEDIATRICS|AETCOM)', next_line.strip(), re.IGNORECASE): break if next_line.strip() and len(next_line.strip()) > 10: topic_parts.append(next_line.strip()) j += 1 ent_topic = ' '.join(topic_parts) # ENT SDL elif 'ENT SDL' in line: is_ent = True session_type = 'SDL' ent_topic = 'ENT SDL' # Internal assessment ENT elif 'INTERNAL ASSESSMENT - ENT' in line: is_ent = True session_type = 'INTERNAL ASSESSMENT' ent_topic = 'Internal Assessment - ENT' # Prelim / University exam elif 'PRELIM THEORY - ENT' in line: is_ent = True session_type = 'PRELIM' ent_topic = 'Prelim Theory - ENT' elif 'PROPOSED UNIVERSITY THEORY - ENT' in line: is_ent = True session_type = 'UNIVERSITY EXAM' ent_topic = 'Proposed University Theory - ENT' if is_ent and current_date: # Convert date to dd/mm/yyyy for readability day, mon, yr = current_date.split('/') full_date = f'{day}/{mon}/20{yr}' ent_sessions.append({ 'date': full_date, 'day': current_day or '', 'type': session_type, 'topic': ent_topic }) i += 1 # Print results print(f"Total ENT sessions found: {len(ent_sessions)}\n") lect_count = 0 tut_count = 0 sdl_count = 0 for s in ent_sessions: print(f"[{s['type']}] {s['date']} ({s['day']}) | {s['topic'][:120]}") if s['type'] == 'LECTURE': lect_count += 1 elif s['type'] == 'TUTORIAL': tut_count += 1 elif s['type'] == 'SDL': sdl_count += 1 print(f"\n--- SUMMARY ---") print(f"Lectures: {lect_count}") print(f"Tutorials: {tut_count}") print(f"SDLs: {sdl_count}") EOF

Running Command

cd /home/daytona/workspace/attachments/c2d8b31d-0abd-4f9e-a6bb-ce13dabbcba7/ && python3 << 'EOF' import pdfplumber import re # More targeted extraction - get the full ENT topic by reading broader context # Let's specifically look at the blocks around each ENT session with pdfplumber.open('Detailed Timetable_Final MBBS_2022 Batch.pdf') as pdf: all_text = [] for page_num, page in enumerate(pdf.pages): text = page.extract_text() if text: all_text.extend([(page_num+1, line) for line in text.split('\n')]) # Find all ENT lecture blocks (lines starting with date + ENT:) # These are the 8:30am slot lectures print("=" * 80) print("ENT LECTURES (8:30-9:30am slot)") print("=" * 80) i = 0 while i < len(all_text): pnum, line = all_text[i] if re.match(r'\d{2}/\d{2}/\d{2}\s+\w+\s+ENT\s*:', line): date_match = re.match(r'(\d{2}/\d{2}/\d{2})\s+(\w+)\s+(ENT\s*:.+?)(?:\s{2,}CLINICS|\s{2,}LUNCH|\s*$)', line) if date_match: day, mon, yr = date_match.group(1).split('/') print(f" {day}/{mon}/20{yr} ({date_match.group(2)}): {date_match.group(3).strip()}") else: # Print next few lines for context print(f" LINE: {line.strip()}") for j in range(1, 3): if i+j < len(all_text): print(f" +{j}: {all_text[i+j][1].strip()}") i += 1 print() print("=" * 80) print("ENT TUTORIALS (afternoon slot)") print("=" * 80) # Now find tutorial lines with more context i = 0 tut_num = 0 while i < len(all_text): pnum, line = all_text[i] if 'ENT TUT:' in line: tut_num += 1 # Find date date = '' for j in range(i, max(i-8, -1), -1): dm = re.search(r'(\d{2}/\d{2}/\d{2})', all_text[j][1]) if dm: date = dm.group(1) day_match = re.search(r'(\d{2}/\d{2}/\d{2})\s+(\w+)', all_text[j][1]) day_name = day_match.group(2) if day_match else '' break d, m, y = date.split('/') if date else ('??','??','??') # Extract full topic topic_parts = [] # Start from the ENT TUT part of current line ent_pos = line.find('ENT TUT:') topic_parts.append(line[ent_pos:].strip()) # Check next lines for continuation for j in range(1, 5): if i+j >= len(all_text): break next_line = all_text[i+j][1].strip() if not next_line: break if re.match(r'\d{2}/\d{2}/\d{2}', next_line): break if re.match(r'(ORTHO TUT|SURGERY TUT|MEDICINE|OBGY|PEDIATRICS|AETCOM|PSY \d|RADIO TUT|ANAESTHESIA TUT|OPHTHAL TUT|PUL MED|DY PATIL)', next_line, re.IGNORECASE): break # If it seems like a continuation of ENT content topic_parts.append(next_line) full_topic = ' '.join(topic_parts) # Clean up full_topic = re.sub(r'\s+', ' ', full_topic).strip() print(f" TUT {tut_num:02d} | {d}/{m}/20{y} ({day_name}): {full_topic[:150]}") i += 1 # Missing lectures - check for ones where ENT lecture appears mid-line print() print("=" * 80) print("ENT LECTURES (found mid-line / separate blocks)") print("=" * 80) i = 0 while i < len(all_text): pnum, line = all_text[i] # Lines that contain ENT: but NOT starting with date if 'ENT:' in line and not re.match(r'\d{2}/\d{2}/\d{2}', line): if re.search(r'ENT\s*:\s*[A-Z]', line): # Find associated date date = '' day_name = '' for j in range(i-1, max(i-10, -1), -1): dm = re.search(r'(\d{2}/\d{2}/\d{2})\s+(\w+)', all_text[j][1]) if dm: date = dm.group(1) day_name = dm.group(2) break if date: d, m, y = date.split('/') ent_content = re.search(r'ENT\s*:\s*(.+)', line) topic = ent_content.group(1).strip() if ent_content else line.strip() print(f" {d}/{m}/20{y} ({day_name}): ENT: {topic[:120]}") i += 1 EOF

Running Command

cd /home/daytona/workspace/attachments/c2d8b31d-0abd-4f9e-a6bb-ce13dabbcba7/ && python3 << 'EOF' import pdfplumber import re # Fix the missing dates for TUT 02 & 03, and get full topics for truncated ones # Also confirm the "mid-line" lecture dates more precisely with pdfplumber.open('Detailed Timetable_Final MBBS_2022 Batch.pdf') as pdf: all_text = [] for page_num, page in enumerate(pdf.pages): text = page.extract_text() if text: all_text.extend([(page_num+1, line) for line in text.split('\n')]) # Print context around problem areas print("=== LOOKING FOR TUT 02 (Functional anatomy of ear) ===") for i, (pnum, line) in enumerate(all_text): if 'Functional anatomy of ear' in line: for j in range(max(0, i-8), min(len(all_text), i+5)): marker = ">>>" if j == i else " " print(f"{marker} [{all_text[j][0]}] {all_text[j][1]}") print() print("=== LOOKING FOR TUT 03 (Parts, blood supply) ===") for i, (pnum, line) in enumerate(all_text): if 'Parts, blood supply' in line: for j in range(max(0, i-8), min(len(all_text), i+5)): marker = ">>>" if j == i else " " print(f"{marker} [{all_text[j][0]}] {all_text[j][1]}") print() print("=== ENT ACUTE AND CHRONIC + CONTEXT ===") for i, (pnum, line) in enumerate(all_text): if 'ACUTE AND CHRONIC CONDITIONS' in line.upper() and 'ENT' in line.upper(): for j in range(max(0, i-5), min(len(all_text), i+8)): marker = ">>>" if j == i else " " print(f"{marker} [{all_text[j][0]}] {all_text[j][1]}") print() print("=== ENT MALIGNANCY + CONTEXT ===") for i, (pnum, line) in enumerate(all_text): if 'MALIGNANCY IN ENT' in line.upper(): for j in range(max(0, i-5), min(len(all_text), i+8)): marker = ">>>" if j == i else " " print(f"{marker} [{all_text[j][0]}] {all_text[j][1]}") print() print("=== ENT PEDIATRIC DISEASES + CONTEXT ===") for i, (pnum, line) in enumerate(all_text): if 'PEADIATRIC DISEASES' in line.upper() or 'PEDIATRIC DISEASES IN ENT' in line.upper(): for j in range(max(0, i-5), min(len(all_text), i+8)): marker = ">>>" if j == i else " " print(f"{marker} [{all_text[j][0]}] {all_text[j][1]}") print() print("=== ENT TUT DESCRIBE (TUT 08 - 23/04) ===") for i, (pnum, line) in enumerate(all_text): if 'ENT TUT: Describe the' in line: for j in range(max(0, i-5), min(len(all_text), i+8)): marker = ">>>" if j == i else " " print(f"{marker} [{all_text[j][0]}] {all_text[j][1]}") print() EOF

Running Command

cd /home/daytona/workspace/attachments/c2d8b31d-0abd-4f9e-a6bb-ce13dabbcba7/ && python3 << 'EOF' import pdfplumber import re # Get full context for remaining unclear tutorials with pdfplumber.open('Detailed Timetable_Final MBBS_2022 Batch.pdf') as pdf: all_text = [] for page_num, page in enumerate(pdf.pages): text = page.extract_text() if text: all_text.extend([(page_num+1, line) for line in text.split('\n')]) targets = [ ('TUT 09 - Describe and discuss', 'ENT TUT: "Describe and discuss the'), ('TUT 10 - Clinical features choose', 'ENT TUT: "Clinical features,choose the'), ('TUT 11 - Clinical features Otosclerosis', 'ENT TUT: Clinical features,'), ('TUT 13 - Describe national', 'ENT TUT: " Describe the national'), ('TUT 14 - Observe 30/07', 'ENT TUT: Observe and describe the'), ('TUT 15 - Observe 20/08', 'ENT TUT: " Observe and describe the'), ('TUT 17 - Health hazards', 'ENT TUT: "Describe the health hazards'), ('TUT 18 - Observe 08/10', 'ENT TUT: "Observe and describe the'), ('TUT 22 - MANAGEMENT OF VOCAL', 'ENT TUT: "MANAGEMENT OF VOCAL'), ('TUT 24 - ANATOMY OF', 'ENT TUT: "ANATOMY OF'), ('TUT 25 - STRIDOR', 'ENT TUT: STRIDOR AND ITS'), ] for label, search_str in targets: print(f"\n=== {label} ===") found = False for i, (pnum, line) in enumerate(all_text): if search_str in line and not found: found = True for j in range(max(0, i-3), min(len(all_text), i+10)): marker = ">>>" if j == i else " " print(f"{marker} [{all_text[j][0]}] {all_text[j][1]}") break EOF

Running Command

cd /home/daytona/workspace/attachments/c2d8b31d-0abd-4f9e-a6bb-ce13dabbcba7/ && python3 << 'EOF' import pdfplumber import re with pdfplumber.open('Detailed Timetable_Final MBBS_2022 Batch.pdf') as pdf: all_text = [] for page_num, page in enumerate(pdf.pages): text = page.extract_text() if text: all_text.extend([(page_num+1, line) for line in text.split('\n')]) # Get full context for TUT 07 (Morphology, nerve supply) and TUT 19 (22/10) # and the MIDDLE EAR lecture, EPISTAXIS lecture, and the 10/06 RHINITIS lecture for label, search_str in [ ('TUT 07 - Morphology, nerve supply 09/04', 'ENT TUT: Morphology, nerve supply,'), ('ENT: MIDDLE EAR DISEASE 07/01', 'ENT: MIDDLE EAR DISEASE'), ('ENT: EPISTAXIS 29/04', 'ENT: EPISTAXIS and TRAUMA'), ('ENT: RHINITIS 10/06', 'ENT: RHINITIS'), ('TUT 19 - 22/10 OBSERVE', 'ENT TUT: "Observe and describe the'), # first occurrence on 22/10 ('TUT 20 & 21 - 05/11 & 19/11', 'ENT TUT: "Observe and describe the'), ('TUT 16 - 03/09 OBSERVE', 'ENT TUT: Observe and describe the'), ('TUT 23 EMERGENCY', 'PROCEDURES IN ENT'), ]: print(f"\n=== {label} ===") occurrences = [] for i, (pnum, line) in enumerate(all_text): if search_str in line: occurrences.append((i, pnum, line)) for idx, (i, pnum, line) in enumerate(occurrences[:4]): print(f"--- Occurrence {idx+1} ---") for j in range(max(0, i-4), min(len(all_text), i+8)): marker = ">>>" if j == i else " " print(f"{marker} [{all_text[j][0]}] {all_text[j][1][:100]}") EOF

Now I have all the data needed. Let me compile the complete, clean list:

ENT Sessions - Final MBBS 2022 Batch (DY Patil School of Medicine)

Internals: 07/08/2026 (Friday) | Prelim: 13/02/2027 | University Exam: 27/03/2027

LECTURES (8:30 - 9:30 am)

#DateDayTopic
107/01/2026WednesdayMiddle Ear Disease (Acute) - EN4.5, PE28.4, EN4.3
205/02/2026ThursdayFacial Nerve and Diseases - EN4.18
305/03/2026ThursdayVertigo - EN4.19, EN4.20
402/04/2026ThursdayHearing Loss - EN4.12, EN4.14, EN4.15
529/04/2026WednesdayEpistaxis and Trauma in ENT - EN4.30, EN4.32, EN4.31
610/06/2026WednesdayRhinitis, Sinusitis and Polyps - EN4.27, EN4.28, EN4.29, PE31.1, EN4.33, EN4.25
729/07/2026WednesdayAcute and Chronic Conditions of Salivary Gland - EN4.36
826/08/2026WednesdayMalignancy in ENT - EN2.11, DE4.2, SU.20, EN4.34, EN4.35, EN4.46
923/09/2026WednesdayPaediatric Diseases in ENT and Acute & Chronic Conditions of Pharynx and Tonsil - PE28.6, PE28.5, PE28.8, EN4.26, PE28.1, PE28.2, PE28.3, EN4.39
1022/10/2026ThursdayStridor and Its Management

TUTORIALS (afternoon slot: 2:30 - 4:30 pm)

#DateDayTopic
101/01/2026ThursdayBoundaries, Contents, Relations and Functional Anatomy of Middle Ear and Auditory Tube
215/01/2026ThursdayFunctional Anatomy of Ear, Auditory Pathways and Physiology of Hearing
329/01/2026ThursdayParts, Blood Supply and Nerve Supply of External Ear
412/02/2026ThursdayPathophysiology of Deafness
526/02/2026ThursdayIndications and Steps Involved in Mastoidectomy
612/03/2026ThursdayFeatures of Nasal Septum (clinical features, investigations, management)
709/04/2026ThursdayMorphology, Nerve Supply and Blood Supply of Larynx
823/04/2026ThursdayPathophysiology of Common Diseases in ENT
907/05/2026ThursdayHearing Loss in the Elderly - aetiopathogenesis, clinical presentation, identification, functional changes, acute care, stabilization, management and rehabilitation
1004/06/2026ThursdayDischarging Ear - clinical features, investigations and principles of management
1118/06/2026ThursdayClinical Features, Investigations and Principles of Management of Otosclerosis
1202/07/2026ThursdayRadiological, Microbiological & Histological Investigations Relevant to ENT Disorders - X-rays of mastoid, PNS, nasopharynx, neck
1316/07/2026ThursdayNational Programs for Prevention of Deafness, Cancer, Noise & Environmental Pollution
1430/07/2026ThursdayIndications and Steps Involved in Surgical Procedures in the Ear
1520/08/2026ThursdayRemoval of Foreign Bodies from Ear, Nose and Throat
1603/09/2026ThursdayIndications and Steps Involved in Myringotomy, Myringoplasty and Mastoidectomy
1717/09/2026ThursdayHealth Hazards of Air, Water, Noise, Radiation and Pollution; Local Anaesthesia in ENT
1808/10/2026ThursdayOtomicroscopic Examination - indications and performance in a simulated environment
1922/10/2026ThursdayDiagnostic Nasal Endoscopy - indications and performance
2005/11/2026ThursdayDiagnostic Nasal Endoscopy (continued / repeated practice)
2119/11/2026ThursdayDiagnostic Nasal Endoscopy (continued / repeated practice)
2203/12/2026ThursdayManagement of Vocal Cord Palsy
2317/12/2026ThursdayEmergency Procedures in ENT
2431/12/2026ThursdayAnatomy of Oesophagus and Management of Dysphagia
2514/01/2027ThursdayStridor and Its Management
2629/01/2027FridayTrauma in ENT

SDLs (Self Directed Learning - Friday afternoons)

#DateDayNotes
121/08/2026FridayENT SDL
204/09/2026FridayENT SDL
318/09/2026FridayENT SDL (Health hazards / Local anaesthesia in ENT)
409/10/2026FridayENT SDL (Otomicroscopic examination)
523/10/2026FridayENT SDL (Diagnostic nasal endoscopy)

Assessments & Exams

EventDateDay
Internal Assessment - ENT07/08/2026Friday
Prelim Theory - ENT13/02/2027Saturday
Proposed University Theory - ENT27/03/2027Saturday

Quick summary: 10 Lectures, 26 Tutorials, 5 SDLs before your Internals on 07/08/2026. After internals, there are 16 more tutorials, 5 more SDLs, and 1 more lecture until the Prelim.
As of today (26/06/2026), you are currently between TUT 13 (16/07) and TUT 14 (30/07) - meaning TUT 13 is upcoming and you have covered all sessions up to TUT 12.
This is a shared conversation. Sign in to Orris to start your own chat.