Ultrasound padhkar samjhne ka sabse asan tarika hindi me

Reading File
Searching the Web

ultrasound basics hindi easy learning guide

Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Bahut achha content mila hai. Ab main yeh sara knowledge Hindi mein compile karke ek comprehensive guide banata hoon.

πŸ”Š Ultrasound Samajhne Ka Sabse Aasan Tarika - Hindi Guide


1. Ultrasound Kya Hai? (Basics)

Ultrasound ek imaging technique hai jisme high-frequency sound waves (20,000 Hz se upar) use hoti hain body ke andar ki structures dekhne ke liye. Ye sound waves tissue se reflect hokar wapas aati hain aur machine unhe image mein convert kar deti hai.
Simple analogy: Jaise chuha ya dolphin echolocation karta hai - awaaz bhejo, return echo se position pata karo - ultrasound bhi exactly yahi karta hai.

2. Transducer (Probe) - Sabse Pehle Samjho

Probe woh part hai jo skin par rakha jata hai. Teen main types hain:
Probe TypeFrequencyKab Use Hota Hai
Linear ProbeHigh (7-15 MHz)Superficial structures - nerves, veins, thyroid
Curvilinear/Convex ProbeLow (2-5 MHz)Abdomen - liver, kidney, uterus
Phased Array ProbeLow (1-5 MHz)Heart (echo), lungs
Golden Rule: High frequency = zyada detail but kam depth. Low frequency = zyada depth but kam detail.

3. Screen par Image Kaise Padhe - Echogenicity

Yeh ultrasound ka sabse important concept hai. Tissue kitni sound wave reflect karta hai, ussi se image bright ya dark dikhti hai:
TermScreen par kya dikhta haiExample
Hyperechoic (echogenic)Bright whiteBone, gallstone, fat
IsoechoicGrey (surrounding tissue jaisa)Normal liver
HypoechoicDark greyMuscle, solid mass
AnechoicPure blackFluid, blood vessel, cyst
Memory trick:
  • Black = Liquid (pani jaise cheez - cyst, blood, urine)
  • White = Hard (haddi, patthar jaisi cheez)
  • Grey = Soft tissue (liver, spleen, muscle)

4. Do Important Artifacts Yaad Rakho

Posterior Acoustic Shadowing (Peeche Andhera)

Jab koi solid/hard cheez (gallstone, kidney stone) ke peeche kala shadow aata hai - kyunki sound wave us pathar se reflect ho jaati hai aur neeche nahi pahunchti.
Clinical use: Gallstone identify karne ka classic sign!

Posterior Acoustic Enhancement (Peeche Roshan)

Jab kisi cyst ya fluid ke peeche tissue zyada bright dikhta hai - kyunki liquid mein sound wave zyada easily pass hoti hai.
Clinical use: Cyst vs solid mass differentiate karna.

5. Ultrasound Modes

ModeNaam ka MatlabUse
B-ModeBrightness ModeSabse common - 2D image
M-ModeMotion ModeHeart movement, fetal heartbeat
Doppler ModeBlood flowBlood vessels mein flow direction
Color DopplerColored flow mapArteries (red) vs veins (blue)

6. Orientation Samjho (Kaunsi Side Kya Hai)

Screen par indicator dot (bright mark) probe ke ek side par hota hai - wahi image ke left side par map karta hai.
  • Abdominal scan mein: probe indicator = patient ka right side = screen ka left
  • Longitudinal scan: upar = head, neeche = feet
  • Transverse scan: left = patient ka right

7. Common Organs Kaise Dikhte Hain

OrganUltrasound mein appearance
LiverHomogeneous medium grey texture
GallbladderAnechoic (black) pouch with bright walls
KidneyOuter cortex grey, inner echogenic renal sinus
BladderAnechoic (black) round structure
Blood vesselsAnechoic (black) tubes - arteries pulsate
BoneBright white with shadow behind

8. Seekhne Ka Step-by-Step Plan

  1. Pehle anatomy padho - Normal kya dikhta hai, yeh pehle samjho
  2. Ek organ ek baar - Pehle sirf liver practice karo
  3. Probe movements seekho:
    • Fan/Sweep - probe ko tilt karo
    • Rock - ek end ko upar-neeche
    • Rotate - probe ghuma do
    • Slide - position change karo
  4. Normal se abnormal - Normal scan dekhne ke baad pathology identify karo
  5. Practice, practice, practice - Real machine par ya simulator par

9. Helpful Free Resources

  • POCUS 101 - pocus101.com par basics ka complete guide hai
  • YouTube par Hindi video:
  • ACEP Sonoguide - Physics aur image acquisition ke liye ACEP Sonoguide

Summary (Yaad Rakhne Wali 5 Baatein)

  1. Black = fluid/liquid | White = hard/bone | Grey = soft tissue
  2. High frequency probe = shallow structures, Low frequency = deep structures
  3. Shadow behind = stone/calcification | Bright behind = cyst/fluid
  4. B-mode sabse common; Doppler blood flow ke liye
  5. Normal anatomy pehle seekho, tabhi abnormal identify kar paoge
Source: Murray & Nadel's Textbook of Respiratory Medicine (POCUS Terminology Table); Yamada's Textbook of Gastroenterology (Ultrasound Principles); Color Atlas of Ultrasound Anatomy, 3e

Create a PDF quick reference guide ultrasound terms ki

Reading File
Running Command

ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or not found"

Running Command

mkdir -p /home/daytona/workspace/ultrasound-guide && echo "done"

Writing File

~/ultrasound-guide/create_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os

OUTPUT = "/home/daytona/workspace/ultrasound-guide/Ultrasound_Quick_Reference.pdf"

# ── Colours ───────────────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor("#1A3A5C")
MED_BLUE    = colors.HexColor("#2E6DA4")
LIGHT_BLUE  = colors.HexColor("#D6E8F7")
TEAL        = colors.HexColor("#0D7377")
LIGHT_TEAL  = colors.HexColor("#D0F0F0")
ORANGE      = colors.HexColor("#E07B39")
LIGHT_ORANGE= colors.HexColor("#FDE8D8")
GREEN       = colors.HexColor("#2E7D32")
LIGHT_GREEN = colors.HexColor("#E8F5E9")
PURPLE      = colors.HexColor("#5C3D8F")
LIGHT_PURPLE= colors.HexColor("#EDE7F6")
YELLOW_BG   = colors.HexColor("#FFFDE7")
WHITE       = colors.white
LIGHT_GREY  = colors.HexColor("#F5F5F5")
MID_GREY    = colors.HexColor("#9E9E9E")
DARK_GREY   = colors.HexColor("#424242")

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=1.5*cm, rightMargin=1.5*cm,
    topMargin=1.8*cm, bottomMargin=1.8*cm,
)

W = A4[0] - 3*cm   # usable width

styles = getSampleStyleSheet()

# ── Custom styles ─────────────────────────────────────────────────────────────
def S(name, **kw):
    return ParagraphStyle(name, **kw)

sTitle = S("sTitle",
    fontSize=22, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_CENTER, spaceAfter=4, leading=26)

sSubtitle = S("sSubtitle",
    fontSize=11, textColor=colors.HexColor("#BFD8F0"),
    alignment=TA_CENTER, fontName="Helvetica", spaceAfter=2)

sSectionHeader = S("sSectionHeader",
    fontSize=11.5, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_LEFT, leading=15, spaceAfter=0)

sBody = S("sBody",
    fontSize=8.5, textColor=DARK_GREY, fontName="Helvetica",
    leading=12, spaceAfter=2)

sBodyBold = S("sBodyBold",
    fontSize=8.5, textColor=DARK_GREY, fontName="Helvetica-Bold",
    leading=12, spaceAfter=2)

sTerm = S("sTerm",
    fontSize=9, textColor=DARK_BLUE, fontName="Helvetica-Bold",
    leading=12)

sDef = S("sDef",
    fontSize=8.5, textColor=DARK_GREY, fontName="Helvetica",
    leading=11)

sHindi = S("sHindi",
    fontSize=8.5, textColor=TEAL, fontName="Helvetica-Oblique",
    leading=11)

sSmall = S("sSmall",
    fontSize=7.5, textColor=MID_GREY, fontName="Helvetica",
    leading=10)

sFooter = S("sFooter",
    fontSize=7, textColor=MID_GREY, fontName="Helvetica",
    alignment=TA_CENTER, leading=10)

sTip = S("sTip",
    fontSize=8.5, textColor=colors.HexColor("#4A148C"),
    fontName="Helvetica-Bold", leading=11)

# ── Helper builders ───────────────────────────────────────────────────────────

def section_header(text, bg=MED_BLUE):
    data = [[Paragraph(text, sSectionHeader)]]
    t = Table(data, colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return t

def two_col_table(rows, col1_w=None, col2_w=None, col3_w=None,
                  header_bg=LIGHT_BLUE, alt_bg=LIGHT_GREY,
                  header_color=DARK_BLUE):
    """rows[0] is header row (list of strings or Paragraphs)."""
    if col3_w:
        cw = [col1_w or W*0.28, col2_w or W*0.42, col3_w or W*0.30]
    elif col2_w:
        cw = [col1_w or W*0.30, col2_w or W*0.70]
    else:
        cw = [W*0.30, W*0.70]

    table_data = []
    for i, row in enumerate(rows):
        if i == 0:
            table_data.append([
                Paragraph(f"<b>{c}</b>", S("h", fontSize=8.5,
                          textColor=header_color, fontName="Helvetica-Bold",
                          leading=11))
                for c in row
            ])
        else:
            table_data.append([
                Paragraph(str(c), sBody) if j > 0
                else Paragraph(str(c), sBodyBold)
                for j, c in enumerate(row)
            ])

    style = [
        ("BACKGROUND",    (0,0), (-1,0),  header_bg),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, alt_bg]),
        ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
        ("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"),
    ]
    t = Table(table_data, colWidths=cw, repeatRows=1)
    t.setStyle(TableStyle(style))
    return t

def tip_box(text, bg=YELLOW_BG, border=ORANGE):
    data = [[Paragraph(f"<b>TIP:</b> {text}", sTip)]]
    t = Table(data, colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), bg),
        ("LINEAFTER",     (0,0), (0,-1),  2, border),
        ("LINEBEFORE",    (0,0), (0,-1),  4, border),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
    ]))
    return t

def memory_box(items, bg=LIGHT_GREEN, title="Memory Trick"):
    content = [Paragraph(f"<b>🧠 {title}</b>", S("mt",
                fontSize=8.5, textColor=GREEN, fontName="Helvetica-Bold",
                leading=12))]
    for item in items:
        content.append(Paragraph(f"β€’ {item}", S("mi",
                fontSize=8.5, textColor=DARK_GREY, fontName="Helvetica",
                leading=12)))
    data = [[content]]
    t = Table(data, colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND",  (0,0), (-1,-1), bg),
        ("LINEBEFORE",  (0,0), (0,-1),  4, GREEN),
        ("TOPPADDING",  (0,0), (-1,-1), 6),
        ("BOTTOMPADDING",(0,0),(-1,-1), 6),
        ("LEFTPADDING", (0,0), (-1,-1), 10),
        ("RIGHTPADDING",(0,0), (-1,-1), 8),
        ("VALIGN",      (0,0), (-1,-1), "TOP"),
    ]))
    return t

def sp(h=0.18):
    return Spacer(1, h*cm)

# ══════════════════════════════════════════════════════════════════════════════
# BUILD STORY
# ══════════════════════════════════════════════════════════════════════════════
story = []

# ── HEADER BANNER ─────────────────────────────────────────────────────────────
banner_data = [[
    Paragraph("ULTRASOUND", sTitle),
    Paragraph("Quick Reference Guide", sSubtitle),
    Paragraph("Ultrasound Terms - Hindi + English", sSubtitle),
]]
banner = Table([[
    Paragraph("<b>ULTRASOUND</b><br/>Quick Reference Guide", sTitle),
]], colWidths=[W])
banner.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING",    (0,0), (-1,-1), 14),
    ("BOTTOMPADDING", (0,0), (-1,-1), 14),
    ("LEFTPADDING",   (0,0), (-1,-1), 16),
    ("ROUNDEDCORNERS",[6]),
]))
story.append(banner)

sub_banner = Table([[
    Paragraph("Hindi + English | Sabhi Important Terms | Beginners ke liye", sSubtitle),
]], colWidths=[W])
sub_banner.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), MED_BLUE),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING",   (0,0), (-1,-1), 16),
    ("ROUNDEDCORNERS",[4]),
]))
story.append(sub_banner)
story.append(sp(0.4))

# ═══════════════════════════════════════════════════════
# SECTION 1 β€” ECHOGENICITY
# ═══════════════════════════════════════════════════════
story.append(section_header("1. ECHOGENICITY  β€”  Screen Par Image Kaise Dikhti Hai", bg=DARK_BLUE))
story.append(sp(0.2))

echo_rows = [
    ["Term", "Screen Par", "Matlab (Hindi)", "Example"],
    ["Hyperechoic\n(Echogenic)", "Bright White ⬜", "Bahut zyada reflection\n(hard/dense tissue)", "Bone, Gallstone, Fat, Tendon"],
    ["Isoechoic",               "Medium Grey",      "Barabar reflection\n(reference tissue jaisa)", "Normal liver vs spleen"],
    ["Hypoechoic",              "Dark Grey",         "Kam reflection\n(soft/cellular tissue)", "Muscle, solid mass, lymph node"],
    ["Anechoic",                "Pure Black ⬛",     "Koi reflection nahi\n(fluid/liquid)", "Cyst, bladder, blood vessel"],
]
echo_table = two_col_table(echo_rows,
    col1_w=W*0.20, col2_w=W*0.18, col3_w=W*0.30,
    header_bg=LIGHT_BLUE)
# 4-col fix
cw4 = [W*0.20, W*0.18, W*0.30, W*0.32]
rows_para = []
for i, row in enumerate(echo_rows):
    if i == 0:
        rows_para.append([
            Paragraph(f"<b>{c}</b>", S("hh", fontSize=8.5,
                      textColor=DARK_BLUE, fontName="Helvetica-Bold", leading=11))
            for c in row
        ])
    else:
        rows_para.append([
            Paragraph(row[0], sBodyBold),
            Paragraph(row[1], sBody),
            Paragraph(row[2], sBody),
            Paragraph(row[3], sSmall),
        ])
echo_t = Table(rows_para, colWidths=cw4, repeatRows=1)
echo_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  LIGHT_BLUE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(echo_t)
story.append(sp(0.2))
story.append(memory_box([
    "Black = Liquid (paani, blood, urine, bile)",
    "White = Hard (haddi, patthar, gallstone)",
    "Grey shades = Soft tissue (liver, muscle, kidney)",
], title="Echogenicity Memory Trick"))
story.append(sp(0.3))

# ═══════════════════════════════════════════════════════
# SECTION 2 β€” ARTIFACTS
# ═══════════════════════════════════════════════════════
story.append(section_header("2. ARTIFACTS  β€”  Common Ultrasound Artifacts", bg=TEAL))
story.append(sp(0.2))

art_rows = [
    ["Artifact", "Kya Dikhta Hai", "Cause (Kyon Hota Hai)", "Clinical Use"],
    ["Posterior Acoustic\nShadowing",  "Hard object ke peeche\nkala andhera (shadow)", "Sound wave reflect ho jaati hai;\nneeche nahi pahunchti",     "Gallstone, kidney stone,\ncalcification identify karna"],
    ["Posterior Acoustic\nEnhancement","Cyst/fluid ke peeche\nzyada brightness",        "Fluid mein attenuation kam;\nneeche zyada sound pahunchti","Cyst vs solid mass\ndifferentiate karna"],
    ["Mirror Artifact",                "Diaphragm ke upar\nfalse image",                 "Strong reflector se\ndouble reflection",                     "Liver lesion ko chest mein\ndikhna (false)"],
    ["Reverberation\nArtifact",        "Parallel bright lines\n(= spacing repeat hoti)",  "Sound wave do surfaces\nke beech bounce karti hai",         "Air, needles, implants\nidentify karna"],
    ["Comet Tail\nArtifact",           "Bright narrow streak\nbelow object",              "Small reflectors mein\nreverberation",                      "Cholesterol crystals\nin gallbladder"],
    ["Edge Shadowing",                 "Curved structure ke\nkinare se shadow",           "Sound beam curved\nsurface par refracts",                   "Gallbladder walls,\ncysts ke edges"],
]
art_cw = [W*0.21, W*0.22, W*0.30, W*0.27]
art_para = []
for i, row in enumerate(art_rows):
    if i == 0:
        art_para.append([
            Paragraph(f"<b>{c}</b>", S("ah", fontSize=8.5,
                      textColor=TEAL, fontName="Helvetica-Bold", leading=11))
            for c in row
        ])
    else:
        art_para.append([
            Paragraph(row[0], sBodyBold),
            Paragraph(row[1], sBody),
            Paragraph(row[2], sBody),
            Paragraph(row[3], sSmall),
        ])
art_t = Table(art_para, colWidths=art_cw, repeatRows=1)
art_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  LIGHT_TEAL),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(art_t)
story.append(sp(0.2))
story.append(tip_box(
    "Shadowing + hyperechoic focus = STONE (gallstone ya kidney stone ka classic sign). "
    "Enhancement + anechoic = CYST (simple cyst confirm karne ke liye)."
))
story.append(sp(0.3))

# ═══════════════════════════════════════════════════════
# SECTION 3 β€” PROBE / TRANSDUCER
# ═══════════════════════════════════════════════════════
story.append(section_header("3. PROBE / TRANSDUCER TYPES  β€”  Kaunsa Probe Kab Use Karo", bg=PURPLE))
story.append(sp(0.2))

probe_rows = [
    ["Probe Type", "Frequency", "Depth", "Best Use (Kab Use Karo)"],
    ["Linear\n(High-freq)",      "5–15 MHz",  "Shallow\n(< 5 cm)", "Thyroid, veins, nerves,\nsuperficial masses, tendons"],
    ["Curvilinear\n(Convex)",    "2–5 MHz",   "Deep\n(5–20 cm)",   "Abdomen, pelvis, kidney,\nliver, OB-Gyn scan"],
    ["Phased Array\n(Sector)",   "1–5 MHz",   "Deep",              "Heart (echocardiography),\nlung, small rib space"],
    ["Endocavitary\n(Intracavity)","5–10 MHz", "Moderate",          "Transvaginal, transrectal\nscans, early pregnancy"],
    ["Hockey Stick\n(Small parts)","10–18 MHz","Very shallow",      "Pediatric, finger, eye,\nsmall superficial structures"],
]
probe_cw = [W*0.22, W*0.15, W*0.15, W*0.48]
probe_para = []
for i, row in enumerate(probe_rows):
    if i == 0:
        probe_para.append([
            Paragraph(f"<b>{c}</b>", S("ph", fontSize=8.5,
                      textColor=PURPLE, fontName="Helvetica-Bold", leading=11))
            for c in row
        ])
    else:
        probe_para.append([
            Paragraph(row[0], sBodyBold),
            Paragraph(row[1], sBody),
            Paragraph(row[2], sBody),
            Paragraph(row[3], sSmall),
        ])
probe_t = Table(probe_para, colWidths=probe_cw, repeatRows=1)
probe_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  LIGHT_PURPLE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(probe_t)
story.append(sp(0.2))
story.append(memory_box([
    "High MHz = Shallow depth = More detail (surface structures)",
    "Low MHz  = Deep penetration = Less detail (deep organs)",
    "Rule: Jitna gehra scan karna ho, utna LOW frequency probe choose karo",
], title="Frequency vs Depth Rule", bg=LIGHT_PURPLE))
story.append(sp(0.3))

# ═══════════════════════════════════════════════════════
# SECTION 4 β€” ULTRASOUND MODES
# ═══════════════════════════════════════════════════════
story.append(section_header("4. ULTRASOUND MODES  β€”  Image Capture Ke Tarike", bg=ORANGE))
story.append(sp(0.2))

mode_rows = [
    ["Mode", "Full Name", "Kya Karta Hai (Hindi)", "Use Case"],
    ["B-Mode",         "Brightness Mode",        "2D grayscale image banata hai;\npixel brightness = sound intensity", "Sabse common - routine scans,\norgan imaging"],
    ["M-Mode",         "Motion Mode",            "Ek line par motion track karta hai;\ntime vs displacement graph",          "Fetal heart rate, cardiac\nwall motion"],
    ["A-Mode",         "Amplitude Mode",         "1D trace - amplitude vs depth",                                             "Ophthalmology (eye)\naxial length measure"],
    ["Color Doppler",  "Color Doppler",          "Blood flow direction color se:\nRed = probe ki taraf\nBlue = probe se door", "Blood vessel patency,\ndeep vein thrombosis"],
    ["Power Doppler",  "Power Doppler",          "Flow presence dikhata hai\n(direction nahi - more sensitive)",               "Low-flow vessels, tumor\nvascularization"],
    ["Pulsed Wave\nDoppler","PW Doppler",        "Specific point par velocity\nmeasure karta hai",                             "Cardiac valve assessment,\nportal vein flow"],
    ["3D/4D Mode",     "3D/4D Ultrasound",      "3D volume image; 4D = 3D in real\ntime (moving 3D)",                        "Fetal imaging, surgical\nplanning"],
]
mode_cw = [W*0.17, W*0.20, W*0.33, W*0.30]
mode_para = []
for i, row in enumerate(mode_rows):
    if i == 0:
        mode_para.append([
            Paragraph(f"<b>{c}</b>", S("mh", fontSize=8.5,
                      textColor=ORANGE, fontName="Helvetica-Bold", leading=11))
            for c in row
        ])
    else:
        mode_para.append([
            Paragraph(row[0], sBodyBold),
            Paragraph(row[1], sSmall),
            Paragraph(row[2], sBody),
            Paragraph(row[3], sSmall),
        ])
mode_t = Table(mode_para, colWidths=mode_cw, repeatRows=1)
mode_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  LIGHT_ORANGE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(mode_t)
story.append(sp(0.3))

# ═══════════════════════════════════════════════════════
# SECTION 5 β€” PHYSICS TERMS
# ═══════════════════════════════════════════════════════
story.append(section_header("5. PHYSICS TERMS  β€”  Technical Words Ka Matlab", bg=colors.HexColor("#B71C1C")))
story.append(sp(0.2))

phys_rows = [
    ["Term", "Hindi Matlab", "Key Point"],
    ["Acoustic Impedance",   "Tissue ki sound rok-ne ki takkat",                   "Alag tissues mein boundary par reflection hoti hai"],
    ["Attenuation",          "Sound wave ka kamzor hona depth ke saath",            "Isliye deep structures ke liye low-freq probe chahiye"],
    ["Frequency (MHz)",      "Sound wave ki cycles per second",                     "Higher = better resolution, less penetration"],
    ["Wavelength",           "Ek wave cycle ki length",                             "Freq badhne par wavelength ghatti hai"],
    ["Resolution",           "Do cheezon ko alag-alag dekhne ki kshamta",          "Axial > Lateral in ultrasound"],
    ["Gain",                 "Image ki brightness/amplification",                   "Zyada gain = zyada bright image (noise bhi badh sakta hai)"],
    ["TGC (Time Gain Comp.)", "Depth ke saath gain adjust karna",                  "Deep structures ko equally bright dikhane ke liye"],
    ["Focal Zone",           "Beam ki sabse narrow point",                          "Best resolution yahan milti hai - adjust karo target par"],
    ["Near Field / Far Field","Probe ke paas / dur ka area",                        "Near field = probe ke closest; Far field = deepest area"],
    ["PRF (Pulse Repetition)", "Kitni baar pulse bheja jata hai per second",        "High PRF = high-velocity flow detect kar sakta hai"],
]
phys_cw = [W*0.27, W*0.38, W*0.35]
phys_para = []
for i, row in enumerate(phys_rows):
    if i == 0:
        phys_para.append([
            Paragraph(f"<b>{c}</b>", S("physh", fontSize=8.5,
                      textColor=colors.HexColor("#B71C1C"),
                      fontName="Helvetica-Bold", leading=11))
            for c in row
        ])
    else:
        phys_para.append([
            Paragraph(row[0], sBodyBold),
            Paragraph(row[1], sBody),
            Paragraph(row[2], sSmall),
        ])
phys_t = Table(phys_para, colWidths=phys_cw, repeatRows=1)
phys_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  colors.HexColor("#FFEBEE")),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(phys_t)
story.append(sp(0.3))

# ═══════════════════════════════════════════════════════
# SECTION 6 β€” ORGAN APPEARANCES
# ═══════════════════════════════════════════════════════
story.append(section_header("6. NORMAL ORGAN APPEARANCES  β€”  Normal Scan Mein Kya Dikhta Hai", bg=colors.HexColor("#1B5E20")))
story.append(sp(0.2))

organ_rows = [
    ["Organ", "Normal Appearance", "Key Landmarks", "Size (approx)"],
    ["Liver",       "Homogeneous medium-grey\n(isoechoic texture)",        "Hepatic veins, portal veins\n(portal = bright walls)",     "< 15 cm span"],
    ["Gallbladder", "Anechoic (black) pouch\nbright echogenic walls",     "Gallbladder wall < 3mm thick\nAnechoic lumen (fasting)",    "6-10 cm length"],
    ["Spleen",      "Slightly hyperechoic\nthan liver; homogeneous",      "Splenic hilum, splenic vein",                               "< 12 cm"],
    ["Kidney",      "Outer cortex grey\nInner sinus bright (echogenic)", "Cortex, medulla, renal sinus\nPyramids = hypoechoic",        "9-12 cm"],
    ["Pancreas",    "Isoechoic to slightly\nhyperechoic (fat with age)",  "Pancreatic duct < 2mm\nAnterior to SMA/SMV",               "Head 3cm, body 2cm"],
    ["Bladder",     "Anechoic (black)\nThin echogenic walls",            "Wall < 3mm (full bladder)\nPost. enhancement behind it",    "Variable (full/empty)"],
    ["Aorta",       "Anechoic pulsatile tube\nAnterior to spine",        "Branches: celiac, SMA, renal\nPulsating visible B-mode",     "< 3 cm diameter"],
    ["Uterus",      "Homogeneous myometrium\nEndometrium bright stripe",  "Endometrium changes with\nmenstrual cycle",                "7-8 cm length"],
]
organ_cw = [W*0.17, W*0.27, W*0.28, W*0.28]
organ_para = []
for i, row in enumerate(organ_rows):
    if i == 0:
        organ_para.append([
            Paragraph(f"<b>{c}</b>", S("orgh", fontSize=8.5,
                      textColor=colors.HexColor("#1B5E20"),
                      fontName="Helvetica-Bold", leading=11))
            for c in row
        ])
    else:
        organ_para.append([
            Paragraph(row[0], sBodyBold),
            Paragraph(row[1], sBody),
            Paragraph(row[2], sSmall),
            Paragraph(row[3], sSmall),
        ])
organ_t = Table(organ_para, colWidths=organ_cw, repeatRows=1)
organ_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  LIGHT_GREEN),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(organ_t)
story.append(sp(0.3))

# ═══════════════════════════════════════════════════════
# SECTION 7 β€” PROBE MOVEMENTS
# ═══════════════════════════════════════════════════════
story.append(section_header("7. PROBE MOVEMENTS  β€”  Scan Karne Ka Tarika", bg=colors.HexColor("#4A148C")))
story.append(sp(0.2))

move_rows = [
    ["Movement", "Kya Karte Hain", "Purpose"],
    ["Slide / Translate",   "Probe ko skin par saraao (left-right ya up-down)",   "Different area scan karna"],
    ["Fan / Sweep",         "Probe ka ek end fix rakho, doosra tilt karo",         "Structure ke aage-peeche dekhna"],
    ["Rock",                "Probe ko image plane mein rock karo (fore-aft)",      "Near field/far field adjust"],
    ["Rotate",              "Probe ko rotate karo (axis par ghumao)",              "Longitudinal se transverse view mein jaana"],
    ["Compress / Press",    "Probe se gentle pressure dalo",                       "DVT: vein compress hogi, not artery"],
]
move_cw = [W*0.22, W*0.42, W*0.36]
move_para = []
for i, row in enumerate(move_rows):
    if i == 0:
        move_para.append([
            Paragraph(f"<b>{c}</b>", S("mvh", fontSize=8.5,
                      textColor=PURPLE, fontName="Helvetica-Bold", leading=11))
            for c in row
        ])
    else:
        move_para.append([
            Paragraph(row[0], sBodyBold),
            Paragraph(row[1], sBody),
            Paragraph(row[2], sSmall),
        ])
move_t = Table(move_para, colWidths=move_cw, repeatRows=1)
move_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  LIGHT_PURPLE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(move_t)
story.append(sp(0.3))

# ═══════════════════════════════════════════════════════
# SECTION 8 β€” QUICK REFERENCE CHEAT BOX (2-col layout)
# ═══════════════════════════════════════════════════════
story.append(section_header("8. QUICK CHEAT SHEET  β€”  Exam / Bedside Reference", bg=DARK_BLUE))
story.append(sp(0.2))

def mini_box(title, items, bg, border_color):
    content = [Paragraph(f"<b>{title}</b>", S("bt", fontSize=8.5,
                fontName="Helvetica-Bold", textColor=border_color, leading=12))]
    for item in items:
        content.append(Paragraph(f"β€’ {item}", S("bi", fontSize=8,
                fontName="Helvetica", textColor=DARK_GREY, leading=11)))
    data = [[content]]
    t = Table(data, colWidths=[(W/2)-0.2*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0),(-1,-1), bg),
        ("LINEBEFORE",    (0,0),(0,-1),  3, border_color),
        ("TOPPADDING",    (0,0),(-1,-1), 6),
        ("BOTTOMPADDING", (0,0),(-1,-1), 6),
        ("LEFTPADDING",   (0,0),(-1,-1), 8),
        ("RIGHTPADDING",  (0,0),(-1,-1), 6),
        ("VALIGN",        (0,0),(-1,-1), "TOP"),
    ]))
    return t

cheat_left = mini_box("Echogenicity Quick Recap", [
    "Anechoic (Black) = Fluid",
    "Hyperechoic (White) = Dense/Hard",
    "Hypoechoic (Dark grey) = Soft/cellular",
    "Shadowing behind = Stone/Calcification",
    "Enhancement behind = Cyst/Fluid",
], LIGHT_BLUE, MED_BLUE)

cheat_right = mini_box("Probe Selection Rule", [
    "Thyroid, veins, nerves = Linear (high MHz)",
    "Abdomen, pelvis = Curvilinear (low MHz)",
    "Heart, lung = Phased array",
    "TVS/TRS = Endocavitary probe",
    "High freq = more detail, less depth",
], LIGHT_ORANGE, ORANGE)

cheat_left2 = mini_box("Doppler Color Code", [
    "Red = Flow TOWARD probe",
    "Blue = Flow AWAY from probe",
    "Aliasing = turbulent/fast flow (mosaic)",
    "Power Doppler = direction nahi, sirf flow",
    "PW Doppler = velocity waveform dikhata hai",
], LIGHT_TEAL, TEAL)

cheat_right2 = mini_box("Machine Settings Yaad Rakho", [
    "Gain = Brightness (TGC = depth-wise)",
    "Depth = Field of view ka size",
    "Focus = Best resolution ka zone (set on target)",
    "Freeze = Image rok do",
    "Cine loop = Last few seconds replay karo",
], LIGHT_GREEN, GREEN)

cheat_t = Table(
    [[cheat_left, cheat_right],
     [sp(0.15),   sp(0.15)],
     [cheat_left2, cheat_right2]],
    colWidths=[(W/2)-0.1*cm, (W/2)-0.1*cm]
)
cheat_t.setStyle(TableStyle([
    ("VALIGN",  (0,0),(-1,-1), "TOP"),
    ("LEFTPADDING",  (0,0),(-1,-1), 0),
    ("RIGHTPADDING", (0,0),(-1,-1), 0),
    ("TOPPADDING",   (0,0),(-1,-1), 0),
    ("BOTTOMPADDING",(0,0),(-1,-1), 0),
    ("COLPADDING",   (0,0),(-1,-1), 4),
]))
story.append(cheat_t)
story.append(sp(0.3))

# ═══════════════════════════════════════════════════════
# SECTION 9 β€” PATHOLOGY TERMS
# ═══════════════════════════════════════════════════════
story.append(section_header("9. COMMON PATHOLOGY TERMS  β€”  Report Mein Common Words", bg=colors.HexColor("#E65100")))
story.append(sp(0.2))

path_rows = [
    ["Term (Report Mein)", "Hindi Matlab", "Common Condition"],
    ["Echogenic focus",        "Bright spot",                                  "Gallstone, renal stone, calcification"],
    ["Heterogeneous echotexture","Uneven texture (patches)",                   "Cirrhosis, tumor, abscess"],
    ["Homogeneous echotexture", "Even/uniform texture",                        "Normal organ / simple cyst"],
    ["Acoustic shadow",        "Object ke peeche kala area",                   "Stone confirm karna"],
    ["Posterior enhancement",  "Object ke peeche bright area",                 "Cyst / fluid filled structure"],
    ["Mass / lesion",          "Koi bhi abnormal structure",                   "Tumor, cyst, abscess, hematoma"],
    ["Calcification",          "Calcium deposit - bright with shadow",         "Chronic inflammation, tumors"],
    ["Echogenic liver",        "Liver brighter than normal (fat deposited)",    "Fatty liver (hepatic steatosis)"],
    ["Hydronephrosis",         "Kidney mein fluid collection (dilated pelvis)","Obstruction - stone/stricture"],
    ["Ascites",                "Abdomen mein free fluid (anechoic space)",     "Liver disease, malignancy, infection"],
    ["Free fluid / FAST exam", "Body cavity mein extra fluid",                 "Trauma - FAST scan mein check"],
    ["Vascularity",            "Blood supply - color Doppler pe flow",         "Tumor vascularity, inflammation"],
]
path_cw = [W*0.28, W*0.35, W*0.37]
path_para = []
for i, row in enumerate(path_rows):
    if i == 0:
        path_para.append([
            Paragraph(f"<b>{c}</b>", S("pth", fontSize=8.5,
                      textColor=colors.HexColor("#E65100"),
                      fontName="Helvetica-Bold", leading=11))
            for c in row
        ])
    else:
        path_para.append([
            Paragraph(row[0], sBodyBold),
            Paragraph(row[1], sBody),
            Paragraph(row[2], sSmall),
        ])
path_t = Table(path_para, colWidths=path_cw, repeatRows=1)
path_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  colors.HexColor("#FFF3E0")),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(path_t)
story.append(sp(0.3))

# ─── FOOTER ───────────────────────────────────────────────────────────────────
story.append(HRFlowable(width=W, thickness=0.5, color=MID_GREY))
story.append(sp(0.1))
story.append(Paragraph(
    "Ultrasound Quick Reference Guide  |  Hindi + English  |  "
    "Sources: Murray & Nadel's Respiratory Medicine; Yamada's Gastroenterology; "
    "Color Atlas of Ultrasound Anatomy, 3e  |  For educational use only",
    sFooter
))

# ── BUILD ──────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /home/daytona/workspace/ultrasound-guide && python create_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/ultrasound-guide/Ultrasound_Quick_Reference.pdf

Aapka PDF taiyar hai! Download karein:

Ultrasound Quick Reference

PDF Document Β· PDF


PDF Mein Kya Kya Hai - 9 Sections:

SectionContent
1. EchogenicityHyperechoic / Hypoechoic / Anechoic - color-coded table + memory trick
2. ArtifactsShadowing, Enhancement, Reverberation, Comet tail - 6 artifacts
3. Probe TypesLinear, Curvilinear, Phased Array, Endocavitary - kab kaunsa use karo
4. ModesB-mode, M-mode, Doppler, Color Doppler, 3D/4D - sabke use case
5. Physics TermsImpedance, Attenuation, Gain, TGC, Focal Zone - technical words Hindi mein
6. Normal OrgansLiver, Kidney, Gallbladder, Bladder, Aorta etc. - normal kya dikhta hai
7. Probe MovementsSlide, Fan, Rock, Rotate, Compress - scan technique
8. Quick Cheat Sheet4 mini-boxes - exam aur bedside ke liye instant reference
9. Pathology TermsAscites, Hydronephrosis, Fatty liver - report mein common words
Hindi + English dono mein explanation, color-coded sections, aur memory tricks hain - beginner ke liye bilkul perfect!
This is a shared conversation. Sign in to Orris to start your own chat.