fix(iace): roadmap group B — citation/license/tier cleanup
C1: drop the misleading OSHA §1910.212(a)(5) fan-guard citation from M602
(overhead lift clearance) — EN 349 + EN ISO 13854 already cover it.
C2: frame M237's 25/500 mm as Richtwerte to be determined per EN ISO 13854
(single factual values in prose are facts, not table reproduction — but
keep the conservative caveat).
C3: keep ergonomic W=2 deliberately and document why — ESAW ranks it the most
frequent non-fatal mode (24.7%) but that population doesn't transfer to an
acute machine point-hazard; the machine GT governs.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -52,18 +52,23 @@ type contactMode struct {
|
||||
var contactModeTable = map[string]contactMode{
|
||||
// name W P S (S = GT-calibrated typical severity)
|
||||
"impact_stationary": {"impact_stationary", 3, 1, 2},
|
||||
"struck_by": {"struck_by", 2, 3, 3}, // GT n=14 (S̄ 2.5)
|
||||
"crushing": {"crushing", 2, 3, 2}, // GT n=40 (S̄ 2.2)
|
||||
"struck_by": {"struck_by", 2, 3, 3}, // GT n=14 (S̄ 2.5)
|
||||
"crushing": {"crushing", 2, 3, 2}, // GT n=40 (S̄ 2.2)
|
||||
"cutting": {"cutting", 2, 3, 3},
|
||||
"entanglement": {"entanglement", 3, 3, 3},
|
||||
"shearing": {"shearing", 2, 3, 3}, // GT n=4 (S̄ 3.2)
|
||||
"shearing": {"shearing", 2, 3, 3}, // GT n=4 (S̄ 3.2)
|
||||
"fall": {"fall", 3, 4, 3},
|
||||
"electrical": {"electrical", 2, 3, 4}, // GT n=20 (S̄ 3.6)
|
||||
"electrical": {"electrical", 2, 3, 4}, // GT n=20 (S̄ 3.6)
|
||||
"thermal": {"thermal", 2, 2, 2},
|
||||
"ergonomic": {"ergonomic", 2, 3, 2},
|
||||
"chemical": {"chemical", 2, 3, 2},
|
||||
"pressure_burst": {"pressure_burst", 2, 3, 2},
|
||||
"radiation": {"radiation", 2, 3, 3},
|
||||
// W stays 2 deliberately: ESAW 2023 ranks ergonomic/stress the most frequent
|
||||
// NON-FATAL contact mode (24.7%), but that population mixes overexertion across
|
||||
// all workplaces and does not transfer to an ACUTE machine point-hazard. The
|
||||
// machine-specific GT governs; bumping W to 3 would import a non-representative
|
||||
// signal. See risk_data_sources.go / project_iace_risk_stats_and_distances.
|
||||
"ergonomic": {"ergonomic", 2, 3, 2},
|
||||
"chemical": {"chemical", 2, 3, 2},
|
||||
"pressure_burst": {"pressure_burst", 2, 3, 2},
|
||||
"radiation": {"radiation", 2, 3, 3},
|
||||
}
|
||||
|
||||
// contactModeKeywords maps umlaut-normalised scenario keywords to a contact
|
||||
@@ -89,16 +94,16 @@ var contactModeKeywords = []struct {
|
||||
// categoryDefaultMode is the fallback contact mode per hazard category when the
|
||||
// scenario text carries no specific kinematic keyword.
|
||||
var categoryDefaultMode = map[string]string{
|
||||
"mechanical_hazard": "crushing",
|
||||
"electrical_hazard": "electrical",
|
||||
"thermal_hazard": "thermal",
|
||||
"chemical_hazard": "chemical",
|
||||
"mechanical_hazard": "crushing",
|
||||
"electrical_hazard": "electrical",
|
||||
"thermal_hazard": "thermal",
|
||||
"chemical_hazard": "chemical",
|
||||
"material_environmental": "chemical",
|
||||
"ergonomic": "ergonomic",
|
||||
"noise_vibration": "ergonomic",
|
||||
"radiation_hazard": "radiation",
|
||||
"fire_explosion": "thermal",
|
||||
"pneumatic_hydraulic": "pressure_burst",
|
||||
"ergonomic": "ergonomic",
|
||||
"noise_vibration": "ergonomic",
|
||||
"radiation_hazard": "radiation",
|
||||
"fire_explosion": "thermal",
|
||||
"pneumatic_hydraulic": "pressure_burst",
|
||||
}
|
||||
|
||||
// DetectContactMode classifies a hazard's injury mechanism from its scenario
|
||||
|
||||
Reference in New Issue
Block a user