X ray machines accessories and their maintenance
radiography AND quality control
IAEA diagnostic radiology quality assurance x ray equipment routine maintenance accessories
| Accessory | Main use | Basic maintenance |
|---|---|---|
| X-ray tube and tube stand | Produces and directs the X-ray beam | Check smooth movement, locks, alignment, cable condition, tube housing damage, and unusual noise or overheating. Do not exceed tube loading limits. |
| Collimator / light-beam diaphragm | Restricts beam to the required body part, reducing dose and scatter | Clean light field window; check light brightness, field size indicators, shutter movement, and agreement between light field and radiation field. |
| Filters | Remove low-energy X-rays that only add skin dose | Confirm required inherent and added filtration is present and undamaged. Do not use cracked, wrongly labelled, or unauthorized filters. |
| Grid and grid cassette | Absorbs scatter radiation and improves contrast, especially for thicker parts | Keep clean and dry; inspect for bent strips, cracks, grid cut-off, loose covers, and correct centering/orientation. Store upright to avoid warping. |
| Cassette and intensifying screens | Holds film and converts X-rays to light in film-screen systems | Clean screens with manufacturer-approved antistatic cleaner; inspect for scratches, dust, poor screen contact, damaged hinges, latches, and light leaks. |
| Digital detector, CR plate, or DR panel | Captures the digital image | Handle with two hands; prevent drops, fluid entry, impact, and bending. Clean only as manufacturer advises. Check for artefacts, dead pixels, calibration errors, battery/connector issues, and perform detector calibration when due. |
| Patient positioning aids | Sponges, sandbags, straps, immobilizers, radiolucent blocks | Clean and disinfect between patients; inspect straps, seams, foam integrity and radiolucency. Replace worn, torn, contaminated, or metal-containing items. |
| Radiographic table, upright Bucky and chest stand | Supports patient and detector | Inspect tabletop for cracks, fluid damage and smooth motion; test locks, foot brakes, Bucky movement, vertical travel and centering. Clean after every patient. |
| Lead protective devices | Lead apron, thyroid shield, gloves, gonad shields, mobile barriers | Wipe clean, hang aprons on proper racks rather than folding, label/track each item, and inspect periodically for cracks or defects by visual and imaging inspection according to local policy. |
| Exposure switch / foot switch | Initiates exposure | Inspect cable and strain relief, button action, and emergency stop. Keep dry. Only trained service staff should repair electrical faults. |
| Markers and measuring tools | Right/left markers, radiopaque rulers, magnification markers | Clean, keep available, and replace worn or illegible markers. Ensure correct use before exposure. |
| Viewing monitor / image workstation | Reviews digital images | Clean monitor with approved materials; check display calibration, brightness, contrast, network connection, backup, and image archive function. |
| Portable X-ray accessories | Mobile detector holders, extension cables, mobile shields | Check wheels, brakes, charging cable, cable insulation, detector holders and locks before use. Keep the unit stable during transport. |
Make the pdf
~/
mkdir -p "/tmp/workspace/xray-accessories-pdf/output" python - <<'PY' from reportlab.lib import colors from reportlab.lib.enums import TA_CENTER, TA_LEFT from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, 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.lib import utils out='/tmp/workspace/xray-accessories-pdf/output/X_ray_Machine_Accessories_and_Maintenance.pdf' navy=HexColor('#14365D'); blue=HexColor('#1F6E8C'); pale=HexColor('#EAF3F8'); light=HexColor('#F6F9FB'); gray=HexColor('#5A6772'); red=HexColor('#9D2B2B') styles=getSampleStyleSheet() styles.add(ParagraphStyle(name='CoverTitle', parent=styles['Title'], fontName='Helvetica-Bold', fontSize=24, leading=29, alignment=TA_CENTER, textColor=navy, spaceAfter=12)) styles.add(ParagraphStyle(name='CoverSub', parent=styles['Normal'], fontName='Helvetica', fontSize=12, leading=17, alignment=TA_CENTER, textColor=gray)) styles.add(ParagraphStyle(name='H1x', parent=styles['Heading1'], fontName='Helvetica-Bold', fontSize=16, leading=20, textColor=navy, spaceBefore=12, spaceAfter=8)) styles.add(ParagraphStyle(name='H2x', parent=styles['Heading2'], fontName='Helvetica-Bold', fontSize=11.2, leading=14, textColor=blue, spaceBefore=8, spaceAfter=4)) styles.add(ParagraphStyle(name='Bodyx', parent=styles['BodyText'], fontName='Helvetica', fontSize=9.3, leading=13, textColor=HexColor('#1F2933'), spaceAfter=5)) styles.add(ParagraphStyle(name='Smallx', parent=styles['BodyText'], fontName='Helvetica', fontSize=8, leading=10.5, textColor=gray)) styles.add(ParagraphStyle(name='BoxTitle', parent=styles['BodyText'], fontName='Helvetica-Bold', fontSize=10.5, leading=13, textColor=navy, spaceAfter=3)) styles.add(ParagraphStyle(name='BoxBody', parent=styles['BodyText'], fontName='Helvetica', fontSize=9, leading=12.5, textColor=HexColor('#1F2933'))) def P(text, sty='Bodyx'): return Paragraph(text, styles[sty]) def footer(canvas, doc): canvas.saveState(); canvas.setStrokeColor(HexColor('#B9C8D4')); canvas.setLineWidth(.4); canvas.line(doc.leftMargin, 1.4*cm, A4[0]-doc.rightMargin, 1.4*cm) canvas.setFont('Helvetica', 8); canvas.setFillColor(gray) canvas.drawString(doc.leftMargin, .95*cm, 'X-ray Machine Accessories and Their Maintenance') canvas.drawRightString(A4[0]-doc.rightMargin, .95*cm, f'Page {doc.page}') canvas.restoreState() doc=SimpleDocTemplate(out, pagesize=A4, rightMargin=1.45*cm,leftMargin=1.45*cm, topMargin=1.4*cm,bottomMargin=1.8*cm,title='X-ray Machine Accessories and Their Maintenance',author='Orris') story=[] story += [Spacer(1,2.7*cm), P('X-RAY MACHINE', 'CoverTitle'), P('ACCESSORIES AND THEIR MAINTENANCE','CoverTitle'), Spacer(1,.5*cm), P('A concise practical study note for radiography and imaging practice', 'CoverSub'), Spacer(1,1.2*cm)] coverbox=Table([[P('<b>Learning objectives</b><br/>• Identify common X-ray accessories and their functions.<br/>• State routine care and maintenance requirements.<br/>• Outline a safe quality-control schedule.', 'BoxBody')]], colWidths=[15.6*cm]) coverbox.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),pale),('BOX',(0,0),(-1,-1),.8,blue),('LEFTPADDING',(0,0),(-1,-1),14),('RIGHTPADDING',(0,0),(-1,-1),14),('TOPPADDING',(0,0),(-1,-1),12),('BOTTOMPADDING',(0,0),(-1,-1),12)])) story += [coverbox, Spacer(1,1.3*cm), P('Safety note: X-ray equipment uses ionising radiation. Repairs, calibration and radiation-output measurements must be performed only by authorised service personnel and qualified medical physicists.', 'CoverSub'), PageBreak()] story += [P('1. Overview','H1x'),P('X-ray accessories are the components used with an X-ray unit to improve image quality, position and support the patient, restrict the beam, and reduce radiation exposure. Good maintenance prevents image artefacts, repeat exposures, equipment failure and unnecessary radiation dose.', 'Bodyx')] rows=[[P('<b>Accessory</b>','Smallx'),P('<b>Main use</b>','Smallx'),P('<b>Routine maintenance</b>','Smallx')], [P('<b>X-ray tube and tube stand</b>','Bodyx'),P('Produces and directs the X-ray beam.','Bodyx'),P('Check smooth travel, locks, alignment, cables, housing damage, overheating and abnormal noise. Observe tube-loading limits.','Bodyx')], [P('<b>Collimator / light-beam diaphragm</b>','Bodyx'),P('Limits the beam to the area of interest, reducing scatter and dose.','Bodyx'),P('Clean the light window. Check lamp brightness, shutter movement, field-size indication and agreement of the light field with the radiation field.','Bodyx')], [P('<b>Filters</b>','Bodyx'),P('Remove low-energy photons that increase skin dose without helping the image.','Bodyx'),P('Verify required filtration is fitted, correctly labelled and undamaged. Do not use cracked or unauthorised filters.','Bodyx')], [P('<b>Grid and grid cassette</b>','Bodyx'),P('Absorb scatter radiation and improve contrast, especially for thick body parts.','Bodyx'),P('Keep dry and clean. Check for bent strips, cracks, loose covers and grid cut-off. Use correct centring and orientation. Store upright.','Bodyx')], [P('<b>Cassettes and intensifying screens</b>','Bodyx'),P('Hold film and convert X-rays to light in film-screen radiography.','Bodyx'),P('Clean screens with approved antistatic materials. Inspect for dust, scratches, poor screen contact, light leaks, damaged hinges and latches.','Bodyx')], [P('<b>CR plate / DR detector</b>','Bodyx'),P('Captures the digital radiographic image.','Bodyx'),P('Prevent drops, fluid entry, impact and bending. Clean only as the manufacturer advises. Check for artefacts, connector or battery problems, and calibration errors.','Bodyx')], [P('<b>Patient positioning aids</b>','Bodyx'),P('Sponges, sandbags, straps, immobilisers and radiolucent blocks help accurate positioning.','Bodyx'),P('Clean and disinfect between patients. Inspect straps, seams and foam. Replace torn, contaminated, worn, or metal-containing aids.','Bodyx')], [P('<b>Radiographic table, upright Bucky and chest stand</b>','Bodyx'),P('Support the patient and detector.','Bodyx'),P('Inspect tabletop integrity and clean it after use. Test locks, brakes, Bucky movement, vertical travel, centring and stability.','Bodyx')], [P('<b>Lead protective devices</b>','Bodyx'),P('Aprons, thyroid shields, gloves and mobile barriers protect staff and patients where appropriate.','Bodyx'),P('Wipe clean. Hang aprons on dedicated racks: do not fold. Label and track each item. Inspect regularly for cracks or damage according to local policy.','Bodyx')], [P('<b>Exposure and foot switches</b>','Bodyx'),P('Initiate an exposure.','Bodyx'),P('Check cable insulation, strain relief, button action and emergency stop. Keep dry. Do not attempt electrical repairs.','Bodyx')], [P('<b>Markers, rulers and image workstation</b>','Bodyx'),P('Identify side/site, measure magnification and review images.','Bodyx'),P('Keep markers clean and legible. Clean monitor with approved materials; check calibration, brightness, contrast, network and image archive function.','Bodyx')]] t=Table(rows,colWidths=[4.1*cm,4.4*cm,7.0*cm],repeatRows=1,hAlign='LEFT') t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),navy),('TEXTCOLOR',(0,0),(-1,0),colors.white),('VALIGN',(0,0),(-1,-1),'TOP'),('GRID',(0,0),(-1,-1),.35,HexColor('#B7C7D3')),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,light]),('LEFTPADDING',(0,0),(-1,-1),6),('RIGHTPADDING',(0,0),(-1,-1),6),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5)])) story += [t, Spacer(1,7)] story += [P('2. Maintenance schedule','H1x')] sched=[['Frequency','Essential checks'],['Before use / daily','Inspect tube, cables, plugs, switches, collimator and table for visible damage. Check tube-stand movement and locks, collimator light, detector/cassette condition, protective devices and cleanliness of patient-contact surfaces. Log faults and isolate unsafe equipment.'],['Weekly or monthly','Clean cassettes, screens, detector surfaces and workstations as specified by the manufacturer. Inspect grids, positioning aids, wheels, brakes and table movements. Use a phantom or test object to monitor image-quality consistency. Review rejected images and investigate recurring causes.'],['Periodic QC / servicing','Qualified staff test kVp, exposure time and mAs accuracy/reproducibility; output consistency; beam alignment and collimation; filtration; leakage; AEC, grid/Bucky alignment, detector calibration, display performance, mechanical stability and electrical safety. Timing follows manufacturer requirements and local regulations.']] srows=[[P(f'<b>{x}</b>','Smallx') for x in sched[0]]]+[[P(x[0],'Bodyx'),P(x[1],'Bodyx')] for x in sched[1:]] st=Table(srows,colWidths=[4.0*cm,11.5*cm],repeatRows=1) st.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),navy),('TEXTCOLOR',(0,0),(-1,0),colors.white),('GRID',(0,0),(-1,-1),.35,HexColor('#B7C7D3')),('VALIGN',(0,0),(-1,-1),'TOP'),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,light]),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),6),('BOTTOMPADDING',(0,0),(-1,-1),6)])) story += [st] story += [P('3. Key safety and quality-assurance principles','H1x')] principles=['Follow the manufacturer’s service manual and local radiation-safety regulations.','Maintain a logbook for daily checks, faults, repairs, calibration, reject/repeat analysis and service visits.','Only qualified personnel should repair high-voltage equipment, generator circuits, tube heads and detectors, or perform radiation-output measurements.','Remove equipment from clinical use if there is damaged electrical insulation, unstable mechanical support, exposure malfunction, suspected radiation leak, detector failure, or defective protective apparel.','Apply ALARA: use correct collimation, filtration, positioning, shielding, exposure factors and properly functioning accessories.'] for i,x in enumerate(principles,1): story.append(P(f'<b>{i}.</b> {x}','Bodyx')) warn=Table([[P('<b>When to report immediately</b><br/>Unexpected exposure, failure of tube or table locks, frayed cable, cracked lead apron, repeated detector artefacts, collimator misalignment, burning smell, overheating or electrical shock.', 'BoxBody')]],colWidths=[15.5*cm]) warn.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),HexColor('#FFF0F0')),('BOX',(0,0),(-1,-1),.8,red),('LEFTPADDING',(0,0),(-1,-1),12),('RIGHTPADDING',(0,0),(-1,-1),12),('TOPPADDING',(0,0),(-1,-1),9),('BOTTOMPADDING',(0,0),(-1,-1),9)])) story += [Spacer(1,4),warn,Spacer(1,8)] story += [P('4. References','H1x'),P('Brogdon’s Forensic Radiology. “Equipment Maintenance,” lines 9533-9560. The text recommends regular preventive maintenance for the complete imaging chain, servicing according to manufacturer recommendations, operator checks and rigorous quality assurance.', 'Smallx'),P('International Atomic Energy Agency. <i>Handbook of Basic Quality Control Tests for Diagnostic Radiology</i>. Vienna: IAEA; 2023. Available at: https://www.iaea.org/publications/14890/handbook-of-basic-quality-control-tests-for-diagnostic-radiology', 'Smallx'),P('International Atomic Energy Agency. Quality Management System: Radiology. Available at: https://www.iaea.org/resources/hhc/medical-physics/radiology/quality-management-system', 'Smallx')] doc.build(story,onFirstPage=footer,onLaterPages=footer) print(out) PY
python - <<'PY' from pypdf import PdfReader p='/tmp/workspace/xray-accessories-pdf/output/X_ray_Machine_Accessories_and_Maintenance.pdf' r=PdfReader(p) print('exists:', __import__('os').path.exists(p)) print('pages:', len(r.pages)) for i,page in enumerate(r.pages,1): text=page.extract_text() or '' print(i, len(text), text[:100].replace('\n',' | ')) PY
~/
~/xray-accessories-pdf
~/xray-accessories-pdf/create_pdf.py
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib.colors import HexColor
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak
OUT = '/tmp/workspace/xray-accessories-pdf/output/X_ray_Machine_Accessories_and_Maintenance.pdf'
navy, blue, pale, light, gray, red = (HexColor('#14365D'), HexColor('#1F6E8C'), HexColor('#EAF3F8'), HexColor('#F6F9FB'), HexColor('#5A6772'), HexColor('#9D2B2B'))
styles=getSampleStyleSheet()
styles.add(ParagraphStyle(name='TitleX', parent=styles['Title'], fontName='Helvetica-Bold', fontSize=23, leading=28, alignment=1, textColor=navy, spaceAfter=12))
styles.add(ParagraphStyle(name='SubtitleX', parent=styles['Normal'], fontName='Helvetica', fontSize=11.5, leading=16, alignment=1, textColor=gray))
styles.add(ParagraphStyle(name='H1X', parent=styles['Heading1'], fontName='Helvetica-Bold', fontSize=16, leading=20, textColor=navy, spaceBefore=10, spaceAfter=7))
styles.add(ParagraphStyle(name='BodyX', parent=styles['BodyText'], fontName='Helvetica', fontSize=9, leading=12.3, textColor=HexColor('#1F2933'), spaceAfter=4))
styles.add(ParagraphStyle(name='SmallX', parent=styles['BodyText'], fontName='Helvetica', fontSize=8, leading=10.4, textColor=gray))
def P(text, st='BodyX'): return Paragraph(text, styles[st])
def footer(c, d):
c.saveState(); c.setStrokeColor(HexColor('#B9C8D4')); c.line(d.leftMargin,1.35*cm,A4[0]-d.rightMargin,1.35*cm)
c.setFont('Helvetica',8); c.setFillColor(gray); c.drawString(d.leftMargin,.9*cm,'X-ray Machine Accessories and Their Maintenance'); c.drawRightString(A4[0]-d.rightMargin,.9*cm,f'Page {d.page}'); c.restoreState()
doc=SimpleDocTemplate(OUT,pagesize=A4,rightMargin=1.4*cm,leftMargin=1.4*cm,topMargin=1.4*cm,bottomMargin=1.8*cm,title='X-ray Machine Accessories and Their Maintenance')
story=[Spacer(1,2.8*cm),P('X-RAY MACHINE','TitleX'),P('ACCESSORIES AND THEIR MAINTENANCE','TitleX'),Spacer(1,.4*cm),P('A concise practical study note for radiography and imaging practice','SubtitleX'),Spacer(1,1.1*cm)]
box=Table([[P('<b>Learning objectives</b><br/>• Identify common X-ray accessories and their functions.<br/>• State routine care and maintenance requirements.<br/>• Outline a safe quality-control schedule.')]],colWidths=[15.6*cm])
box.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),pale),('BOX',(0,0),(-1,-1),.8,blue),('LEFTPADDING',(0,0),(-1,-1),14),('RIGHTPADDING',(0,0),(-1,-1),14),('TOPPADDING',(0,0),(-1,-1),12),('BOTTOMPADDING',(0,0),(-1,-1),12)]))
story += [box,Spacer(1,1.2*cm),P('Safety note: X-ray equipment uses ionising radiation. Repairs, calibration and radiation-output measurements must be performed only by authorised service personnel and qualified medical physicists.','SubtitleX'),PageBreak(),P('1. Overview','H1X'),P('X-ray accessories are the components used with an X-ray unit to improve image quality, position and support the patient, restrict the beam, and reduce radiation exposure. Good maintenance prevents image artefacts, repeat exposures, equipment failure and unnecessary radiation dose.')]
headers=['Accessory','Main use','Routine maintenance']
data=[headers,
['X-ray tube and tube stand','Produces and directs the X-ray beam.','Check smooth travel, locks, alignment, cables, housing damage, overheating and abnormal noise. Observe tube-loading limits.'],
['Collimator / light-beam diaphragm','Limits the beam to the area of interest, reducing scatter and dose.','Clean the light window. Check lamp brightness, shutter movement, field-size indication and agreement of light and radiation fields.'],
['Filters','Remove low-energy photons that increase skin dose without helping the image.','Verify required filtration is fitted, correctly labelled and undamaged. Do not use cracked or unauthorised filters.'],
['Grid and grid cassette','Absorb scatter radiation and improve contrast.','Keep dry and clean. Check for bent strips, cracks, loose covers and grid cut-off. Use correct centring and orientation; store upright.'],
['Cassettes and intensifying screens','Hold film and convert X-rays to light in film-screen radiography.','Clean with approved antistatic materials. Inspect for dust, scratches, poor screen contact, light leaks, hinges and latches.'],
['CR plate / DR detector','Captures the digital radiographic image.','Prevent drops, fluid entry, impact and bending. Clean only as advised. Check for artefacts, connector/battery issues and calibration errors.'],
['Patient positioning aids','Sponges, sandbags, straps, immobilisers and radiolucent blocks support accurate positioning.','Clean and disinfect between patients. Inspect straps, seams and foam. Replace torn, contaminated, worn or metal-containing aids.'],
['Radiographic table, upright Bucky and chest stand','Support the patient and detector.','Inspect tabletop integrity and clean after use. Test locks, brakes, Bucky movement, vertical travel, centring and stability.'],
['Lead protective devices','Aprons, thyroid shields, gloves and mobile barriers protect staff and patients where appropriate.','Wipe clean. Hang aprons on dedicated racks, not folded. Label and track each item; inspect regularly for cracks or damage.'],
['Exposure and foot switches','Initiate exposure.','Check cable insulation, strain relief, button action and emergency stop. Keep dry. Do not attempt electrical repairs.'],
['Markers, rulers and workstation','Identify side/site, measure magnification and review images.','Keep markers clean and legible. Clean monitor with approved materials; check display calibration, brightness, contrast, network and archive function.']]
trows=[[P(f'<b>{x}</b>','SmallX') for x in data[0]]]+[[P(x[0]),P(x[1]),P(x[2])] for x in data[1:]]
t=Table(trows,colWidths=[4.1*cm,4.35*cm,7.15*cm],repeatRows=1)
t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),navy),('TEXTCOLOR',(0,0),(-1,0),colors.white),('VALIGN',(0,0),(-1,-1),'TOP'),('GRID',(0,0),(-1,-1),.35,HexColor('#B7C7D3')),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,light]),('LEFTPADDING',(0,0),(-1,-1),5),('RIGHTPADDING',(0,0),(-1,-1),5),('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4)]))
story += [t,P('2. Maintenance schedule','H1X')]
sched=[['Frequency','Essential checks'],['Before use / daily','Inspect tube, cables, plugs, switches, collimator and table for visible damage. Check tube-stand movement and locks, collimator light, detector/cassette condition, protective devices and cleanliness of patient-contact surfaces. Log faults and isolate unsafe equipment.'],['Weekly or monthly','Clean cassettes, screens, detector surfaces and workstations as specified by the manufacturer. Inspect grids, positioning aids, wheels, brakes and table movements. Use a phantom or test object to monitor image-quality consistency. Review rejected images and investigate recurring causes.'],['Periodic QC / servicing','Qualified staff test kVp, exposure time and mAs accuracy/reproducibility; output consistency; beam alignment and collimation; filtration; leakage; AEC, grid/Bucky alignment, detector calibration, display performance, mechanical stability and electrical safety. Timing follows manufacturer requirements and local regulations.']]
srows=[[P(f'<b>{x}</b>','SmallX') for x in sched[0]]]+[[P(a),P(b)] for a,b in sched[1:]]
st=Table(srows,colWidths=[4*cm,11.6*cm],repeatRows=1)
st.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),navy),('TEXTCOLOR',(0,0),(-1,0),colors.white),('GRID',(0,0),(-1,-1),.35,HexColor('#B7C7D3')),('VALIGN',(0,0),(-1,-1),'TOP'),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,light]),('LEFTPADDING',(0,0),(-1,-1),6),('RIGHTPADDING',(0,0),(-1,-1),6),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5)]))
story += [st,P('3. Key safety and quality-assurance principles','H1X')]
for n, item in enumerate(['Follow the manufacturer’s service manual and local radiation-safety regulations.','Maintain a logbook for daily checks, faults, repairs, calibration, reject/repeat analysis and service visits.','Only qualified personnel should repair high-voltage equipment, generator circuits, tube heads and detectors, or perform radiation-output measurements.','Remove equipment from clinical use if there is damaged electrical insulation, unstable mechanical support, exposure malfunction, suspected radiation leak, detector failure or defective protective apparel.','Apply ALARA: use correct collimation, filtration, positioning, shielding, exposure factors and properly functioning accessories.'],1): story.append(P(f'<b>{n}.</b> {item}'))
warning=Table([[P('<b>When to report immediately</b><br/>Unexpected exposure, failure of tube or table locks, frayed cable, cracked lead apron, repeated detector artefacts, collimator misalignment, burning smell, overheating or electrical shock.')]],colWidths=[15.6*cm])
warning.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),HexColor('#FFF0F0')),('BOX',(0,0),(-1,-1),.8,red),('LEFTPADDING',(0,0),(-1,-1),12),('RIGHTPADDING',(0,0),(-1,-1),12),('TOPPADDING',(0,0),(-1,-1),9),('BOTTOMPADDING',(0,0),(-1,-1),9)]))
story += [Spacer(1,4),warning,P('4. References','H1X'),P('Brogdon’s Forensic Radiology. “Equipment Maintenance,” lines 9533-9560. The text recommends regular preventive maintenance for the complete imaging chain, servicing according to manufacturer recommendations, operator checks and rigorous quality assurance.','SmallX'),P('International Atomic Energy Agency. <i>Handbook of Basic Quality Control Tests for Diagnostic Radiology</i>. Vienna: IAEA; 2023. https://www.iaea.org/publications/14890/handbook-of-basic-quality-control-tests-for-diagnostic-radiology','SmallX'),P('International Atomic Energy Agency. Quality Management System: Radiology. https://www.iaea.org/resources/hhc/medical-physics/radiology/quality-management-system','SmallX')]
doc.build(story,onFirstPage=footer,onLaterPages=footer)
print(OUT)
python "/tmp/workspace/xray-accessories-pdf/create_pdf.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/xray-accessories-pdf/output/X_ray_Machine_Accessories_and_Maintenance.pdf'; r=PdfReader(p); print('pages:',len(r.pages)); print('first-page-text:',(r.pages[0].extract_text() or '')[:80].replace(chr(10),' | '))"
X ray Machine Accessories and Maintenance
PDF Document · PDF