Slide 1: Title Professional Responsibility of Pharmacist & Role of Industry in Quality Use of Medicines (QUM) Subject: Quality Use of Medicines (QUM) Course: M.Pharm (Pharmacy Practice) Presented by: Anant Hulagani Slide 2: Learning Objectives After this presentation, you will be able to: Define Quality Use of Medicines (QUM). Explain the professional responsibilities of pharmacists. Describe the functions of Regulatory Affairs. Discuss the role of the pharmaceutical industry in medicine development. Explain how industry promotes QUM. Slide 3: Quality Use of Medicines (QUM) Definition Quality Use of Medicines (QUM) means selecting, prescribing, dispensing, and using medicines judiciously, appropriately, safely, effectively, and economically to achieve the best possible patient outcomes. Objectives Improve patient outcomes Promote rational medicine use Improve medicine safety Reduce medication errors Encourage evidence-based practice Minimize healthcare costs Slide 4: Professional Responsibility of Pharmacist Definition A pharmacist is responsible for ensuring the safe, effective, appropriate, and economical use of medicines. Major Responsibilities Verify prescriptions Dispense medicines accurately Patient counselling Monitor therapy Report ADRs Prevent medication errors Promote medication adherence Maintain confidentiality and ethics Slide 5: Regulatory Responsibilities of Pharmacists Tasks and Responsibilities Ensure medicine registration approval Maintain and update registrations Prepare registration dossiers Perform QA of artwork and packaging Ensure GMP compliance Update MDR/MIMS databases Submit regulatory documents Coordinate with regulatory authorities Slide 6: Functions of Regulatory Affairs Monitor pharmaceutical legislation Review legal and scientific requirements Prepare regulatory dossiers Assess quality, safety, and efficacy Coordinate regulatory submissions Support clinical trials and manufacturing Participate in post-marketing surveillance Slide 7: Role of Industry in QUM The pharmaceutical industry promotes QUM by: Developing safe and effective medicines Manufacturing high-quality medicines Marketing medicines responsibly Providing evidence-based medicine information Improving patient access Supporting healthcare professionals Collaborating with governments Slide 8: Role of Pharmacists in Pharmaceutical Industry Develop innovative medicines Ensure quality manufacturing Facilitate access to medicines Provide balanced medicine information Improve medicine labeling Support healthcare policy Promote rational medicine use Slide 9: Medicine Development Pathway Drug Discovery ↓ Preclinical Studies ↓ Clinical Trials ↓ Regulatory Approval ↓ Manufacturing (GMP) ↓ Marketing ↓ Post-Marketing Surveillance ↓ Patent Expiry / Generic Medicines Slide 10: Application of QUM Principles Safe medicine use Appropriate prescribing Effective therapy Patient education Staff training Ethical promotion High-quality manufacturing Pharmacovigilance Slide 11: Regulatory Requirements Comply with national regulations Provide reliable medicine information Maintain ethical relationships Support evidence-based medicine Balance commercial objectives with patient safety Continue research and innovation Slide 12: Industry–Pharmacist Collaboration Drug Discovery ↓ Clinical Trials ↓ Regulatory Approval ↓ Manufacturing ↓ Distribution ↓ Pharmacist Dispensing ↓ Patient Counselling ↓ ADR Reporting ↓ Quality Use of Medicines Slide 13: Challenges & Strategies Challenges Medication errors Polypharmacy Poor adherence Antibiotic resistance High R&D costs Counterfeit medicines Strategies Generic prescribing Patient counselling Pharmacovigilance GMP compliance Continuous professional education Evidence-based practice
mkdir -p /tmp/workspace/qum-presentation && ls /tmp/workspace/
~/qum-presentation/build_pptx.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.util import Inches, Pt
import copy
from lxml import etree
# ── Colour palette ──────────────────────────────────────────────
NAVY = RGBColor(0x1A, 0x33, 0x5C) # dark navy (headers / accents)
TEAL = RGBColor(0x00, 0x7A, 0x87) # teal accent
LIGHT_TEAL = RGBColor(0xE0, 0xF4, 0xF6) # very light teal (bg panels)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_GREY = RGBColor(0x33, 0x33, 0x33)
MID_GREY = RGBColor(0x66, 0x66, 0x66)
GOLD = RGBColor(0xF5, 0xA6, 0x23) # highlight accent
LIGHT_BG = RGBColor(0xF4, 0xF7, 0xFB) # slide background
GREEN = RGBColor(0x27, 0xAE, 0x60)
RED = RGBColor(0xC0, 0x39, 0x2B)
W = Inches(13.333)
H = Inches(7.5)
prs = Presentation()
prs.slide_width = W
prs.slide_height = H
blank = prs.slide_layouts[6] # fully blank
# ── Helper utilities ─────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_rgb=None, line_rgb=None, line_width_pt=0):
shape = slide.shapes.add_shape(1, x, y, w, h) # MSO_SHAPE_TYPE.RECTANGLE = 1
fill = shape.fill
if fill_rgb:
fill.solid()
fill.fore_color.rgb = fill_rgb
else:
fill.background()
line = shape.line
if line_rgb:
line.color.rgb = line_rgb
line.width = Pt(line_width_pt)
else:
line.fill.background()
return shape
def add_tb(slide, x, y, w, h, text, font_name="Calibri", font_size=18,
bold=False, italic=False, color=DARK_GREY, align=PP_ALIGN.LEFT,
word_wrap=True, v_anchor=MSO_ANCHOR.TOP, margin=True):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = word_wrap
tf.vertical_anchor = v_anchor
if not margin:
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.name = font_name
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
return tb
def add_para(tf, text, font_name="Calibri", font_size=14, bold=False,
italic=False, color=DARK_GREY, align=PP_ALIGN.LEFT, space_before=6):
from pptx.oxml.ns import qn
from pptx.util import Pt as _Pt
p = tf.add_paragraph()
p.alignment = align
p.space_before = _Pt(space_before)
run = p.add_run()
run.text = text
run.font.name = font_name
run.font.size = _Pt(font_size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
return p
def slide_background(slide, color=LIGHT_BG):
add_rect(slide, 0, 0, W, H, fill_rgb=color)
def header_bar(slide, title, subtitle=None):
"""Navy top bar with white title."""
add_rect(slide, 0, 0, W, Inches(1.1), fill_rgb=NAVY)
add_rect(slide, 0, Inches(1.1), W, Inches(0.07), fill_rgb=GOLD)
add_tb(slide, Inches(0.4), Inches(0.1), Inches(12.5), Inches(0.85),
title, font_size=30, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
def footer_bar(slide, text="Quality Use of Medicines | M.Pharm Pharmacy Practice | Anant Hulagani"):
add_rect(slide, 0, H - Inches(0.35), W, Inches(0.35), fill_rgb=NAVY)
add_tb(slide, Inches(0.3), H - Inches(0.35), Inches(12.7), Inches(0.35),
text, font_size=9, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE, margin=False, align=PP_ALIGN.CENTER)
def bullet_box(slide, items, x, y, w, h, header=None, header_color=TEAL,
bullet_size=13, header_size=15):
"""Teal-header card with bullet list."""
add_rect(slide, x, y, w, h, fill_rgb=WHITE, line_rgb=TEAL, line_width_pt=1.5)
top = y
if header:
add_rect(slide, x, y, w, Inches(0.38), fill_rgb=header_color)
add_tb(slide, x + Inches(0.1), y + Inches(0.02), w - Inches(0.2), Inches(0.34),
header, font_size=header_size, bold=True, color=WHITE,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
top = y + Inches(0.38)
tb = slide.shapes.add_textbox(x + Inches(0.18), top + Inches(0.08),
w - Inches(0.36), h - (top - y) - Inches(0.16))
tf = tb.text_frame
tf.word_wrap = True
first = True
for item in items:
if first:
p = tf.paragraphs[0]
first = False
else:
p = tf.add_paragraph()
p.space_before = Pt(4)
run = p.add_run()
run.text = f"▸ {item}"
run.font.name = "Calibri"
run.font.size = Pt(bullet_size)
run.font.color.rgb = DARK_GREY
return tb
def numbered_box(slide, items, x, y, w, h, header=None, header_color=TEAL,
bullet_size=13, header_size=15):
add_rect(slide, x, y, w, h, fill_rgb=WHITE, line_rgb=TEAL, line_width_pt=1.5)
top = y
if header:
add_rect(slide, x, y, w, Inches(0.38), fill_rgb=header_color)
add_tb(slide, x + Inches(0.1), y + Inches(0.02), w - Inches(0.2), Inches(0.34),
header, font_size=header_size, bold=True, color=WHITE,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
top = y + Inches(0.38)
tb = slide.shapes.add_textbox(x + Inches(0.18), top + Inches(0.08),
w - Inches(0.36), h - (top - y) - Inches(0.16))
tf = tb.text_frame
tf.word_wrap = True
first = True
for i, item in enumerate(items, 1):
if first:
p = tf.paragraphs[0]
first = False
else:
p = tf.add_paragraph()
p.space_before = Pt(4)
run = p.add_run()
run.text = f"{i}. {item}"
run.font.name = "Calibri"
run.font.size = Pt(bullet_size)
run.font.color.rgb = DARK_GREY
# ════════════════════════════════════════════════════════════════
# SLIDE 1 — Title
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
# Full-bleed gradient-like background using two rects
add_rect(s, 0, 0, W, H, fill_rgb=NAVY)
add_rect(s, 0, H*0.45, W, H*0.55, fill_rgb=RGBColor(0x0F, 0x1E, 0x3C))
# Decorative side stripe
add_rect(s, W - Inches(0.45), 0, Inches(0.45), H, fill_rgb=TEAL)
add_rect(s, W - Inches(0.9), 0, Inches(0.07), H, fill_rgb=GOLD)
# Gold horizontal divider
add_rect(s, Inches(0.5), Inches(2.65), Inches(8.5), Inches(0.06), fill_rgb=GOLD)
# Subject pill
add_rect(s, Inches(0.5), Inches(1.15), Inches(3.6), Inches(0.42), fill_rgb=TEAL)
add_tb(s, Inches(0.55), Inches(1.15), Inches(3.5), Inches(0.42),
"Quality Use of Medicines (QUM)", font_size=12, bold=True,
color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# Main title
add_tb(s, Inches(0.5), Inches(1.75), Inches(10), Inches(0.72),
"Professional Responsibility of Pharmacist", font_size=36, bold=True,
color=WHITE, margin=False)
add_tb(s, Inches(0.5), Inches(2.38), Inches(10), Inches(0.38),
"& Role of Industry in Quality Use of Medicines", font_size=22,
color=RGBColor(0xB0, 0xC8, 0xE8), margin=False)
# Meta block
meta = [
("Subject:", "Quality Use of Medicines (QUM)"),
("Course:", "M.Pharm – Pharmacy Practice"),
("Presented by:", "Anant Hulagani"),
]
for i, (lbl, val) in enumerate(meta):
add_tb(s, Inches(0.5), Inches(3.0) + Inches(i * 0.5), Inches(2.1), Inches(0.45),
lbl, font_size=13, bold=True, color=GOLD, margin=False)
add_tb(s, Inches(2.55), Inches(3.0) + Inches(i * 0.5), Inches(6.5), Inches(0.45),
val, font_size=13, color=WHITE, margin=False)
# Decorative circles
from pptx.util import Emu
def add_circle(slide, cx, cy, r, fill):
shape = slide.shapes.add_shape(9, cx - r, cy - r, r*2, r*2)
shape.fill.solid(); shape.fill.fore_color.rgb = fill
shape.line.fill.background()
return shape
add_circle(s, W - Inches(3.5), Inches(5.8), Inches(1.4), RGBColor(0x00, 0x5F, 0x6B))
add_circle(s, W - Inches(2.4), Inches(4.6), Inches(0.7), RGBColor(0x00, 0x8A, 0x9A))
add_circle(s, W - Inches(4.8), Inches(6.4), Inches(0.5), RGBColor(0x00, 0x5F, 0x6B))
# Rx symbol area
add_tb(s, W - Inches(4.6), Inches(4.2), Inches(2.5), Inches(2.5),
"℞", font_size=90, bold=True, color=RGBColor(0xFF,0xFF,0xFF),
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
footer_bar(s)
# ════════════════════════════════════════════════════════════════
# SLIDE 2 — Learning Objectives
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Learning Objectives")
footer_bar(s)
objectives = [
"Define Quality Use of Medicines (QUM)",
"Explain the professional responsibilities of pharmacists",
"Describe the functions of Regulatory Affairs",
"Discuss the role of the pharmaceutical industry in medicine development",
"Explain how industry promotes QUM",
]
# Intro text
add_tb(s, Inches(0.5), Inches(1.22), Inches(12.3), Inches(0.38),
"After this presentation, you will be able to:", font_size=14,
italic=True, color=MID_GREY)
# Numbered objective cards
card_w = Inches(11.8)
card_h = Inches(0.65)
start_y = Inches(1.7)
gap = Inches(0.18)
colors = [TEAL, NAVY, TEAL, NAVY, TEAL]
for i, obj in enumerate(objectives):
y = start_y + i * (card_h + gap)
add_rect(s, Inches(0.5), y, card_w, card_h, fill_rgb=WHITE,
line_rgb=colors[i], line_width_pt=2)
# Number circle
add_rect(s, Inches(0.5), y, Inches(0.65), card_h, fill_rgb=colors[i])
add_tb(s, Inches(0.5), y, Inches(0.65), card_h,
str(i+1), font_size=18, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
add_tb(s, Inches(1.25), y, card_w - Inches(0.85), card_h,
obj, font_size=14, color=DARK_GREY,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 3 — QUM Definition
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Quality Use of Medicines (QUM)")
footer_bar(s)
# Definition box (full-width)
add_rect(s, Inches(0.5), Inches(1.28), Inches(12.33), Inches(1.18),
fill_rgb=RGBColor(0xE8, 0xF5, 0xF8), line_rgb=TEAL, line_width_pt=2)
add_rect(s, Inches(0.5), Inches(1.28), Inches(0.55), Inches(1.18), fill_rgb=TEAL)
add_tb(s, Inches(0.5), Inches(1.28), Inches(0.55), Inches(1.18),
"❝", font_size=28, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
add_tb(s, Inches(1.2), Inches(1.33), Inches(11.4), Inches(1.08),
"Quality Use of Medicines means selecting, prescribing, dispensing, and using medicines "
"judiciously, appropriately, safely, effectively, and economically to achieve the "
"best possible patient outcomes.",
font_size=14, italic=True, color=NAVY, word_wrap=True, margin=False)
# Objectives cards — 2 rows × 3 columns
objectives_qum = [
("🎯", "Improve Patient\nOutcomes"),
("💊", "Promote Rational\nMedicine Use"),
("🛡️", "Improve Medicine\nSafety"),
("⚠️", "Reduce Medication\nErrors"),
("🔬", "Evidence-Based\nPractice"),
("💰", "Minimize\nHealthcare Costs"),
]
cx = Inches(0.5)
cy = Inches(2.72)
cw = Inches(1.95)
ch = Inches(1.8)
gap_x = Inches(0.18)
gap_y = Inches(0.18)
add_tb(s, Inches(0.5), Inches(2.55), Inches(6), Inches(0.3),
"Key Objectives", font_size=14, bold=True, color=NAVY, margin=False)
for i, (icon, label) in enumerate(objectives_qum):
col = i % 6
row = i // 6
x = cx + col*(cw + gap_x)
y = cy + row*(ch + gap_y)
add_rect(s, x, y, cw, ch, fill_rgb=WHITE, line_rgb=TEAL, line_width_pt=1.5)
add_rect(s, x, y, cw, Inches(0.08), fill_rgb=TEAL)
add_tb(s, x, y + Inches(0.18), cw, Inches(0.7),
icon, font_size=26, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
add_tb(s, x, y + Inches(0.88), cw, Inches(0.8),
label, font_size=12, bold=True, color=NAVY,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 4 — Professional Responsibility of Pharmacist
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Professional Responsibility of Pharmacist")
footer_bar(s)
# Definition
add_rect(s, Inches(0.5), Inches(1.25), Inches(12.33), Inches(0.85),
fill_rgb=RGBColor(0xE8, 0xF5, 0xF8), line_rgb=TEAL, line_width_pt=2)
add_tb(s, Inches(0.7), Inches(1.3), Inches(12.0), Inches(0.75),
"A pharmacist is responsible for ensuring the safe, effective, appropriate, and "
"economical use of medicines for every patient.",
font_size=13, italic=True, color=NAVY, word_wrap=True, margin=False)
# 8 responsibility cards 2×4
responsibilities = [
("📋", "Verify\nPrescriptions"),
("💊", "Dispense\nAccurately"),
("🗣️", "Patient\nCounselling"),
("📊", "Monitor\nTherapy"),
("⚠️", "Report ADRs"),
("🚫", "Prevent Medication\nErrors"),
("✅", "Promote\nAdherence"),
("🔒", "Maintain\nConfidentiality"),
]
cw = Inches(1.52); ch = Inches(1.6)
gap = Inches(0.12)
start_x = Inches(0.5)
start_y = Inches(2.25)
for i, (icon, label) in enumerate(responsibilities):
col = i % 4; row = i // 4
x = start_x + col*(cw + gap + Inches(0.1))
y = start_y + row*(ch + gap)
bg = LIGHT_TEAL if row == 0 else RGBColor(0xF0, 0xF8, 0xFF)
add_rect(s, x, y, cw, ch, fill_rgb=bg, line_rgb=TEAL, line_width_pt=1.5)
add_rect(s, x, y, cw, Inches(0.06), fill_rgb=TEAL)
add_tb(s, x, y + Inches(0.12), cw, Inches(0.7),
icon, font_size=24, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
add_tb(s, x, y + Inches(0.82), cw, Inches(0.75),
label, font_size=11, bold=True, color=NAVY,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 5 — Regulatory Responsibilities of Pharmacists
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Regulatory Responsibilities of Pharmacists")
footer_bar(s)
reg_items = [
"Ensure medicine registration approval",
"Maintain and update registrations",
"Prepare registration dossiers",
"Perform QA of artwork and packaging",
"Ensure GMP compliance",
"Update MDR / MIMS databases",
"Submit regulatory documents",
"Coordinate with regulatory authorities",
]
# Two column layout
col1 = reg_items[:4]
col2 = reg_items[4:]
bullet_box(s, col1, Inches(0.5), Inches(1.28), Inches(5.9), Inches(5.5),
header="Core Tasks", header_color=TEAL, bullet_size=14)
bullet_box(s, col2, Inches(6.9), Inches(1.28), Inches(5.9), Inches(5.5),
header="Compliance & Coordination", header_color=NAVY, bullet_size=14)
# ════════════════════════════════════════════════════════════════
# SLIDE 6 — Functions of Regulatory Affairs
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Functions of Regulatory Affairs")
footer_bar(s)
functions = [
("📜", "Monitor pharmaceutical legislation"),
("🔍", "Review legal and scientific requirements"),
("📁", "Prepare regulatory dossiers"),
("✔️", "Assess quality, safety, and efficacy"),
("🤝", "Coordinate regulatory submissions"),
("🧪", "Support clinical trials & manufacturing"),
("📡", "Participate in post-marketing surveillance"),
]
cw = Inches(5.7); ch = Inches(0.72)
gap = Inches(0.1)
start_y = Inches(1.3)
start_x_left = Inches(0.5)
start_x_right = Inches(6.63)
for i, (icon, text) in enumerate(functions):
row = i % 4; col_flag = i // 4
x = start_x_left if col_flag == 0 else start_x_right
y = start_y + row*(ch + gap)
c = TEAL if i % 2 == 0 else NAVY
add_rect(s, x, y, cw, ch, fill_rgb=WHITE, line_rgb=c, line_width_pt=1.5)
add_rect(s, x, y, Inches(0.6), ch, fill_rgb=c)
add_tb(s, x, y, Inches(0.6), ch,
icon, font_size=18, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
add_tb(s, x + Inches(0.7), y, cw - Inches(0.75), ch,
text, font_size=13, color=DARK_GREY,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 7 — Role of Industry in QUM
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Role of Industry in Quality Use of Medicines")
footer_bar(s)
add_tb(s, Inches(0.5), Inches(1.22), Inches(12), Inches(0.35),
"The pharmaceutical industry promotes QUM by:", font_size=13,
italic=True, color=MID_GREY, margin=False)
industry_roles = [
("🧬", "Developing Safe &\nEffective Medicines"),
("🏭", "Manufacturing\nHigh-Quality Medicines"),
("📣", "Responsible\nMarketing"),
("📚", "Evidence-Based\nMedicine Information"),
("🌍", "Improving\nPatient Access"),
("👩⚕️", "Supporting Healthcare\nProfessionals"),
("🏛️", "Collaborating with\nGovernments"),
]
cw = Inches(1.65); ch = Inches(1.75)
gap_x = Inches(0.15)
start_x = Inches(0.5)
start_y = Inches(1.65)
for i, (icon, label) in enumerate(industry_roles):
x = start_x + i*(cw + gap_x)
bg = LIGHT_TEAL if i % 2 == 0 else WHITE
add_rect(s, x, start_y, cw, ch, fill_rgb=bg, line_rgb=TEAL, line_width_pt=1.5)
add_rect(s, x, start_y, cw, Inches(0.06), fill_rgb=TEAL)
add_tb(s, x, start_y + Inches(0.12), cw, Inches(0.7),
icon, font_size=26, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
add_tb(s, x, start_y + Inches(0.82), cw, Inches(0.9),
label, font_size=11, bold=True, color=NAVY,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# Key message banner
add_rect(s, Inches(0.5), Inches(3.65), Inches(12.33), Inches(0.7),
fill_rgb=NAVY, line_rgb=GOLD, line_width_pt=2)
add_tb(s, Inches(0.7), Inches(3.65), Inches(12), Inches(0.7),
"Industry's ultimate goal: Patient safety + Rational drug use + Societal health",
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 8 — Role of Pharmacists in Pharmaceutical Industry
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Role of Pharmacists in the Pharmaceutical Industry")
footer_bar(s)
pharma_roles = [
"Develop innovative medicines",
"Ensure quality manufacturing",
"Facilitate access to medicines",
"Provide balanced medicine information",
"Improve medicine labeling",
"Support healthcare policy",
"Promote rational medicine use",
]
bullet_box(s, pharma_roles, Inches(0.5), Inches(1.28), Inches(6.4), Inches(5.55),
header="Key Roles", header_color=TEAL, bullet_size=14)
# Right side: visual icon panel
icon_data = [
("🧪", "R&D"), ("🏭", "Manufacturing"), ("🤝", "Access"),
("📋", "Information"), ("🏛️", "Policy"),
]
iw = Inches(1.1); ih = Inches(1.05); igap = Inches(0.1)
ix0 = Inches(7.1)
iy0 = Inches(1.28)
for i, (ic, lb) in enumerate(icon_data):
col = i % 2; row = i // 2
ix = ix0 + col*(iw + igap + Inches(0.35))
iy = iy0 + row*(ih + igap)
add_rect(s, ix, iy, iw + Inches(0.35), ih, fill_rgb=LIGHT_TEAL, line_rgb=TEAL, line_width_pt=1)
add_tb(s, ix, iy, iw + Inches(0.35), Inches(0.6),
ic, font_size=22, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
add_tb(s, ix, iy + Inches(0.58), iw + Inches(0.35), Inches(0.45),
lb, font_size=11, bold=True, color=NAVY,
align=PP_ALIGN.CENTER, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 9 — Medicine Development Pathway
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Medicine Development Pathway")
footer_bar(s)
stages = [
("🔬", "Drug\nDiscovery"),
("🐁", "Preclinical\nStudies"),
("🏥", "Clinical\nTrials"),
("📜", "Regulatory\nApproval"),
("🏭", "Manufacturing\n(GMP)"),
("📣", "Marketing"),
("📡", "Post-Marketing\nSurveillance"),
("💊", "Patent Expiry /\nGenerics"),
]
sw = Inches(1.45); sh = Inches(1.85)
gap = Inches(0.07)
start_x = Inches(0.45)
start_y = Inches(1.4)
colors_stage = [TEAL, NAVY, TEAL, NAVY, TEAL, NAVY, TEAL, NAVY]
for i, (icon, label) in enumerate(stages):
x = start_x + i*(sw + gap)
add_rect(s, x, start_y, sw, sh, fill_rgb=colors_stage[i])
add_tb(s, x, start_y + Inches(0.1), sw, Inches(0.7),
icon, font_size=24, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE, color=WHITE, margin=False)
add_tb(s, x, start_y + Inches(0.78), sw, Inches(1.05),
label, font_size=11, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# Arrow
if i < len(stages) - 1:
ax = x + sw + Inches(0.01)
add_tb(s, ax, start_y + Inches(0.7), Inches(0.07), Inches(0.5),
"►", font_size=14, color=NAVY,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# Timeline label
add_tb(s, Inches(0.45), start_y + sh + Inches(0.15), Inches(12), Inches(0.35),
"Average time: 10–15 years | Average cost: $1–2 billion",
font_size=12, italic=True, color=MID_GREY,
align=PP_ALIGN.CENTER, margin=False)
# Phase annotations
add_rect(s, Inches(0.45), start_y + sh + Inches(0.6), Inches(12.33), Inches(0.95),
fill_rgb=WHITE, line_rgb=TEAL, line_width_pt=1.5)
phases = [
("Basic Research", "0–4 yrs", Inches(0.7)),
("Preclinical", "2–3 yrs", Inches(3.1)),
("Phase I–III Trials", "6–7 yrs", Inches(4.8)),
("Approval & Launch", "1–2 yrs", Inches(7.7)),
("Post-Market", "Ongoing", Inches(9.7)),
]
for label, dur, x in phases:
add_tb(s, x, start_y + sh + Inches(0.64), Inches(1.9), Inches(0.42),
label, font_size=10, bold=True, color=NAVY, margin=False)
add_tb(s, x, start_y + sh + Inches(0.98), Inches(1.9), Inches(0.35),
dur, font_size=10, italic=True, color=TEAL, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 10 — Application of QUM Principles
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Application of QUM Principles")
footer_bar(s)
principles = [
("🛡️", "Safe Medicine\nUse", TEAL),
("📋", "Appropriate\nPrescribing", NAVY),
("✅", "Effective\nTherapy", TEAL),
("🎓", "Patient\nEducation", NAVY),
("👨🏫", "Staff\nTraining", TEAL),
("⚖️", "Ethical\nPromotion", NAVY),
("🏭", "High-Quality\nManufacturing", TEAL),
("📡", "Pharmaco-\nvigilance", NAVY),
]
pw = Inches(1.52); ph = Inches(1.85)
pgap = Inches(0.12)
px0 = Inches(0.5)
py0 = Inches(1.35)
for i, (icon, label, color) in enumerate(principles):
col = i % 4; row = i // 4
px = px0 + col*(pw + pgap + Inches(0.1))
py = py0 + row*(ph + Inches(0.15))
add_rect(s, px, py, pw, ph, fill_rgb=color)
add_tb(s, px, py + Inches(0.1), pw, Inches(0.7),
icon, font_size=24, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE, color=WHITE, margin=False)
add_tb(s, px, py + Inches(0.78), pw, Inches(1.05),
label, font_size=11, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 11 — Regulatory Requirements
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Regulatory Requirements for the Pharmaceutical Industry")
footer_bar(s)
req_items = [
("📜", "Comply with national and international regulations"),
("📚", "Provide reliable, accurate medicine information"),
("🤝", "Maintain ethical relationships with healthcare professionals"),
("🔬", "Support evidence-based medicine and research"),
("⚖️", "Balance commercial objectives with patient safety"),
("💡", "Continue research and innovation for unmet needs"),
]
for i, (icon, text) in enumerate(req_items):
y = Inches(1.3) + i * Inches(0.85)
c = TEAL if i % 2 == 0 else NAVY
add_rect(s, Inches(0.5), y, Inches(12.33), Inches(0.72),
fill_rgb=WHITE, line_rgb=c, line_width_pt=1.5)
add_rect(s, Inches(0.5), y, Inches(0.65), Inches(0.72), fill_rgb=c)
add_tb(s, Inches(0.5), y, Inches(0.65), Inches(0.72),
icon, font_size=18, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
add_tb(s, Inches(1.25), y, Inches(11.45), Inches(0.72),
text, font_size=14, color=DARK_GREY,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 12 — Industry–Pharmacist Collaboration Flowchart
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Industry–Pharmacist Collaboration: From Discovery to QUM")
footer_bar(s)
flow_steps = [
("🔬 Drug Discovery", NAVY),
("🧪 Clinical Trials", TEAL),
("📜 Regulatory Approval", NAVY),
("🏭 Manufacturing", TEAL),
("🚚 Distribution", NAVY),
("💊 Pharmacist Dispensing", TEAL),
("🗣️ Patient Counselling", NAVY),
("⚠️ ADR Reporting", TEAL),
("✅ Quality Use of Medicines", GOLD),
]
bw = Inches(1.25); bh = Inches(0.6)
bgap = Inches(0.0)
# Two-column zigzag
col1 = [0,1,2,3,4]
col2 = [5,6,7,8]
def flow_box(slide, text, color, x, y, w=Inches(5.5), h=Inches(0.58)):
tc = WHITE if color != GOLD else DARK_GREY
add_rect(slide, x, y, w, h, fill_rgb=color)
add_tb(slide, x + Inches(0.1), y, w - Inches(0.2), h,
text, font_size=13, bold=True, color=tc,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
box_w = Inches(5.5)
box_h = Inches(0.58)
gap_v = Inches(0.12)
lx = Inches(0.5)
rx = Inches(7.3)
ly = Inches(1.3)
ry = Inches(1.3)
for i, (label, color) in enumerate(flow_steps):
if i < 5:
flow_box(s, label, color, lx, ly + i*(box_h + gap_v), box_w, box_h)
if i < 4:
add_tb(s, lx, ly + i*(box_h + gap_v) + box_h, box_w, gap_v,
"▼", font_size=10, align=PP_ALIGN.CENTER, color=NAVY,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
else:
j = i - 5
flow_box(s, label, color, rx, ry + j*(box_h + gap_v), box_w, box_h)
if j < 3:
add_tb(s, rx, ry + j*(box_h + gap_v) + box_h, box_w, gap_v,
"▼", font_size=10, align=PP_ALIGN.CENTER, color=NAVY,
v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# Connecting arrow between columns
mid_y = Inches(3.8)
add_rect(s, Inches(6.05), mid_y, Inches(1.2), Inches(0.07), fill_rgb=GOLD)
add_tb(s, Inches(6.55), mid_y - Inches(0.25), Inches(0.3), Inches(0.6),
"►", font_size=16, bold=True, color=GOLD,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# ════════════════════════════════════════════════════════════════
# SLIDE 13 — Challenges & Strategies
# ════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
slide_background(s)
header_bar(s, "Challenges & Strategies in QUM")
footer_bar(s)
challenges = [
"Medication errors",
"Polypharmacy",
"Poor patient adherence",
"Antibiotic resistance",
"High R&D costs",
"Counterfeit medicines",
]
strategies = [
"Generic prescribing",
"Patient counselling",
"Pharmacovigilance",
"GMP compliance",
"Continuous professional education",
"Evidence-based practice",
]
bullet_box(s, challenges, Inches(0.5), Inches(1.28), Inches(5.9), Inches(5.55),
header="⚠️ Challenges", header_color=RED, bullet_size=14)
bullet_box(s, strategies, Inches(6.9), Inches(1.28), Inches(5.9), Inches(5.55),
header="✅ Strategies", header_color=GREEN, bullet_size=14)
# VS divider
add_rect(s, Inches(6.48), Inches(1.4), Inches(0.36), Inches(5.3),
fill_rgb=RGBColor(0xEE, 0xEE, 0xEE))
add_tb(s, Inches(6.43), Inches(3.8), Inches(0.46), Inches(0.46),
"VS", font_size=14, bold=True, color=DARK_GREY,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False)
# ── Save ─────────────────────────────────────────────────────────
out = "/tmp/workspace/qum-presentation/QUM_Professional_Responsibility.pptx"
prs.save(out)
print(f"Saved: {out}")
cd /tmp/workspace/qum-presentation && python build_pptx.py 2>&1
python -c " from pptx import Presentation prs = Presentation('/tmp/workspace/qum-presentation/QUM_Professional_Responsibility.pptx') print(f'Slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [] for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip() if t: texts.append(t[:60]) print(f' Slide {i}: {texts[:3]}') "
QUM Professional Responsibility
Presentation · PPTX
| Slide | Content | Design |
|---|---|---|
| 1 | Title Slide | Full navy background, Rx symbol, gold divider, meta block |
| 2 | Learning Objectives | Numbered cards with alternating navy/teal borders |
| 3 | QUM Definition | Quote box + 6 icon cards for objectives |
| 4 | Professional Responsibilities | Definition strip + 8 icon cards in a 4×2 grid |
| 5 | Regulatory Responsibilities | Two-column bullet boxes (Core Tasks / Compliance) |
| 6 | Functions of Regulatory Affairs | 7 icon-rows in two columns with alternating colors |
| 7 | Role of Industry in QUM | 7 icon cards + key message banner |
| 8 | Pharmacists in Industry | Bullet list + icon panel |
| 9 | Medicine Development Pathway | 8-stage colored flow with timeline annotation |
| 10 | Application of QUM Principles | 8 icon cards in a 4×2 grid |
| 11 | Regulatory Requirements | 6 full-width icon rows |
| 12 | Industry–Pharmacist Collaboration | Two-column flowchart with connecting arrow |
| 13 | Challenges & Strategies | Red vs. Green split layout with VS divider |