Composition, regulation, function , secretion of pancreatic juice 6 marks
| Category | Enzyme | Active Form | Action |
|---|---|---|---|
| Proteolytic | Trypsinogen | Trypsin | Splits proteins into peptides |
| Chymotrypsinogen | Chymotrypsin | Splits proteins/peptides | |
| Procarboxypeptidase | Carboxypeptidase | Releases free amino acids | |
| Proelastase | Elastase | Digests elastin | |
| Amylolytic | Pancreatic amylase | (secreted active) | Hydrolyzes starch, glycogen -> disaccharides |
| Lipolytic | Pancreatic lipase | (secreted active) | Neutral fat -> fatty acids + monoglycerides |
| Cholesterol esterase | (secreted active) | Hydrolyzes cholesterol esters | |
| Phospholipase A2 | (activated by trypsin) | Splits fatty acids from phospholipids | |
| Nucleolytic | DNase, RNase | (active) | Digests nucleic acids |

Flow rate effect: At high flow rates, HCO3- concentration rises and Cl- falls (less time for exchange in large ducts). At low flow rates, HCO3- is reabsorbed in exchange for Cl-, so Cl- is higher.
| Function | Component Responsible |
|---|---|
| Neutralize gastric acid (raises duodenal pH to 6-7) | HCO3- in aqueous component |
| Protein digestion | Trypsin, chymotrypsin, carboxypeptidase, elastase |
| Carbohydrate digestion | Pancreatic amylase |
| Fat digestion | Lipase, cholesterol esterase, phospholipase A2 |
| Nucleic acid digestion | DNase, RNase |

| Stimulus | Trigger | Secreted by | Target Cell | Second Messenger | Effect |
|---|---|---|---|---|---|
| Secretin | H+ (acidic chyme) in duodenum | S cells of duodenum/jejunum | Ductal cells | cAMP ↑ | Large volume, HCO3--rich, enzyme-poor juice |
| CCK | Amino acids (Phe, Met, Trp), fatty acids, small peptides | I cells of duodenum/jejunum | Acinar cells | IP3/Ca2+ ↑ | Enzyme-rich, low-volume juice |
| Phase | Stimulus | Mediator | Contribution |
|---|---|---|---|
| Cephalic (~20%) | Sight, smell, taste, thought of food | Vagus nerve (ACh) | Mainly enzyme-rich; small volume |
| Gastric (~5-10%) | Gastric distension | Vagovagal reflex (ACh) | Mainly enzyme-rich; small volume |
| Intestinal (~70-80%) | Chyme in duodenum - H+, amino acids, fats | Secretin + CCK + ACh | Both enzymatic and aqueous; copious |
Make a study guide PDF summarizing pancreatic juice for revision
mkdir -p /home/daytona/workspace/pancreatic-juice && ls /home/daytona/workspace/
~/pancreatic-juice/make_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
OUTPUT = "/home/daytona/workspace/pancreatic-juice/Pancreatic_Juice_Study_Guide.pdf"
# ── Colour palette ──────────────────────────────────────────────
NAVY = colors.HexColor("#1B3A6B")
TEAL = colors.HexColor("#0D7C8A")
LIGHT_TEAL = colors.HexColor("#E0F4F6")
AMBER = colors.HexColor("#F5A623")
LIGHT_AMB = colors.HexColor("#FFF4E0")
LIGHT_GREY = colors.HexColor("#F4F6F8")
MED_GREY = colors.HexColor("#BDC3CC")
WHITE = colors.white
RED_SOFT = colors.HexColor("#C0392B")
GREEN_SOFT = colors.HexColor("#1A7A4A")
PURPLE = colors.HexColor("#6C3483")
LIGHT_PURP = colors.HexColor("#F5EEF8")
# ── Styles ───────────────────────────────────────────────────────
base = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
TITLE = S("TITLE", fontSize=22, textColor=WHITE, alignment=TA_CENTER,
fontName="Helvetica-Bold", leading=28, spaceAfter=4)
SUBTITLE = S("SUBTITLE", fontSize=11, textColor=LIGHT_TEAL, alignment=TA_CENTER,
fontName="Helvetica", leading=14, spaceAfter=2)
SEC_HDR = S("SEC_HDR", fontSize=13, textColor=WHITE, fontName="Helvetica-Bold",
leading=16, leftIndent=4)
SUB_HDR = S("SUB_HDR", fontSize=11, textColor=NAVY, fontName="Helvetica-Bold",
leading=14, spaceBefore=6, spaceAfter=2)
BODY = S("BODY", fontSize=9, textColor=colors.HexColor("#2C3E50"),
fontName="Helvetica", leading=13, spaceAfter=2, alignment=TA_JUSTIFY)
BULLET = S("BULLET", fontSize=9, textColor=colors.HexColor("#2C3E50"),
fontName="Helvetica", leading=12, leftIndent=12, spaceAfter=2,
bulletIndent=4)
SMALL = S("SMALL", fontSize=8, textColor=colors.HexColor("#555"),
fontName="Helvetica-Oblique", leading=10, alignment=TA_CENTER)
KEYBOX = S("KEYBOX", fontSize=9, textColor=NAVY, fontName="Helvetica-Bold",
leading=12, alignment=TA_CENTER)
WARN = S("WARN", fontSize=9, textColor=RED_SOFT, fontName="Helvetica-Bold",
leading=12, leftIndent=8)
TH_STYLE = S("TH", fontSize=8, textColor=WHITE, fontName="Helvetica-Bold",
leading=11, alignment=TA_CENTER)
TD_STYLE = S("TD", fontSize=8, textColor=colors.HexColor("#2C3E50"),
fontName="Helvetica", leading=11, alignment=TA_CENTER)
TD_LEFT = S("TD_LEFT", fontSize=8, textColor=colors.HexColor("#2C3E50"),
fontName="Helvetica", leading=11, alignment=TA_LEFT)
# ── Helper: section banner ────────────────────────────────────────
def section_banner(text, colour=NAVY):
data = [[Paragraph(text, SEC_HDR)]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colour),
("ROUNDEDCORNERS", [4]),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
return t
def key_box(items, colour=LIGHT_TEAL, border=TEAL):
"""Horizontal row of key-point pills."""
row = [Paragraph(i, KEYBOX) for i in items]
widths = [17*cm / len(items)] * len(items)
t = Table([row], colWidths=widths)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colour),
("BOX", (0,0), (-1,-1), 1.2, border),
("INNERGRID", (0,0), (-1,-1), 0.5, border),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
return t
def make_table(headers, rows, col_widths, alt_colour=LIGHT_GREY):
data = [[Paragraph(h, TH_STYLE) for h in headers]]
for i, row in enumerate(rows):
styled = []
for j, cell in enumerate(row):
style = TD_LEFT if j == 0 else TD_STYLE
styled.append(Paragraph(str(cell), style))
data.append(styled)
t = Table(data, colWidths=col_widths)
style_cmds = [
("BACKGROUND", (0,0), (-1,0), NAVY),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, alt_colour]),
("BOX", (0,0), (-1,-1), 0.8, MED_GREY),
("INNERGRID", (0,0), (-1,-1), 0.4, MED_GREY),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]
t.setStyle(TableStyle(style_cmds))
return t
def highlight_box(text, bg=LIGHT_AMB, border=AMBER):
data = [[Paragraph(text, BODY)]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 1.5, border),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
]))
return t
# ── Build document ───────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm,
title="Pancreatic Juice - Study Guide",
author="Orris Medical"
)
story = []
SP = lambda n=4: Spacer(1, n)
HR = lambda: HRFlowable(width="100%", thickness=0.5, color=MED_GREY, spaceAfter=4)
# ════════════════════════════════════════════════════════════════
# COVER HEADER
# ════════════════════════════════════════════════════════════════
cover_data = [[
Paragraph("🫀 PANCREATIC JUICE", TITLE),
Paragraph("Composition · Secretion · Regulation · Function", SUBTITLE),
Paragraph("Physiology Revision Guide | Based on Guyton, Ganong & Costanzo", SUBTITLE),
]]
cover_t = Table(cover_data, colWidths=[17*cm])
cover_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("TOPPADDING", (0,0), (-1,-1), 14),
("BOTTOMPADDING", (0,0), (-1,-1), 14),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("ROUNDEDCORNERS",[6]),
]))
story += [cover_t, SP(10)]
# Quick-facts strip
story += [
key_box(["~1,500 mL / day", "pH 7.8 – 8.4", "Isosmotic with plasma",
"Secreted by exocrine pancreas", "Empties into duodenum"]),
SP(10)
]
# ════════════════════════════════════════════════════════════════
# SECTION 1 – COMPOSITION
# ════════════════════════════════════════════════════════════════
story += [section_banner("1. COMPOSITION OF PANCREATIC JUICE", NAVY), SP(6)]
story += [Paragraph("<b>A. Aqueous (Electrolyte) Component</b> — secreted by centroacinar & ductal cells", SUB_HDR)]
story += [
Paragraph("• <b>HCO<sub>3</sub><sup>–</sup>:</b> ~113 mEq/L (plasma = 24 mEq/L) — the hallmark ion, responsible for alkalinity", BULLET),
Paragraph("• <b>Na<sup>+</sup>, K<sup>+</sup>:</b> approximately equal to plasma concentrations", BULLET),
Paragraph("• <b>Cl<sup>–</sup>:</b> inversely related to HCO<sub>3</sub><sup>–</sup> (rises when flow rate falls)", BULLET),
Paragraph("• Fluid is <b>isosmotic</b> with plasma throughout the physiological flow range", BULLET),
SP(4)
]
story += [Paragraph("<b>B. Enzymatic Component</b> — secreted by acinar cells as inactive zymogens", SUB_HDR)]
enz_headers = ["Category", "Zymogen / Inactive Form", "Active Enzyme", "Action"]
enz_rows = [
["Proteolytic", "Trypsinogen", "Trypsin", "Cleaves proteins → peptides (endo)"],
["", "Chymotrypsinogen", "Chymotrypsin", "Cleaves aromatic AA peptide bonds"],
["", "Procarboxypeptidase","Carboxypeptidase", "Releases free amino acids (exo)"],
["", "Proelastase", "Elastase", "Digests elastin & other proteins"],
["Amylolytic", "— (active)", "Pancreatic amylase","Starch/glycogen → disaccharides"],
["Lipolytic", "— (active)", "Pancreatic lipase", "Triglycerides → FA + monoglyceride"],
["", "— (active)", "Cholesterol esterase","Cholesterol esters → cholesterol + FA"],
["", "Prophospholipase A2","Phospholipase A2", "Phospholipids → lyso-phospholipid + FA"],
["Nucleolytic", "— (active)", "DNase / RNase", "Digests DNA and RNA"],
]
story += [make_table(enz_headers, enz_rows, [2.5*cm, 3.8*cm, 3.8*cm, 6.9*cm]), SP(6)]
story += [
highlight_box(
"<b>Trypsin Inhibitor:</b> Also secreted by acinar cells; neutralises any trypsin "
"prematurely activated inside the pancreas, preventing autodigestion. "
"Inadequate inhibitor activity is a proposed trigger in acute pancreatitis.",
bg=LIGHT_PURP, border=PURPLE
),
SP(8)
]
# ════════════════════════════════════════════════════════════════
# SECTION 2 – MECHANISM OF SECRETION
# ════════════════════════════════════════════════════════════════
story += [section_banner("2. MECHANISM OF SECRETION", TEAL), SP(6)]
story += [Paragraph("<b>A. Enzymatic Secretion (Acinar Cells)</b>", SUB_HDR)]
story += [
Paragraph("1. Enzymes are synthesised on <b>rough ER</b>, processed in <b>Golgi</b>, and stored as <b>zymogen granules</b>.", BULLET),
Paragraph("2. On stimulation (CCK / ACh), zymogen granules fuse with apical membrane and undergo <b>exocytosis</b>.", BULLET),
Paragraph("3. Proteases are released in <b>inactive form</b> to protect the acinar cell from autodigestion.", BULLET),
SP(4)
]
story += [Paragraph("<b>B. Aqueous / Bicarbonate Secretion (Centroacinar + Ductal Cells)</b>", SUB_HDR)]
story += [
Paragraph("1. <b>Carbonic anhydrase</b> inside ductal cells: CO<sub>2</sub> + H<sub>2</sub>O → H<sub>2</sub>CO<sub>3</sub> → H<sup>+</sup> + HCO<sub>3</sub><sup>–</sup>", BULLET),
Paragraph("2. <b>HCO<sub>3</sub><sup>–</sup></b> is secreted into the duct lumen via a <b>Cl<sup>–</sup>/HCO<sub>3</sub><sup>–</sup> exchanger</b> (CFTR recycles Cl<sup>–</sup>).", BULLET),
Paragraph("3. <b>H<sup>+</sup></b> is exported basolaterally via <b>Na<sup>+</sup>/H<sup>+</sup> exchanger</b>.", BULLET),
Paragraph("4. <b>Na<sup>+</sup></b> enters the lumen by co-transport and through paracellular tight junctions.", BULLET),
Paragraph("5. Water follows osmotically → isotonic NaHCO<sub>3</sub> solution.", BULLET),
SP(4)
]
story += [
highlight_box(
"<b>Flow-rate effect on composition:</b> At HIGH flow rates (e.g., after secretin), "
"HCO<sub>3</sub><sup>–</sup> concentration rises and Cl<sup>–</sup> falls — less time for exchange in large ducts. "
"At LOW flow rates, HCO<sub>3</sub><sup>–</sup> is reabsorbed for Cl<sup>–</sup>, so Cl<sup>–</sup> predominates.",
bg=LIGHT_TEAL, border=TEAL
),
SP(8)
]
# ════════════════════════════════════════════════════════════════
# SECTION 3 – ACTIVATION CASCADE
# ════════════════════════════════════════════════════════════════
story += [section_banner("3. ACTIVATION OF PROTEOLYTIC ENZYMES", colors.HexColor("#5D4037")), SP(6)]
story += [
Paragraph(
"Proteolytic enzymes are secreted as <b>inactive zymogens</b> and activated sequentially in the "
"intestinal lumen — a safety mechanism preventing pancreatic autodigestion.",
BODY
),
SP(4)
]
cascade_headers = ["Step", "Event", "Enzyme Involved"]
cascade_rows = [
["1", "Duodenal brush-border enzyme Enterokinase cleaves trypsinogen", "Enterokinase → Trypsin"],
["2", "Trypsin autocatalytically activates more trypsinogen", "Trypsin → Trypsin"],
["3", "Trypsin activates chymotrypsinogen", "Trypsin → Chymotrypsin"],
["4", "Trypsin activates procarboxypeptidase", "Trypsin → Carboxypeptidase"],
["5", "Trypsin activates proelastase", "Trypsin → Elastase"],
["6", "Trypsin activates prophospholipase A2", "Trypsin → Phospholipase A2"],
]
story += [make_table(cascade_headers, cascade_rows, [1*cm, 10*cm, 6*cm]), SP(6)]
story += [
highlight_box(
"<b>⚠ Clinical Correlation – Acute Pancreatitis:</b> Premature activation of trypsin "
"WITHIN the pancreatic duct initiates the cascade of autodigestion. "
"Serum <b>amylase</b> and <b>lipase</b> rise markedly — used for diagnosis. "
"Phospholipase A2 activation generates lyso-phosphatidylcholine, which damages cell membranes.",
bg=colors.HexColor("#FDEDEC"), border=RED_SOFT
),
SP(8)
]
# ════════════════════════════════════════════════════════════════
# SECTION 4 – FUNCTIONS
# ════════════════════════════════════════════════════════════════
story += [section_banner("4. FUNCTIONS OF PANCREATIC JUICE", GREEN_SOFT), SP(6)]
fn_headers = ["Function", "Component Responsible", "Detail"]
fn_rows = [
["Neutralise gastric acid", "HCO₃⁻ (aqueous component)", "Raises duodenal pH from ~2 to 6–7; jejunal pH → nearly neutral"],
["Protein digestion", "Trypsin, chymotrypsin, carboxypeptidase, elastase", "Endopeptidases + exopeptidase; complete digestion to amino acids"],
["Carbohydrate digestion", "Pancreatic amylase", "Starch/glycogen → disaccharides & trisaccharides (not cellulose)"],
["Fat digestion", "Lipase, cholesterol esterase, phospholipase A2", "Triglycerides, cholesterol esters, and phospholipids hydrolysed"],
["Nucleic acid digestion", "DNase, RNase", "Breaks down dietary DNA and RNA"],
["Enable lipase activity", "HCO₃⁻ neutralisation", "Pancreatic lipases are inactivated at low pH; neutralisation is prerequisite"],
]
story += [make_table(fn_headers, fn_rows, [3.8*cm, 5.5*cm, 7.7*cm]), SP(8)]
# ════════════════════════════════════════════════════════════════
# SECTION 5 – REGULATION
# ════════════════════════════════════════════════════════════════
story += [section_banner("5. REGULATION OF PANCREATIC SECRETION", colors.HexColor("#6A1B9A")), SP(6)]
story += [Paragraph("<b>A. Hormonal Regulation (Intestinal Phase)</b>", SUB_HDR)]
reg_headers = ["Stimulus", "Stimulus Source", "Secreted by", "Target Cell", "2nd Messenger", "Effect on Juice"]
reg_rows = [
["H⁺ (acidic chyme)", "Duodenal lumen", "S cells (duodenum/jejunum)", "Ductal cells", "cAMP ↑", "Large volume, high HCO₃⁻, low enzyme"],
["Amino acids, fatty acids,\nsmall peptides", "Duodenal lumen", "I cells (duodenum/jejunum)", "Acinar cells", "IP₃ / Ca²⁺ ↑", "Enzyme-rich, low volume"],
]
story += [make_table(reg_headers, reg_rows, [2.8*cm, 2.5*cm, 3.2*cm, 2.5*cm, 2.5*cm, 3.5*cm])]
story += [
SP(4),
Paragraph(
"<b>Potentiation:</b> CCK and secretin act synergistically (multiplicative effect) — "
"together they ensure enzymes are produced AND flushed into the duodenum by the aqueous component.",
BODY
),
SP(6)
]
story += [Paragraph("<b>B. Neural Regulation</b>", SUB_HDR)]
story += [
Paragraph("• <b>Parasympathetic (vagus / ACh):</b> Acts on acinar cells via IP₃/Ca²⁺ (same pathway as CCK); stimulates enzyme secretion; potentiates CCK effect.", BULLET),
Paragraph("• <b>Sympathetic:</b> Inhibits pancreatic secretion.", BULLET),
Paragraph("• <b>Conditioned reflex:</b> Sight/smell of food → vagally mediated enzyme secretion (cephalic phase).", BULLET),
SP(6)
]
story += [Paragraph("<b>C. Inhibitory Mediators</b>", SUB_HDR)]
story += [
Paragraph("• <b>Peptide YY</b> (from ileal endocrine cells): signals end of intestinal phase; inhibits secretion ('ileal brake').", BULLET),
Paragraph("• <b>Somatostatin:</b> general inhibitor of GI secretions, including pancreatic juice.", BULLET),
Paragraph("• <b>Sympathetic activity:</b> direct inhibition.", BULLET),
SP(8)
]
# ════════════════════════════════════════════════════════════════
# SECTION 6 – PHASES
# ════════════════════════════════════════════════════════════════
story += [section_banner("6. PHASES OF PANCREATIC SECRETION", AMBER), SP(6)]
phase_headers = ["Phase", "% of Total", "Stimulus", "Mediator", "Type of Juice"]
phase_rows = [
["Cephalic", "~20%", "Sight, smell, taste, thought of food", "Vagus nerve (ACh)", "Mainly enzyme-rich; small volume"],
["Gastric", "~5–10%", "Gastric distension", "Vagovagal reflex (ACh)", "Mainly enzyme-rich; small volume"],
["Intestinal","~70–80%","Acidic chyme, AA, fatty acids in duodenum","Secretin + CCK + ACh", "Both enzymatic AND aqueous; copious"],
]
story += [make_table(phase_headers, phase_rows, [2*cm, 1.8*cm, 4.8*cm, 4.4*cm, 4*cm], alt_colour=LIGHT_AMB), SP(8)]
# ════════════════════════════════════════════════════════════════
# SECTION 7 – HIGH-YIELD MEMORY AIDS
# ════════════════════════════════════════════════════════════════
story += [section_banner("7. HIGH-YIELD MEMORY AIDS", colors.HexColor("#C0392B")), SP(6)]
story += [
Paragraph("<b>Mnemonic — Pancreatic Enzymes: 'TCC PLCD'</b>", SUB_HDR),
Paragraph("T – Trypsin | C – Chymotrypsin | C – Carboxypeptidase | "
"P – (Pro)elastase | L – Lipase | C – Cholesterol esterase | D – DNase/RNase", BODY),
SP(4)
]
story += [
Paragraph("<b>Key Numbers to Remember</b>", SUB_HDR),
key_box(["1,500 mL/day", "pH 8.0", "HCO₃⁻ 113 mEq/L", "Intestinal phase 70–80%"]),
SP(6)
]
story += [
Paragraph("<b>Secretin vs CCK — Quick Contrast</b>", SUB_HDR),
make_table(
["Feature", "Secretin", "CCK"],
[
["Trigger", "H⁺ (acid) in duodenum", "Amino acids, fatty acids, small peptides"],
["Secreted by", "S cells", "I cells"],
["Target", "Ductal cells", "Acinar cells"],
["2nd messenger", "cAMP", "IP₃ / Ca²⁺"],
["Juice produced", "High volume, high HCO₃⁻, low enzyme", "Low volume, enzyme-rich"],
["Also stimulates", "Bile secretion", "Gallbladder contraction"],
],
[4*cm, 6.5*cm, 6.5*cm]
),
SP(8)
]
# Footer note
story += [
HR(),
Paragraph(
"Sources: Guyton & Hall Textbook of Medical Physiology 14e | "
"Ganong's Review of Medical Physiology 26e | Costanzo Physiology 7e",
SMALL
),
SP(2),
Paragraph("Generated by Orris Medical AI • For revision purposes only", SMALL),
]
# ── Build ────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
cd /home/daytona/workspace/pancreatic-juice && python make_pdf.py 2>&1
ls -lh /home/daytona/workspace/pancreatic-juice/Pancreatic_Juice_Study_Guide.pdf
Pancreatic Juice Study Guide
PDF Document · PDF