Hey how are you different from ChatGPT and Gemini
| Feature | Orris | ChatGPT | Gemini |
|---|---|---|---|
| Medical Library | Indexed textbook database I query in real-time | General training data only | General training data only |
| PubMed Integration | Direct search of peer-reviewed literature | No direct PubMed access | No direct PubMed access |
| Tool Access | Specialized tools (sandbox, file ops, medical DB) | Plugins/tools vary by plan | Extensions vary by product |
| Audience | Medical professionals, researchers, students | General public | General public |
| Citations | Textbook page-level citations, PMID links | Rarely cites sources reliably | Rarely cites sources reliably |
| Hallucination guard | Explicit "I don't know" policy, source-backed answers | Known to confidently hallucinate | Known to confidently hallucinate |
| File generation | PPTX, DOCX, XLSX, PDF creation in sandbox | Varies by plan | Limited |
| Code execution | Persistent Linux sandbox | Code interpreter (session-limited) | Limited |
Short note - sickle cell anemia
"sickle cell disease"[MeSH Terms] AND management


| Consequence | Mechanism | Result |
|---|---|---|
| Chronic hemolytic anemia | Irreversibly sickled cell membrane damage | RBC lifespan ~20 days (normal ~120); severity correlates with irreversibly sickled cell fraction |
| Vascular occlusion | Sticky sickled cells adhere to endothelium; triggered by infection, inflammation, dehydration, acidosis | Ischemic tissue damage, pain crises |
| Crisis Type | Trigger | Features |
|---|---|---|
| Vaso-occlusive (pain) crisis | Infection, dehydration, cold, acidosis | Bone pain, acute chest syndrome, stroke, priapism |
| Aplastic crisis | Parvovirus B19 (infects erythroblasts) | Sudden drop in RBC production; self-limited |
| Sequestration crisis | Trapping of sickled RBCs in spleen/liver | Sudden massive splenomegaly, rapid anemia; mainly in children |
| Hemolytic crisis | Accelerated RBC destruction | Worsening anemia, jaundice |
| Drug/Intervention | Mechanism |
|---|---|
| Hydroxyurea | Increases HbF levels; anti-inflammatory (reduces WBC); increases RBC size (lowers intracellular HbS concentration); metabolized to NO (vasodilator, anti-platelet) |
| Penicillin prophylaxis | Prevents pneumococcal infections in children <5 years |
| Vaccination | Against encapsulated organisms (pneumococcus, H. influenzae, meningococcus) |
| Blood transfusion / exchange transfusion | Target HbS <40%, Hb ~10 g/dL for severe crises; exchange preferred in acute chest syndrome/stroke |
| Allogeneic bone marrow transplant | Potentially curative |
| Gene therapy | Corrective - increasingly promising results |
??
Why was my previous prompt not answered
Create a one-page PDF reference card on sickle cell anemia
mkdir -p /home/daytona/workspace/sickle-cell-pdf && ls /home/daytona/workspace/sickle-cell-pdf
~/sickle-cell-pdf/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable
)
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER
OUTPUT = "/home/daytona/workspace/sickle-cell-pdf/Sickle_Cell_Anemia_Reference_Card.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
RED = colors.HexColor("#C0392B")
DARK_RED = colors.HexColor("#922B21")
LIGHT_RED = colors.HexColor("#FADBD8")
GREY_BG = colors.HexColor("#F4F6F7")
MID_GREY = colors.HexColor("#AAB7B8")
DARK = colors.HexColor("#1C2833")
WHITE = colors.white
# ── Styles ───────────────────────────────────────────────────────────────────
def S(name, **kw):
base = dict(fontName="Helvetica", fontSize=7.5, leading=10,
textColor=DARK, spaceAfter=0, spaceBefore=0)
base.update(kw)
return ParagraphStyle(name, **base)
title_style = S("title", fontName="Helvetica-Bold", fontSize=17,
textColor=WHITE, alignment=TA_CENTER, leading=20)
sub_style = S("sub", fontName="Helvetica", fontSize=8,
textColor=WHITE, alignment=TA_CENTER)
sec_style = S("sec", fontName="Helvetica-Bold", fontSize=8,
textColor=WHITE)
body_style = S("body")
bold_style = S("bold", fontName="Helvetica-Bold")
small_style = S("small", fontSize=6.8, textColor=colors.HexColor("#555"))
bullet_style = S("bullet", leftIndent=8, bulletIndent=0,
bulletText="\u2022 ")
W, H = A4
MARGIN = 10 * mm
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=MARGIN, rightMargin=MARGIN,
topMargin=MARGIN, bottomMargin=8*mm,
)
story = []
# ── HEADER BANNER ────────────────────────────────────────────────────────────
header_data = [[
Paragraph("SICKLE CELL ANEMIA", title_style),
Paragraph("Quick Reference Card • Robbins & Kumar Basic Pathology", sub_style),
]]
header_tbl = Table(header_data, colWidths=[(W - 2*MARGIN) * 0.58,
(W - 2*MARGIN) * 0.42])
header_tbl.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), RED),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("TOPPADDING", (0, 0), (-1, -1), 6),
("BOTTOMPADDING",(0,0), (-1, -1), 6),
("LEFTPADDING", (0, 0), (-1, -1), 8),
("ROUNDEDCORNERS", [4]),
]))
story.append(header_tbl)
story.append(Spacer(1, 4))
# ── helper: section header ───────────────────────────────────────────────────
def section_header(text):
tbl = Table([[Paragraph(text, sec_style)]],
colWidths=[W - 2*MARGIN])
tbl.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), DARK_RED),
("TOPPADDING", (0, 0), (-1, -1), 3),
("BOTTOMPADDING",(0, 0), (-1, -1), 3),
("LEFTPADDING", (0, 0), (-1, -1), 6),
]))
return tbl
def shaded_table(data, col_widths, header_bg=RED):
tbl = Table(data, colWidths=col_widths, repeatRows=1)
style = [
("BACKGROUND", (0, 0), (-1, 0), header_bg),
("TEXTCOLOR", (0, 0), (-1, 0), WHITE),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, -1), 7.2),
("LEADING", (0, 0), (-1, -1), 9.5),
("ROWBACKGROUNDS",(0, 1), (-1, -1), [WHITE, GREY_BG]),
("GRID", (0, 0), (-1, -1), 0.3, MID_GREY),
("TOPPADDING", (0, 0), (-1, -1), 2.5),
("BOTTOMPADDING",(0, 0), (-1, -1), 2.5),
("LEFTPADDING", (0, 0), (-1, -1), 4),
("VALIGN", (0, 0), (-1, -1), "TOP"),
]
tbl.setStyle(TableStyle(style))
return tbl
CW = W - 2 * MARGIN # usable width
# ══════════════════════════════════════════════════════════════════════════════
# ROW 1 — Definition/Genetics | Pathogenesis
# ══════════════════════════════════════════════════════════════════════════════
LEFT_W = CW * 0.38
RIGHT_W = CW * 0.62
GAP = 3
def left_cell():
items = []
items.append(section_header("DEFINITION & GENETICS"))
items.append(Spacer(1, 2))
def_data = [
["Gene", "β-globin (chromosome 11)"],
["Mutation", "GAG→GTG → Glu6Val (valine replaces\nglutamate at position 6 of β-globin)"],
["Hb formed", "HbS (α₂β²S)"],
["Inheritance", "Autosomal recessive"],
["Homozygote", "Sickle cell DISEASE (HbSS)"],
["Heterozygote","Sickle cell TRAIT (HbAS)\n— usually asymptomatic"],
]
t = Table(def_data, colWidths=[LEFT_W*0.35, LEFT_W*0.65])
t.setStyle(TableStyle([
("FONTNAME", (0, 0), (0, -1), "Helvetica-Bold"),
("FONTNAME", (1, 0), (1, -1), "Helvetica"),
("FONTSIZE", (0, 0), (-1, -1), 7),
("LEADING", (0, 0), (-1, -1), 9),
("ROWBACKGROUNDS",(0,0),(-1,-1),[WHITE, GREY_BG]),
("GRID", (0, 0), (-1, -1), 0.3, MID_GREY),
("TOPPADDING",(0, 0), (-1, -1), 2),
("BOTTOMPADDING",(0,0),(-1,-1), 2),
("LEFTPADDING",(0,0),(-1,-1), 3),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
items.append(t)
items.append(Spacer(1, 4))
items.append(section_header("EPIDEMIOLOGY"))
items.append(Spacer(1, 2))
epi = [
"~8% of African-Americans are HbS carriers",
"1 in 600 African-Americans have sickle cell anemia",
"HbS prevalent where P. falciparum malaria is/was endemic (equatorial Africa, parts of India, S. Europe)",
"Median life expectancy: ~5th decade",
]
for e in epi:
items.append(Paragraph(f"• {e}", S("ep", fontSize=7, leading=9.5, leftIndent=4)))
return items
def right_cell():
items = []
items.append(section_header("PATHOGENESIS"))
items.append(Spacer(1, 2))
path_text = (
"On <b>deoxygenation</b>, HbS undergoes conformational change → <b>polymerization</b> "
"via abnormal intermolecular contacts at Val6 → distorts RBC into elongated sickle shape."
)
items.append(Paragraph(path_text, S("pt", fontSize=7, leading=9.5)))
items.append(Spacer(1, 3))
factors_data = [
["Factor", "Effect"],
["Co-existing HbF or HbA", "Retard HbS polymerization — newborns protected until HbF falls (~5–6 months)"],
["HbS concentration", "Dehydration ↑ concentration → promotes sickling; α-thalassemia is protective"],
["Microvascular transit time", "Slow-flow organs (spleen, marrow) most at risk; inflammation worsens sickling"],
]
items.append(shaded_table(factors_data, [RIGHT_W*0.32, RIGHT_W*0.68]))
items.append(Spacer(1, 3))
conseq_text = "<b>Two major consequences:</b>"
items.append(Paragraph(conseq_text, S("ct", fontSize=7, fontName="Helvetica-Bold")))
conseq = [
"<b>Chronic hemolytic anemia</b> — RBC lifespan ~20 days (normal ~120); severity ∝ irreversibly sickled cells",
"<b>Vascular occlusion</b> — ischemia, pain crises; triggered by infection, dehydration, acidosis, inflammation",
]
for c in conseq:
items.append(Paragraph(f"• {c}", S("cp", fontSize=7, leading=9.5, leftIndent=4)))
return items
lc = left_cell()
rc = right_cell()
# pad to same length
while len(lc) < len(rc): lc.append(Spacer(1, 1))
while len(rc) < len(lc): rc.append(Spacer(1, 1))
row1 = Table([[lc, rc]], colWidths=[LEFT_W, RIGHT_W])
row1.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING",(0,0), (-1,-1), GAP),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING",(0,0),(-1,-1), 0),
]))
story.append(row1)
story.append(Spacer(1, 4))
# ══════════════════════════════════════════════════════════════════════════════
# ROW 2 — Clinical Crises | Organ Complications
# ══════════════════════════════════════════════════════════════════════════════
L2 = CW * 0.52
R2 = CW * 0.48
crises_items = []
crises_items.append(section_header("CLINICAL CRISES"))
crises_items.append(Spacer(1, 2))
crises_data = [
["Crisis", "Trigger", "Features"],
["Vaso-occlusive\n(pain)", "Infection, dehydration,\ncold, acidosis",
"Bone pain, acute chest syndrome,\nstroke, priapism"],
["Aplastic", "Parvovirus B19\n(infects erythroblasts)",
"Sudden ↓ RBC production;\nself-limited"],
["Sequestration", "Trapped sickled RBCs\nin spleen/liver",
"Sudden massive splenomegaly,\nrapid anemia (mainly children)"],
["Hemolytic", "Accelerated RBC\ndestruction",
"Worsening anemia, jaundice"],
]
crises_items.append(shaded_table(crises_data, [L2*0.22, L2*0.30, L2*0.48]))
organ_items = []
organ_items.append(section_header("ORGAN COMPLICATIONS"))
organ_items.append(Spacer(1, 2))
organ_data = [
["Organ/System", "Complication"],
["Spleen", "Autosplenectomy (children: splenomegaly → adult: fibrotic nubbin)"],
["Bone", "'Crew-cut' skull on X-ray; osteomyelitis (Salmonella, E. coli)"],
["Brain", "Stroke (infarction from vascular occlusion)"],
["Lung", "Acute chest syndrome"],
["Kidney", "Renal tubular fatty change, papillary necrosis"],
["Eye", "Retinal infarction → blindness"],
["Liver/Heart", "Fatty change from chronic hypoxia"],
["Gallbladder", "Pigment gallstones (↑ bilirubin from hemolysis)"],
["Penis", "Priapism → fibrosis, erectile dysfunction"],
["Infection risk","Encapsulated bacteria (pneumococci, H. influenzae, meningococci)"],
]
organ_items.append(shaded_table(organ_data, [R2*0.30, R2*0.70]))
row2 = Table([[crises_items, organ_items]], colWidths=[L2, R2])
row2.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING",(0,0), (-1,-1), GAP),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING",(0,0),(-1,-1), 0),
]))
story.append(row2)
story.append(Spacer(1, 4))
# ══════════════════════════════════════════════════════════════════════════════
# ROW 3 — Diagnosis | Treatment
# ══════════════════════════════════════════════════════════════════════════════
L3 = CW * 0.42
R3 = CW * 0.58
diag_items = []
diag_items.append(section_header("DIAGNOSIS"))
diag_items.append(Spacer(1, 2))
diag_data = [
["Test", "Finding"],
["Peripheral smear", "Irreversibly sickled cells, anisocytosis, poikilocytosis"],
["Hb electrophoresis", "HbSS (no HbA) in disease;\nHbAS ~50:50 in trait"],
["Newborn screening", "Mandated in US — gel electrophoresis on heel-stick blood"],
["Prenatal diagnosis", "DNA analysis via amniocentesis or CVS"],
["Sickling test", "In vitro hypoxia induces sickling in HbAS trait cells"],
]
diag_items.append(shaded_table(diag_data, [L3*0.38, L3*0.62]))
tx_items = []
tx_items.append(section_header("TREATMENT"))
tx_items.append(Spacer(1, 2))
tx_data = [
["Treatment", "Mechanism / Notes"],
["Hydroxyurea", "↑ HbF; anti-inflammatory (↓ WBC); ↑ RBC size (↓ [HbS]);\nmetabolized to NO → vasodilation, anti-platelet"],
["Penicillin prophylaxis", "Prevent pneumococcal infections in children <5 yrs"],
["Vaccination", "Pneumococcus, H. influenzae type b, meningococcus"],
["Transfusion /\nExchange transfusion", "Target HbS <40%, Hb ~10 g/dL;\nexchange preferred in stroke, acute chest syndrome"],
["Bone marrow transplant", "Potentially curative (allogeneic)"],
["Gene therapy", "Corrective — increasingly promising"],
["Folic acid", "Compensate for ↑ RBC turnover"],
]
tx_items.append(shaded_table(tx_data, [R3*0.30, R3*0.70]))
row3 = Table([[diag_items, tx_items]], colWidths=[L3, R3])
row3.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING",(0,0), (-1,-1), GAP),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING",(0,0),(-1,-1), 0),
]))
story.append(row3)
story.append(Spacer(1, 4))
# ══════════════════════════════════════════════════════════════════════════════
# FOOTER — Key Memory Points
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_header("KEY MEMORY POINTS"))
story.append(Spacer(1, 2))
key_points = [
"<b>Mutation:</b> GAG→GTG • Glu→Val at β-globin position 6 • A→T transversion",
"<b>HbF protective:</b> Newborns asymptomatic until ~5–6 months when HbF replaced by HbS",
"<b>Autosplenectomy</b> → functional asplenia → susceptibility to <b>encapsulated bacteria</b>",
"<b>Crew-cut skull</b> on X-ray from marrow hyperplasia; <b>Salmonella</b> osteomyelitis is classic",
"<b>Parvovirus B19</b> → aplastic crisis • Dehydration/hypoxia/acidosis/infection trigger vaso-occlusive crisis",
"<b>Hydroxyurea</b> = mainstay of therapy (↑ HbF + anti-inflammatory + NO production)",
"RBC lifespan <b>~20 days</b> (vs normal ~120 days) • ~50% survive beyond 5th decade with modern care",
]
kp_data = [[Paragraph(p, S("kp", fontSize=7, leading=9.5))] for p in key_points]
kp_tbl = Table(kp_data, colWidths=[CW])
kp_tbl.setStyle(TableStyle([
("ROWBACKGROUNDS",(0,0),(-1,-1),[WHITE, LIGHT_RED]),
("GRID", (0,0),(-1,-1), 0.3, MID_GREY),
("TOPPADDING", (0,0),(-1,-1), 2.5),
("BOTTOMPADDING",(0,0),(-1,-1), 2.5),
("LEFTPADDING", (0,0),(-1,-1), 5),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
]))
story.append(kp_tbl)
story.append(Spacer(1, 3))
story.append(Paragraph(
"Source: Robbins & Kumar Basic Pathology (10th ed.) — For educational use only",
S("footer", fontSize=6, textColor=MID_GREY, alignment=TA_CENTER)
))
doc.build(story)
print("PDF created:", OUTPUT)
cd /home/daytona/workspace/sickle-cell-pdf && python generate_pdf.py
Sickle Cell Anemia Reference Card
PDF Document · PDF