Mobility Atlas research: prosthetic-leg-guide Data and method for the article at mobilitatlas.com/blog/prosthetic-leg-guide/ License: CC BY 4.0 (credit "Mobility Atlas") Prepared: 18 October 2026 WHAT WAS READ Every FDA MAUDE medical device report with text filed under product code ISY (Joint, Knee, External Limb Component), ISH (Component, External, Limb, Ankle/Foot), ISW (Assembly, Knee/Shank/Ankle/Foot, External), ISS (Prosthesis, Thigh Socket, External Component), ISP (Valve, Prosthesis), ISL (Joint, Hip, External Limb Component) or KFX (Assembly, Thigh/Knee/Shank/Ankle/Foot, External), received at any date up to the latest openFDA update read on 18 October 2026: 714 reports, all coded. 54 are about another device filed under these codes (implants, orthoses; coded O), leaving 660 about leg prostheses. All FDA recall records for these product codes, downloaded through openFDA on 18 October 2026 (recall_facts.py): 45 records, 42 about leg prostheses. Makers: grouped from the manufacturer and brand names in each report (Ottobock, Ossur, other). HOW IT WAS CODED 1. A codebook (codebook.txt) was written before any report was coded. Its SHA-256 fingerprint, recorded at 2026-10-18T14:30:29Z, is f1e9416880395610b5e8c4900bb68dc2c52699c47b719ebb63a221aba3445a30. 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.6% (kappa 0.994); part named 72.8% (kappa 0.674); mode 85.4% (kappa 0.808); injury 99.4% (kappa 0.989); fall 99.3% (kappa 0.986); user 98.7% (kappa 0.948); what was found 98.5% (kappa 0.976). 4. Every report where the coders differed was decided by the lead analyst under the written rules below (287 reports marked adjudicated). A consistency pass then re-applied the rules across the whole table and changed codes in 197 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 L1: DEVICE O (misfiled reports): an implanted device (heart valve, implanted hip, knee, ankle or subtalar implant, hip stem, bone plate, halo pins, a bone-anchored osseointegration implant), an orthosis or brace (KAFO, stance-control orthosis, knee wrap, boot, air walker, foot orthosis) and any other non-prosthetic device is DEVICE O with PART N and MODE O, whatever failed; injury, fall, user and finding are still coded from the text. An implanted hip stem is O, not H (H is an external hip joint). L2: PART (hardware and connectors): a bolt, screw, axle bolt, axis screw, nut, bushing, Teflon ring, hinge, link, linkage or frame of a knee or ankle joint mechanism is J, because the codebook names the joint bolt under J (every EBS knee bolt, screw or axle bolt is J); a bolt or screw that joins components or belongs to a pylon, tube, pyramid, foot bolt, alignment kit, torsion or other adapter, a threaded top connection (thread, threading) and a pyramid adapter are P; a component (a foot) that came off at its connection with no part named is P with MODE L; the rotation mechanism of a rotator is J (axis); W only for hardware the report ties to none of these. L3: PART (allegation versus maker evidence): the part is what the report says failed first. (a) For a give-way complaint (buckled, collapsed, gave way or out, went out, flexed, swing too early or late, free swing, no swing or stance release, locked, blocked, stiff, did not lock, the unit failed and the user fell) the allegation is coded and a cause found later by the maker (battery cable, angle sensor, solder joint, tube adapter, loose bolt, oil leak) does not replace it: Y when the report says resistance, damping, brakes or hydraulic support was lost, low, absent or dropped out, or names the hydraulics, oil or fluid (the codebook lists loss of resistance under Y); free swing, swinging freely, went free or unlocked without such words is Q; the knee's control functions (stance release, swing release, swing triggering, stumble recovery, yielding) are not named parts; E when it names a mode (free mode, safety mode, a mode change), the app or remote control, software, an error message, beeps or alarms, or no signal between knee and tube; B when it names the battery, charge or charger; a part the reporter names as the cause is coded; otherwise Q. A knee that shut off, switched off or will not turn on, with no battery or charging problem named, is E. (b) When the reporter names no part and no give-way symptom (sent in for repair, service or a check, faulty, broken, loose, noise, squelching, not smooth, no full extension, parts loose or missing) and the maker's evaluation names the failed part, the maker's part and the maker's description of how it failed are coded, as the same failure stated more precisely. (c) When the maker finds no fault the allegation is kept. The complaint as the maker restates it (reported issue, the user reported that) counts as the allegation. L4: PART (several parts or problems named): with no order of failure, separate complaints in one report included, the first in the codebook list is coded (B, E, Y, J, K, P, S, W): battery before electronics before hydraulics; with a stated causal order (the tube adapter defect caused the damping failure) the first in that order is coded. L5: PART (C-Leg, Kenevo, Genium tube adapter): a tube adapter fault that acts through its signals (strain gauges, bonding of tube and adapter, a solder joint, erroneous values, no signal between knee and tube) is E, a sensor fault; a tube or tube adapter that broke, cracked, bent or came loose mechanically is P. L6: PART and MODE (locks and suspension): the manual lock, lock lever or locking bolt of a knee is J (the knee joint mechanism); socket locks, pins, lanyards, clutches, ratchets (Icelock), liner-to-socket attachments and the stabilisation rods of a volume-management attachment are S; a lock that released the pin, did not hold the pin or let the limb come off is MODE L, a lock reported broken is K, a lock reported only as failed or worn out with worn plates or pins found is W. L7: PART X versus Q, and MODE O: X when nothing is alleged to have failed (a fall while wearing the device with no problem named, a fall the maker explains by the user's action with no failure alleged); Q when a device problem is alleged with no part named (buckled, collapsed, gave way, locked, failed to lock, the device broke or failed, joint did not work, shuddering), also when the report raises the device as a possible cause (unsure if the leg collapsed, may have given way, does not know if it was the knee), and when the device is said to have failed only after or during the fall (socket came loose, locked in safety mode, went into free swing) the stated failure is coded or the user claims compensation or threatens legal action; with PART Q, X or N the MODE is always O, as the codebook says. A knee that broke in half is J (the knee joint itself). L8: DEVICE (kind): text first: a report whose text names only a connector component (a pyramid adapter, an alignment-kit bolt) is C even when the header names a foot or knee product. For knees whose battery status is unclear the brand or model is used only when the report itself or another report in the pool states what it is: Mauch (pool reports call it a hydraulic knee control, none gives it a battery, sensor or software) is K; 3C60 is M because the report says the joint went into safety mode; Dynion (3R85) and Icon, with no such statement in the pool, are U. L9: MODE: the mode is how the coded part failed as the report first states it, taken from the reporter when the reporter names the part and from the maker when the part comes from the maker under L3b (loose, came out, disengaged, lost, popped off, pulled out, fell off, stripped, not holding: L; broke, cracked, sheared, snapped, deformed, bent, destroyed, chipped: K; worn out, need replacing, leaking: W). When a part is coded (B, E, Y or a named part) and the report says the knee or foot gave way, buckled, collapsed, lost resistance, went free, locked, blocked or would not bend because of it, the MODE is G. A mode switch, safety mode, error, beeps or switching off with no give-way stated is E. Mechanical noise alone is not a mode. L10: FLAGS: fall y when any account in the report says the user fell or went to the ground, n when the user caught themselves, grabbed a railing, almost fell, or no fall is stated even with an injury; injury n when no harm is stated or an injury was only said to have happened and was never confirmed; user y only for the codebook causes (misuse, wrong setting or mode, alignment, water, overload, a non-approved or third-party custom part, lack of service, improper charging), n for road accidents, ice, the user's own speculation about gait speed, and damage caused by a fall. L11: FINDING: N when the maker examined the device and found no fault, or confirmed the failure but attributed it to an outside cause (the fall, misuse, overload, external force, missed service, wrong charging mode, torque not per IFU, reverse installation, a setting, insufficient tools, contamination, sand, humidity or a corrosive environment the IFU excludes); D when the maker confirms a failure with a device-related or unknown cause; X when the device was not returned or evaluated, when the maker reports only a safety alert, CAPA or device history review, or when the maker draws no conclusion. KEYWORD COUNTS (Python regular expressions, matched against the upper-case report text without its header line) KW = {'fracture': r'FRACTUR', 'hip': r'\bHIP\b', 'head': r'\bHEAD\b', 'stairs': r'STAIR', 'ramp_slope': r'\bRAMP|SLOPE|INCLINE|HILL', 'water': r'WATER|WET|RAIN|SHOWER|SWIM', 'death': r'DEATH|DIED|PASSED AWAY', 'battery': r'BATTER', 'beep_vibration': r'BEEP|VIBRAT|ALARM', 'skin': r'SKIN|BLISTER|ABRASION|SORE|WOUND', 'service': r'SERVIC|MAINTENANCE', 'recall': r'RECALL|FIELD SAFETY|SAFETY NOTICE|CORRECTIVE'} QUALITY NOTES (disclosed in full) - The article went through 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 prosthetic-leg-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." - Two makers (Ottobock and Ossur) filed most of the reports, which reflects their size and filing, not their safety; some years' peaks are filing batches. - Part agreement between the coders was the weakest field (72.8%); the adjudication rules for parts are listed above. - Reports go back to 1993; old reports describe products that may no longer be sold. - The same event is sometimes filed twice; we count reports, not events. 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. prosthetic-leg-guide-documents.csv the documents and pages read, with links