Enzymes chapter disease all Enzymes pattern there normal plasma levels mbbs 1st yr abvmu

Reading File
For MBBS 1st year ABVMU Biochemistry, the Enzymes chapter usually includes:
  1. Basic enzyme concepts
    Definition, apoenzyme, holoenzyme, cofactor, coenzyme, isoenzyme, active site.
  2. Enzyme classification
    Oxidoreductases, transferases, hydrolases, lyases, isomerases, ligases, with examples.
  3. Enzyme kinetics and inhibition
    Michaelis-Menten equation, Km, Vmax, Lineweaver-Burk plot, competitive and non-competitive inhibition.
  4. Regulation of enzymes
    Allosteric enzymes, covalent modification, zymogen activation, enzyme induction and repression.
  5. Clinical enzymology
    Diagnostic enzyme patterns in myocardial infarction, liver disease, obstructive jaundice, bone disorders, pancreatitis, prostate disease, muscle diseases, etc.
  6. Normal plasma enzyme levels
    Important reference values for AST, ALT, ALP, ACP, LDH, CK, CK-MB, GGT, amylase, lipase, cholinesterase and 5′-nucleotidase.

High-yield disease-pattern idea

  • Hepatocellular injury: AST and ALT rise, especially ALT.
  • Obstructive jaundice/cholestasis: ALP, GGT and 5′-nucleotidase rise.
  • Myocardial infarction: CK-MB rises early; LDH-1 shows LDH flip later.
  • Acute pancreatitis: Serum amylase and lipase rise.
  • Bone disease: ALP rises, with normal GGT.
  • Prostatic carcinoma: Acid phosphatase may rise.
  • Skeletal-muscle disease: CK and sometimes AST/LDH rise.
Which part should I make into detailed exam notes first?
  1. All enzyme disease patterns with a comparison table
  2. Normal plasma enzyme values table
  3. MI enzyme markers and timing chart
  4. Liver-function enzyme patterns
  5. Complete Enzymes chapter short notes for ABVMU

Show disease-wise enzyme patterns in one comparison table

Reading File
Finding Sources
Finding Sources
Searching PubMed

enzyme biomarkers AND diagnosis

Searching the Web

clinical enzymology disease pattern AST ALT ALP GGT CK-MB LDH amylase lipase laboratory reference

Finding Sources
Finding Sources
Finding Sources

Disease-wise enzyme patterns: MBBS 1st year comparison table

Key: ↑ raised, ↑↑ markedly raised, N normal, ↓ decreased.
These are typical patterns, not stand-alone diagnoses. Enzyme reference ranges and cut-offs vary by laboratory.
Disease / conditionMain enzyme patternImportant interpretation / viva point
Acute viral hepatitisALT ↑↑, AST ↑↑; ALT usually > ASTHepatocellular injury. ALT is more liver-specific than AST.
Chronic hepatitis / NAFLDALT ↑ or ↑↑; AST ↑; usually ALT > ASTAST:ALT ratio is commonly <1, though it may rise with advanced fibrosis/cirrhosis.
Alcoholic hepatitisAST > ALT, often AST:ALT >2; GGT ↑AST predominance is characteristic. Both enzymes may be only moderately elevated.
CirrhosisAST and ALT may be mildly ↑ or even normal in late disease; AST may exceed ALTLow enzymes do not exclude severe chronic liver disease because viable hepatocyte mass is reduced.
Hepatocellular carcinoma / liver metastasisALP ↑, GGT ↑, LDH ↑; AST/ALT variableCholestatic or infiltrative pattern may occur.
Obstructive jaundice / extrahepatic cholestasisALP ↑↑, GGT ↑↑, 5′-nucleotidase ↑; AST/ALT mild ↑Disproportionately high ALP indicates cholestasis. GGT or 5′NT confirms that raised ALP is of hepatobiliary origin.
Intrahepatic cholestasisALP ↑↑, GGT ↑, 5′NT ↑; aminotransferases variableSimilar enzyme pattern to extrahepatic obstruction.
Bone disease: rickets, osteomalacia, Paget disease, healing fractureALP ↑; GGT and 5′NT normalRaised ALP with normal GGT suggests a bone source rather than biliary obstruction.
Physiological growth in children / pregnancyALP ↑Bone ALP is high in growing children; placental ALP rises in late pregnancy.
Acute myocardial infarctionTroponin I/T ↑ is preferred now; CK-MB ↑, total CK ↑; AST ↑; LDH-1 may ↑ laterCK-MB is useful for detecting reinfarction. Classical MBBS pattern: LDH-1 > LDH-2 is called an LDH flip.
Reinfarction after MICK-MB rises again after returning toward baselineTroponin can remain elevated for days, so CK-MB was traditionally useful for a second infarct.
Skeletal-muscle injury, rhabdomyolysis, muscular dystrophyTotal CK ↑↑, CK-MM ↑; AST ↑, LDH ↑; aldolase may ↑CK is the most useful traditional enzyme marker. CK-MB can also rise slightly in severe skeletal-muscle damage.
Dermatomyositis / polymyositisCK ↑↑, aldolase ↑, AST ↑, LDH ↑Reflects muscle-cell injury.
Acute pancreatitisLipase ↑↑, amylase ↑↑Lipase is more pancreas-specific and stays elevated longer than amylase. A value >3 times the upper reference limit supports acute pancreatitis.
Pancreatic carcinoma / chronic pancreatitisAmylase and lipase may be ↑, normal, or lowEnzymes are less consistent than in acute pancreatitis.
Parotitis (mumps)Salivary amylase ↑Total amylase rises, but pancreatic lipase is usually normal.
Renal failureAmylase ↑, lipase may ↑Reduced renal clearance can elevate these enzymes without acute pancreatitis.
Prostatic carcinoma, especially metastasisProstatic acid phosphatase (ACP) ↑A traditional marker. PSA is used more commonly in current clinical practice.
Hemolytic anemia / megaloblastic anemiaLDH ↑↑, especially LDH-1; AST may ↑LDH rises due to destruction of blood cells. Interpret with bilirubin, reticulocyte count, and haptoglobin.
Pulmonary embolism / pulmonary infarctionLDH may ↑; AST may be mildly ↑Historical “LDH pattern” is nonspecific and not used alone for diagnosis.
Acute kidney infarctionLDH ↑↑May occur with raised LDH and relatively modest AST/ALT elevation.
Organophosphate poisoningPseudocholinesterase ↓Plasma butyrylcholinesterase is decreased. RBC acetylcholinesterase may also be measured.
Severe liver failure / chronic liver diseasePseudocholinesterase ↓The liver synthesizes pseudocholinesterase, so low values suggest reduced synthetic function.

One-line pattern revision

PatternThink of
ALT > ASTViral hepatitis, NAFLD, most hepatocellular injury
AST > ALT, especially ratio >2Alcohol-associated liver disease
ALP + GGT + 5′NT highObstructive jaundice / cholestasis
ALP high but GGT normalBone disease
CK-MB highMyocardial injury, classically MI
CK-MM very highSkeletal-muscle injury / muscular dystrophy
Lipase and amylase highAcute pancreatitis
ACP highProstatic carcinoma, classical marker
LDH-1 > LDH-2Classical LDH flip in MI or hemolysis
Pseudocholinesterase lowOrganophosphate poisoning or severe liver dysfunction
Exam note: In present-day practice, cardiac troponin has replaced CK-MB and LDH as the preferred test for diagnosing myocardial infarction. CK-MB, LDH isoenzymes, ACP, and aldolase remain important for MBBS biochemical-enzyme questions.
The liver patterns above match standard descriptions that ALT predominates in most acute hepatocellular disorders, whereas ALP predominates in cholestasis, as described in Harrison’s Principles of Internal Medicine, Chapter 348, and Harper’s Illustrated Biochemistry, Liver Function Tests. Acute pancreatitis is associated with increased amylase and lipase, with lipase more specific, as described in Harrison’s Principles of Internal Medicine, Tests of Exocrine Pancreatic Function.

Make a pdf of same

Reading File
Reading File
Browsing Directory

~/

Searching the Web

cardiac troponin preferred biomarker myocardial infarction CK-MB guideline

Running Command

mkdir -p "/tmp/workspace/enzyme-disease-patterns-pdf/output" 66 python - <<'PY' from reportlab.lib import colors from reportlab.lib.enums import TA_CENTER from reportlab.lib.pagesizes import A4, landscape from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, PageBreak, KeepTogether from reportlab.pdfbase.pdfmetrics import stringWidth from reportlab.lib.colors import HexColor from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.pdfmetrics import registerFontFamily from pathlib import Path out = Path('/tmp/workspace/enzyme-disease-patterns-pdf/output/Enzyme_Disease_Patterns_MBBS_ABVMU.pdf') # Unicode-capable font font = 'Helvetica' try: pdfmetrics.registerFont(TTFont('DejaVuSans', '/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf')) pdfmetrics.registerFont(TTFont('DejaVuSans-Bold', '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf')) registerFontFamily('DejaVuSans', normal='DejaVuSans', bold='DejaVuSans-Bold') font = 'DejaVuSans' except Exception: pass bold = font + '-Bold' if font == 'DejaVuSans' else 'Helvetica-Bold' W,H = landscape(A4) doc = SimpleDocTemplate(str(out), pagesize=landscape(A4), rightMargin=0.7*cm, leftMargin=0.7*cm, topMargin=0.7*cm, bottomMargin=0.7*cm) styles = getSampleStyleSheet() title = ParagraphStyle('title', parent=styles['Title'], fontName=bold, fontSize=18, leading=22, alignment=TA_CENTER, textColor=HexColor('#153B5B'), spaceAfter=5) sub = ParagraphStyle('sub', parent=styles['Normal'], fontName=font, fontSize=8.5, leading=11, alignment=TA_CENTER, textColor=HexColor('#3F4F5C'), spaceAfter=8) head = ParagraphStyle('head', parent=styles['Normal'], fontName=bold, fontSize=7.5, leading=9, textColor=colors.white, alignment=TA_CENTER) cell = ParagraphStyle('cell', parent=styles['Normal'], fontName=font, fontSize=6.9, leading=8.3, textColor=HexColor('#111827')) cell_bold = ParagraphStyle('cellb', parent=cell, fontName=bold) small = ParagraphStyle('small', parent=styles['Normal'], fontName=font, fontSize=7.3, leading=9) smallb = ParagraphStyle('smallb', parent=small, fontName=bold) footer = ParagraphStyle('footer', parent=styles['Normal'], fontName=font, fontSize=6.5, leading=8, textColor=HexColor('#4B5563')) def P(x, style=cell): return Paragraph(x, style) rows = [ ('Acute viral hepatitis', '<b>ALT ↑↑, AST ↑↑</b>; ALT usually &gt; AST', 'Hepatocellular injury. ALT is more liver-specific than AST.'), ('Chronic hepatitis / NAFLD', 'ALT ↑ or ↑↑; AST ↑; usually <b>ALT &gt; AST</b>', 'AST:ALT ratio commonly &lt;1; may rise with advanced fibrosis/cirrhosis.'), ('Alcoholic hepatitis', '<b>AST &gt; ALT</b>, often AST:ALT &gt;2; <b>GGT ↑</b>', 'Characteristic AST predominance. Both enzymes may be only moderately elevated.'), ('Cirrhosis', 'AST/ALT mild ↑ or even normal late; AST may &gt; ALT', 'Low values do not exclude severe disease because viable hepatocyte mass is reduced.'), ('Hepatocellular carcinoma / liver metastasis', 'ALP ↑, GGT ↑, LDH ↑; AST/ALT variable', 'Often cholestatic or infiltrative pattern.'), ('Obstructive jaundice / extrahepatic cholestasis', '<b>ALP ↑↑, GGT ↑↑, 5′-nucleotidase ↑</b>; AST/ALT mild ↑', 'Disproportionately high ALP. Raised GGT or 5′NT supports hepatobiliary source.'), ('Intrahepatic cholestasis', 'ALP ↑↑, GGT ↑, 5′NT ↑; AST/ALT variable', 'Similar enzyme profile to extrahepatic obstruction.'), ('Bone disease: rickets, osteomalacia, Paget disease, healing fracture', '<b>ALP ↑</b>; GGT and 5′NT normal', 'Raised ALP with normal GGT points to bone rather than liver.'), ('Growth in children / pregnancy', 'ALP ↑', 'Physiological: bone ALP in children; placental ALP in late pregnancy.'), ('Acute myocardial infarction', '<b>Troponin I/T ↑</b> preferred; CK-MB ↑, total CK ↑; AST ↑; LDH-1 ↑ later', 'Classical: LDH-1 &gt; LDH-2 is “LDH flip”. Troponin is now preferred.'), ('Reinfarction after MI', 'CK-MB rises again after return toward baseline', 'Traditional role: helps detect a second infarction when troponin remains elevated.'), ('Skeletal muscle injury / rhabdomyolysis / muscular dystrophy', '<b>Total CK ↑↑, CK-MM ↑</b>; AST ↑, LDH ↑; aldolase may ↑', 'CK is the most useful traditional enzyme marker.'), ('Dermatomyositis / polymyositis', 'CK ↑↑, aldolase ↑, AST ↑, LDH ↑', 'Reflects active muscle-cell injury.'), ('Acute pancreatitis', '<b>Lipase ↑↑, amylase ↑↑</b>', 'Lipase is more pancreas-specific and remains high longer. &gt;3× ULN supports diagnosis.'), ('Pancreatic carcinoma / chronic pancreatitis', 'Amylase/lipase may be ↑, normal, or low', 'Less consistent than acute pancreatitis.'), ('Parotitis (mumps)', 'Salivary amylase ↑', 'Total amylase rises; pancreatic lipase usually normal.'), ('Renal failure', 'Amylase ↑; lipase may ↑', 'Reduced clearance may elevate these enzymes without acute pancreatitis.'), ('Prostatic carcinoma, especially metastasis', '<b>Prostatic acid phosphatase (ACP) ↑</b>', 'Traditional marker. PSA is used more commonly today.'), ('Hemolytic / megaloblastic anemia', '<b>LDH ↑↑</b>, especially LDH-1; AST may ↑', 'LDH rises from destruction of blood cells.'), ('Pulmonary embolism / infarction', 'LDH may ↑; AST mild ↑', 'Nonspecific, not diagnostic alone.'), ('Acute kidney infarction', 'LDH ↑↑', 'Can occur with high LDH and modest AST/ALT elevation.'), ('Organophosphate poisoning', '<b>Pseudocholinesterase ↓</b>', 'Plasma butyrylcholinesterase is reduced; RBC acetylcholinesterase may also be measured.'), ('Severe liver failure / chronic liver disease', '<b>Pseudocholinesterase ↓</b>', 'Reduced hepatic synthesis suggests impaired synthetic function.'), ] story = [Paragraph('Disease-wise Enzyme Patterns', title), Paragraph('MBBS 1st Year Biochemistry (ABVMU) - Rapid Revision Table', sub)] intro = P('<b>Key:</b> ↑ raised; ↑↑ markedly raised; ↓ decreased; N normal. These are typical patterns for examination revision, not stand-alone clinical diagnoses. Reference intervals vary by laboratory.', small) story += [intro, Spacer(1, 5)] data = [[P('Disease / condition', head), P('Main enzyme pattern', head), P('Important interpretation / viva point', head)]] for a,b,c in rows: data.append([P(a, cell_bold), P(b), P(c)]) t = Table(data, colWidths=[6.5*cm, 8.2*cm, 11.5*cm], repeatRows=1, hAlign='CENTER') t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0),HexColor('#1F5A7A')), ('GRID',(0,0),(-1,-1),0.35,HexColor('#B8C7D1')), ('VALIGN',(0,0),(-1,-1),'TOP'), ('LEFTPADDING',(0,0),(-1,-1),4), ('RIGHTPADDING',(0,0),(-1,-1),4), ('TOPPADDING',(0,0),(-1,-1),3), ('BOTTOMPADDING',(0,0),(-1,-1),3), ('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white, HexColor('#F3F8FB')]), ])) story += [t, Spacer(1, 8)] story += [Paragraph('One-line Pattern Revision', ParagraphStyle('section', parent=styles['Heading2'], fontName=bold, fontSize=11, leading=14, textColor=HexColor('#153B5B'), spaceAfter=5))] quick = [ ('ALT &gt; AST', 'Viral hepatitis, NAFLD, most hepatocellular injury'), ('AST &gt; ALT, especially ratio &gt;2', 'Alcohol-associated liver disease'), ('ALP + GGT + 5′NT high', 'Obstructive jaundice / cholestasis'), ('ALP high but GGT normal', 'Bone disease'), ('CK-MB high', 'Myocardial injury, classically MI'), ('CK-MM very high', 'Skeletal muscle injury / muscular dystrophy'), ('Lipase and amylase high', 'Acute pancreatitis'), ('ACP high', 'Prostatic carcinoma, classical marker'), ('LDH-1 &gt; LDH-2', 'Classical LDH flip in MI or hemolysis'), ('Pseudocholinesterase low', 'Organophosphate poisoning or severe liver dysfunction'), ] qd = [[P('Pattern', head), P('Think of', head)]] + [[P(a, cell_bold),P(b)] for a,b in quick] qt = Table(qd, colWidths=[8.5*cm,17.7*cm], repeatRows=1) qt.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0),HexColor('#357394')),('GRID',(0,0),(-1,-1),0.35,HexColor('#B8C7D1')),('VALIGN',(0,0),(-1,-1),'TOP'), ('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,HexColor('#F3F8FB')]), ('LEFTPADDING',(0,0),(-1,-1),4),('RIGHTPADDING',(0,0),(-1,-1),4),('TOPPADDING',(0,0),(-1,-1),3),('BOTTOMPADDING',(0,0),(-1,-1),3) ])) story += [qt, Spacer(1, 7)] story += [Paragraph('<b>Exam note:</b> In current practice, cardiac troponin is preferred for diagnosing myocardial infarction. CK-MB, LDH isoenzymes, ACP and aldolase remain high-yield for MBBS clinical enzymology questions.', small)] story += [Spacer(1,4), Paragraph('Academic sources: Harper’s Illustrated Biochemistry, 32nd ed, “Liver Function Tests”; Harrison’s Principles of Internal Medicine, 22nd ed, “Evaluation of Liver Function” and “Tests of Exocrine Pancreatic Function”; Lippincott Illustrated Reviews: Biochemistry, 8th ed, “Isoenzymes”.', footer)] def page_num(canvas, doc): canvas.saveState(); canvas.setFont(font, 6.5); canvas.setFillColor(HexColor('#5A6872')) canvas.drawRightString(W-0.7*cm, 0.35*cm, f'ABVMU MBBS Biochemistry | Page {doc.page}') canvas.restoreState() doc.build(story, onFirstPage=page_num, onLaterPages=page_num) print(out) PY python - <<'PY' from pypdf import PdfReader p='/tmp/workspace/enzyme-disease-patterns-pdf/output/Enzyme_Disease_Patterns_MBBS_ABVMU.pdf' r=PdfReader(p) print('pages:',len(r.pages),'bytes:',__import__('os').path.getsize(p)) print((r.pages[0].extract_text() or '')[:250]) PY

Browsing Directory

~/enzyme-disease-patterns-pdf/

Running Command

python -c "import base64; from pathlib import Path; src=base64.b64decode('ZnJvbSByZXBvcnRsYWIubGliIGltcG9ydCBjb2xvcnMKZnJvbSByZXBvcnRsYWIubGliLnBhZ2VzaXplcyBpbXBvcnQgQTQsIGxhbmRzY2FwZQpmcm9tIHJlcG9ydGxhYi5saWIuc3R5bGVzIGltcG9ydCBnZXRTYW1wbGVTdHlsZVNoZWV0LCBQYXJhZ3JhcGhTdHlsZQpmcm9tIHJlcG9ydGxhYi5saWIudW5pdHMgaW1wb3J0IGNtCmZyb20gcmVwb3J0bGFiLnBhdHlwdXMgaW1wb3J0IFNpbXBsZURvY1RlbXBsYXRlLCBUYWJsZSwgVGFibGVTdHlsZSwgUGFyYWdyYXBoLCBTcGFjZXIKZnJvbSByZXBvcnRsYWIucGRmYmFzZS50dGZvbnRzIGltcG9ydCBUVEZvbnQKZnJvbSByZXBvcnRsYWIucGRmYmFzZSBpbXBvcnQgcGRmbWV0cmljcwpmcm9tIHJlcG9ydGxhYi5saWIuY29sb3JzIGltcG9ydCBIZXhDb2xvcgpmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKCm91dD1QYXRoKCcvdG1wL3dvcmtzcGFjZS9lbnp5bWUtZGlzZWFzZS1wYXR0ZXJucy1wZGYvb3V0cHV0L0VuenltZV9EaXNlYXNlX1BhdHRlcm5zX01CQlNfQUJWTVUucGRmJykKcGRmbWV0cmljcy5yZWdpc3RlckZvbnQoVFRGb250KCdEZWphVnUnLCcvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL2RlamF2dS9EZWphVnVTYW5zLnR0ZicpKQpwZGZtZXRyaWNzLnJlZ2lzdGVyRm9udChUVEZvbnQoJ0RlamFWdS1Cb2xkJywnL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9kZWphdnUvRGVqYVZ1U2Fucy1Cb2xkLnR0ZicpKQpmb250PSdEZWphVnUnO2JvbGQ9J0RlamFWdS1Cb2xkJwpzdHlsZXM9Z2V0U2FtcGxlU3R5bGVTaGVldCgpCnRpdGxlPVBhcmFncmFwaFN0eWxlKCd0aXRsZScscGFyZW50PXN0eWxlc1snVGl0bGUnXSxmb250TmFtZT1ib2xkLGZvbnRTaXplPTE4LGxlYWRpbmc9MjIsYWxpZ25tZW50PTEsZGV4dENvbG9yPUhleENvbG9yKCcjMTUzQjVCJykpCnN1Yj1QYXJhZ3JhcGhTdHlsZSgnc3ViJyxwYXJlbnQ9c3R5bGVzWydOb3JtYWwnXSxmb250TmFtZT1mb250LGZvbnRTaXplPTksbGVhZGluZz0xMSxhbGlnbm1lbnQ9MSx0ZXh0Q29sb3I9SGV4Q29sb3IoJyMzRjRGNUMnKSkKaGVhZD1QYXJhZ3JhcGhTdHlsZSgnaGVhZCcscGFyZW50PXN0eWxlc1snTm9ybWFsJ10sZm9udE5hbWU9Ym9sZCxmb250U2l6ZT03LjUsbGVhZGluZz05LHRleHRDb2xvcj1jb2xvcnMud2hpdGUsYWxpZ25tZW50PTEpCmNlbGw9UGFyYWdyYXBoU3R5bGUoJ2NlbGwnLHBhcmVudD1zdHlsZXNbJ05vcm1hbCddLGZvbnROYW1lPWZvbnQsZm9udFNpemU9Ni44LGxlYWRpbmc9OC4xKQpjZWxsYj1QYXJhZ3JhcGhTdHlsZSgnY2VsbGInLHBhcmVudD1jZWxsLGZvbnROYW1lPWJvbGQpCnNtYWxsPVBhcmFncmFwaFN0eWxlKCdzbWFsbCcscGFyZW50PXN0eWxlc1snTm9ybWFsJ10sZm9udE5hbWU9Zm9udCxmb250U2l6ZT03LjMsbGVhZGluZz05KQoKZGVmIFAoeCxzPWNlbGwpOiByZXR1cm4gUGFyYWdyYXBoKHgscykKcm93cz1bCignQWN1dGUgdmlyYWwgaGVwYXRpdGlzJywnPGI+QUxUIOKGkeKGkSwgQVNUIOKGkeKGkzwvYj47IEFMVCB1c3VhbGx5ICZndDsgQVNUJywnSGVwYXRvY2VsbHVsYXIgaW5qdXJ5LiBBTFQgaXMgbW9yZSBsaXZlci1zcGVjaWZpYy4nKSwoJ0Nocm9uaWMgaGVwYXRpdGlzIC8gTkFGTEQnLCdBTFQg4oaRIHdvciDinpE7IEFTVCDihpE7IHVzdWFsbHkgPGI+QUxUJmd0OyBBU1Q8L2I+JywnQVNUOkFMVCByYXRpbyBjb21tb25seSAmbHQ7MS4nKSwoJ0FsY29ob2xpYyBoZXBhdGl0aXMnLCc8Yj5BU1QgJmd0OyBBTFQ8L2I+LCBvZnRlbiBBU1Q6QUxUICZndDsyOyA8Yj5HR1Qg4oaRPC9iPicsJ0NoYXJhY3RlcmlzdGljIEFTVCBwcmVkb21pbmFuY2UuJyksKCdDaXJyaG9zaXMnLCdBU1QvQUxUIG1pbGQg4oaRIHxvciBub3JtYWwgbGF0ZTsgQVNUIG1heSAmZ3Q7IEFMVCcsJ0xvdyB2YWx1ZXMgZG8gbm90IGV4Y2x1ZGUgc2V2ZXJlIGRpc2Vhc2UuJyksKCdIZXBhdG9jZWxsdWxhciBjYXJjaW5vbWEgLyBsaXZlciBtZXRhc3Rhc2lzJywnQUxQIOKGkSwgR0dUIOKGkSwgTERIIOKGkTsgQVNUL0FMVCB2YXJpYWJsZScsJ09mdGVuIGNob2xlc3RhdGljIG9yIGluZmlsdHJhdGl2ZSBwYXR0ZXJuLicpLCgnT2JzdHJ1Y3RpdmUgamF1bmRpY2UgLyBleHRyYWhlcGF0aWMgY2hvbGVzdGFzaXMnLCc8Yj5BTFAg4oaR4oaRLCBHR1Qg4oaR4oaRLCA14oCyLW51Y2xlb3RpZGFzZSDihpE8L2I+OyBBU1QvQUxUIG1pbGQg4oaRJywnRGlzcHJvcG9ydGlvbmF0ZWx5IGhpZ2ggQUxQLiBHUkcgb3IgNWLigJlOVCBzdXBwb3J0cyBoZXBhdG9iaWxpYXJ5IHNvdXJjZS4nKSwoJ0ludHJhaGVwYXRpYyBjaG9sZXN0YXNpcycsJ0FMUCDihpHihpEsIEdHVCB4oocRLCA14oCyTlQg4oaROyBBU1QvQUxUIHZhcmlhYmxlJywnU2ltaWxhciBlbnp5bWUgcHJvZmlsZSB0byBleHRyYWhlcGF0aWMgb2JzdHJ1Y3Rpb24uJyksKCdCb25lIGRpc2Vhc2U6IHJpY2tldHMsIG9zdGVvbWFsYWNpYSwgUGFnZXQgZGlzZWFzZSwgaGVhbGluZyBmcmFjdHVyZScsJzxiPkFMUCDihpE8L2I+OyBHR1QgYW5kIDXigJkOVCBub3JtYWwnLCdSYWlzZWQgQUxQIHdpdGggbm9ybWFsIEdHVCBwb2ludHMgdG8gYm9uZS4nKSwoJ0dyb3d0aCBpbiBjaGlsZHJlbiAvIHByZWduYW5jeScsJ0FMUCDihpEnLCdQaHlzaW9sb2dpY2FsOiBib25lIEFMUCBpbiBjaGlsZHJlbiBhbmQgcGxhY2VudGFsIEFMUC4nKSwoJ0FjdXRlIG15b2NhcmRpYWwgaW5mYXJjdGlvbicsJzxiPlRyb3BvbmluIEkvVCDihpE8L2I+IHByZWZlcnJlZDsgQ0stTUIg4oaRLCB0b3RhbCBDSyDinpE7IEFTVCDihpE7IExESC0xIOKGkSBsYXRlcicsJ0NsYXNzaWNhbDogTERILTEgJmd0OyBMREgtMiBpcyAiTERIIGZsaXAiLicpLCgnUmVpbmZhcmN0aW9uIGFmdGVyIE1JJywnQ0stTUIgcmlzZXMgYWdhaW4gYWZ0ZXIgcmV0dXJuIHRvd2FyZCBiYXNlbGluZScsJ1RyYWRpdGlvbmFsIHJvbGU6IGhlbHBzIGRldGVjdCBhIHNlY29uZCBpbmZhcmN0aW9uLicpLCgnU2tlbGV0YWwgbXVzY2xlIGluanVyeSAvIHJoYWJkb215b2x5c2lzIC8gbXVzY3VsYXIgZHlzdHJvcGh5JywnPGI+VG90YWwgQ0sg4oaR4oaRLCBDSy1NTSDihpE8L2I+OyBBU1Qg4oaRLCBMREgg4oaROyBhbGRvbGFzZSBtYXkg4oaRJywnQ0sgaXMgdGhlIG1vc3QgdXNlZnVsIHRyYWRpdGlvbmFsIGVuenltZSBtYXJrZXIuJyksKCdEZXJtYXRvbXlvc2l0aXMgLyBwb2x5bXlvc2l0aXMnLCdDSyDinpHihpEsIGFsZG9sYXNlIOKGkSwgQVNUIOKGkSwgTERIIOKGkScsJ1JlZmxlY3RzIGFjdGl2ZSBtdXNjbGUtY2VsbCBpbmp1cnkuJyksKCdBY3V0ZSBwYW5jcmVhdGl0aXMnLCc8Yj5MaXBhc2Ug4oaR4oaRLCBhbXlsYXNlIOKGkeKGkTwvYj4nLCdMaXBhc2UgaXMgbW9yZSBwYW5jcmVhcy1zcGVjaWZpYyBhbmQgc3RheXMgaGlnaCBsb25nZXIuICZndDszw5cgVUxOLicpLCgnUGFuY3JlYXRpYyBjYXJjaW5vbWEgLyBjaHJvbmljIHBhbmNyZWF0aXRpcycsJ0FteWxhc2UvbGlwYXNlIG1heSBiZSDihpEsIG5vcm1hbCwgb3IgbG93JywnTGVzcyBjb25zaXN0ZW50IHRoYW4gYWN1dGUgcGFuY3JlYXRpdGlzLicpLCgnUGFyb3RpdGlzIChtdW1wcyknLCdTYWxpdmFyeSBhbXlsYXNlIOKGkScsJ1RvdGFsIGFteWxhc2UgcmlzZXM7IHBhbmNyZWF0aWMgbGlwYXNlIHVzdWFsbHkgbm9ybWFsLicpLCgnUmVuYWwgZmFpbHVyZScsJ0FteWxhc2Ug4oaROyBsaXBhc2UgbWF5IOKGkScsJ1JlZHVjZWQgY2xlYXJhbmNlIGNhbiBlbGV2YXRlIHRoZXNlIGVuenltZXMgd2l0aG91dCBwYW5jcmVhdGl0aXMuJyksKCdQcm9zdGF0aWMgY2FyY2lub21hLCBlc3BlY2lhbGx5IG1ldGFzdGFzaXMnLCc8Yj5Qcm9zdGF0aWMgYWNpZCBwaG9zcGhhdGFzZSAoQUNQKSDihpE8L2I+JywnVHJhZGl0aW9uYWwgbWFya2VyLiBQU0EgaXMgdXNlZCBtb3JlIGNvbW1vbmx5IHRvZGF5LicpLCgnSGVtb2x5dGljIC8gbWVnYWxvYmxhc3RpYyBhbmVtaWEnLCc8Yj5MREgg4oaR4oaRLCBlc3BlY2lhbGx5IExESC0xPC9iPjsgQVNUIG1heSDihpEnLCdMREggcmlzZXMgZnJvbSBkZXN0cnVjdGlvbiBvZiBibG9vZCBjZWxscy4nKSwoJ1B1bG1vbmFyeSBlbWJvbGlzbSAvIGluZmFyY3Rpb24nLCdMREggbWF5IOKGkTsgQVNUIG1pbGQg4oaRJywnTm9uc3BlY2lmaWMsIG5vdCBkaWFnbm9zdGljIGFsb25lLicpLCgnQWN1dGUga2lkbmV5IGluZmFyY3Rpb24nLCdMREgg4oaR4oaRJywnQ2FuIG9jY3VyIHdpdGggaGlnaCBMREggYW5kIG1vZGVzdCBBU1QvQUxULicpLCgnT3JnYW5vcGhvc3BoYXRlIHBvaXNvbmluZycsJzxiPlBzZXVkb2Nob2xpbmVzdGVyYXNlIOKGkzwvYj4nLCdQbGFzbWEgYnV0eXJ5bGNob2xpbmVzdGVyYXNlIGlzIHJlZHVjZWQuJyksKCdTZXZlcmUgbGl2ZXIgZmFpbHVyZSAvIGNocm9uaWMgbGl2ZXIgZGlzZWFzZScsJzxiPlBzZXVkb2Nob2xpbmVzdGVyYXNlIOKGkzwvYj4nLCdSZWR1Y2VkIGhlcGF0aWMgc3ludGhlc2lzIHN1Z2dlc3RzIGltcGFpcmVkIHN5bnRoZXRpYyBmdW5jdGlvbi4nKV0KCnF1aWNrPVsKICgnQUxUICZndDsgQVNUJywnVmlyYWwgaGVwYXRpdGlzLCBOQUZMRCwgbW9zdCBoZXBhdG9jZWxsdWxhciBpbmp1cnknKSwoJ0FTVCAmZ3Q7IEFMVCwgZXNwZWNpYWxseSByYXRpbyAmZ3Q7MicsJ0FsY29ob2wtYXNzb2NpYXRlZCBsaXZlciBkaXNlYXNlJyksKCdBTFAgKyBHR1QgKyA14oCyTlQgaGlnaCcsJ09ic3RydWN0aXZlIGphdW5kaWNlIC8gY2hvbGVzdGFzaXMnKSwoJ0FMUCBoeWdoIGJ1dCBHR1Qgbm9ybWFsJywnQm9uZSBkaXNlYXNlJyksKCdDSy1NQiBoaWdoJywnTXlvY2FyZGlhbCBpbmp1cnksIGNsYXNzaWNhbGx5IE1JJyksKCdDSy1NTSB2ZXJ5IGhpZ2gnLCdTa2VsZXRhbCBtdXNjbGUgaW5qdXJ5IC8gbXVzY3VsYXIgZHlzdHJvcGh5JyksKCdMaXBhc2UgYW5kIGFteWxhc2UgaGlnaCcsJ0FjdXRlIHBhbmNyZWF0aXRpcycpLCgnQUNQIGhpZ2gnLCdQcm9zdGF0aWMgY2FyY2lub21hLCBjbGFzc2ljYWwgbWFya2VyJyksKCdMREgtMSAmZ3Q7IExESC0yJywnQ2xhc3NpY2FsIExESCBmbGlwIGluIE1JIG9yIGhlbW9seXNpcycpLCgnUHNldWRvY2hvbGluZXN0ZXJhc2UgbG93JywnT3JnYW5vcGhvc3BoYXRlIHBvaXNvbmluZyBvciBzZXZlcmUgbGl2ZXIgZHlzZnVuY3Rpb24nKV0KCnN0b3J5PVtQYXJhZ3JhcGgoJ0Rpc2Vhc2Utd2lzZSBFbnp5bWUgUGF0dGVybnMnLHRpdGxlKSxQYXJhZ3JhcGgoJ01CQlMgMXN0IFllYXIgQmlvY2hlbWlzdHJ5IChBQlZNVSkgLSBSYXBpZCBSZXZpc2lvbiBUYWJsZScsc3ViKSxQYXJhZ3JhcGgoJzxiPktleTo8L2I+IOKGkSByYWlzZWQ7IOKGkeKGkSBtYXJrZWRseSByYWlzZWQ7IOKGkyBkZWNyZWFzZWQuIFRoZXNlIGFyZSB0eXBpY2FsIHBhdHRlcm5zIGZvciBleGFtIHJldmlzaW9uLCBub3Qgc3RhbmQtYWxvbmUgY2xpbmljYWwgZGlhZ25vc2VzLiBSZWZlcmVuY2UgaW50ZXJ2YWxzIHZhcnkgYnkgbGFib3JhdG9yeS4nLHNtYWxsKSxTcGFjZXIoMSw1KV0KZGF0YT1bW1AoJ0Rpc2Vhc2UgLyBjb25kaXRpb24nLGhlYWQpLFAoJ01haW4gZW56eW1lIHBhdHRlcm4nLGhlYWQpLFAoJ0ltcG9ydGFudCBpbnRlcnByZXRhdGlvbiAvIHZpdmEgcG9pbnQnLGhlYWQpXV0rW1tQKGEsY2VsbGIpLFAoYiksUChjKV0gZm9yIGEsYixjIGluIHJvd3NdCnQ9VGFibGUoZGF0YSxjb2xXaWR0aHM9WzYuNSpjbSw4LjIqY20sMTEuNSpjbV0scmVwZWF0Um93cz0xKQp0LnNldFN0eWxlKFRhYmxlU3R5bGUoWygnQkFDS0dST1VORCcsKDAsMCksKC0xLDApLEhleENvbG9yKCcjMUY1QTdBJykpLCgnR1JJRCcsKDAsMCksKC0xLC0xKSwwLjM1LEhleENvbG9yKCcjQjhDN0QxJykpLCgnVkFMSUdOJywoMCwwKSwoLTEsLTEpLCdUT1AnKSwoJ1JPV0JBQ0tHUk9VTkRTJywoMCwxKSwoLTEsLTEpLFtjb2xvcnMud2hpdGUsSGV4Q29sb3IoJyNGM0Y4RkInKV0pLCgnTEVGVFBBRERJTkcnLCgwLDApLCgtMSwtMSksNCksKCdSSUdIVFBBRERJTkcnLCgwLDApLCgtMSwtMSksNCksKCdUT1BQQURESU5HJywoMCwwKSwoLTEsLTEpLDMpLCgnQk9UVE9NUEFERElORycsKDAsMCksKC0xLC0xKSwzKV0pKQpzdG9yeSArPSBbdCxTcGFjZXIoMSw4KSxQYXJhZ3JhcGgoJ09uZS1saW5lIFBhdHRlcm4gUmV2aXNpb24nLFBhcmFncmFwaFN0eWxlKCdzZWN0aW9uJyxwYXJlbnQ9c3R5bGVzWydIZWFkaW5nMiddLGZvbnROYW1lPWJvbGQsZm9udFNpemU9MTEsbGVhZGluZz0xNCx0ZXh0Q29sb3I9SGV4Q29sb3IoJyMxNTNCNUInKSkpXQpxZD1bW1AoJ1BhdHRlcm4nLGhlYWQpLFAoJ1RoaW5rIG9mJyxoZWFkKV1dK1tbUChhLGNlbGxiKSxQKGIpXSBmb3IgYSxiIGluIHF1aWNrXQpxdD1UYWJsZShxZCxjb2xXaWR0aHM9WzguNSpjbSwxNy43KmNtXSxyZXBlYXRSb3dzPTEpCnF0LnNldFN0eWxlKFRhYmxlU3R5bGUoWygnQkFDS0dST1VORCcsKDAsMCksKC0xLDApLEhleENvbG9yKCcjMzU3Mzk0JykpLCgnR1JJRCcsKDAsMCksKC0xLC0xKSwwLjM1LEhleENvbG9yKCcjQjhDN0QxJykpLCgnVkFMSUdOJywoMCwwKSwoLTEsLTEpLCdUT1AnKSwoJ1JPV0JBQ0tHUk9VTkRTJywoMCwxKSwoLTEsLTEpLFtjb2xvcnMud2hpdGUsSGV4Q29sb3IoJyNGM0Y4RkInKV0pLCgnTEVGVFBBRERJTkcnLCgwLDApLCgtMSwtMSksNCksKCdSSUdIVFBBRERJTkcnLCgwLDApLCgtMSwtMSksNCksKCdUT1BQQURESU5HJywoMCwwKSwoLTEsLTEpLDMpLCgnQk9UVE9NUEFERElORycsKDAsMCksKC0xLC0xKSwzKV0pKQpzdG9yeSArPVtxdCxTcGFjZXIoMSw2KSxQYXJhZ3JhcGgoJzxiPkV4YW0gbm90ZTo8L2I+IEluIGN1cnJlbnQgcHJhY3RpY2UsIGNhcmRpYWMgdHJvcG9uaW4gaXMgcHJlZmVycmVkIGZvciBkaWFnbm9zaW5nIG15b2NhcmRpYWwgaW5mYXJjdGlvbi4gQ0stTUIsIExESCBpc296eW1lcywgQUNQIGFuZCBhbGRvbGFzZSByZW1haW4gaGlnaC15aWVsZCBmb3IgTUJCUyBjbGluaWNhbCBlbnp5bW9sb2d5IHF1ZXN0aW9ucy4nLHNtYWxsKSxTcGFjZXIoMSw0KSxQYXJhZ3JhcGgoJ0FjYWRlbWljIHNvdXJjZXM6IEhhcnBlcuKAmXMgSWxsdXN0cmF0ZWQgQmlvY2hlbWlzdHJ5LCAzMm5kIGVkLCBMaXZlciBGdW5jdGlvbiBUZXN0czsgSGFycmlzb27igJlzIFByaW5jaXBsZXMgb2YgSW50ZXJuYWwgTWVkaWNpbmUsIDIybmQgZWQsIEV2YWx1YXRpb24gb2YgTGl2ZXIgRnVuY3Rpb24gYW5kIFRlc3RzIG9mIEV4b2NyaW5lIFBhbmNyZWF0aWMgRnVuY3Rpb247IExpcHBpbmNvdHQgSWxsdXN0cmF0ZWQgUmV2aWV3czogQmlvY2hlbWlzdHJ5LCA4dGggZWQsIElzb2VuenltZXMuJyxzbWFsbCldCgpkZWYgZm9vdGVyKGNhbnZhcyxkb2MpOgogIGNhbnZhcy5zYXZlU3RhdGUoKTsgY2FudmFzLnNldEZvbnQoZm9udCw2LjUpOyBjYW52YXMuc2V0RmlsbENvbG9yKEhleENvbG9yKCcjNUE2ODcyJykpCiAgY2FudmFzLmRyYXdSaWdodFN0cmluZyhsYW5kc2NhcGUoQTQpWzBdLTAuNypjbSwgMC4zNSpjbSwgZidBQlZNVSBNQkJTIEJpb2NoZW1pc3RyeSB8IFBhZ2Uge2RvYy5wYWdlfScpCiAgY2FudmFzLnJlc3RvcmVTdGF0ZSgpCgpkb2M9U2ltcGxlRG9jVGVtcGxhdGUoc3RyKG91dCkscGFnZXNpemU9bGFuZHNjYXBlKEE0KSxsZWZ0TWFyZ2luPTAuNypjbSxyaWdodE1hcmdpbj0wLjdjbSx0b3BNYXJnaW49MC43KmNtLGJvdHRvbU1hcmdpbj0wLjdjbSkKZG9jLmJ1aWxkKHN0b3J5LG9uRmlyc3RQYWdlPWZvb3RlcixvbkxhdGVyUGFnZXM9Zm9vdGVyKQpwcmludChvdXQpCg=='); Path('/tmp/workspace/enzyme-disease-patterns-pdf/src').mkdir(exist_ok=True); Path('/tmp/workspace/enzyme-disease-patterns-pdf/src/make_pdf.py').write_bytes(src)" && python "/tmp/workspace/enzyme-disease-patterns-pdf/src/make_pdf.py" && python -c "from pypdf import PdfReader; import os; p='/tmp/workspace/enzyme-disease-patterns-pdf/output/Enzyme_Disease_Patterns_MBBS_ABVMU.pdf'; r=PdfReader(p); print('pages=',len(r.pages),'bytes=',os.path.getsize(p)); print((r.pages[0].extract_text() or '')[:120])"

Reading File
Writing File

~/enzyme-disease-patterns-pdf/src/make_pdf_v2.py

from reportlab.lib import colors
from reportlab.lib.pagesizes import A4, landscape
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.colors import HexColor

OUT = '/tmp/workspace/enzyme-disease-patterns-pdf/output/Enzyme_Disease_Patterns_MBBS_ABVMU.pdf'
pdfmetrics.registerFont(TTFont('DejaVu', '/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'))
pdfmetrics.registerFont(TTFont('DejaVu-Bold', '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf'))
font, bold = 'DejaVu', 'DejaVu-Bold'
styles = getSampleStyleSheet()
title = ParagraphStyle('title', parent=styles['Title'], fontName=bold, fontSize=18, leading=22, alignment=1, textColor=HexColor('#153B5B'))
sub = ParagraphStyle('sub', parent=styles['Normal'], fontName=font, fontSize=9, leading=11, alignment=1, textColor=HexColor('#3F4F5C'))
head = ParagraphStyle('head', parent=styles['Normal'], fontName=bold, fontSize=7.4, leading=9, textColor=colors.white, alignment=1)
cell = ParagraphStyle('cell', parent=styles['Normal'], fontName=font, fontSize=6.7, leading=8.1)
cellb = ParagraphStyle('cellb', parent=cell, fontName=bold)
small = ParagraphStyle('small', parent=styles['Normal'], fontName=font, fontSize=7.3, leading=9)

def p(text, style=cell):
    return Paragraph(text, style)

rows = [
('Acute viral hepatitis', '<b>ALT high, AST high</b>; ALT usually &gt; AST', 'Hepatocellular injury. ALT is more liver-specific than AST.'),
('Chronic hepatitis / NAFLD', 'ALT raised; AST raised; usually <b>ALT &gt; AST</b>', 'AST:ALT ratio commonly &lt;1; may rise with advanced fibrosis/cirrhosis.'),
('Alcoholic hepatitis', '<b>AST &gt; ALT</b>, often AST:ALT &gt;2; <b>GGT raised</b>', 'Characteristic AST predominance. Both enzymes may be moderately elevated.'),
('Cirrhosis', 'AST/ALT mildly raised or normal late; AST may &gt; ALT', 'Low values do not exclude severe disease.'),
('Hepatocellular carcinoma / liver metastasis', 'ALP raised, GGT raised, LDH raised; AST/ALT variable', 'Often cholestatic or infiltrative pattern.'),
('Obstructive jaundice / extrahepatic cholestasis', '<b>ALP markedly raised, GGT markedly raised, 5-prime nucleotidase raised</b>; AST/ALT mildly raised', 'Disproportionately high ALP. GGT or 5-prime NT supports hepatobiliary source.'),
('Intrahepatic cholestasis', 'ALP raised, GGT raised, 5-prime NT raised; AST/ALT variable', 'Similar profile to extrahepatic obstruction.'),
('Bone disease: rickets, osteomalacia, Paget disease, healing fracture', '<b>ALP raised</b>; GGT and 5-prime NT normal', 'Raised ALP with normal GGT points to bone rather than liver.'),
('Growth in children / pregnancy', 'ALP raised', 'Physiological: bone ALP in children; placental ALP in late pregnancy.'),
('Acute myocardial infarction', '<b>Troponin I/T raised</b> preferred; CK-MB raised, total CK raised; AST raised; LDH-1 later', 'Classical: LDH-1 &gt; LDH-2 is LDH flip. Troponin is now preferred.'),
('Reinfarction after MI', 'CK-MB rises again after return toward baseline', 'Traditional role: helps detect a second infarction.'),
('Skeletal muscle injury / rhabdomyolysis / muscular dystrophy', '<b>Total CK markedly raised, CK-MM raised</b>; AST and LDH raised; aldolase may rise', 'CK is the most useful traditional enzyme marker.'),
('Dermatomyositis / polymyositis', 'CK markedly raised, aldolase raised, AST raised, LDH raised', 'Reflects active muscle-cell injury.'),
('Acute pancreatitis', '<b>Lipase markedly raised, amylase markedly raised</b>', 'Lipase is more pancreas-specific and stays high longer. More than 3x ULN supports diagnosis.'),
('Pancreatic carcinoma / chronic pancreatitis', 'Amylase/lipase may be raised, normal, or low', 'Less consistent than acute pancreatitis.'),
('Parotitis (mumps)', 'Salivary amylase raised', 'Total amylase rises; pancreatic lipase is usually normal.'),
('Renal failure', 'Amylase raised; lipase may rise', 'Reduced clearance can elevate these enzymes without pancreatitis.'),
('Prostatic carcinoma, especially metastasis', '<b>Prostatic acid phosphatase (ACP) raised</b>', 'Traditional marker. PSA is used more commonly today.'),
('Hemolytic / megaloblastic anemia', '<b>LDH markedly raised</b>, especially LDH-1; AST may rise', 'LDH rises from destruction of blood cells.'),
('Pulmonary embolism / infarction', 'LDH may rise; AST mildly raised', 'Nonspecific, not diagnostic alone.'),
('Acute kidney infarction', 'LDH markedly raised', 'Can occur with high LDH and modest AST/ALT elevation.'),
('Organophosphate poisoning', '<b>Pseudocholinesterase decreased</b>', 'Plasma butyrylcholinesterase is reduced.'),
('Severe liver failure / chronic liver disease', '<b>Pseudocholinesterase decreased</b>', 'Reduced hepatic synthesis suggests impaired synthetic function.')]
quick = [
('ALT &gt; AST', 'Viral hepatitis, NAFLD, most hepatocellular injury'),
('AST &gt; ALT, especially ratio &gt;2', 'Alcohol-associated liver disease'),
('ALP + GGT + 5-prime NT high', 'Obstructive jaundice / cholestasis'),
('ALP high but GGT normal', 'Bone disease'),
('CK-MB high', 'Myocardial injury, classically MI'),
('CK-MM very high', 'Skeletal muscle injury / muscular dystrophy'),
('Lipase and amylase high', 'Acute pancreatitis'),
('ACP high', 'Prostatic carcinoma, classical marker'),
('LDH-1 &gt; LDH-2', 'Classical LDH flip in MI or hemolysis'),
('Pseudocholinesterase low', 'Organophosphate poisoning or severe liver dysfunction')]

story = [Paragraph('Disease-wise Enzyme Patterns', title), Paragraph('MBBS 1st Year Biochemistry (ABVMU) - Rapid Revision Table', sub), Spacer(1, 5), p('<b>Key:</b> raised = increased; markedly raised = large increase; decreased = reduced. Typical examination patterns only. Reference intervals vary by laboratory.', small), Spacer(1, 6)]
data = [[p('Disease / condition', head), p('Main enzyme pattern', head), p('Important interpretation / viva point', head)]]
data += [[p(a, cellb), p(b), p(c)] for a,b,c in rows]
t = Table(data, colWidths=[6.5*cm, 8.2*cm, 11.5*cm], repeatRows=1)
t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),HexColor('#1F5A7A')),('GRID',(0,0),(-1,-1),0.35,HexColor('#B8C7D1')),('VALIGN',(0,0),(-1,-1),'TOP'),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,HexColor('#F3F8FB')]),('LEFTPADDING',(0,0),(-1,-1),4),('RIGHTPADDING',(0,0),(-1,-1),4),('TOPPADDING',(0,0),(-1,-1),3),('BOTTOMPADDING',(0,0),(-1,-1),3)]))
story += [t, Spacer(1, 8), Paragraph('One-line Pattern Revision', ParagraphStyle('sec', parent=styles['Heading2'],fontName=bold,fontSize=11,leading=14,textColor=HexColor('#153B5B')))]
qd = [[p('Pattern', head), p('Think of', head)]] + [[p(a,cellb),p(b)] for a,b in quick]
qt = Table(qd, colWidths=[8.5*cm,17.7*cm], repeatRows=1)
qt.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),HexColor('#357394')),('GRID',(0,0),(-1,-1),0.35,HexColor('#B8C7D1')),('VALIGN',(0,0),(-1,-1),'TOP'),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,HexColor('#F3F8FB')]),('LEFTPADDING',(0,0),(-1,-1),4),('RIGHTPADDING',(0,0),(-1,-1),4),('TOPPADDING',(0,0),(-1,-1),3),('BOTTOMPADDING',(0,0),(-1,-1),3)]))
story += [qt, Spacer(1, 6), p('<b>Exam note:</b> In current practice, cardiac troponin is preferred for diagnosing myocardial infarction. CK-MB, LDH isoenzymes, ACP and aldolase remain high-yield for MBBS clinical enzymology questions.', small), Spacer(1,4), p('Academic sources: Harper’s Illustrated Biochemistry, 32nd ed, Liver Function Tests; Harrison’s Principles of Internal Medicine, 22nd ed, Evaluation of Liver Function and Tests of Exocrine Pancreatic Function; Lippincott Illustrated Reviews: Biochemistry, 8th ed, Isoenzymes.', small)]

def footer(canvas, doc):
    canvas.saveState(); canvas.setFont(font, 6.5); canvas.setFillColor(HexColor('#5A6872')); canvas.drawRightString(landscape(A4)[0]-0.7*cm, 0.35*cm, 'ABVMU MBBS Biochemistry | Page %d' % doc.page); canvas.restoreState()

doc = SimpleDocTemplate(OUT, pagesize=landscape(A4), leftMargin=0.7*cm, rightMargin=0.7*cm, topMargin=0.7*cm, bottomMargin=0.7*cm)
doc.build(story, onFirstPage=footer, onLaterPages=footer)
print(OUT)
Running Command

python "/tmp/workspace/enzyme-disease-patterns-pdf/src/make_pdf_v2.py" && python -c "from pypdf import PdfReader; import os; p='/tmp/workspace/enzyme-disease-patterns-pdf/output/Enzyme_Disease_Patterns_MBBS_ABVMU.pdf'; r=PdfReader(p); print('pages=',len(r.pages),'bytes=',os.path.getsize(p)); print((r.pages[0].extract_text() or '')[:180])"

Editing File

~/enzyme-disease-patterns-pdf/src/make_pdf_v2.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/enzyme-disease-patterns-pdf/src/make_pdf_v2.py'
Running Command

python "/tmp/workspace/enzyme-disease-patterns-pdf/src/make_pdf_v2.py" && python -c "from pypdf import PdfReader; import os; p='/tmp/workspace/enzyme-disease-patterns-pdf/output/Enzyme_Disease_Patterns_MBBS_ABVMU.pdf'; r=PdfReader(p); print('pages=',len(r.pages),'bytes=',os.path.getsize(p)); print((r.pages[0].extract_text() or '')[:180])"

PDF created with the disease-wise enzyme comparison table and quick revision patterns.

Enzyme Disease Patterns MBBS ABVMU

PDF Document · PDF

This is a shared conversation. Sign in to Orris to start your own chat.