generate the a commom cilinical opd cases with prescribtion writing style and include complains and diagnosis , medicine as a govt medical college and hospital of odisha and add all neccessary details

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

continue

Sample OPD Case Sheets & Prescriptions — Govt. Medical College & Hospital (Odisha) Format

Below are commonly seen OPD cases written in the standard format used in Odisha's government medical colleges (e.g., SCB MCH Cuttack, VIMSAR Burla, MKCG MCH Berhampur). Each includes the header, chief complaints, examination findings, diagnosis, and prescription (Rx) exactly as typically written on OPD prescription slips/case sheets. These are for educational/training purposes only.

Case 1: Upper Respiratory Tract Infection (Common Cold / Pharyngitis)

GOVT. MEDICAL COLLEGE & HOSPITAL, ODISHA Dept. of General Medicine — OPD
FieldDetails
NameRina Behera
Age/Sex28 yrs / Female
OPD Reg. No.24589
Date17/08/2026
AddressCuttack, Odisha
C/O (Chief Complaints):
  • Sore throat x 3 days
  • Running nose, sneezing x 3 days
  • Mild fever (documented 100.2°F) x 2 days
  • Dry cough x 2 days
H/O Present Illness: Gradual onset, no h/o breathlessness, no h/o chest pain, no similar contact h/o significant.
O/E (On Examination):
  • Temp: 99.8°F, PR: 88/min, BP: 118/76 mmHg, RR: 18/min, SpO2: 98% RA
  • Throat: Congested, tonsils mildly enlarged, no exudates
  • Chest: B/L clear, no added sounds
  • CVS: S1S2 normal
Diagnosis: Acute Viral Upper Respiratory Tract Infection (URTI)
Rx:
  1. Tab. Paracetamol 500 mg — 1 tab PO TDS x 3 days (SOS if fever >100°F)
  2. Tab. Cetirizine 10 mg — 1 tab PO OD (night) x 5 days
  3. Tab. Levocetirizine + Montelukast — skip (not needed, avoid polypharmacy) (alternative to #2, not both)
  4. Syp. Ambroxol — 10 ml PO TDS x 5 days
  5. Tab. Vit C 500 mg — OD x 5 days
  6. Warm saline gargles — TDS
  7. Steam inhalation — BD
Advice: Adequate hydration, rest, avoid cold food/drinks. Review SOS or if fever persists >3 days/breathlessness develops.

Case 2: Essential Hypertension (Follow-up)

GOVT. MEDICAL COLLEGE & HOSPITAL, ODISHA Dept. of General Medicine — OPD (Medicine Follow-up)
FieldDetails
NameBishnu Charan Sahoo
Age/Sex54 yrs / Male
OPD Reg. No.24601
Date17/08/2026
C/O:
  • Occasional headache, mostly occipital x 1 week
  • No chest pain, no palpitation, no blurring of vision
  • On follow-up for known HTN (dx 2 yrs back)
O/E:
  • BP: 156/98 mmHg (sitting, repeat after 15 min: 150/94 mmHg)
  • PR: 82/min regular
  • No pedal edema, JVP normal
  • CVS: S1S2 normal, no murmur
  • Fundus: not done today (advised)
Diagnosis: Essential Hypertension — Uncontrolled (Stage 2), on treatment
Rx:
  1. Tab. Telmisartan 40 mg — 1 tab PO OD (morning) x 30 days
  2. Tab. Amlodipine 5 mg — 1 tab PO OD (morning) x 30 days
  3. Tab. Ecosprin (Aspirin) 75 mg — 1 tab PO OD (after food, night) x 30 days
  4. Tab. Atorvastatin 10 mg — 1 tab PO OD (night) x 30 days
Advice:
  • Low salt diet (<5 g/day), regular exercise, weight reduction
  • Self BP monitoring, maintain BP diary
  • Investigations advised: RFT, Lipid profile, Fasting/PP blood sugar, ECG, Urine routine
  • Review after 2 weeks with reports

Case 3: Type 2 Diabetes Mellitus (New Case)

GOVT. MEDICAL COLLEGE & HOSPITAL, ODISHA Dept. of General Medicine — OPD
FieldDetails
NameAshok Kumar Nayak
Age/Sex47 yrs / Male
OPD Reg. No.24615
Date17/08/2026
C/O:
  • Increased thirst and frequency of urination x 1 month
  • Generalized weakness, easy fatigability x 1 month
  • Unintentional weight loss (~3 kg) x 1 month
  • No h/o fever, no burning micturition
O/E:
  • Ht: 165 cm, Wt: 78 kg, BMI: 28.6 kg/m² (overweight)
  • BP: 128/82 mmHg, PR: 80/min
  • No pallor, no icterus, no pedal edema
  • Systemic exam: WNL
Investigations (today, RBS by glucometer): RBS — 268 mg/dl
Diagnosis: Newly diagnosed Type 2 Diabetes Mellitus
Rx:
  1. Tab. Metformin 500 mg — 1 tab PO BD (after breakfast & dinner) x 15 days, then review
  2. Tab. Glimepiride 1 mg — 1 tab PO OD (before breakfast) x 15 days
  3. Tab. Vitamin B-complex — 1 tab PO OD x 15 days
Investigations Advised: FBS, PPBS, HbA1c, RFT, LFT, Lipid profile, Urine R/E, Fundus examination
Advice:
  • Diabetic diet chart explained, avoid sugar/sweets/refined carbs
  • Regular physical activity 30-45 min/day
  • Foot care education given
  • Review after 15 days with reports; refer to Dept. of Endocrinology if uncontrolled

Case 4: Acute Gastroenteritis

GOVT. MEDICAL COLLEGE & HOSPITAL, ODISHA Dept. of General Medicine — OPD
FieldDetails
NameSunita Pradhan
Age/Sex32 yrs / Female
OPD Reg. No.24630
Date17/08/2026
C/O:
  • Loose watery stools x 6-7 episodes/day x 2 days
  • Vomiting x 3-4 episodes x 1 day
  • Mild abdominal cramps x 2 days
  • No blood/mucus in stool, no fever
O/E:
  • BP: 106/70 mmHg, PR: 96/min
  • Mild dehydration — dry tongue, skin pinch normal
  • Abdomen: soft, mild diffuse tenderness, bowel sounds increased
  • No signs of severe dehydration (no sunken eyes, no hypotension)
Diagnosis: Acute Gastroenteritis with Mild Dehydration
Rx:
  1. ORS solution — 1 packet in 1 litre water, sips frequently, ad lib
  2. Tab. Ondansetron 4 mg — 1 tab PO SOS (if vomiting) BD x 2 days
  3. Tab. Metronidazole 400 mg — 1 tab PO TDS x 5 days
  4. Cap. Racecadotril 100 mg — 1 cap PO TDS x 3 days
  5. Tab. Paracetamol 500 mg — SOS for fever
  6. Sachet Zinc sulfate — OD x 5 days (if applicable)
Advice: Plenty of oral fluids, avoid oily/spicy food, home-made semi-solid diet (khichdi, curd rice). Review if vomiting persists, blood in stool, or signs of dehydration worsen — advised admission if not improving.

Case 5: Acute Low Back Pain (Musculoskeletal)

GOVT. MEDICAL COLLEGE & HOSPITAL, ODISHA Dept. of Orthopaedics — OPD
FieldDetails
NameDebendra Jena
Age/Sex38 yrs / Male
OPD Reg. No.24642
Date17/08/2026
C/O:
  • Pain in lower back x 5 days, after lifting heavy weight
  • Pain aggravated on bending, relieved on rest
  • No radiation to lower limbs, no tingling/numbness, no bladder/bowel involvement
O/E:
  • Local tenderness over paraspinal muscles L4-L5 region
  • SLR (Straight Leg Raise) test: Negative bilaterally
  • No neurological deficit, power 5/5 in both lower limbs, reflexes normal
  • Gait: normal
Diagnosis: Acute Mechanical Low Back Pain (Lumbar Muscle Strain)
Rx:
  1. Tab. Aceclofenac 100 mg + Paracetamol 325 mg — 1 tab PO BD (after food) x 5 days
  2. Tab. Thiocolchicoside 4 mg — 1 tab PO BD x 5 days
  3. Cap. Pantoprazole 40 mg — 1 cap PO OD (before breakfast) x 5 days
  4. Diclofenac gel — local application BD x 5 days
  5. Lumbo-sacral belt — advised
Advice: Rest for 2-3 days, avoid heavy lifting/bending, hot fomentation BD, back strengthening exercises after acute phase. X-ray LS spine (AP/Lateral) advised if no improvement in 1 week. Review after 1 week.

General notes on this prescription style (as used in Odisha govt. medical colleges):

  • Header always carries hospital/college name, department, and OPD/IPD registration number.
  • Complaints are recorded as "C/O" with duration in days/weeks (Odisha OPD convention: duration always mentioned against each complaint).
  • Examination is split into general survey (O/E) and systemic examination.
  • Diagnosis is written as a provisional diagnosis unless investigations confirm it.
  • Drugs are prescribed by generic/brand name, dose, route, frequency (using OD/BD/TDS/QID/SOS), and duration, per hospital antibiotic and rational prescription policy.
  • Government hospitals in Odisha largely prescribe from the Essential Drug List (EDL) available free through the hospital pharmacy under the State's free drug distribution scheme, hence common generics (Paracetamol, Metformin, Amlodipine, ORS, Metronidazole, etc.) dominate.
  • Every prescription ends with advice (diet, lifestyle, investigations) and a follow-up/review date, and doctor's signature, name, and registration number at the bottom (not shown above for brevity, but standard: "Dr. _______, MBBS/MD, Regn No. _______").
Let me know if you want any specific specialty case set (Pediatrics, Obstetrics, Surgery, Psychiatry, Skin/VD, ENT, Ophthalmology) added in the same format, or a printable prescription pad template.

make a pdf and add more cases upto 20 minimum

Reading File
Running Command

mkdir -p /tmp/workspace/odisha-opd-cases && ls -la /tmp/workspace/

Now I'll write the data file with all 20 cases and the PDF generation script.
Writing File

~/odisha-opd-cases/cases_data.py

# -*- coding: utf-8 -*-
CASES = [
dict(no=1, dept="General Medicine", name="Rina Behera", age="28 yrs", sex="Female", opd="24589", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Sore throat x 3 days","Running nose, sneezing x 3 days","Mild fever (100.2°F) x 2 days","Dry cough x 2 days"],
 history="Gradual onset. No h/o breathlessness/chest pain. No significant contact h/o.",
 examination=["Temp: 99.8°F, PR: 88/min, BP: 118/76 mmHg, RR: 18/min, SpO2: 98% RA",
              "Throat: congested, tonsils mildly enlarged, no exudates","Chest: B/L clear, no added sounds","CVS: S1S2 normal"],
 diagnosis="Acute Viral Upper Respiratory Tract Infection (URTI)",
 rx=["Tab. Paracetamol 500 mg - 1 tab PO TDS x 3 days (SOS if fever >100°F)",
     "Tab. Cetirizine 10 mg - 1 tab PO OD (night) x 5 days",
     "Syp. Ambroxol - 10 ml PO TDS x 5 days",
     "Tab. Vitamin C 500 mg - OD x 5 days",
     "Warm saline gargles - TDS","Steam inhalation - BD"],
 advice="Adequate hydration, rest, avoid cold food/drinks. Review SOS or if fever persists >3 days / breathlessness develops."),

dict(no=2, dept="General Medicine (F/U)", name="Bishnu Charan Sahoo", age="54 yrs", sex="Male", opd="24601", date="17/08/2026",
 address="Bhubaneswar, Odisha",
 complaints=["Occasional occipital headache x 1 week","No chest pain/palpitation/blurring of vision","On F/U for known HTN (dx 2 yrs back)"],
 history="Known hypertensive on treatment, irregular compliance reported.",
 examination=["BP: 156/98 mmHg (repeat after 15 min: 150/94 mmHg)","PR: 82/min regular","No pedal edema, JVP normal","CVS: S1S2 normal, no murmur"],
 diagnosis="Essential Hypertension - Uncontrolled (Stage 2), on treatment",
 rx=["Tab. Telmisartan 40 mg - 1 tab PO OD (morning) x 30 days",
     "Tab. Amlodipine 5 mg - 1 tab PO OD (morning) x 30 days",
     "Tab. Ecosprin (Aspirin) 75 mg - 1 tab PO OD (after food, night) x 30 days",
     "Tab. Atorvastatin 10 mg - 1 tab PO OD (night) x 30 days"],
 advice="Low salt diet (<5g/day), regular exercise, weight reduction, self BP monitoring/BP diary. Investigations advised: RFT, Lipid profile, FBS/PPBS, ECG, Urine R/E. Review after 2 weeks with reports."),

dict(no=3, dept="General Medicine", name="Ashok Kumar Nayak", age="47 yrs", sex="Male", opd="24615", date="17/08/2026",
 address="Puri, Odisha",
 complaints=["Increased thirst & frequency of urination x 1 month","Generalized weakness, easy fatigability x 1 month","Unintentional weight loss (~3 kg) x 1 month"],
 history="No h/o fever, no burning micturition. No family h/o DM elicited today (to confirm).",
 examination=["Ht: 165 cm, Wt: 78 kg, BMI: 28.6 kg/m² (overweight)","BP: 128/82 mmHg, PR: 80/min","No pallor/icterus/pedal edema","Systemic exam: WNL","RBS (glucometer): 268 mg/dl"],
 diagnosis="Newly diagnosed Type 2 Diabetes Mellitus",
 rx=["Tab. Metformin 500 mg - 1 tab PO BD (after breakfast & dinner) x 15 days",
     "Tab. Glimepiride 1 mg - 1 tab PO OD (before breakfast) x 15 days",
     "Tab. Vitamin B-Complex - 1 tab PO OD x 15 days"],
 advice="Diabetic diet chart explained, avoid sugar/refined carbs. Regular physical activity 30-45 min/day. Foot care education given. Investigations advised: FBS, PPBS, HbA1c, RFT, LFT, Lipid profile, Urine R/E, Fundus exam. Review after 15 days; refer Endocrinology if uncontrolled."),

dict(no=4, dept="General Medicine", name="Sunita Pradhan", age="32 yrs", sex="Female", opd="24630", date="17/08/2026",
 address="Khordha, Odisha",
 complaints=["Loose watery stools x 6-7 episodes/day x 2 days","Vomiting x 3-4 episodes x 1 day","Mild abdominal cramps x 2 days"],
 history="No blood/mucus in stool, no fever.",
 examination=["BP: 106/70 mmHg, PR: 96/min","Mild dehydration - dry tongue, skin pinch normal","Abdomen: soft, mild diffuse tenderness, bowel sounds increased","No signs of severe dehydration"],
 diagnosis="Acute Gastroenteritis with Mild Dehydration",
 rx=["ORS solution - 1 packet in 1 litre water, sips frequently, ad lib",
     "Tab. Ondansetron 4 mg - 1 tab PO SOS (if vomiting) BD x 2 days",
     "Tab. Metronidazole 400 mg - 1 tab PO TDS x 5 days",
     "Cap. Racecadotril 100 mg - 1 cap PO TDS x 3 days",
     "Tab. Paracetamol 500 mg - SOS for fever","Sachet Zinc sulfate - OD x 5 days"],
 advice="Plenty of oral fluids, avoid oily/spicy food, home-made semi-solid diet. Review if vomiting persists, blood in stool, or dehydration worsens; admission advised if not improving."),

dict(no=5, dept="Orthopaedics", name="Debendra Jena", age="38 yrs", sex="Male", opd="24642", date="17/08/2026",
 address="Balasore, Odisha",
 complaints=["Pain in lower back x 5 days, after lifting heavy weight","Pain aggravated on bending, relieved on rest"],
 history="No radiation to lower limbs, no tingling/numbness, no bladder/bowel involvement.",
 examination=["Local tenderness over paraspinal muscles L4-L5 region","SLR test: Negative bilaterally","No neurological deficit, power 5/5 both LL, reflexes normal","Gait: normal"],
 diagnosis="Acute Mechanical Low Back Pain (Lumbar Muscle Strain)",
 rx=["Tab. Aceclofenac 100 mg + Paracetamol 325 mg - 1 tab PO BD (after food) x 5 days",
     "Tab. Thiocolchicoside 4 mg - 1 tab PO BD x 5 days",
     "Cap. Pantoprazole 40 mg - 1 cap PO OD (before breakfast) x 5 days",
     "Diclofenac gel - local application BD x 5 days","Lumbo-sacral belt - advised"],
 advice="Rest 2-3 days, avoid heavy lifting/bending, hot fomentation BD, back-strengthening exercises after acute phase. X-ray LS spine if no improvement in 1 week. Review after 1 week."),

dict(no=6, dept="Medicine / Pulmonology", name="Prakash Chandra Mallick", age="45 yrs", sex="Male", opd="24658", date="17/08/2026",
 address="Sambalpur, Odisha",
 complaints=["Breathlessness x 2 days, worse at night","Wheezing and chest tightness x 2 days","Cough with scanty white sputum"],
 history="K/c/o Bronchial Asthma x 10 yrs, irregular inhaler use. No fever. Triggered by dust exposure.",
 examination=["RR: 26/min, PR: 104/min, SpO2: 94% RA, BP: 128/80 mmHg","Chest: B/L diffuse wheeze, prolonged expiration","No cyanosis, accessory muscle use mild","PEFR: 60% of predicted"],
 diagnosis="Acute Exacerbation of Bronchial Asthma - Moderate",
 rx=["Nebulization with Salbutamol + Ipratropium - stat in OPD, repeat SOS",
     "Tab. Prednisolone 40 mg - OD x 5 days (short course, taper not required)",
     "Inhaler Budesonide + Formoterol (200/6 mcg) - 2 puffs BD (regular, with spacer)",
     "Inhaler Salbutamol (100 mcg) - 2 puffs SOS for breathlessness",
     "Tab. Montelukast 10 mg - OD (night) x 30 days"],
 advice="Avoid dust/smoke/allergen exposure, demonstrate correct inhaler technique with spacer, maintain peak flow diary. Review after 1 week; Chest X-ray and CBC advised. Emergency review if SpO2 drops or breathlessness worsens."),

dict(no=7, dept="Medicine / Chest & TB", name="Manoj Kumar Behera", age="34 yrs", sex="Male", opd="24671", date="17/08/2026",
 address="Ganjam, Odisha",
 complaints=["Cough x 3 weeks, initially dry now with sputum","Low grade evening fever x 3 weeks","Loss of appetite and weight loss (~4 kg) x 1 month","Occasional night sweats"],
 history="No h/o hemoptysis. No known contact with TB patient. Non-smoker.",
 examination=["Wt: 52 kg (weight loss noted), Temp: 99.4°F","Chest: mild crepitations right infra-clavicular area","No pallor/icterus, no lymphadenopathy"],
 diagnosis="Suspected Pulmonary Tuberculosis (pending sputum CBNAAT/AFB confirmation)",
 rx=["Sample sent for Sputum CBNAAT / AFB smear x 2 (as per RNTCP/NTEP protocol)",
     "Chest X-ray PA view advised",
     "Tab. Paracetamol 500 mg - SOS for fever",
     "Tab. Vitamin B6 (Pyridoxine) 10 mg - OD (to start with ATT once confirmed)"],
 advice="Explained about NTEP (National TB Elimination Programme) - free diagnosis & treatment at DOTS centre. Once confirmed, ATT (Category as per weight band, e.g., HRZE fixed dose combination) to start under DOTS supervision. Sputum of household contacts to be screened. Review with reports within 2-3 days; refer to DTC (District TB Centre) for registration."),

dict(no=8, dept="Medicine / Neurology", name="Snehalata Panda", age="30 yrs", sex="Female", opd="24685", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Recurrent headache, unilateral (throbbing), x 1 year, frequency increased to 3-4 episodes/month","Associated with nausea, photophobia, phonophobia","Each episode lasts 4-6 hours"],
 history="No aura. No h/o trauma, no fever, no visual disturbance between episodes. Family h/o migraine (mother).",
 examination=["BP: 118/76 mmHg, PR: 78/min","No neurological deficit, fundus normal","No neck rigidity, no papilledema"],
 diagnosis="Migraine without Aura",
 rx=["Tab. Naproxen 500 mg - 1 tab PO stat at onset of headache, may repeat once after 12 hrs SOS",
     "Tab. Domperidone 10 mg - 1 tab PO SOS with above for nausea",
     "Tab. Propranolol 20 mg - 1 tab PO BD x 1 month (prophylaxis, if >4 episodes/month)",
     "Tab. Vitamin B2 (Riboflavin) 400 mg - OD x 1 month"],
 advice="Maintain headache diary, identify and avoid triggers (stress, sleep deprivation, certain foods, bright light). Adequate sleep and hydration. Review after 1 month; MRI Brain advised only if red flag symptoms (sudden severe headache, neurological deficit, seizure) appear."),

dict(no=9, dept="General Medicine", name="Kabita Sahu", age="26 yrs", sex="Female", opd="24698", date="17/08/2026",
 address="Jagatsinghpur, Odisha",
 complaints=["Generalized weakness and easy fatigability x 2 months","Giddiness on standing x 2 weeks","Hair fall and brittle nails x 1 month"],
 history="Menorrhagia present (heavy menstrual bleeding x 6 months). Vegetarian diet. No h/o malena/hematemesis.",
 examination=["Pallor: moderate (conjunctival, palmar)","BP: 100/64 mmHg, PR: 96/min","No icterus, no lymphadenopathy, no organomegaly","Koilonychia present"],
 diagnosis="Iron Deficiency Anemia secondary to Menorrhagia",
 rx=["Tab. Ferrous Ascorbate (100 mg elemental Fe) + Folic Acid - 1 tab PO OD (empty stomach or after light food) x 3 months",
     "Tab. Vitamin C 500 mg - OD (to improve iron absorption) x 1 month",
     "Tab. Tranexamic Acid 500 mg - 1 tab PO TDS x 3 days during menses (for menorrhagia)"],
 advice="Iron-rich diet (green leafy vegetables, jaggery, dates, protein). Investigations advised: CBC, Peripheral smear, Serum ferritin, Serum iron/TIBC, Stool for occult blood. Refer Gynaecology for evaluation of menorrhagia. Review after 4 weeks with repeat Hb."),

dict(no=10, dept="Medicine / Endocrinology", name="Manisha Mohanty", age="41 yrs", sex="Female", opd="24710", date="17/08/2026",
 address="Berhampur, Odisha",
 complaints=["Weight gain (~5 kg) x 6 months despite no change in diet","Generalized fatigue and cold intolerance x 4 months","Constipation and dry skin x 3 months","Irregular menstrual cycles"],
 history="No h/o neck swelling noticed by patient. No previous thyroid disease documented.",
 examination=["BP: 122/80 mmHg, PR: 62/min (relative bradycardia)","Skin: dry and coarse, mild pretibial non-pitting puffiness","Thyroid: diffusely enlarged, non-tender, firm","Delayed relaxation of ankle jerk"],
 diagnosis="Primary Hypothyroidism (clinical, to be confirmed with TFT)",
 rx=["Tab. Levothyroxine 50 mcg - 1 tab PO OD, empty stomach, 30 min before breakfast (dose to be titrated as per TSH)"],
 advice="Investigations advised: Serum TSH, Free T3/T4, Anti-TPO antibody, Lipid profile. Take tablet strictly empty stomach with plain water, avoid calcium/iron tablets within 4 hours of dose. Review after 6 weeks with repeat TFT for dose titration."),

dict(no=11, dept="General Medicine / GI", name="Sanjay Kumar Patra", age="36 yrs", sex="Male", opd="24723", date="17/08/2026",
 address="Rourkela, Odisha",
 complaints=["Burning sensation in upper abdomen and chest x 1 month, worse after meals and at night","Sour belching and occasional regurgitation x 1 month","No vomiting, no blood in vomitus/stool"],
 history="H/o frequent spicy/oily food intake, occasional NSAID use for joint pain, smoker (5 cigarettes/day).",
 examination=["BP: 122/78 mmHg, PR: 76/min","Abdomen: soft, mild epigastric tenderness, no organomegaly","No pallor, no signs of GI bleed"],
 diagnosis="Gastro-Esophageal Reflux Disease (GERD) with Peptic Ulcer Disease - to rule out H. pylori",
 rx=["Cap. Pantoprazole 40 mg - 1 cap PO OD (before breakfast) x 4 weeks",
     "Tab. Domperidone 10 mg - 1 tab PO TDS (before meals) x 2 weeks",
     "Syp. Sucralfate 10 ml - PO TDS (1 hr before meals) x 2 weeks",
     "Tab. Antacid (Al-Mg hydroxide) - SOS for breakthrough symptoms"],
 advice="Avoid spicy/oily/fried food, caffeine, alcohol, smoking cessation strongly advised. Small frequent meals, avoid lying down immediately after food, elevate head end of bed. H. pylori stool antigen/UBT test advised. Upper GI endoscopy advised if no improvement in 4 weeks or if alarm symptoms (bleeding, dysphagia, weight loss) develop. Review after 4 weeks."),

dict(no=12, dept="General Medicine", name="Lipika Das", age="29 yrs", sex="Female", opd="24735", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Burning micturition x 3 days","Increased frequency and urgency of urination x 3 days","Mild suprapubic discomfort x 2 days"],
 history="No fever, no flank pain, no hematuria. No h/o similar episodes recently. Adequate fluid intake reported as poor.",
 examination=["Temp: 98.6°F, BP: 118/74 mmHg","Abdomen: mild suprapubic tenderness, no renal angle tenderness","No costovertebral angle tenderness"],
 diagnosis="Acute Uncomplicated Cystitis (Lower Urinary Tract Infection)",
 rx=["Tab. Nitrofurantoin 100 mg - 1 tab PO BD x 5 days",
     "Tab. Paracetamol 500 mg - SOS for discomfort/fever",
     "Tab. Potassium Citrate syrup - 10 ml PO TDS x 5 days (urinary alkalinizer)"],
 advice="Increase oral fluid intake (2-3 L/day), maintain perineal hygiene, avoid holding urine for long periods, void after intercourse. Urine R/E and Urine culture-sensitivity advised. Review after 5 days or earlier if fever/flank pain develops (to rule out pyelonephritis)."),

dict(no=13, dept="Pediatrics", name="Baby Anshuman Sahoo (S/O Rajesh Sahoo)", age="6 yrs", sex="Male", opd="24748", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Fever x 2 days (high grade)","Throat pain and difficulty swallowing x 2 days","Refusal of feeds x 1 day"],
 history="No cough/cold. No rash. Immunization up to date as per age.",
 examination=["Temp: 101.8°F, PR: 110/min, RR: 24/min, Wt: 19 kg","Throat: bilateral tonsillar enlargement with exudates, congested pharynx","Cervical lymphadenopathy: tender, bilateral submandibular nodes","Chest and CVS: normal"],
 diagnosis="Acute Bacterial Tonsillopharyngitis",
 rx=["Syp. Amoxicillin 250 mg/5ml - 5 ml PO TDS x 7 days (weight-based dose)",
     "Syp. Paracetamol 250 mg/5ml - 5 ml PO QID SOS for fever/pain x 3 days",
     "Warm saline gargles (if age-appropriate/cooperative) - TDS",
     "Oral rehydration/soft diet encouraged"],
 advice="Ensure adequate fluid and soft diet intake, complete full course of antibiotics even if fever subsides earlier. Watch for red flags: difficulty breathing, refusal of fluids, drowsiness - report immediately. Review after 3 days or SOS."),

dict(no=14, dept="Pediatrics", name="Baby Swagatika Nayak (D/O Prasanna Nayak)", age="2.5 yrs", sex="Female", opd="24752", date="17/08/2026",
 address="Khordha, Odisha",
 complaints=["Loose motions x 5-6 episodes/day x 2 days","Vomiting x 2-3 episodes x 1 day","Decreased urine output noted by mother x 1 day"],
 history="No blood in stool. Currently on breastfeeding + top feeds. No fever.",
 examination=["Wt: 11.5 kg, Temp: 98.8°F, PR: 118/min","Sunken eyes present, skin pinch goes back slowly (some delay)","Irritable but consolable, drinks eagerly when offered fluids","CRT <2 sec, no severe lethargy"],
 diagnosis="Acute Diarrhea with Some Dehydration (WHO classification)",
 rx=["ORS (WHO formula) - approx 75 ml/kg over 4 hours in OPD/observation, then ad lib as per loss",
     "Zinc Sulfate syrup 20 mg - OD x 14 days",
     "Continue breastfeeding and age-appropriate diet, avoid stopping feeds",
     "Tab. Ondansetron (weight-based dose) - SOS for persistent vomiting only if needed"],
 advice="Antibiotics NOT indicated (no blood/mucus in stool, no high fever). Demonstrate ORS preparation and administration technique to mother. Advise immediate return if: unable to drink, more vomiting, blood in stool, high fever, decreased urination, lethargy. Review after 24-48 hrs."),

dict(no=15, dept="Obstetrics & Gynaecology (ANC)", name="Priyanka Mishra", age="24 yrs", sex="Female", opd="24761", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Routine antenatal check-up","G2P1L1, currently 28 weeks + 2 days POG by LMP/USG","No complaints of bleeding, leaking, decreased fetal movements"],
 history="Previous LSCS x 1 (for fetal distress). Regular ANC visits, iron/calcium supplementation ongoing.",
 examination=["BP: 116/74 mmHg, Wt: 64 kg (adequate weight gain for POG)","Pallor: mild","P/A: Uterus size corresponds to POG, FHR: 144/min regular, cephalic presentation","Pedal edema: absent","Urine albumin: nil, Urine sugar: nil (dipstick)"],
 diagnosis="Normal Antenatal Visit - G2P1L1 at 28+2 weeks POG, Previous LSCS (to plan repeat LSCS)",
 rx=["Tab. Ferrous Ascorbate + Folic Acid - 1 tab PO OD x 30 days",
     "Tab. Calcium Carbonate 500 mg + Vit D3 - 1 tab PO OD (after dinner) x 30 days",
     "Tab. Vitamin B-Complex - OD x 30 days",
     "Inj. Tetanus Toxoid (TT) 2nd dose - IM stat (if due as per schedule)"],
 advice="Continue iron/calcium supplements, adequate protein diet, rest, monitor fetal movements daily. Investigations advised: Repeat Hb, OGTT (if not done), Obstetric USG for growth & liquor at 32 weeks. Danger signs explained (bleeding, decreased fetal movement, severe headache, blurring of vision, leaking PV). Counselled regarding elective repeat LSCS around 38 weeks in view of previous scar. Review after 4 weeks or SOS."),

dict(no=16, dept="Gynaecology", name="Jhilli Rani Swain", age="42 yrs", sex="Female", opd="24774", date="17/08/2026",
 address="Puri, Odisha",
 complaints=["Heavy and prolonged menstrual bleeding x 4 months","Passage of clots, soaking >5-6 pads/day during periods","Mild lower abdominal pain during periods"],
 history="Cycles irregular, no intermenstrual bleeding, no post-coital bleeding. Married, P2L2, no h/o contraceptive use currently.",
 examination=["Pallor: mild","P/A: soft, no palpable mass","P/V: uterus normal size, mobile, no adnexal tenderness/mass on bimanual exam"],
 diagnosis="Abnormal Uterine Bleeding (Dysfunctional Uterine Bleeding) - to rule out structural causes",
 rx=["Tab. Tranexamic Acid 500 mg - 2 tabs PO TDS x 5 days during heavy flow days",
     "Tab. Mefenamic Acid 500 mg - 1 tab PO TDS x 5 days (during menses, for pain)",
     "Tab. Ferrous Ascorbate + Folic Acid - 1 tab PO OD x 2 months"],
 advice="Investigations advised: CBC, Pelvic Ultrasonography (TVS) to rule out fibroid/polyp/adenomyosis, Thyroid profile, Coagulation profile. Maintain menstrual/pad chart. Endometrial sampling advised if bleeding persists or age >45 yrs. Review after USG report with 2 weeks, or refer Gynae-oncology if endometrial thickening noted."),

dict(no=17, dept="Dermatology", name="Ranjit Kumar Giri", age="33 yrs", sex="Male", opd="24788", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Itchy red rash over both forearms x 1 week","Onset after using a new detergent/soap","Mild burning sensation"],
 history="No h/o similar rash previously at this site. No systemic symptoms. No new medication started.",
 examination=["B/L forearms: well-defined erythematous, mildly scaly patches with few papules","No vesiculation, no secondary infection","Rest of skin/scalp/nails normal"],
 diagnosis="Allergic Contact Dermatitis",
 rx=["Tab. Levocetirizine 5 mg - 1 tab PO OD (night) x 7 days",
     "Cream Mometasone Furoate 0.1% - local application OD (night) x 7 days (thin layer)",
     "Emollient (liquid paraffin based) lotion - apply BD to affected area"],
 advice="Identify and avoid offending agent (new detergent/soap suspected), use mild soap-free cleanser, avoid scratching. Patch testing advised if recurrent. Review after 1 week if not settled."),

dict(no=18, dept="Dermatology", name="Family of Suresh Naik (Index case + 2 contacts)", age="35 yrs (index)", sex="Male", opd="24795", date="17/08/2026",
 address="Nayagarh, Odisha",
 complaints=["Intense itching, worse at night x 3 weeks","Multiple small papular lesions in finger webs, wrists, groin","Similar complaints in 2 other family members"],
 history="Household contact with similar symptoms. No prior treatment taken. Sharing of bedding reported.",
 examination=["Burrows and papulo-vesicular lesions in finger webs, flexor wrists, umbilical area, groin","Excoriation marks due to scratching","No secondary bacterial infection currently"],
 diagnosis="Scabies (Sarcoptes scabiei infestation) - Index case with household contacts affected",
 rx=["Permethrin 5% cream - apply over entire body neck to sole (excluding face/scalp in adults), leave overnight (8-12 hrs), wash off next morning; repeat after 7 days",
     "Tab. Levocetirizine 5 mg - 1 tab PO OD (night) x 7 days for itching",
     "Calamine lotion - local application for symptomatic relief of itch",
     "Treat ALL household/close contacts simultaneously with same regimen even if asymptomatic"],
 advice="Wash all clothing, bedding, towels in hot water and sun-dry/iron. Avoid sharing personal items. Itching may persist for 2-3 weeks after successful treatment (post-scabetic itch) - reassure patient. Review after 1-2 weeks; treat any secondary bacterial infection if it develops."),

dict(no=19, dept="ENT (Otorhinolaryngology)", name="Baby Om Prakash Rout", age="4 yrs", sex="Male", opd="24802", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Right ear pain x 2 days","Fever x 2 days","Irritability and decreased hearing on right side noted by mother"],
 history="H/o recent upper respiratory infection/cold x 5 days prior. No ear discharge yet.",
 examination=["Temp: 100.6°F","Otoscopy (Right): Tympanic membrane congested, bulging, loss of light reflex","Otoscopy (Left): normal","Throat: mild congestion"],
 diagnosis="Acute Otitis Media - Right Ear",
 rx=["Syp. Amoxicillin-Clavulanate (weight-based dose) - PO BD x 7 days",
     "Syp. Paracetamol 250 mg/5ml - as per weight, PO QID SOS for pain/fever x 3 days",
     "Ear drops (analgesic - e.g. Xylocaine-based) - if TM intact and no discharge, 2-3 drops TDS x 3 days"],
 advice="Keep ear dry, avoid water entry during bathing. Complete full antibiotic course. Watch for ear discharge, worsening pain, or persistent fever - review immediately if occurs. Routine review after 7 days; refer ENT specialist if not resolved or if perforation/discharge develops."),

dict(no=20, dept="Ophthalmology", name="Sitaram Mahakud", age="22 yrs", sex="Male", opd="24815", date="17/08/2026",
 address="Balangir, Odisha",
 complaints=["Itching and redness in both eyes x 4 days","Watery discharge and mild swelling of eyelids x 3 days","Seasonal recurrence, worse during this time of year"],
 history="H/o allergic rhinitis. No pain, no photophobia, no diminution of vision. No h/o contact lens use.",
 examination=["Visual acuity: 6/6 both eyes","Conjunctiva: bilateral chemosis and mild papillary reaction on palpebral conjunctiva","Cornea clear, no corneal involvement","No mucopurulent discharge (differentiates from bacterial conjunctivitis)"],
 diagnosis="Allergic Conjunctivitis (Seasonal)",
 rx=["Eye drops Olopatadine 0.1% - 1 drop in both eyes BD x 2 weeks",
     "Eye drops Sodium Cromoglycate 2% - 1 drop in both eyes QID x 2 weeks (if symptoms persist)",
     "Cold compresses over closed eyelids - as needed for symptomatic relief",
     "Tab. Levocetirizine 5 mg - 1 tab PO OD (night) x 7 days for associated allergic symptoms"],
 advice="Avoid eye rubbing, identify and avoid allergens (dust, pollen), use dark glasses outdoors. Do not share towels/handkerchiefs. Avoid topical steroids without ophthalmology supervision due to risk of glaucoma/cataract with prolonged use. Review after 2 weeks or refer Ophthalmology if not improving."),
]
Now writing the PDF generation script using reportlab.
Writing File

~/odisha-opd-cases/generate_pdf.py

# -*- coding: utf-8 -*-
import sys
sys.path.insert(0, "/tmp/workspace/odisha-opd-cases")
from cases_data import CASES

from reportlab.lib.pagesizes import A4
from reportlab.lib.units import mm
from reportlab.lib import colors
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
                                 HRFlowable, PageBreak, ListFlowable, ListItem)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT

styles = getSampleStyleSheet()

title_style = ParagraphStyle("TitleStyle", parent=styles["Title"], fontSize=16, leading=19,
                              textColor=colors.HexColor("#0B3D91"), alignment=TA_CENTER, spaceAfter=2)
subtitle_style = ParagraphStyle("SubtitleStyle", parent=styles["Normal"], fontSize=10.5, leading=13,
                                 alignment=TA_CENTER, textColor=colors.HexColor("#333333"))
dept_style = ParagraphStyle("DeptStyle", parent=styles["Normal"], fontSize=11, leading=14,
                             alignment=TA_CENTER, textColor=colors.HexColor("#0B3D91"), fontName="Helvetica-Bold",
                             spaceAfter=6)
case_no_style = ParagraphStyle("CaseNo", parent=styles["Normal"], fontSize=12, leading=15,
                                textColor=colors.white, fontName="Helvetica-Bold")
section_head = ParagraphStyle("SectionHead", parent=styles["Normal"], fontSize=10.5, leading=13,
                               textColor=colors.HexColor("#8B0000"), fontName="Helvetica-Bold", spaceBefore=6, spaceAfter=3)
body_style = ParagraphStyle("Body", parent=styles["Normal"], fontSize=9.7, leading=13, fontName="Helvetica")
bullet_style = ParagraphStyle("Bullet", parent=styles["Normal"], fontSize=9.7, leading=13, leftIndent=2)
rx_style = ParagraphStyle("Rx", parent=styles["Normal"], fontSize=9.7, leading=13.5, fontName="Helvetica")
footer_style = ParagraphStyle("Footer", parent=styles["Normal"], fontSize=8, leading=10, textColor=colors.grey,
                               alignment=TA_CENTER)

PAGE_W, PAGE_H = A4

def header_block():
    elems = []
    elems.append(Paragraph("GOVT. MEDICAL COLLEGE &amp; HOSPITAL, ODISHA", title_style))
    elems.append(Paragraph("(Illustrative OPD Case Records &amp; Prescription Format &ndash; For Training/Educational Use Only)",
                            subtitle_style))
    elems.append(Spacer(1, 6))
    elems.append(HRFlowable(width="100%", thickness=1.2, color=colors.HexColor("#0B3D91")))
    elems.append(Spacer(1, 10))
    return elems

def patient_info_table(c):
    data = [
        ["Name:", c["name"], "OPD Reg. No.:", c["opd"]],
        ["Age / Sex:", f"{c['age']} / {c['sex']}", "Date:", c["date"]],
        ["Address:", c["address"], "Department:", c["dept"]],
    ]
    t = Table(data, colWidths=[26*mm, 62*mm, 30*mm, 52*mm])
    t.setStyle(TableStyle([
        ("FONTNAME", (0,0), (0,-1), "Helvetica-Bold"),
        ("FONTNAME", (2,0), (2,-1), "Helvetica-Bold"),
        ("FONTSIZE", (0,0), (-1,-1), 9.5),
        ("VALIGN", (0,0), (-1,-1), "TOP"),
        ("TEXTCOLOR", (0,0), (0,-1), colors.HexColor("#0B3D91")),
        ("TEXTCOLOR", (2,0), (2,-1), colors.HexColor("#0B3D91")),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
        ("TOPPADDING", (0,0), (-1,-1), 3),
        ("BOX", (0,0), (-1,-1), 0.75, colors.HexColor("#999999")),
        ("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
        ("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#F5F7FA")),
    ]))
    return t

def bullets(items, style=bullet_style, bullet_char="\u2022"):
    lf_items = [ListItem(Paragraph(it, style), leftIndent=8, bulletColor=colors.HexColor("#0B3D91")) for it in items]
    return ListFlowable(lf_items, bulletType="bullet", start=bullet_char, leftIndent=10, spaceBefore=1, spaceAfter=4)

def numbered(items, style=rx_style):
    lf_items = [ListItem(Paragraph(it, style), leftIndent=8) for it in items]
    return ListFlowable(lf_items, bulletType="1", leftIndent=12, spaceBefore=1, spaceAfter=4, start=1)

def case_block(c):
    elems = []
    # case number banner
    banner_data = [[Paragraph(f"CASE {c['no']}", case_no_style),
                     Paragraph(c["dept"], ParagraphStyle("d2", parent=dept_style, textColor=colors.white, alignment=TA_LEFT, spaceAfter=0))]]
    bt = Table(banner_data, colWidths=[30*mm, 140*mm])
    bt.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#0B3D91")),
        ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
        ("TOPPADDING", (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ]))
    elems.append(bt)
    elems.append(Spacer(1, 6))
    elems.append(patient_info_table(c))
    elems.append(Spacer(1, 4))

    elems.append(Paragraph("Chief Complaints (C/O):", section_head))
    elems.append(bullets(c["complaints"]))

    elems.append(Paragraph("History:", section_head))
    elems.append(Paragraph(c["history"], body_style))

    elems.append(Paragraph("On Examination (O/E):", section_head))
    elems.append(bullets(c["examination"]))

    elems.append(Paragraph("Diagnosis:", section_head))
    elems.append(Paragraph(f"<b>{c['diagnosis']}</b>", body_style))

    elems.append(Paragraph("Rx (Prescription):", section_head))
    elems.append(numbered(c["rx"]))

    elems.append(Paragraph("Advice:", section_head))
    elems.append(Paragraph(c["advice"], body_style))

    elems.append(Spacer(1, 4))
    elems.append(Paragraph("Dr. _______________, MBBS/MD, Regn. No. ___________ (Signature)",
                            ParagraphStyle("sig", parent=body_style, alignment=2, fontSize=9, textColor=colors.HexColor("#444444"))))
    return elems

def build_pdf(path):
    doc = SimpleDocTemplate(path, pagesize=A4,
                             leftMargin=16*mm, rightMargin=16*mm,
                             topMargin=14*mm, bottomMargin=14*mm,
                             title="OPD Case Sheets and Prescriptions - Govt Medical College and Hospital, Odisha")
    story = []
    story += header_block()

    story.append(Paragraph("Index of Cases", ParagraphStyle("idx", parent=styles["Heading2"], fontSize=13,
                                                              textColor=colors.HexColor("#0B3D91"))))
    idx_data = [["#", "Department", "Diagnosis"]]
    for c in CASES:
        idx_data.append([str(c["no"]), c["dept"], c["diagnosis"]])
    idx_table = Table(idx_data, colWidths=[10*mm, 48*mm, 112*mm], repeatRows=1)
    idx_table.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#0B3D91")),
        ("TEXTCOLOR", (0,0), (-1,0), colors.white),
        ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
        ("FONTSIZE", (0,0), (-1,-1), 8.7),
        ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
        ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
        ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.white, colors.HexColor("#F0F3F8")]),
        ("TOPPADDING", (0,0), (-1,-1), 3),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ]))
    story.append(idx_table)
    story.append(PageBreak())

    for i, c in enumerate(CASES):
        story += case_block(c)
        if i != len(CASES) - 1:
            story.append(Spacer(1, 10))
            story.append(HRFlowable(width="100%", thickness=0.6, color=colors.HexColor("#AAAAAA"), dash=(2,2)))
            story.append(Spacer(1, 10))

    def add_footer(canvas, doc_):
        canvas.saveState()
        canvas.setFont("Helvetica", 7.5)
        canvas.setFillColor(colors.grey)
        canvas.drawCentredString(PAGE_W/2, 10*mm,
            f"Illustrative OPD case format - Govt. Medical College & Hospital, Odisha | For educational/training purposes only | Page {doc_.page}")
        canvas.restoreState()

    doc.build(story, onFirstPage=add_footer, onLaterPages=add_footer)

if __name__ == "__main__":
    out = "/tmp/workspace/odisha-opd-cases/OPD_Cases_Odisha_GovtMCH.pdf"
    build_pdf(out)
    print("PDF generated:", out)
Running Command

cd /tmp/workspace/odisha-opd-cases && python3 generate_pdf.py

Let me verify the PDF was generated correctly (page count, size).
Running Command

cd /tmp/workspace/odisha-opd-cases && python3 -c " from pypdf import PdfReader r = PdfReader('OPD_Cases_Odisha_GovtMCH.pdf') print('Pages:', len(r.pages)) import os print('Size KB:', round(os.path.getsize('OPD_Cases_Odisha_GovtMCH.pdf')/1024,1)) print(r.pages[2].extract_text()[:500]) "

PDF generated successfully with 14 pages covering all 20 cases. Marking the task complete.I've compiled 20 common OPD cases into a formatted PDF, styled as government medical college & hospital (Odisha) case sheets with full prescription details.

OPD Cases Odisha GovtMCH

PDF Document · PDF

Contents (14 pages, index + 20 cases):
#DepartmentDiagnosis
1General MedicineAcute Viral URTI
2General Medicine (F/U)Uncontrolled Essential Hypertension
3General MedicineNewly diagnosed Type 2 DM
4General MedicineAcute Gastroenteritis with mild dehydration
5OrthopaedicsAcute mechanical low back pain
6Medicine/PulmonologyAcute exacerbation of Bronchial Asthma
7Medicine/Chest & TBSuspected Pulmonary TB (NTEP workup)
8Medicine/NeurologyMigraine without aura
9General MedicineIron deficiency anemia (2° to menorrhagia)
10Medicine/EndocrinologyPrimary Hypothyroidism
11Medicine/GIGERD with Peptic Ulcer Disease
12General MedicineAcute uncomplicated cystitis
13PediatricsAcute bacterial tonsillopharyngitis (child)
14PediatricsAcute diarrhea with some dehydration (child)
15ObstetricsRoutine ANC visit, G2P1L1, previous LSCS
16GynaecologyAbnormal uterine bleeding (DUB)
17DermatologyAllergic contact dermatitis
18DermatologyScabies (with household contacts)
19ENTAcute otitis media (child)
20OphthalmologyAllergic conjunctivitis
Each case includes: hospital header, patient demographics (Name/Age-Sex/OPD Reg. No./Date/Address/Dept.), chief complaints (C/O) with duration, relevant history, examination findings (O/E), diagnosis, full Rx with generic drug names/dose/route/frequency/duration, and clinical advice with follow-up — matching the standard Odisha govt. medical college OPD prescription style, drawing largely from the Essential Drug List used in state-run hospitals.
This is for educational/training purposes only, not for actual clinical use. Let me know if you'd like specialty-specific expansions (e.g., Psychiatry, Cardiology emergency cases, Surgery/pre-op OPD notes) added as a second batch.

I need all cases for medicine department only

Building a Medicine-only case set (11 existing Medicine cases + 10 new ones = 21 total).
Writing File

~/odisha-opd-cases/medicine_cases_data.py

# -*- coding: utf-8 -*-
# Medicine department only OPD cases (Govt Medical College & Hospital, Odisha style)

MEDICINE_CASES = [
dict(no=1, dept="General Medicine", name="Rina Behera", age="28 yrs", sex="Female", opd="24589", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Sore throat x 3 days","Running nose, sneezing x 3 days","Mild fever (100.2°F) x 2 days","Dry cough x 2 days"],
 history="Gradual onset. No h/o breathlessness/chest pain. No significant contact h/o.",
 examination=["Temp: 99.8°F, PR: 88/min, BP: 118/76 mmHg, RR: 18/min, SpO2: 98% RA",
              "Throat: congested, tonsils mildly enlarged, no exudates","Chest: B/L clear, no added sounds","CVS: S1S2 normal"],
 diagnosis="Acute Viral Upper Respiratory Tract Infection (URTI)",
 rx=["Tab. Paracetamol 500 mg - 1 tab PO TDS x 3 days (SOS if fever >100°F)",
     "Tab. Cetirizine 10 mg - 1 tab PO OD (night) x 5 days",
     "Syp. Ambroxol - 10 ml PO TDS x 5 days",
     "Tab. Vitamin C 500 mg - OD x 5 days",
     "Warm saline gargles - TDS","Steam inhalation - BD"],
 advice="Adequate hydration, rest, avoid cold food/drinks. Review SOS or if fever persists >3 days / breathlessness develops."),

dict(no=2, dept="General Medicine (F/U)", name="Bishnu Charan Sahoo", age="54 yrs", sex="Male", opd="24601", date="17/08/2026",
 address="Bhubaneswar, Odisha",
 complaints=["Occasional occipital headache x 1 week","No chest pain/palpitation/blurring of vision","On F/U for known HTN (dx 2 yrs back)"],
 history="Known hypertensive on treatment, irregular compliance reported.",
 examination=["BP: 156/98 mmHg (repeat after 15 min: 150/94 mmHg)","PR: 82/min regular","No pedal edema, JVP normal","CVS: S1S2 normal, no murmur"],
 diagnosis="Essential Hypertension - Uncontrolled (Stage 2), on treatment",
 rx=["Tab. Telmisartan 40 mg - 1 tab PO OD (morning) x 30 days",
     "Tab. Amlodipine 5 mg - 1 tab PO OD (morning) x 30 days",
     "Tab. Ecosprin (Aspirin) 75 mg - 1 tab PO OD (after food, night) x 30 days",
     "Tab. Atorvastatin 10 mg - 1 tab PO OD (night) x 30 days"],
 advice="Low salt diet (<5g/day), regular exercise, weight reduction, self BP monitoring/BP diary. Investigations advised: RFT, Lipid profile, FBS/PPBS, ECG, Urine R/E. Review after 2 weeks with reports."),

dict(no=3, dept="General Medicine", name="Ashok Kumar Nayak", age="47 yrs", sex="Male", opd="24615", date="17/08/2026",
 address="Puri, Odisha",
 complaints=["Increased thirst & frequency of urination x 1 month","Generalized weakness, easy fatigability x 1 month","Unintentional weight loss (~3 kg) x 1 month"],
 history="No h/o fever, no burning micturition.",
 examination=["Ht: 165 cm, Wt: 78 kg, BMI: 28.6 kg/m² (overweight)","BP: 128/82 mmHg, PR: 80/min","No pallor/icterus/pedal edema","Systemic exam: WNL","RBS (glucometer): 268 mg/dl"],
 diagnosis="Newly diagnosed Type 2 Diabetes Mellitus",
 rx=["Tab. Metformin 500 mg - 1 tab PO BD (after breakfast & dinner) x 15 days",
     "Tab. Glimepiride 1 mg - 1 tab PO OD (before breakfast) x 15 days",
     "Tab. Vitamin B-Complex - 1 tab PO OD x 15 days"],
 advice="Diabetic diet chart explained, avoid sugar/refined carbs. Regular physical activity 30-45 min/day. Foot care education given. Investigations advised: FBS, PPBS, HbA1c, RFT, LFT, Lipid profile, Urine R/E, Fundus exam. Review after 15 days; refer Endocrinology if uncontrolled."),

dict(no=4, dept="General Medicine", name="Sunita Pradhan", age="32 yrs", sex="Female", opd="24630", date="17/08/2026",
 address="Khordha, Odisha",
 complaints=["Loose watery stools x 6-7 episodes/day x 2 days","Vomiting x 3-4 episodes x 1 day","Mild abdominal cramps x 2 days"],
 history="No blood/mucus in stool, no fever.",
 examination=["BP: 106/70 mmHg, PR: 96/min","Mild dehydration - dry tongue, skin pinch normal","Abdomen: soft, mild diffuse tenderness, bowel sounds increased","No signs of severe dehydration"],
 diagnosis="Acute Gastroenteritis with Mild Dehydration",
 rx=["ORS solution - 1 packet in 1 litre water, sips frequently, ad lib",
     "Tab. Ondansetron 4 mg - 1 tab PO SOS (if vomiting) BD x 2 days",
     "Tab. Metronidazole 400 mg - 1 tab PO TDS x 5 days",
     "Cap. Racecadotril 100 mg - 1 cap PO TDS x 3 days",
     "Tab. Paracetamol 500 mg - SOS for fever","Sachet Zinc sulfate - OD x 5 days"],
 advice="Plenty of oral fluids, avoid oily/spicy food, home-made semi-solid diet. Review if vomiting persists, blood in stool, or dehydration worsens; admission advised if not improving."),

dict(no=5, dept="Medicine / Pulmonology", name="Prakash Chandra Mallick", age="45 yrs", sex="Male", opd="24658", date="17/08/2026",
 address="Sambalpur, Odisha",
 complaints=["Breathlessness x 2 days, worse at night","Wheezing and chest tightness x 2 days","Cough with scanty white sputum"],
 history="K/c/o Bronchial Asthma x 10 yrs, irregular inhaler use. No fever. Triggered by dust exposure.",
 examination=["RR: 26/min, PR: 104/min, SpO2: 94% RA, BP: 128/80 mmHg","Chest: B/L diffuse wheeze, prolonged expiration","No cyanosis, accessory muscle use mild","PEFR: 60% of predicted"],
 diagnosis="Acute Exacerbation of Bronchial Asthma - Moderate",
 rx=["Nebulization with Salbutamol + Ipratropium - stat in OPD, repeat SOS",
     "Tab. Prednisolone 40 mg - OD x 5 days (short course, taper not required)",
     "Inhaler Budesonide + Formoterol (200/6 mcg) - 2 puffs BD (regular, with spacer)",
     "Inhaler Salbutamol (100 mcg) - 2 puffs SOS for breathlessness",
     "Tab. Montelukast 10 mg - OD (night) x 30 days"],
 advice="Avoid dust/smoke/allergen exposure, demonstrate correct inhaler technique with spacer, maintain peak flow diary. Review after 1 week; Chest X-ray and CBC advised. Emergency review if SpO2 drops or breathlessness worsens."),

dict(no=6, dept="Medicine / Chest & TB", name="Manoj Kumar Behera", age="34 yrs", sex="Male", opd="24671", date="17/08/2026",
 address="Ganjam, Odisha",
 complaints=["Cough x 3 weeks, initially dry now with sputum","Low grade evening fever x 3 weeks","Loss of appetite and weight loss (~4 kg) x 1 month","Occasional night sweats"],
 history="No h/o hemoptysis. No known contact with TB patient. Non-smoker.",
 examination=["Wt: 52 kg (weight loss noted), Temp: 99.4°F","Chest: mild crepitations right infra-clavicular area","No pallor/icterus, no lymphadenopathy"],
 diagnosis="Suspected Pulmonary Tuberculosis (pending sputum CBNAAT/AFB confirmation)",
 rx=["Sample sent for Sputum CBNAAT / AFB smear x 2 (as per NTEP protocol)",
     "Chest X-ray PA view advised",
     "Tab. Paracetamol 500 mg - SOS for fever",
     "Tab. Vitamin B6 (Pyridoxine) 10 mg - OD (to start with ATT once confirmed)"],
 advice="Explained about NTEP - free diagnosis & treatment at DOTS centre. Once confirmed, ATT (fixed dose combination HRZE, weight-band based) under DOTS supervision. Household contacts to be screened. Review with reports within 2-3 days; refer DTC for registration."),

dict(no=7, dept="Medicine / Neurology", name="Snehalata Panda", age="30 yrs", sex="Female", opd="24685", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Recurrent unilateral throbbing headache x 1 year, 3-4 episodes/month","Associated nausea, photophobia, phonophobia","Each episode lasts 4-6 hours"],
 history="No aura. No trauma, no fever, no visual disturbance between episodes. Family h/o migraine (mother).",
 examination=["BP: 118/76 mmHg, PR: 78/min","No neurological deficit, fundus normal","No neck rigidity, no papilledema"],
 diagnosis="Migraine without Aura",
 rx=["Tab. Naproxen 500 mg - 1 tab PO stat at onset, may repeat once after 12 hrs SOS",
     "Tab. Domperidone 10 mg - 1 tab PO SOS with above for nausea",
     "Tab. Propranolol 20 mg - 1 tab PO BD x 1 month (prophylaxis)",
     "Tab. Vitamin B2 (Riboflavin) 400 mg - OD x 1 month"],
 advice="Maintain headache diary, avoid triggers (stress, sleep deprivation, certain foods, bright light). Adequate sleep/hydration. Review after 1 month; MRI Brain only if red flag symptoms appear."),

dict(no=8, dept="General Medicine", name="Kabita Sahu", age="26 yrs", sex="Female", opd="24698", date="17/08/2026",
 address="Jagatsinghpur, Odisha",
 complaints=["Generalized weakness and easy fatigability x 2 months","Giddiness on standing x 2 weeks","Hair fall and brittle nails x 1 month"],
 history="Menorrhagia present x 6 months. Vegetarian diet. No h/o malena/hematemesis.",
 examination=["Pallor: moderate (conjunctival, palmar)","BP: 100/64 mmHg, PR: 96/min","No icterus, no lymphadenopathy/organomegaly","Koilonychia present"],
 diagnosis="Iron Deficiency Anemia secondary to Menorrhagia",
 rx=["Tab. Ferrous Ascorbate (100 mg elemental Fe) + Folic Acid - 1 tab PO OD x 3 months",
     "Tab. Vitamin C 500 mg - OD (improves iron absorption) x 1 month",
     "Tab. Tranexamic Acid 500 mg - 1 tab PO TDS x 3 days during menses"],
 advice="Iron-rich diet (green leafy vegetables, jaggery, dates, protein). Investigations: CBC, Peripheral smear, Serum ferritin, Serum iron/TIBC, Stool occult blood. Refer Gynaecology for menorrhagia evaluation. Review after 4 weeks with repeat Hb."),

dict(no=9, dept="Medicine / Endocrinology", name="Manisha Mohanty", age="41 yrs", sex="Female", opd="24710", date="17/08/2026",
 address="Berhampur, Odisha",
 complaints=["Weight gain (~5 kg) x 6 months","Generalized fatigue and cold intolerance x 4 months","Constipation and dry skin x 3 months","Irregular menstrual cycles"],
 history="No neck swelling noticed. No previous thyroid disease documented.",
 examination=["BP: 122/80 mmHg, PR: 62/min (relative bradycardia)","Skin: dry, coarse, mild pretibial non-pitting puffiness","Thyroid: diffusely enlarged, non-tender, firm","Delayed relaxation of ankle jerk"],
 diagnosis="Primary Hypothyroidism (clinical, to be confirmed with TFT)",
 rx=["Tab. Levothyroxine 50 mcg - 1 tab PO OD, empty stomach, 30 min before breakfast (titrate per TSH)"],
 advice="Investigations: Serum TSH, Free T3/T4, Anti-TPO antibody, Lipid profile. Take strictly empty stomach with plain water, avoid calcium/iron within 4 hrs of dose. Review after 6 weeks with repeat TFT."),

dict(no=10, dept="Medicine / GI", name="Sanjay Kumar Patra", age="36 yrs", sex="Male", opd="24723", date="17/08/2026",
 address="Rourkela, Odisha",
 complaints=["Burning sensation in upper abdomen/chest x 1 month, worse after meals and at night","Sour belching and regurgitation x 1 month"],
 history="Frequent spicy/oily food, occasional NSAID use, smoker (5 cigarettes/day).",
 examination=["BP: 122/78 mmHg, PR: 76/min","Abdomen: soft, mild epigastric tenderness, no organomegaly","No pallor, no signs of GI bleed"],
 diagnosis="Gastro-Esophageal Reflux Disease (GERD) with Peptic Ulcer Disease - to rule out H. pylori",
 rx=["Cap. Pantoprazole 40 mg - 1 cap PO OD (before breakfast) x 4 weeks",
     "Tab. Domperidone 10 mg - 1 tab PO TDS (before meals) x 2 weeks",
     "Syp. Sucralfate 10 ml - PO TDS (1 hr before meals) x 2 weeks",
     "Tab. Antacid (Al-Mg hydroxide) - SOS for breakthrough symptoms"],
 advice="Avoid spicy/oily food, caffeine, alcohol, smoking cessation advised. Small frequent meals, avoid lying down after food. H. pylori stool antigen/UBT advised. Upper GI endoscopy if no improvement in 4 weeks or alarm symptoms. Review after 4 weeks."),

dict(no=11, dept="General Medicine", name="Lipika Das", age="29 yrs", sex="Female", opd="24735", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Burning micturition x 3 days","Increased frequency and urgency x 3 days","Mild suprapubic discomfort x 2 days"],
 history="No fever, no flank pain, no hematuria.",
 examination=["Temp: 98.6°F, BP: 118/74 mmHg","Abdomen: mild suprapubic tenderness, no renal angle tenderness"],
 diagnosis="Acute Uncomplicated Cystitis (Lower UTI)",
 rx=["Tab. Nitrofurantoin 100 mg - 1 tab PO BD x 5 days",
     "Tab. Paracetamol 500 mg - SOS for discomfort/fever",
     "Tab. Potassium Citrate syrup - 10 ml PO TDS x 5 days"],
 advice="Increase oral fluids (2-3 L/day), maintain perineal hygiene, void after intercourse. Urine R/E and culture-sensitivity advised. Review after 5 days or earlier if fever/flank pain develops."),

dict(no=12, dept="Medicine / Cardiology", name="Narayan Chandra Behera", age="58 yrs", sex="Male", opd="24828", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Central chest pain/heaviness x 6 hours, radiating to left arm and jaw","Associated sweating and nausea","Mild breathlessness"],
 history="K/c/o Type 2 DM and Hypertension x 8 yrs, smoker (20 pack-years). No previous cardiac event documented.",
 examination=["BP: 146/92 mmHg, PR: 98/min irregular-ish, RR: 20/min, SpO2: 96% RA","CVS: S1S2 normal, no murmur/gallop","Chest: B/L clear","ECG (OPD): ST depression in V4-V6 with T inversion"],
 diagnosis="Acute Coronary Syndrome (NSTEMI) - suspected",
 rx=["Tab. Aspirin 325 mg - chewed and swallowed, stat",
     "Tab. Clopidogrel 300 mg - stat loading dose",
     "Tab. Atorvastatin 80 mg - stat, then OD",
     "Inj. Enoxaparin (weight-based, e.g. 60 mg) - SC stat (as per protocol)",
     "Tab. Sublingual Nitroglycerin 0.5 mg - SOS for chest pain (if SBP >100 mmHg)",
     "Oxygen inhalation - if SpO2 <94%"],
 advice="EMERGENCY - immediate referral and admission to Cardiology/Medicine ICU/CCU for Troponin I/T, serial ECG, and further management (possible thrombolysis/PCI). Patient shifted from OPD to Emergency Department on wheelchair with continuous monitoring. Not to be sent home."),

dict(no=13, dept="Medicine / Cardiology", name="Padma Charan Mallik", age="66 yrs", sex="Male", opd="24835", date="17/08/2026",
 address="Balasore, Odisha",
 complaints=["Progressive breathlessness on exertion x 2 months, now at rest x 2 days","Swelling of both legs x 1 month","Orthopnea and paroxysmal nocturnal dyspnea x 1 week"],
 history="K/c/o old anterior wall MI (3 yrs back), on irregular medication. No chest pain currently.",
 examination=["BP: 138/88 mmHg, PR: 104/min irregular, RR: 24/min, SpO2: 93% RA","JVP: raised","B/L pitting pedal edema up to knee","Chest: B/L basal crepitations","CVS: S3 gallop present, displaced apex beat"],
 diagnosis="Decompensated Chronic Heart Failure (HFrEF) - Acute on Chronic",
 rx=["Tab. Furosemide 40 mg - 1 tab PO BD x 7 days (then step down as per response)",
     "Tab. Spironolactone 25 mg - 1 tab PO OD x 7 days",
     "Tab. Ramipril 2.5 mg - 1 tab PO OD (start low, titrate) x 7 days",
     "Tab. Bisoprolol 2.5 mg - 1 tab PO OD (once euvolemic) x 7 days",
     "Tab. Ecosprin 75 mg - OD","Tab. Atorvastatin 40 mg - OD (night)"],
 advice="Salt and fluid restriction (<2g salt/day, fluid <1.5 L/day), daily weight monitoring. Investigations: 2D-Echo, Chest X-ray, NT-proBNP, RFT & Serum Electrolytes, ECG. Admission advised in view of resting breathlessness and hypoxia; if OPD managed, review in 3-4 days with reports, earlier if worsening."),

dict(no=14, dept="Medicine / Nephrology", name="Krushna Chandra Dash", age="60 yrs", sex="Male", opd="24841", date="17/08/2026",
 address="Angul, Odisha",
 complaints=["Generalized weakness and loss of appetite x 2 months","Puffiness of face, especially in the morning x 3 weeks","Decreased urine output noted x 2 weeks","Occasional nausea"],
 history="K/c/o Type 2 DM x 12 yrs and Hypertension x 10 yrs, poor glycemic/BP control.",
 examination=["BP: 158/96 mmHg, PR: 84/min","Pallor: mild, facial and mild pedal puffiness","No signs of fluid overload currently (no crepitations)","Abdomen: no organomegaly"],
 diagnosis="Chronic Kidney Disease (Stage 3b-4, likely Diabetic Nephropathy) - on conservative management",
 rx=["Tab. Telmisartan 20 mg - 1 tab PO OD (low dose, monitor K+ and RFT) x 15 days",
     "Tab. Amlodipine 5 mg - 1 tab PO OD x 15 days",
     "Tab. Sodium Bicarbonate 500 mg - 1 tab PO BD (if acidotic) x 15 days",
     "Tab. Calcium Carbonate + Vit D3 - OD (with dinner) x 15 days",
     "Inj. Erythropoietin - if Hb <10 g/dl (as per lab report), SC weekly (to be initiated after workup)",
     "Avoid NSAIDs and nephrotoxic drugs strictly"],
 advice="Low protein, low salt, low potassium diet (dietician referral). Investigations: RFT (Urea/Creatinine), Serum Electrolytes, eGFR calculation, CBC, Urine ACR, USG KUB, HbA1c. Strict avoidance of NSAIDs/contrast agents. Refer Nephrology for further management/dialysis planning if eGFR <30. Review after 2 weeks with reports."),

dict(no=15, dept="Medicine / Infectious Disease", name="Biswanath Jena", age="24 yrs", sex="Male", opd="24850", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["High grade continuous fever x 6 days","Headache and generalized body ache x 5 days","Loss of appetite, mild abdominal discomfort x 4 days","Relative bradycardia noted"],
 history="No h/o rash, no joint pain, no significant travel h/o. Takes food mostly outside.",
 examination=["Temp: 102.4°F, PR: 88/min (relatively low for fever degree)","Abdomen: mild diffuse tenderness, spleen just palpable","Rose spots: not clearly seen","No signs of dehydration"],
 diagnosis="Enteric Fever (Typhoid) - clinical, Widal/Blood culture pending",
 rx=["Tab. Cefixime 200 mg - 1 tab PO BD x 10-14 days",
     "Tab. Paracetamol 500 mg - PO QID SOS for fever",
     "ORS/adequate oral fluids - ad lib",
     "Tab. Pantoprazole 40 mg - OD (before breakfast) x 10 days"],
 advice="Investigations: Blood culture (before antibiotics if possible), Widal test (paired sera preferred), CBC, LFT. Adequate rest, high calorie soft diet, avoid outside/street food and ensure safe drinking water. Watch for warning signs - abdominal distension, severe pain, GI bleed (risk of perforation) - report immediately. Review after 3-4 days or SOS."),

dict(no=16, dept="Medicine / Infectious Disease", name="Sabita Rani Patra", age="27 yrs", sex="Female", opd="24862", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["High grade fever with chills x 4 days","Severe body ache and retro-orbital pain x 3 days","Skin rash over trunk x 1 day","Mild gum bleeding noted today"],
 history="No h/o travel outside city. Neighbourhood has reported similar fever cases (seasonal, monsoon).",
 examination=["Temp: 103°F, BP: 108/70 mmHg, PR: 92/min","Skin: maculopapular rash over trunk and limbs","Tourniquet test: positive","No hepatosplenomegaly, no free fluid in abdomen"],
 diagnosis="Dengue Fever (suspected, Non-Severe/Warning-sign negative) - NS1/serology pending",
 rx=["Tab. Paracetamol 500 mg - PO QID SOS for fever (STRICTLY avoid NSAIDs/Aspirin/Ibuprofen)",
     "ORS and plenty of oral fluids (coconut water, fruit juice) - ad lib",
     "Tab. Domperidone 10 mg - SOS for nausea"],
 advice="Investigations: CBC with Platelet count (daily monitoring advised), NS1 antigen/IgM Dengue serology, Hematocrit. STRICTLY avoid NSAIDs, aspirin, and IM injections (bleeding risk). Watch for warning signs - persistent vomiting, severe abdominal pain, bleeding, restlessness, cold extremities, decreased urine output - report/admit IMMEDIATELY if any occur. Daily platelet monitoring at hospital lab advised. Review daily till fever settles and platelets stabilize."),

dict(no=17, dept="Medicine / Pulmonology", name="Gouranga Charan Behera", age="62 yrs", sex="Male", opd="24875", date="17/08/2026",
 address="Sundargarh, Odisha",
 complaints=["Increased breathlessness x 4 days, more than usual baseline","Increased cough with change in sputum colour (yellowish) x 4 days","Increased sputum volume x 3 days"],
 history="K/c/o COPD x 8 yrs, smoker (30 pack-years, quit 2 yrs back), on home inhalers. No fever currently.",
 examination=["RR: 26/min, PR: 100/min, SpO2: 90% RA, BP: 132/84 mmHg","Chest: B/L rhonchi with prolonged expiration, decreased breath sounds at bases","Use of accessory muscles present, no cyanosis","Pursed lip breathing noted"],
 diagnosis="Acute Exacerbation of COPD (AECOPD) - Moderate, likely infective",
 rx=["Nebulization with Salbutamol + Ipratropium - stat and QID in OPD/observation",
     "Tab. Amoxicillin-Clavulanate 625 mg - PO BD x 7 days (for infective exacerbation)",
     "Tab. Prednisolone 30 mg - OD x 5 days",
     "Tab. Theophylline SR 200 mg - PO BD x 7 days (if not already on adequate bronchodilator)",
     "Controlled Oxygen therapy - target SpO2 88-92% (avoid high flow in COPD)"],
 advice="Continue regular long-acting inhalers (LABA/LAMA) after acute phase, correct inhaler technique reinforced. Smoking cessation reinforced (already quit - congratulate and reinforce). Investigations: Chest X-ray, CBC, Sputum for AFB/culture if not improving. Pulmonary rehabilitation advised. Admission considered given SpO2 90% - if OPD managed, review in 24-48 hrs, immediate return if worsening."),

dict(no=18, dept="General Medicine", name="Trilochan Sahoo", age="50 yrs", sex="Male", opd="24888", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Painful swelling and redness of left leg x 3 days","Fever with chills x 2 days","Difficulty walking due to pain"],
 history="H/o minor trauma/abrasion over left leg 1 week back, K/c/o Type 2 DM x 5 yrs (poorly controlled).",
 examination=["Temp: 100.8°F, PR: 92/min, BP: 130/84 mmHg","Left leg: diffuse erythema, warmth, tenderness, and swelling from ankle to mid-shin, poorly defined margins","No crepitus, no bullae, no frank necrosis","RBS: 232 mg/dl"],
 diagnosis="Cellulitis of Left Lower Limb in a Diabetic Patient",
 rx=["Tab. Amoxicillin-Clavulanate 625 mg - PO BD x 10 days (or inj. Ceftriaxone 1g IV OD x 5 days if admitted)",
     "Tab. Paracetamol 500 mg - PO TDS SOS for fever/pain",
     "Tab. Metformin 500 mg - BD (continue/optimize glycemic control)",
     "Local wound care/dressing - OD","Leg elevation advised"],
 advice="Mark margins of erythema with pen to monitor progression/response. Strict glycemic control essential for resolution. Investigations: CBC, RBS/HbA1c, Wound swab culture if discharging, Doppler study if suspicion of DVT. Watch for rapidly spreading erythema, crepitus, severe pain out of proportion, systemic toxicity - suggests necrotizing infection, needs urgent Surgery referral/admission. Review after 3 days."),

dict(no=19, dept="Medicine / Rheumatology", name="Chittaranjan Mohapatra", age="52 yrs", sex="Male", opd="24895", date="17/08/2026",
 address="Cuttack, Odisha",
 complaints=["Sudden onset severe pain and swelling of right big toe x 1 day","Redness and warmth over the joint x 1 day","Unable to bear weight on right foot"],
 history="H/o similar episode 6 months back (self-resolved). Non-vegetarian diet with frequent red meat/alcohol intake.",
 examination=["Right 1st MTP joint: markedly swollen, red, warm, exquisitely tender","Temp: 99.2°F, BP: 138/86 mmHg","No other joint involvement currently","No tophi noted"],
 diagnosis="Acute Gouty Arthritis (Podagra)",
 rx=["Tab. Indomethacin 50 mg - PO TDS x 3 days, then taper over next 3-4 days",
     "Cap. Pantoprazole 40 mg - OD (gastro-protection) x 7 days",
     "Tab. Colchicine 0.5 mg - PO BD x 3 days (if NSAID contraindicated/inadequate)",
     "Ice application over joint - SOS","AVOID starting Allopurinol during acute attack"],
 advice="Avoid alcohol, red meat, organ meats, shellfish, and sugary beverages; adequate hydration. Do NOT start urate-lowering therapy (Allopurinol) during acute attack - to be started 2-4 weeks after acute attack settles, under supervision. Investigations: Serum Uric acid (may be normal during acute attack), RFT, Joint fluid analysis if diagnostic doubt. Review after 1 week; long-term urate-lowering therapy to be planned at follow-up."),

dict(no=20, dept="Medicine / Neurology", name="Ansuya Dei", age="55 yrs", sex="Female", opd="24902", date="17/08/2026",
 address="Puri, Odisha",
 complaints=["Sudden spinning sensation on head movement/turning in bed x 3 days","Brief episodes lasting <1 minute, triggered by position change","Associated nausea, no vomiting"],
 history="No hearing loss, no tinnitus, no ear discharge. No h/o head trauma. Not on any ototoxic medication.",
 examination=["BP: 128/82 mmHg, PR: 78/min","Dix-Hallpike test: positive nystagmus on right side","No focal neurological deficit, gait normal between episodes","Ear examination: normal, no discharge"],
 diagnosis="Benign Paroxysmal Positional Vertigo (BPPV) - Right posterior canal",
 rx=["Tab. Betahistine 16 mg - PO TDS x 2 weeks",
     "Tab. Prochlorperazine 5 mg - PO TDS SOS for nausea x 3 days",
     "Epley's repositioning maneuver - performed in OPD today, to be repeated if symptoms persist"],
 advice="Avoid sudden head movements for 24-48 hrs after maneuver, sleep with head slightly elevated for 2 nights. Home exercises (Brandt-Daroff) taught. Investigations: only if atypical features/red flags - MRI Brain if central cause suspected (i.e. no true positional trigger, associated focal deficit). Review after 2 weeks or earlier if not improved/worsening."),

dict(no=21, dept="General Medicine (F/U)", name="Ratnakar Panigrahi", age="49 yrs", sex="Male", opd="24910", date="17/08/2026",
 address="Bhubaneswar, Odisha",
 complaints=["Routine follow-up for dyslipidemia, no new complaints","No chest pain, no breathlessness","Occasional mild fatigue"],
 history="K/c/o Dyslipidemia x 1 yr, on statin therapy. Sedentary lifestyle, family h/o premature CAD (father, MI at age 50).",
 examination=["BP: 126/80 mmHg, PR: 76/min, Wt: 82 kg, BMI: 27.8 kg/m² (overweight)","No xanthelasma/xanthoma currently","CVS/Chest: normal","Lipid profile (last, 3 months back): Total Chol 240, LDL 158, TG 180, HDL 38 mg/dl"],
 diagnosis="Dyslipidemia (Mixed) - on treatment, Follow-up visit",
 rx=["Tab. Atorvastatin 20 mg - 1 tab PO OD (night) x 3 months (dose increased from 10 mg in view of inadequate LDL control)",
     "Tab. Fenofibrate 160 mg - 1 tab PO OD (morning, if TG remains high) x 3 months",
     "Tab. Ecosprin 75 mg - OD (given family h/o premature CAD, primary prevention discussion)"],
 advice="Reinforce lifestyle modification - low saturated fat diet, regular aerobic exercise 150 min/week, weight reduction, smoking/alcohol cessation if applicable. Repeat Lipid profile, LFT (baseline for statin) after 6-8 weeks. Discuss cardiovascular risk stratification given family history. Review after 3 months with repeat lipid profile."),
]
Now updating the PDF generation script to use this Medicine-only dataset with an updated title.
Writing File

~/odisha-opd-cases/generate_medicine_pdf.py

# -*- coding: utf-8 -*-
import sys
sys.path.insert(0, "/tmp/workspace/odisha-opd-cases")
from medicine_cases_data import MEDICINE_CASES as CASES

from reportlab.lib.pagesizes import A4
from reportlab.lib.units import mm
from reportlab.lib import colors
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
                                 HRFlowable, PageBreak, ListFlowable, ListItem)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT

styles = getSampleStyleSheet()

title_style = ParagraphStyle("TitleStyle", parent=styles["Title"], fontSize=16, leading=19,
                              textColor=colors.HexColor("#0B3D91"), alignment=TA_CENTER, spaceAfter=2)
subtitle_style = ParagraphStyle("SubtitleStyle", parent=styles["Normal"], fontSize=10.5, leading=13,
                                 alignment=TA_CENTER, textColor=colors.HexColor("#333333"))
dept_banner_style = ParagraphStyle("DeptBanner", parent=styles["Normal"], fontSize=11.5, leading=14,
                             alignment=TA_CENTER, textColor=colors.HexColor("#8B0000"), fontName="Helvetica-Bold",
                             spaceAfter=6)
case_no_style = ParagraphStyle("CaseNo", parent=styles["Normal"], fontSize=12, leading=15,
                                textColor=colors.white, fontName="Helvetica-Bold")
section_head = ParagraphStyle("SectionHead", parent=styles["Normal"], fontSize=10.5, leading=13,
                               textColor=colors.HexColor("#8B0000"), fontName="Helvetica-Bold", spaceBefore=6, spaceAfter=3)
body_style = ParagraphStyle("Body", parent=styles["Normal"], fontSize=9.7, leading=13, fontName="Helvetica")
bullet_style = ParagraphStyle("Bullet", parent=styles["Normal"], fontSize=9.7, leading=13, leftIndent=2)
rx_style = ParagraphStyle("Rx", parent=styles["Normal"], fontSize=9.7, leading=13.5, fontName="Helvetica")

PAGE_W, PAGE_H = A4

def header_block():
    elems = []
    elems.append(Paragraph("GOVT. MEDICAL COLLEGE &amp; HOSPITAL, ODISHA", title_style))
    elems.append(Paragraph("DEPARTMENT OF GENERAL MEDICINE &ndash; OPD CASE RECORDS &amp; PRESCRIPTIONS",
                            dept_banner_style))
    elems.append(Paragraph("(Illustrative Medicine OPD Cases &ndash; For Training/Educational Use Only)",
                            subtitle_style))
    elems.append(Spacer(1, 6))
    elems.append(HRFlowable(width="100%", thickness=1.2, color=colors.HexColor("#0B3D91")))
    elems.append(Spacer(1, 10))
    return elems

def patient_info_table(c):
    data = [
        ["Name:", c["name"], "OPD Reg. No.:", c["opd"]],
        ["Age / Sex:", f"{c['age']} / {c['sex']}", "Date:", c["date"]],
        ["Address:", c["address"], "Unit:", c["dept"]],
    ]
    t = Table(data, colWidths=[26*mm, 62*mm, 30*mm, 52*mm])
    t.setStyle(TableStyle([
        ("FONTNAME", (0,0), (0,-1), "Helvetica-Bold"),
        ("FONTNAME", (2,0), (2,-1), "Helvetica-Bold"),
        ("FONTSIZE", (0,0), (-1,-1), 9.5),
        ("VALIGN", (0,0), (-1,-1), "TOP"),
        ("TEXTCOLOR", (0,0), (0,-1), colors.HexColor("#0B3D91")),
        ("TEXTCOLOR", (2,0), (2,-1), colors.HexColor("#0B3D91")),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
        ("TOPPADDING", (0,0), (-1,-1), 3),
        ("BOX", (0,0), (-1,-1), 0.75, colors.HexColor("#999999")),
        ("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
        ("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#F5F7FA")),
    ]))
    return t

def bullets(items, style=bullet_style, bullet_char="\u2022"):
    lf_items = [ListItem(Paragraph(it, style), leftIndent=8, bulletColor=colors.HexColor("#0B3D91")) for it in items]
    return ListFlowable(lf_items, bulletType="bullet", start=bullet_char, leftIndent=10, spaceBefore=1, spaceAfter=4)

def numbered(items, style=rx_style):
    lf_items = [ListItem(Paragraph(it, style), leftIndent=8) for it in items]
    return ListFlowable(lf_items, bulletType="1", leftIndent=12, spaceBefore=1, spaceAfter=4, start=1)

def case_block(c):
    elems = []
    banner_data = [[Paragraph(f"CASE {c['no']}", case_no_style),
                     Paragraph(c["dept"], ParagraphStyle("d2", parent=styles["Normal"], fontSize=11,
                                                          textColor=colors.white, fontName="Helvetica-Bold",
                                                          alignment=TA_LEFT))]]
    bt = Table(banner_data, colWidths=[30*mm, 140*mm])
    bt.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#0B3D91")),
        ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
        ("TOPPADDING", (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ]))
    elems.append(bt)
    elems.append(Spacer(1, 6))
    elems.append(patient_info_table(c))
    elems.append(Spacer(1, 4))

    elems.append(Paragraph("Chief Complaints (C/O):", section_head))
    elems.append(bullets(c["complaints"]))

    elems.append(Paragraph("History:", section_head))
    elems.append(Paragraph(c["history"], body_style))

    elems.append(Paragraph("On Examination (O/E):", section_head))
    elems.append(bullets(c["examination"]))

    elems.append(Paragraph("Diagnosis:", section_head))
    elems.append(Paragraph(f"<b>{c['diagnosis']}</b>", body_style))

    elems.append(Paragraph("Rx (Prescription):", section_head))
    elems.append(numbered(c["rx"]))

    elems.append(Paragraph("Advice:", section_head))
    elems.append(Paragraph(c["advice"], body_style))

    elems.append(Spacer(1, 4))
    elems.append(Paragraph("Dr. _______________, MBBS/MD (Medicine), Regn. No. ___________ (Signature)",
                            ParagraphStyle("sig", parent=body_style, alignment=2, fontSize=9, textColor=colors.HexColor("#444444"))))
    return elems

def build_pdf(path):
    doc = SimpleDocTemplate(path, pagesize=A4,
                             leftMargin=16*mm, rightMargin=16*mm,
                             topMargin=14*mm, bottomMargin=14*mm,
                             title="OPD Cases - Department of General Medicine - Govt Medical College and Hospital, Odisha")
    story = []
    story += header_block()

    story.append(Paragraph("Index of Cases (Department of Medicine)", ParagraphStyle("idx", parent=styles["Heading2"], fontSize=13,
                                                              textColor=colors.HexColor("#0B3D91"))))
    idx_data = [["#", "Unit / Sub-speciality", "Diagnosis"]]
    for c in CASES:
        idx_data.append([str(c["no"]), c["dept"], c["diagnosis"]])
    idx_table = Table(idx_data, colWidths=[10*mm, 48*mm, 112*mm], repeatRows=1)
    idx_table.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#0B3D91")),
        ("TEXTCOLOR", (0,0), (-1,0), colors.white),
        ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
        ("FONTSIZE", (0,0), (-1,-1), 8.7),
        ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
        ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
        ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.white, colors.HexColor("#F0F3F8")]),
        ("TOPPADDING", (0,0), (-1,-1), 3),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ]))
    story.append(idx_table)
    story.append(PageBreak())

    for i, c in enumerate(CASES):
        story += case_block(c)
        if i != len(CASES) - 1:
            story.append(Spacer(1, 10))
            story.append(HRFlowable(width="100%", thickness=0.6, color=colors.HexColor("#AAAAAA"), dash=(2,2)))
            story.append(Spacer(1, 10))

    def add_footer(canvas, doc_):
        canvas.saveState()
        canvas.setFont("Helvetica", 7.5)
        canvas.setFillColor(colors.grey)
        canvas.drawCentredString(PAGE_W/2, 10*mm,
            f"Illustrative Medicine OPD case format - Govt. Medical College & Hospital, Odisha | For educational/training purposes only | Page {doc_.page}")
        canvas.restoreState()

    doc.build(story, onFirstPage=add_footer, onLaterPages=add_footer)

if __name__ == "__main__":
    out = "/tmp/workspace/odisha-opd-cases/OPD_Medicine_Cases_Odisha_GovtMCH.pdf"
    build_pdf(out)
    print("PDF generated:", out, "| total cases:", len(CASES))
Running Command

cd /tmp/workspace/odisha-opd-cases && python3 generate_medicine_pdf.py

Running Command

cd /tmp/workspace/odisha-opd-cases && python3 -c " from pypdf import PdfReader r = PdfReader('OPD_Medicine_Cases_Odisha_GovtMCH.pdf') print('Pages:', len(r.pages)) import os print('Size KB:', round(os.path.getsize('OPD_Medicine_Cases_Odisha_GovtMCH.pdf')/1024,1)) "

PDF built successfully - 15 pages, 21 Medicine-only cases.I've regenerated the PDF with 21 cases, all from the Department of General Medicine only (kept the 11 medicine cases from before and added 10 new medicine sub-speciality cases).

OPD Medicine Cases Odisha GovtMCH

PDF Document · PDF

Full case list (Dept. of General Medicine, 21 cases):
#Unit/Sub-specialityDiagnosis
1General MedicineAcute Viral URTI
2General Medicine (F/U)Uncontrolled Essential Hypertension
3General MedicineNewly diagnosed Type 2 DM
4General MedicineAcute Gastroenteritis with mild dehydration
5Medicine/PulmonologyAcute exacerbation of Bronchial Asthma
6Medicine/Chest & TBSuspected Pulmonary TB (NTEP workup)
7Medicine/NeurologyMigraine without aura
8General MedicineIron deficiency anemia (2° menorrhagia)
9Medicine/EndocrinologyPrimary Hypothyroidism
10Medicine/GIGERD with Peptic Ulcer Disease
11General MedicineAcute uncomplicated cystitis
12Medicine/CardiologyAcute Coronary Syndrome (NSTEMI) - new
13Medicine/CardiologyDecompensated Chronic Heart Failure - new
14Medicine/NephrologyChronic Kidney Disease (diabetic nephropathy) - new
15Medicine/Infectious DiseaseEnteric Fever (Typhoid) - new
16Medicine/Infectious DiseaseDengue Fever (suspected) - new
17Medicine/PulmonologyAcute Exacerbation of COPD - new
18General MedicineCellulitis of leg in a diabetic - new
19Medicine/RheumatologyAcute Gouty Arthritis - new
20Medicine/NeurologyBPPV (Vertigo) - new
21General Medicine (F/U)Dyslipidemia follow-up - new
All entries follow the same OPD case-sheet format (Name/Age-Sex/OPD Reg. No./Date/Address/Unit, Chief Complaints with duration, History, Examination, Diagnosis, full Rx with generic drug/dose/route/frequency/duration, and Advice with follow-up), including emergency-style cases (ACS, CHF, dengue) with appropriate red-flag/referral instructions as would be documented even in a fast-track Medicine OPD.
This is illustrative content for educational/training purposes only, not for actual clinical use.

Continue

The Medicine department PDF (21 cases) has already been completed and delivered in my last message. Could you clarify what you'd like me to continue with?
Asking for Preferences
Reading File
Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.