Mobility Atlas research: power-wheelchair-repair-guide Data and method for the article at mobilitatlas.com/blog/power-wheelchair-repair-guide/ License: CC BY 4.0 (credit "Mobility Atlas") Prepared: 12 October 2026 WHAT WAS READ FDA MAUDE medical device reports under product code ITI (powered wheelchairs) received 1 January 2019 to the latest openFDA update read on 10 and 11 October 2026: 993 reports from 2019 to 2023 and 1,296 since 2024. The pool is every report with text that names a motor, brake, gearbox, controller or power module, joystick, error or fault code, beep, freewheel lever or clutch, or says the chair stopped, shut off or would not move, and that does not name a power add-on for a manual chair (exact patterns in make_pool.py, reproduced below): 413 reports, of which 376 are about power wheelchairs. All 71 FDA recall records for product code ITI, downloaded through openFDA, and the FDA recall pages for recalls Z-2841-2026, Z-2805-2026 and Z-1826-2026. Pool patterns: ADDON = SMARTDRIVE|SMART DRIVE|E-MOTION|EMOTION M|E-FIX|SMOOV|FIREFLY|TWION|POWER ASSIST|PUSHTRACKER|SWITCH-IT|SPEEDCONTROL; PARTS = \bMOTOR|BRAKE|GEARBOX|GEAR BOX|CONTROLLER|POWER MODULE|\bMODULE\b|JOYSTICK|JOY STICK|ERROR CODE|FAULT CODE|WON'T MOVE|WOULD NOT MOVE|WOULDN'T MOVE|NOT MOVE|STOPPED|SHUT (OFF|DOWN)|FREEWHEEL|FREE WHEEL|CLUTCH|ENCODER|BEEP. HOW IT WAS CODED 1. A codebook (codebook.txt) was written before any report was coded. Its SHA-256 fingerprint, recorded at 2026-10-11T11:19:03Z, is d275316eec48e4ed52bd0f3d0dd565af13f29b2fc7f33bfe4bb0039308a0392a. Any later change to the codebook would change this fingerprint. 2. The reports were split into chunks. Two coders (AI language models working separately, each in a private scratch folder, each without access to the other's answers, told to read every report and not to use keyword scripts) coded every report in every chunk against the codebook. 3. Agreement between the two coders: device 99.0% (kappa 0.938); category 94.7% (kappa 0.936); part named 89.6% (kappa 0.859); injury 97.6% (kappa 0.951); fall 99.3% (kappa 0.985); user stranded 97.8% (kappa 0.882); what was found 94.2% (kappa 0.906). 4. Every report where the coders differed was decided by the lead analyst under the written rules below (101 reports marked adjudicated). A consistency pass then re-applied the rules across the whole table and changed codes in 8 more reports (marked consistency). 5. Counts in the article were produced by script from the final table, not by hand. Some sub-counts (parts, places or words named in reports) are keyword counts over the report text; the exact word patterns are listed under KEYWORD COUNTS. Different wording would give somewhat different counts. ADJUDICATION RULES R1: PART: a joystick only touched, bumped or caught (by the user, a carer, clothing, a tray or an object) with no fault in it alleged is N; a chair said to keep driving after release, with no part named, is N; a joystick alleged or found faulty (off-centre, contaminated, error, loose knob, bent, came off its mount, mount broken) is J. R2: CATEGORY: movement caused by accidental contact with the joystick, with no device fault alleged, is X even when a fall or injury followed (the flags record the harm). R3: INJURY: being run over, hitting a knee or head, or a chair falling onto a body part is an impact and is n unless harm or care is stated; y when the event type is Death. R4: FALL: y when the chair went over or off a ramp edge with the user, or fell onto the user; n for a general warning that a device "will throw you off". R5: STRANDED: y when the chair became undriveable, the user was trapped or pinned and could not free themselves, or needed someone to move them; n when they freed themselves. R6: CATEGORY: a user struck by a motor vehicle is X even when a fall followed. R7: CATEGORY: a fall caused by the user driving off a step, lift or ramp with no device fault named is T. R8: A joystick that came off its mount, or a broken joystick mount, is CATEGORY S and PART J, unless motion or a stop applies first. R9: FINDING: a fault caused by earlier service, misuse, overtightening or modification is N; damage found on inspection with its cause only suspected is D; a gauge or part confirmed faulty on inspection is D; repeated repairs of the same part by a technician count as D. R10: A part suspected by the maker but not confirmed still counts as the part named (alleged). R11: PART: wiring or a cable to a brake or motor, a regulator or non-original spliced harness is K. R12: FINDING: "no malfunction suspected" or "no defect claimed" with no evaluation is X; "could not duplicate", "functioned as designed", "operated normally" or "no malfunction evidence" after a review is N. R13: DEVICE: a power add-on wheel is A; a report that never says what kind of chair it was is O. R14: CATEGORY: an alleged stop or movement whose link to the device is left open, or a design complaint, is U; a seat-only movement is P; continuing to roll after the joystick is released is M even when the brakes are also blamed. KEYWORD COUNTS (Python regular expressions, matched against the upper-case report text without its header line) KW = { 'belt': r'SEAT ?BELT|LAP ?BELT|POSITIONING (BELT|STRAP)|SEAT STRAP|SEATBELT', 'rescue': r'FIRE DEPARTMENT|PARAMEDIC|\b911\b|\bEMS\b|AMBULANCE|POLICE', 'ramp': r'\bRAMP', 'slope_or_downhill': r'\bHILL|SLOPE|INCLINE|DOWNWARD|DOWN A (STREET|DRIVEWAY|RAMP|HILL|SIDEWALK)', 'error_or_beep': r'ERROR|FAULT CODE|FLASH|BEEP', 'freewheel': r'FREE ?WHEEL', 'vehicle_struck': r'STRUCK BY|HIT BY A|HIT BY THE|STRUCK BY A', 'joystick_contact': r"SLEEVE|JACKET|CLOTHING|GOWN|BUMPED (THE |INTO THE )?(JOYSTICK|CONTROLLER)|HIT THE JOYSTICK|HITTING THE JOYSTICK|TRAY GOT CAUGHT|CAUGHT (ON )?THE JOYSTICK|ENGAGED THE JOYSTICK|ARM PAD HIT|ELBOW HIT|JOYSTICK WAS HIT|ARM OR SWEATER HIT|HIT THE KNOB|LEANED (ONTO|ON) THE JOYSTICK", 'kept_going_after_release': r"(LET GO|RELEASED?|RELEASING|REMOVED (THEIR|HIS|HER) HAND|TOOK HER HAND OFF|HAND OFF)[^.]{0,80}(KEPT|CONTINUED|CONTINUE|ROLL|DID NOT STOP|DIDN'T STOP|TOOK OFF)", } QUALITY NOTES (disclosed in full) - The article went through three fact-check passes by checkers who had not written it (a full pass with a reader review, then a control pass over the changes), each recomputing numbers from the files here and reading quotes against their sources; every error found was corrected before publication. AMOUNTS Every report text was searched for money figures; none gives one. Prices in the article are prices shown on makers', dealers' and retailers' pages and in the Mobility Atlas catalog, listed in power-wheelchair-repair-guide-documents.csv and the article sources. LIMITS - Reports are not rates. Nobody publishes how many devices of each model are in use. - A report is an allegation or a description; the FDA says the submission of a report "itself does not necessarily demonstrate that the device caused or contributed to the adverse outcome or event." - A few makers file most of the reports, which reflects their size and filing, not their safety. - Half the reports name no part; the part named is often an allegation made before anyone examined the chair. FILES codebook.txt the codebook as fingerprinted coded_reports.csv one row per coded report: both coders' answers, the final code, and how a disagreement was resolved (resolution, rule_applied) report_pool.csv the reports in the pool with product code, brand, date received and event type The full report texts are public: search MAUDE or openFDA by report key. power-wheelchair-repair-guide-documents.csv the documents and pages read, with links