Write 10 marks answer for glycogen storage disorder gor md pathology exam and make pdf
glycogen storage disease liver histology von Gierke

This clinical photograph displays a two-and-a-half-month-old infant presenting with classic phenotypic features of Type I Glycogen Storage Disease (von Gierke's disease). The infant exhibits a characteristic 'doll-like' facial appearance, defined by significantly rounded cheeks and increased subcutaneous facial fat. Below the chest, a markedly protuberant and distended abdomen is visible, clinically consistent with hepatomegaly, a hallmark finding of GSD I due to the accumulation of glycogen and fat in the liver. The infant appears to be in a clinical setting, as evidenced by a nasal cannula for oxygen delivery and visible monitoring leads or tubing. The primary educational focus of this image is the recognition of early pediatric metabolic disorders through distinct physical signs, including abnormal fat distribution and organomegaly, which occur secondary to enzymatic deficiencies in the glucose-6-phosphatase system.

This composite educational image showcases diagnostic modalities for Glycogen Storage Disease of the liver in a pediatric patient. Panel (a) presents a Two-Dimensional Shear-Wave Elastography (2D-SWE) ultrasound. The B-mode image shows diffuse hyperechoic liver parenchyma. A superimposed color-coded elastography map within a region of interest (ROI) provides quantitative tissue stiffness data, indicating a mean stiffness of 9.1 kPa (suggestive of mild fibrosis). Quantitative metrics include a depth of 3.0 cm and a 90% success index (SI). Panel (b) is a histopathologic specimen stained to highlight architectural and cellular changes. It demonstrates diffuse hepatomegaly at the cellular level, with hepatocytes showing characteristic clear cytoplasm due to glycogen accumulation. There is notable enlargement of the portal tract with evidence of mild fibrosis, corresponding to a METAVIR score of F1. The image contrast between non-invasive imaging and gold-standard biopsy provides a comprehensive view of metabolic liver disease and its structural impact.

This composite educational image features abdominal diagnostic imaging of a 14-year-old patient with Glycogen Storage Disease (GSD) type I. Image (a) is a grayscale abdominal ultrasound demonstrating hepatomegaly and diffuse increased echogenicity of the liver parenchyma, characteristic of hepatic steatosis. Multiple well-demarcated, hypoechoic nodules are visible within the bright background of the fatty liver. Image (b) is an axial contrast-enhanced CT scan obtained during the arterial phase. It depicts the same enlarged, low-attenuation (steatotic) liver containing multiple solid nodules that exhibit intense hypervascular enhancement relative to the surrounding parenchyma. These findings are clinically diagnostic of hepatocellular adenomas (HCA) in the context of GSD. The image serves as a teaching tool for pediatric radiology, illustrating the imaging appearance of multiple adenomatosis and its typical association with metabolic storage disorders.
mkdir -p /tmp/workspace/gsd-pathology && ls /tmp/workspace/
python3 << 'EOF' from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.lib import colors from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether) from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY import urllib.request import os # Download the Robbins GSD diagram image img_url = "https://cdn.orris.care/cdss_images/8ec8667d3cee9c79a3b52cc700fb4eaa86376cc758cdbd69c488e754306fc9c0.png" img_path = "/tmp/workspace/gsd-pathology/gsd_diagram.png" urllib.request.urlretrieve(img_url, img_path) print("Image downloaded:", os.path.exists(img_path)) # Pompe histology image pompe_url = "https://cdn.orris.care/cdss_images/dbc2a361f5e97628a2f17b307d970f225a626ab56ab1c2ff7079f728688277c8.png" pompe_path = "/tmp/workspace/gsd-pathology/pompe_histology.png" urllib.request.urlretrieve(pompe_url, pompe_path) print("Pompe image downloaded:", os.path.exists(pompe_path)) EOF
python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.lib import colors from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether, Image) from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY from reportlab.platypus import PageBreak OUTPUT = "/tmp/workspace/gsd-pathology/GSD_MD_Pathology_Answer.pdf" W, H = A4 doc = SimpleDocTemplate( OUTPUT, pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2.2*cm, bottomMargin=2*cm, title="Glycogen Storage Disorders – MD Pathology 10-Mark Answer", author="Orris Medical AI" ) # ── Colour palette ────────────────────────────────────────────────────────── NAVY = colors.HexColor("#1a3a5c") BLUE = colors.HexColor("#2563EB") LBLUE = colors.HexColor("#dbeafe") TEAL = colors.HexColor("#0e7490") LTEAL = colors.HexColor("#cffafe") GOLD = colors.HexColor("#b45309") LGOLD = colors.HexColor("#fef3c7") GREY = colors.HexColor("#374151") LGREY = colors.HexColor("#f3f4f6") WHITE = colors.white # ── Styles ──────────────────────────────────────────────────────────────────── ss = getSampleStyleSheet() def S(name, **kw): base = ss[name] if name in ss else ss["Normal"] return ParagraphStyle(name+"_custom_"+str(id(kw)), parent=base, **kw) title_style = S("Title", fontSize=20, textColor=WHITE, alignment=TA_CENTER, fontName="Helvetica-Bold", spaceAfter=4, leading=26) subtitle_style = S("Normal", fontSize=11, textColor=LBLUE, alignment=TA_CENTER, fontName="Helvetica-Oblique", spaceAfter=2) marks_style = S("Normal", fontSize=10, textColor=LGOLD, alignment=TA_CENTER, fontName="Helvetica-Bold", spaceAfter=0) h1 = S("Heading1", fontSize=13, textColor=WHITE, fontName="Helvetica-Bold", spaceAfter=4, spaceBefore=10, leading=17, leftIndent=0) h2 = S("Heading2", fontSize=11, textColor=NAVY, fontName="Helvetica-Bold", spaceAfter=3, spaceBefore=8, leading=14) h3 = S("Heading3", fontSize=10.5, textColor=TEAL, fontName="Helvetica-Bold", spaceAfter=2, spaceBefore=6, leading=13) body = S("Normal", fontSize=10, textColor=GREY, fontName="Helvetica", spaceAfter=4, leading=14, alignment=TA_JUSTIFY) bullet = S("Normal", fontSize=10, textColor=GREY, fontName="Helvetica", spaceAfter=3, leading=13, leftIndent=14, firstLineIndent=-10, bulletIndent=4) caption = S("Normal", fontSize=8.5, textColor=colors.HexColor("#6b7280"), fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=4) table_hdr = S("Normal", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=11) table_cell = S("Normal", fontSize=8.5, textColor=GREY, fontName="Helvetica", alignment=TA_LEFT, leading=11, spaceAfter=0) table_cell_c = S("Normal", fontSize=8.5, textColor=GREY, fontName="Helvetica", alignment=TA_CENTER, leading=11) story = [] # ═══════════════════════════════════════════════════════════════════════════ # HEADER BANNER (simulated with a single-cell table) # ═══════════════════════════════════════════════════════════════════════════ def make_header_table(): data = [[ Paragraph("GLYCOGEN STORAGE DISORDERS", title_style), ],[ Paragraph("Glycogenoses", subtitle_style), ],[ Paragraph("MD Pathology Examination Answer • 10 Marks", marks_style), ]] t = Table(data, colWidths=[W - 4*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), NAVY), ("TOPPADDING", (0,0), (-1,-1), 10), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 14), ("RIGHTPADDING", (0,0), (-1,-1), 14), ("ROUNDEDCORNERS", [8]), ])) return t story.append(make_header_table()) story.append(Spacer(1, 0.4*cm)) # ═══════════════════════════════════════════════════════════════════════════ # SECTION helper – coloured heading bar # ═══════════════════════════════════════════════════════════════════════════ def section_heading(text, bg=BLUE, num=""): label = f"{num} {text}" if num else text data = [[Paragraph(label, h1)]] t = Table(data, colWidths=[W - 4*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10), ("ROUNDEDCORNERS", [4]), ])) return t def highlight_box(text, bg=LGOLD, border=GOLD): data = [[Paragraph(text, body)]] t = Table(data, colWidths=[W - 4*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("BOX", (0,0), (-1,-1), 1, border), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10), ("ROUNDEDCORNERS", [4]), ])) return t # ═══════════════════════════════════════════════════════════════════════════ # 1. DEFINITION # ═══════════════════════════════════════════════════════════════════════════ story.append(section_heading("1. DEFINITION", NAVY)) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph( "Glycogen storage disorders (GSDs), also called <b>glycogenoses</b>, are a group of at least " "12 autosomal recessive inherited metabolic disorders caused by deficiency of enzymes " "involved in glycogen synthesis or degradation. These enzyme defects result in " "<b>abnormal accumulation of glycogen</b> (either normal or structurally abnormal) in one " "or more tissues — predominantly <b>liver, skeletal muscle, and heart</b> — leading to " "organ dysfunction.", body)) story.append(highlight_box( "<b>Mnemonic:</b> GSDs = Glycogen Stored Dangerously — enzymatic block → glycogen accumulates " "→ organ failure (liver → hypoglycaemia; muscle → exercise intolerance).")) story.append(Spacer(1, 0.2*cm)) # ═══════════════════════════════════════════════════════════════════════════ # 2. NORMAL GLYCOGEN METABOLISM (brief) # ═══════════════════════════════════════════════════════════════════════════ story.append(section_heading("2. NORMAL GLYCOGEN METABOLISM", TEAL)) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph( "Glycogen is a branched polysaccharide stored in <b>liver</b> (for systemic glucose homeostasis) " "and <b>skeletal muscle</b> (for local energy). Key enzymes:", body)) norm_data = [ [Paragraph("<b>Enzyme</b>", table_hdr), Paragraph("<b>Function</b>", table_hdr), Paragraph("<b>Site</b>", table_hdr)], [Paragraph("Glycogen synthase", table_cell_c), Paragraph("Synthesises α-1,4 linkages; adds glucose to chain", table_cell), Paragraph("Liver / muscle", table_cell_c)], [Paragraph("Branching enzyme\n(4:6 transferase)", table_cell_c), Paragraph("Creates α-1,6 branch points", table_cell), Paragraph("Liver / muscle", table_cell_c)], [Paragraph("Glycogen phosphorylase", table_cell_c), Paragraph("Cleaves α-1,4 linkages (phosphorolysis)", table_cell), Paragraph("Liver / muscle", table_cell_c)], [Paragraph("Debranching enzyme\n(4:4 transferase)", table_cell_c), Paragraph("Removes α-1,6 branch points", table_cell), Paragraph("Liver / muscle", table_cell_c)], [Paragraph("Glucose-6-phosphatase", table_cell_c), Paragraph("Releases free glucose into blood", table_cell), Paragraph("<b>Liver only</b>", table_cell_c)], [Paragraph("Acid α-glucosidase\n(acid maltase)", table_cell_c), Paragraph("Lysosomal degradation of glycogen (~1–3%)", table_cell), Paragraph("All tissues", table_cell_c)], ] norm_t = Table(norm_data, colWidths=[3.8*cm, 8.2*cm, 3*cm]) norm_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("BACKGROUND", (0,1), (-1,1), LTEAL), ("BACKGROUND", (0,2), (-1,2), WHITE), ("BACKGROUND", (0,3), (-1,3), LTEAL), ("BACKGROUND", (0,4), (-1,4), WHITE), ("BACKGROUND", (0,5), (-1,5), LTEAL), ("BACKGROUND", (0,6), (-1,6), WHITE), ("BOX", (0,0), (-1,-1), 0.5, TEAL), ("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#a0d4da")), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING",(0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(norm_t) story.append(Spacer(1, 0.2*cm)) # Diagram image try: img = Image("/tmp/workspace/gsd-pathology/gsd_diagram.png", width=15*cm, height=7*cm) story.append(img) story.append(Paragraph( "<i>Fig. 1 – Glycogen metabolism in liver and skeletal muscle (left: normal; " "right: hepatic and myopathic GSD). [Source: Robbins & Cotran Pathologic Basis of Disease, 10e]</i>", caption)) except: pass story.append(Spacer(1, 0.2*cm)) # ═══════════════════════════════════════════════════════════════════════════ # 3. CLASSIFICATION # ═══════════════════════════════════════════════════════════════════════════ story.append(section_heading("3. CLASSIFICATION", NAVY)) story.append(Spacer(1, 0.12*cm)) story.append(Paragraph( "GSDs are classified by the enzyme deficient, the type number (assigned chronologically), " "and the clinicopathologic category — <b>hepatic, myopathic, or generalised</b>. " "Liver forms (types I, III, IV, VI, IX) account for ~80% of all cases.", body)) story.append(Spacer(1, 0.15*cm)) # Main GSD table gsd_hdr_style = ParagraphStyle("gsd_hdr", fontName="Helvetica-Bold", fontSize=8.5, textColor=WHITE, alignment=TA_CENTER, leading=10) gsd_cell = ParagraphStyle("gsd_cell", fontName="Helvetica", fontSize=8, textColor=GREY, alignment=TA_LEFT, leading=10, spaceAfter=0) gsd_cell_c = ParagraphStyle("gsd_cell_c", fontName="Helvetica", fontSize=8, textColor=GREY, alignment=TA_CENTER, leading=10, spaceAfter=0) gsd_bold = ParagraphStyle("gsd_bold", fontName="Helvetica-Bold", fontSize=8, textColor=NAVY, alignment=TA_LEFT, leading=10, spaceAfter=0) gsd_data = [ [Paragraph("Type", gsd_hdr_style), Paragraph("Eponym", gsd_hdr_style), Paragraph("Enzyme Deficiency", gsd_hdr_style), Paragraph("Category", gsd_hdr_style), Paragraph("Key Features", gsd_hdr_style)], [Paragraph("I", gsd_bold), Paragraph("Von Gierke disease", gsd_cell), Paragraph("Glucose-6-phosphatase", gsd_cell), Paragraph("Hepatic", gsd_cell_c), Paragraph("Hepatomegaly, nephromegaly, severe fasting hypoglycaemia, lactic acidosis, hyperuricemia, hyperlipidaemia; 'doll-like' facies; hepatic adenomas late", gsd_cell)], [Paragraph("II", gsd_bold), Paragraph("Pompe disease", gsd_cell), Paragraph("Lysosomal acid α-glucosidase (acid maltase)", gsd_cell), Paragraph("Generalised (lysosomal)", gsd_cell_c), Paragraph("Massive cardiomegaly, hypotonia, hepatomegaly; infantile fatal form & milder adult myopathic form; ONLY GSD that is also a lysosomal storage disease; ERT available", gsd_cell)], [Paragraph("III", gsd_bold), Paragraph("Cori / Forbes disease", gsd_cell), Paragraph("Debranching enzyme (amylo-1,6-glucosidase)", gsd_cell), Paragraph("Hepatic + myopathic", gsd_cell_c), Paragraph("Milder than type I; hepatomegaly, fasting hypoglycaemia, myopathy; abnormal short-chained glycogen accumulates", gsd_cell)], [Paragraph("IV", gsd_bold), Paragraph("Andersen disease", gsd_cell), Paragraph("Branching enzyme (α-1,4 → α-1,6 glucan transferase)", gsd_cell), Paragraph("Hepatic", gsd_cell_c), Paragraph("Polyglucosan (amylopectin-like) storage; progressive cirrhosis, liver failure; death by age 5; cardiomyopathy", gsd_cell)], [Paragraph("V", gsd_bold), Paragraph("McArdle disease", gsd_cell), Paragraph("Muscle phosphorylase (myophosphorylase)", gsd_cell), Paragraph("Myopathic", gsd_cell_c), Paragraph("Exercise intolerance, painful cramps; myoglobinuria (50%); NO rise in venous lactate with ischaemic exercise test; CK always elevated; adult onset; benign course", gsd_cell)], [Paragraph("VI", gsd_bold), Paragraph("Hers disease", gsd_cell), Paragraph("Liver phosphorylase", gsd_cell), Paragraph("Hepatic", gsd_cell_c), Paragraph("Mild hepatomegaly; mild hypoglycaemia; generally benign prognosis", gsd_cell)], [Paragraph("VII", gsd_bold), Paragraph("Tarui disease", gsd_cell), Paragraph("Muscle phosphofructokinase (PFK-M)", gsd_cell), Paragraph("Myopathic", gsd_cell_c), Paragraph("Exercise-induced cramps similar to McArdle; haemolytic anaemia (RBCs also lack PFK-M); jaundice; elevated bilirubin", gsd_cell)], [Paragraph("IX", gsd_bold), Paragraph("—", gsd_cell), Paragraph("Phosphorylase kinase", gsd_cell), Paragraph("Hepatic (X-linked)", gsd_cell_c), Paragraph("Most common GSD; mild hepatomegaly; usually resolves spontaneously; favourable prognosis", gsd_cell)], ] col_w = [1.1*cm, 2.8*cm, 4.2*cm, 2.4*cm, 5.5*cm] gsd_table = Table(gsd_data, colWidths=col_w, repeatRows=1) row_colors = [] for i in range(1, len(gsd_data)): bg = LGREY if i % 2 == 1 else WHITE row_colors.append(("BACKGROUND", (0, i), (-1, i), bg)) gsd_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), NAVY), *row_colors, ("BOX", (0,0), (-1,-1), 0.7, NAVY), ("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#c5ccd6")), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING",(0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 4), ("RIGHTPADDING", (0,0), (-1,-1), 4), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(gsd_table) story.append(Spacer(1, 0.25*cm)) # ═══════════════════════════════════════════════════════════════════════════ # 4. PATHOGENESIS # ═══════════════════════════════════════════════════════════════════════════ story.append(section_heading("4. PATHOGENESIS", BLUE)) story.append(Spacer(1, 0.12*cm)) story.append(Paragraph( "The underlying mechanism in all GSDs is a <b>gene mutation → enzyme deficiency → failure " "of glycogen synthesis or degradation</b>. The consequence depends on the tissue involved:", body)) path_items = [ ("<b>Hepatic forms:</b> Failure to mobilise glucose from glycogen → <b>fasting hypoglycaemia</b>. " "Secondary metabolic derangements include lactic acidosis (shunting to anaerobic glycolysis), " "hyperuricaemia (increased purine catabolism from raised AMP), and hyperlipidaemia."), ("<b>Myopathic forms:</b> Muscle cannot utilise glycogen for energy → <b>exercise intolerance, " "cramps, myoglobinuria</b>. No rise in venous lactate during ischaemic forearm exercise test " "(diagnostic for McArdle disease type V)."), ("<b>Generalised (Pompe, type II):</b> Lysosomal acid maltase deficiency → glycogen accumulates " "inside lysosomes of all cells → lysosome rupture → <b>cardiomegaly, myopathy, hepatomegaly</b>. " "This is the ONLY GSD that is also a lysosomal storage disease."), ("<b>Andersen disease (type IV):</b> Branching enzyme deficiency → structurally abnormal polyglucosan " "(long outer chains, few branches) resembling amylopectin → treated as foreign → <b>cirrhosis</b> from " "immune-mediated hepatic injury."), ] for item in path_items: story.append(Paragraph(f"• {item}", bullet)) story.append(Spacer(1, 0.2*cm)) # ═══════════════════════════════════════════════════════════════════════════ # 5. MORPHOLOGY / HISTOPATHOLOGY # ═══════════════════════════════════════════════════════════════════════════ story.append(section_heading("5. MORPHOLOGY & HISTOPATHOLOGY", TEAL)) story.append(Spacer(1, 0.12*cm)) morph_data = [ [Paragraph("<b>GSD Type</b>", gsd_hdr_style), Paragraph("<b>Organ</b>", gsd_hdr_style), Paragraph("<b>Histopathological Findings</b>", gsd_hdr_style)], [Paragraph("Type I\n(Von Gierke)", gsd_bold), Paragraph("Liver, Kidney", gsd_cell_c), Paragraph("Hepatocytes — markedly distended with glycogen (pale, clear cytoplasm on H&E). Small lipid vacuoles. " "INTRANUCLEAR glycogen inclusions. PAS-positive, diastase-labile deposits. Liver architecture preserved but " "cells appear enlarged. Renal tubular cells similarly affected.", gsd_cell)], [Paragraph("Type II\n(Pompe)", gsd_bold), Paragraph("Heart, Muscle, Liver", gsd_cell_c), Paragraph("Massive cardiomegaly. Myocardial fibres show glycogen within sarcoplasm AND in membrane-bound " "vacuoles (lysosomes). 'Lacy' cytoplasmic pattern. Skeletal muscle fibres similarly vacuolated. " "PAS-positive material in lysosomes.", gsd_cell)], [Paragraph("Type III\n(Cori)", gsd_bold), Paragraph("Liver, Muscle", gsd_cell_c), Paragraph("Hepatomegaly with glycogen accumulation. Abnormal short outer-chain glycogen. Mild fibrosis possible. " "Muscle: subsarcolemmal glycogen deposits.", gsd_cell)], [Paragraph("Type IV\n(Andersen)", gsd_bold), Paragraph("Liver", gsd_cell_c), Paragraph("Deposition of <b>polyglucosan (amylopectin-like)</b> material — <b>PAS-positive, partially diastase-resistant</b>. " "Progressive hepatic fibrosis → cirrhosis. Periodic acid Schiff (PAS) stain with diastase: resistant inclusions " "distinguish from other GSDs.", gsd_cell)], [Paragraph("Type V\n(McArdle)", gsd_bold), Paragraph("Skeletal Muscle", gsd_cell_c), Paragraph("Glycogen accumulation <b>predominantly subsarcolemmal</b>. PAS-positive deposits beneath muscle cell membrane. " "Scattered necrotic fibres. No hepatic involvement.", gsd_cell)], ] morph_t = Table(morph_data, colWidths=[2.8*cm, 2.4*cm, 10.8*cm], repeatRows=1) morph_row_colors = [] for i in range(1, len(morph_data)): bg = LGREY if i % 2 == 1 else WHITE morph_row_colors.append(("BACKGROUND", (0, i), (-1, i), bg)) morph_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), *morph_row_colors, ("BOX", (0,0), (-1,-1), 0.7, TEAL), ("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#c5ccd6")), ("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), "TOP"), ])) story.append(morph_t) story.append(Spacer(1, 0.2*cm)) # Pompe histology image try: pompe_img = Image("/tmp/workspace/gsd-pathology/pompe_histology.png", width=12*cm, height=4.5*cm) story.append(pompe_img) story.append(Paragraph( "<i>Fig. 2 – Pompe disease (GSD type II). (A) Normal myocardium. (B) Myocardial fibres distended with " "glycogen appearing as clear spaces — the 'lacy' pattern. [Source: Robbins & Cotran Pathologic Basis of Disease, 10e]</i>", caption)) except: pass story.append(Spacer(1, 0.2*cm)) # ═══════════════════════════════════════════════════════════════════════════ # 6. CLINICAL FEATURES IN DETAIL # ═══════════════════════════════════════════════════════════════════════════ story.append(section_heading("6. CLINICAL FEATURES OF IMPORTANT TYPES", NAVY)) story.append(Spacer(1, 0.12*cm)) # Von Gierke box story.append(Paragraph("<b>A. Von Gierke Disease (Type I) — Most Common Hepatic GSD</b>", h2)) vg_features = [ "Onset: infancy; autosomal recessive; <b>G6Pase deficiency</b>", "Severe fasting hypoglycaemia → seizures; glucose-4-hourly feeds required", "<b>Hepatomegaly</b> (massive), <b>nephromegaly</b>; 'doll-like' face (fat cheeks, protuberant abdomen)", "Lactic acidosis, hyperuricaemia (gout), hyperlipidaemia → xanthomas", "Bleeding tendency due to platelet dysfunction", "Late complications: hepatic adenoma, possible hepatocellular carcinoma", "<b>Treatment:</b> Corn starch diet (slow-release glucose); avoid fasting", ] for f in vg_features: story.append(Paragraph(f"• {f}", bullet)) story.append(Spacer(1, 0.1*cm)) story.append(Paragraph("<b>B. Pompe Disease (Type II) — Only Lysosomal GSD</b>", h2)) pompe_features = [ "Autosomal recessive; <b>acid α-glucosidase (acid maltase) deficiency</b>", "<b>Infantile form:</b> Massive cardiomegaly, generalised hypotonia ('floppy infant'), macroglossia, hepatomegaly; death by 1–2 years from cardiorespiratory failure", "<b>Adult form:</b> Progressive limb-girdle myopathy, respiratory failure; normal cardiac function", "Blood glucose: <b>normal</b> (lysosomal pathway, not major metabolic pathway)", "<b>Treatment:</b> Enzyme Replacement Therapy (alglucosidase alfa / myozyme) — FDA approved", ] for f in pompe_features: story.append(Paragraph(f"• {f}", bullet)) story.append(Spacer(1, 0.1*cm)) story.append(Paragraph("<b>C. McArdle Disease (Type V) — Myopathic GSD</b>", h2)) mc_features = [ "Autosomal recessive; <b>muscle phosphorylase deficiency</b>", "Exercise-induced painful cramps; myoglobinuria in 50% → risk of acute renal failure", "Onset: 2nd–3rd decade; mild, chronic course — compatible with normal longevity", "<b>Ischaemic forearm exercise test:</b> NO rise in venous lactate (diagnostic); ammonia rises normally", "Serum CK always elevated", "'Second wind' phenomenon: brief rest improves exercise tolerance (switch to fatty acid oxidation)", ] for f in mc_features: story.append(Paragraph(f"• {f}", bullet)) story.append(Spacer(1, 0.2*cm)) # ═══════════════════════════════════════════════════════════════════════════ # 7. DIAGNOSIS # ═══════════════════════════════════════════════════════════════════════════ story.append(section_heading("7. DIAGNOSIS", BLUE)) story.append(Spacer(1, 0.12*cm)) diag_data = [ [Paragraph("<b>Investigation</b>", table_hdr), Paragraph("<b>Findings / Use</b>", table_hdr)], [Paragraph("Biochemical profile", table_cell_c), Paragraph("Hypoglycaemia, lactic acidosis, hyperuricaemia, elevated triglycerides, transaminases", table_cell)], [Paragraph("Ischaemic forearm exercise test", table_cell_c), Paragraph("No rise in lactate (McArdle, type V); normal ammonia rise", table_cell)], [Paragraph("Liver / muscle biopsy (H&E, PAS)", table_cell_c), Paragraph("PAS-positive, diastase-labile glycogen deposits; diastase-resistant in type IV (amylopectin)", table_cell)], [Paragraph("Electron microscopy", table_cell_c), Paragraph("Membrane-bound lysosomal glycogen vacuoles in Pompe disease", table_cell)], [Paragraph("Enzyme assay", table_cell_c), Paragraph("Definitive — measured in leukocytes, erythrocytes, fibroblasts, or biopsy tissue", table_cell)], [Paragraph("Molecular genetics / DNA analysis", table_cell_c), Paragraph("Confirms specific mutation; prenatal diagnosis possible", table_cell)], [Paragraph("Newborn screening", table_cell_c), Paragraph("Tandem mass spectrometry (MS/MS) detects Pompe disease (type II) in many programmes", table_cell)], ] diag_t = Table(diag_data, colWidths=[4.5*cm, 11.5*cm], repeatRows=1) diag_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), BLUE), ("BACKGROUND", (0,1), (-1,1), LBLUE), ("BACKGROUND", (0,2), (-1,2), WHITE), ("BACKGROUND", (0,3), (-1,3), LBLUE), ("BACKGROUND", (0,4), (-1,4), WHITE), ("BACKGROUND", (0,5), (-1,5), LBLUE), ("BACKGROUND", (0,6), (-1,6), WHITE), ("BACKGROUND", (0,7), (-1,7), LBLUE), ("BOX", (0,0), (-1,-1), 0.7, BLUE), ("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#bfdbfe")), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING",(0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(diag_t) story.append(Spacer(1, 0.2*cm)) # ═══════════════════════════════════════════════════════════════════════════ # 8. TREATMENT OVERVIEW # ═══════════════════════════════════════════════════════════════════════════ story.append(section_heading("8. TREATMENT OVERVIEW", TEAL)) story.append(Spacer(1, 0.12*cm)) tx_items = [ ("<b>Dietary management (Type I):</b> Frequent high-carbohydrate feeds; uncooked corn starch (slow-release glucose); avoid fasting."), ("<b>Enzyme Replacement Therapy (ERT) — Type II (Pompe):</b> Alglucosidase alfa (Myozyme®) — first and most successful GSD-specific ERT; improves cardiac and motor function; better outcomes when started early."), ("<b>Liver transplantation:</b> Curative for type IV (Andersen) — corrects enzyme deficiency in liver; prevents progression of fibrosis."), ("<b>Gene therapy:</b> Under active clinical trials for Pompe disease (AAV-mediated GAA gene delivery) and GSD type I."), ("<b>Substrate reduction therapy and chaperon therapy:</b> Under investigation for several GSDs."), ("<b>Supportive:</b> Allopurinol (hyperuricaemia in type I); avoid triggers of myoglobinuria in McArdle disease (strenuous exercise)."), ] for item in tx_items: story.append(Paragraph(f"• {item}", bullet)) story.append(Spacer(1, 0.25*cm)) # ═══════════════════════════════════════════════════════════════════════════ # 9. EXAM SUMMARY BOX # ═══════════════════════════════════════════════════════════════════════════ story.append(section_heading("9. HIGH-YIELD EXAM POINTS", GOLD)) story.append(Spacer(1, 0.12*cm)) exam_data = [ [Paragraph("<b>Point</b>", table_hdr), Paragraph("<b>Fact to Remember</b>", table_hdr)], [Paragraph("Inheritance", table_cell_c), Paragraph("All GSDs are autosomal recessive EXCEPT GSD IX (X-linked phosphorylase kinase deficiency)", table_cell)], [Paragraph("ONLY lysosomal GSD", table_cell_c), Paragraph("Type II – Pompe disease (acid maltase); glycogen in lysosomes → EM shows membrane-bound vacuoles", table_cell)], [Paragraph("Most common hepatic GSD", table_cell_c), Paragraph("Type I – Von Gierke; most common overall GSD causing clinically significant liver disease", table_cell)], [Paragraph("Diastase-RESISTANT PAS", table_cell_c), Paragraph("Type IV – Andersen disease (abnormal polyglucosan / amylopectin-like glycogen)", table_cell)], [Paragraph("Normal blood glucose", table_cell_c), Paragraph("Type II – Pompe (lysosomal path, does not affect blood glucose regulation)", table_cell)], [Paragraph("No lactate rise on exercise", table_cell_c), Paragraph("Type V – McArdle; type VII – Tarui (ischaemic forearm exercise test)", table_cell)], [Paragraph("'Second wind'", table_cell_c), Paragraph("McArdle disease (type V) — brief rest allows switch to fatty acid oxidation", table_cell)], [Paragraph("Haemolytic anaemia", table_cell_c), Paragraph("Type VII – Tarui (PFK-M deficiency; RBCs also affected)", table_cell)], [Paragraph("ERT approved", table_cell_c), Paragraph("Only for Pompe disease (alglucosidase alfa)", table_cell)], [Paragraph("Staining", table_cell_c), Paragraph("PAS stain: positive (glycogen); PAS + diastase: glycogen is digested (labile) — EXCEPT type IV", table_cell)], ] exam_t = Table(exam_data, colWidths=[4*cm, 12*cm], repeatRows=1) exam_row_c = [] for i in range(1, len(exam_data)): bg = LGOLD if i % 2 == 1 else WHITE exam_row_c.append(("BACKGROUND", (0,i), (-1,i), bg)) exam_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), GOLD), *exam_row_c, ("BOX", (0,0), (-1,-1), 0.7, GOLD), ("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#fcd34d")), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING",(0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(exam_t) story.append(Spacer(1, 0.2*cm)) # ═══════════════════════════════════════════════════════════════════════════ # FOOTER # ═══════════════════════════════════════════════════════════════════════════ story.append(HRFlowable(width="100%", thickness=1, color=NAVY)) story.append(Spacer(1, 0.1*cm)) footer_style = S("Normal", fontSize=8, textColor=colors.HexColor("#6b7280"), fontName="Helvetica-Oblique", alignment=TA_CENTER) story.append(Paragraph( "Sources: Robbins & Cotran Pathologic Basis of Disease 10e • Robbins Basic Pathology 11e • " "Lippincott Illustrated Biochemistry 8e • Tietz Textbook of Laboratory Medicine 7e | " "Prepared by Orris Medical AI • July 2026", footer_style)) # ═══════════════════════════════════════════════════════════════════════════ # BUILD # ═══════════════════════════════════════════════════════════════════════════ doc.build(story) print("PDF generated:", OUTPUT) PYEOF
ls -lh /tmp/workspace/gsd-pathology/
GSD MD Pathology Answer
PDF Document · PDF