Compare commits

..

3 Commits

Author SHA1 Message Date
Benjamin Admin 293c58d0dd feat: Add actionable hints to all 138 compliance checks
Build + Deploy / build-admin-compliance (push) Successful in 1m40s
Build + Deploy / build-backend-compliance (push) Successful in 7s
Build + Deploy / build-ai-sdk (push) Successful in 35s
Build + Deploy / build-developer-portal (push) Successful in 8s
Build + Deploy / build-tts (push) Successful in 7s
Build + Deploy / build-document-crawler (push) Successful in 8s
Build + Deploy / build-dsms-gateway (push) Successful in 7s
Build + Deploy / build-dsms-node (push) Successful in 8s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / loc-budget (push) Failing after 16s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 2m50s
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Failing after 40s
CI / test-python-backend (push) Successful in 37s
CI / test-python-document-crawler (push) Successful in 25s
CI / test-python-dsms-gateway (push) Successful in 23s
CI / validate-canonical-controls (push) Successful in 15s
Build + Deploy / trigger-orca (push) Successful in 2m28s
Each check now has a "hint" field explaining what is missing and
what the customer should do to fix it. Hints are shown in the
frontend below failed checks in red text.

Examples:
- "Bei Verarbeitung auf Basis von Art. 6(1)(f) muss dokumentiert
  werden, warum Ihr berechtigtes Interesse die Rechte der
  Betroffenen ueberwiegt."
- "Die ladungsfaehige Anschrift fehlt. Erforderlich: Strasse,
  Hausnummer, PLZ und Ort."

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-07 14:05:01 +02:00
Benjamin Admin 912684644e feat: Hazard-Patterns auf 725+ — Split-Dateien von Batch B integriert
Neue Dateien: packaging, medical_pressure, specific_machines2
Split: food_pkg aufgeteilt in food_processing + packaging

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-07 14:01:46 +02:00
Benjamin Admin 2b2a20cc6d feat: Hazard-Patterns auf 725 erweitert
4 neue Pattern-Dateien:
- Workshop (65): Stolpern, Ergonomie, Chemie, Brand, Strahlung, Biologie
- Maintenance Extended (65): LOTO, Einrichten, Stoerung, Transport, Inbetriebnahme
- Specific Machines (55): Druckgeraete, Wind, Solar, Batterie, Fahrtreppen, Schwimmbad
- Cyber/AI Extended (65): Software-Fehler, Ransomware, KI-Bias, OPC-UA, HMI

751 Normen + 725 Patterns = umfassende CE-Bibliothek

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-07 13:55:15 +02:00
20 changed files with 3095 additions and 663 deletions
@@ -11,6 +11,7 @@ interface CheckItem {
level?: number
parent?: string | null
skipped?: boolean
hint?: string
}
interface DocResult {
@@ -177,6 +178,11 @@ export function ChecklistView({ results }: { results: DocResult[] }) {
&quot;...{g.check.matched_text}...&quot;
</div>
)}
{!g.check.passed && g.check.hint && (
<div className="text-xs text-red-600/80 mt-0.5">
{g.check.hint}
</div>
)}
</div>
</div>
@@ -199,6 +205,11 @@ export function ChecklistView({ results }: { results: DocResult[] }) {
&quot;...{ch.matched_text}...&quot;
</div>
)}
{!ch.passed && !ch.skipped && ch.hint && (
<div className="text-xs text-red-500/80 mt-0.5">
{ch.hint}
</div>
)}
</div>
</div>
))}
@@ -0,0 +1,468 @@
package iace
// GetCyberExtendedPatterns returns 30 hazard patterns (HP800-HP829)
// for detailed software faults and cyber-security threats in industrial
// control systems.
func GetCyberExtendedPatterns() []HazardPattern {
return []HazardPattern{
// ================================================================
// Software-Fehler detailliert (HP800-HP814)
// ================================================================
{
ID: "HP800", NameDE: "Speicherueberlauf fuehrt zu unkontrolliertem Verhalten", NameEN: "Memory overflow causes uncontrolled behavior",
RequiredComponentTags: []string{"has_software", "programmable"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M101", "M102", "M103"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 85,
ScenarioDE: "Dynamischer Speicher der Steuerung laeuft voll; Steuerungsprogramm verhaelt sich undefiniert oder stuerzt ab.",
TriggerDE: "Memory Leak ueber Betriebszeit, fehlende Speicherfreigabe, zu kleine Heap-Groesse",
HarmDE: "Unkontrollierter Maschinenzustand, Ausfall der Sicherheitsfunktion, unerwartete Aktorbewegung",
AffectedDE: "Bedienpersonal, Personen im Maschinenbereich",
ZoneDE: "Gesamte Maschine (alle softwaregesteuerten Aktoren)",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP801", NameDE: "Race Condition in Echtzeitsystem", NameEN: "Race condition in real-time system",
RequiredComponentTags: []string{"has_software", "programmable"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M101", "M102"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 85,
ScenarioDE: "Zwei Tasks greifen gleichzeitig auf gemeinsame Ressource zu; Zustandsinformation wird inkonsistent.",
TriggerDE: "Fehlende Synchronisierung, Interrupt-Kollision, Multicore-Steuerung ohne Mutex",
HarmDE: "Falsche Aktoransteuerung, Sicherheitszustand wird uebersprungen, sporadische Fehlfunktion",
AffectedDE: "Bedienpersonal, Wartungspersonal (schwer reproduzierbar)",
ZoneDE: "Alle softwaregesteuerten Achsen und Sicherheitsfunktionen",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP802", NameDE: "Division durch Null in Regelkreis", NameEN: "Division by zero in control loop",
RequiredComponentTags: []string{"has_software", "programmable"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M101", "M103"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 80,
ScenarioDE: "Regelkreis teilt durch einen Sensorwert, der unerwartet Null wird; Stellgroesse laeuft ins Unendliche.",
TriggerDE: "Sensorausfall liefert Null, Grenzwertberechnung ohne Pruefung, Kaltstart mit uninitialisierten Werten",
HarmDE: "Aktor faehrt mit Maximalgeschwindigkeit, Druckregelung auf Maximum, unkontrollierter Prozess",
AffectedDE: "Bedienpersonal, Personen im Wirkbereich des Aktors",
ZoneDE: "Regelstrecke, Aktorbereich, gesamter Regelkreis",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP803", NameDE: "Falscher Datentyp fuehrt zu Werteueberlauf", NameEN: "Wrong data type causes value overflow",
RequiredComponentTags: []string{"has_software"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M101", "M102"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 75,
ScenarioDE: "Integer-Ueberlauf in der Steuerung wandelt grossen Positivwert in negativen Wert und kehrt Bewegungsrichtung um.",
TriggerDE: "16-Bit-Variable fuer 32-Bit-Wert, fehlende Bereichspruefung, Zaehlerueberlauf",
HarmDE: "Aktor faehrt in falsche Richtung, Kollision, mechanischer Anschlag wird ueberfahren",
AffectedDE: "Bedienpersonal, Personen im Bewegungsbereich",
ZoneDE: "Verfahrbereich der Achsen, Positionierbereich",
DefaultSeverity: 4, DefaultExposure: 1,
},
{
ID: "HP804", NameDE: "Watchdog loest nicht aus", NameEN: "Watchdog fails to trigger",
RequiredComponentTags: []string{"has_software", "safety_device"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"safety_function_failure", "software_fault"},
SuggestedMeasureIDs: []string{"M104", "M105"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E14"},
Priority: 90,
ScenarioDE: "Hardware- oder Software-Watchdog erkennt Haengen der Steuerung nicht und loest keinen sicheren Zustand aus.",
TriggerDE: "Watchdog falsch konfiguriert, Programm bedient Watchdog obwohl Funktion fehlerhaft, Timer-Intervall zu lang",
HarmDE: "Steuerung bleibt in unsicherem Zustand, Sicherheitsfunktion wird nicht ausgeloest",
AffectedDE: "Bedienpersonal, alle Personen im Gefahrenbereich",
ZoneDE: "Gesamte Maschine (bei Versagen des Watchdog fehlt letzte Sicherheitsebene)",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP805", NameDE: "Deadlock in Multi-Thread-Steuerung", NameEN: "Deadlock in multi-threaded controller",
RequiredComponentTags: []string{"has_software", "programmable"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M101", "M102", "M103"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 80,
ScenarioDE: "Zwei oder mehr Tasks der Steuerung blockieren sich gegenseitig; Steuerung reagiert nicht mehr.",
TriggerDE: "Zirkulaere Ressourcen-Abhaengigkeit, verschachtelte Locks in falscher Reihenfolge",
HarmDE: "Steuerung friert ein, Aktor in letzter Position, kein Stopp-Befehl moeglich",
AffectedDE: "Bedienpersonal, Personen im Maschinenbereich",
ZoneDE: "Gesamte Maschine (alle softwaregesteuerten Funktionen eingefroren)",
DefaultSeverity: 4, DefaultExposure: 1,
},
{
ID: "HP806", NameDE: "Datenverlust nach Spannungsausfall", NameEN: "Data loss after power failure",
RequiredComponentTags: []string{"has_software"},
RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M103", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 70,
ScenarioDE: "Steuerung verliert nach Spannungsausfall Prozessdaten und startet mit falschen oder veralteten Parametern.",
TriggerDE: "Spannungsausfall waehrend Schreibvorgang, kein nichtfluechtiger Speicher, kein USV-System",
HarmDE: "Falsche Referenzposition nach Neustart, falsche Prozessparameter, unerwartete Bewegung",
AffectedDE: "Bedienpersonal beim Wiederanlauf",
ZoneDE: "Gesamte Maschine, insbesondere Referenzfahrt-Bereiche",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
ID: "HP807", NameDE: "Korrupte Firmware nach fehlerhaftem Update", NameEN: "Corrupt firmware after failed update",
RequiredComponentTags: []string{"has_software", "programmable"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"update_failure", "software_fault"},
SuggestedMeasureIDs: []string{"M138", "M146"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 80,
ScenarioDE: "Firmware-Update wird unterbrochen und hinterlaesst Steuerung mit teilweise ueberschriebener, inkonsistenter Software.",
TriggerDE: "Spannungsausfall waehrend Update, Netzwerkabbruch, inkompatible Firmware-Version",
HarmDE: "Steuerung startet nicht oder verhaelt sich undefiniert, Sicherheitsfunktionen verloren",
AffectedDE: "Wartungspersonal, Bedienpersonal nach Wiederinbetriebnahme",
ZoneDE: "Gesamte Maschine (Steuerung nicht funktionsfaehig oder unberechenbar)",
DefaultSeverity: 4, DefaultExposure: 1,
},
{
ID: "HP808", NameDE: "Falsches Programm geladen (Verwechslung)", NameEN: "Wrong program loaded (mix-up)",
RequiredComponentTags: []string{"programmable"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"configuration_error"},
SuggestedMeasureIDs: []string{"M145", "M146", "M121"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 80,
ScenarioDE: "Falsches Maschinenrezept oder SPS-Programm wird geladen; Maschine arbeitet mit falschen Parametern.",
TriggerDE: "Verwechslung der Programmnummer, fehlende Rezeptvalidierung, ungesicherte Programmauswahl",
HarmDE: "Falsche Werkzeugbewegung, Kollision, zu hohe Kraefte auf Werkstueck",
AffectedDE: "Bedienpersonal, Einrichter",
ZoneDE: "Gesamte Bearbeitungszone, alle programmierten Achsen",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP809", NameDE: "Sensorwert ausserhalb Messbereich", NameEN: "Sensor value out of measuring range",
RequiredComponentTags: []string{"sensor_part", "has_software"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M101", "M102"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 75,
ScenarioDE: "Sensor liefert Wert ausserhalb seines Messbereichs; Steuerungssoftware interpretiert ihn falsch.",
TriggerDE: "Sensor-Saettigung, Kabelbruch liefert Maximalwert, EMV-Stoerung, Sensor defekt",
HarmDE: "Falscher Regeleingriff, Sicherheitsgrenzwert wird nicht erkannt, unkontrollierter Prozess",
AffectedDE: "Bedienpersonal, Personen im Prozessbereich",
ZoneDE: "Sensorposition, gesamte Regelstrecke",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP810", NameDE: "Aktor-Ansteuerung invertiert", NameEN: "Actuator control inverted",
RequiredComponentTags: []string{"has_software", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault", "configuration_error"},
SuggestedMeasureIDs: []string{"M101", "M145"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 85,
ScenarioDE: "Aktor bewegt sich entgegengesetzt zur programmierten Richtung durch vertauschtes Vorzeichen in der Software.",
TriggerDE: "Programmierfehler, falsches Parametriervorzeichen, Kabelvertauschung nach Wartung",
HarmDE: "Kollision, Quetschung in unerwarteter Richtung, mechanische Zerstoerung",
AffectedDE: "Bedienpersonal, Einrichter bei Erstinbetriebnahme",
ZoneDE: "Gesamter Verfahrbereich des Aktors in beide Richtungen",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP811", NameDE: "Zeitstempel-Fehler fuehrt zu falscher Sequenz", NameEN: "Timestamp error causes wrong sequence",
RequiredComponentTags: []string{"has_software", "networked"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M101", "M114"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 70,
ScenarioDE: "Fehlerhafte Zeitstempel fuehren dazu, dass Prozessschritte in falscher Reihenfolge ausgefuehrt werden.",
TriggerDE: "Zeitsynchronisation verloren, NTP-Ausfall, Uhrendrift zwischen Steuerungen",
HarmDE: "Ablaufsequenz vertauscht, Werkzeugwechsel vor Spindelstopp, Presse schliesst vor Teileentnahme",
AffectedDE: "Bedienpersonal",
ZoneDE: "Alle sequenzgesteuerten Stationen und Achsen",
DefaultSeverity: 4, DefaultExposure: 1,
},
{
ID: "HP812", NameDE: "Buffer Overflow in Steuerungssoftware", NameEN: "Buffer overflow in controller software",
RequiredComponentTags: []string{"has_software"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M101", "M102"},
SuggestedEvidenceIDs: []string{"E01", "E14", "E16"},
Priority: 85,
ScenarioDE: "Pufferueberlauf in der Steuerungssoftware ueberschreibt angrenzende Speicherbereiche und fuehrt zu undefiniertem Verhalten.",
TriggerDE: "Zu langer Eingabestring, fehlende Laengenpruefung, manipulierte Kommunikation",
HarmDE: "Absturz der Steuerung, Ausfuehrung von Schadcode, Verlust der Sicherheitslogik",
AffectedDE: "Bedienpersonal, IT-Sicherheitsverantwortliche",
ZoneDE: "Steuerungshardware, Sicherheits-SPS, Kommunikationsschnittstellen",
DefaultSeverity: 4, DefaultExposure: 1,
},
{
ID: "HP813", NameDE: "Unbehandelte Exception stoppt Steuerung", NameEN: "Unhandled exception stops controller",
RequiredComponentTags: []string{"has_software", "programmable"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault"},
SuggestedMeasureIDs: []string{"M101", "M103"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 80,
ScenarioDE: "Nicht abgefangene Programmausnahme fuehrt zum Absturz der Steuerung ohne geordnete Abschaltung.",
TriggerDE: "Unerwarteter Eingabewert, Null-Pointer-Zugriff, Stack-Overflow in Rekursion",
HarmDE: "Sofortiger Steuerungsstillstand, Aktor bleibt in letzter Position, kein sicherer Zustand",
AffectedDE: "Bedienpersonal",
ZoneDE: "Gesamte Maschine (alle Funktionen fallen gleichzeitig aus)",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP814", NameDE: "Sicherheitsfunktion durch Software-Update deaktiviert", NameEN: "Safety function disabled by software update",
RequiredComponentTags: []string{"has_software", "safety_device"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"safety_function_failure", "update_failure"},
SuggestedMeasureIDs: []string{"M104", "M138", "M146"},
SuggestedEvidenceIDs: []string{"E01", "E07", "E08", "E14"},
Priority: 95,
RequiresExpertCalculation: true,
ExpertHintDE: "Validierung aller Sicherheitsfunktionen nach jedem Software-Update gemaess IEC 62443 und EN ISO 13849 durchfuehren.",
ScenarioDE: "Software-Update deaktiviert versehentlich eine Sicherheitsfunktion oder aendert Sicherheitsparameter.",
TriggerDE: "Regression im Update, Sicherheitsmodul nicht im Testplan enthalten, Parameterueberschreibung",
HarmDE: "Sicherheitsfunktion fehlt unbemerkt, voller Zugang zum Gefahrenbereich bei laufender Maschine",
AffectedDE: "Bedienpersonal, alle Personen im Gefahrenbereich",
ZoneDE: "Alle Schutzbereiche, die von der betroffenen Sicherheitsfunktion abgedeckt werden",
DefaultSeverity: 5, DefaultExposure: 1,
},
// ================================================================
// Cyber-Security (HP815-HP829)
// ================================================================
{
ID: "HP815", NameDE: "Ransomware stoppt Produktionsanlage", NameEN: "Ransomware stops production plant",
RequiredComponentTags: []string{"networked", "has_software"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M111", "M116", "M140"},
SuggestedEvidenceIDs: []string{"E01", "E16", "E19"},
Priority: 90,
ScenarioDE: "Ransomware verschluesselt Steuerungsdaten und HMI-Systeme; Produktion steht still, Notbetrieb erforderlich.",
TriggerDE: "Phishing-Email an Leitstand-PC, USB-Stick mit Malware, fehlende Netzwerksegmentierung",
HarmDE: "Produktionsausfall, bei fehlender Notsteuerung unkontrollierter Prozesszustand, wirtschaftlicher Schaden",
AffectedDE: "Bedienpersonal (Blindflug ohne HMI), IT-Verantwortliche, Produktionsleitung",
ZoneDE: "Gesamte Produktionsanlage, HMI-Stationen, Leitstand",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP816", NameDE: "Unbefugter Fernzugriff auf Steuerung", NameEN: "Unauthorized remote access to controller",
RequiredComponentTags: []string{"networked", "has_software"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M111", "M112", "M113"},
SuggestedEvidenceIDs: []string{"E01", "E16", "E17"},
Priority: 95,
ScenarioDE: "Angreifer erlangt Fernzugriff auf die SPS und kann Maschinenparameter und Sicherheitsgrenzen veraendern.",
TriggerDE: "VPN-Schwachstelle, offener Fernwartungszugang, gestohlene Zugangsdaten",
HarmDE: "Manipulation von Sicherheitsgrenzen, unkontrollierte Maschinenbewegung, Sabotage",
AffectedDE: "Bedienpersonal, gesamte Produktionsumgebung",
ZoneDE: "Fernzugangspunkte, VPN-Gateways, Remote-Desktop-Verbindungen zur Steuerung",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP817", NameDE: "Man-in-the-Middle auf PROFINET", NameEN: "Man-in-the-middle on PROFINET",
RequiredComponentTags: []string{"networked", "it_component"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access", "communication_failure"},
SuggestedMeasureIDs: []string{"M111", "M113", "M114"},
SuggestedEvidenceIDs: []string{"E01", "E16", "E17"},
Priority: 85,
ScenarioDE: "Angreifer schaltet sich in die PROFINET-Kommunikation zwischen SPS und Antrieb ein und manipuliert Sollwerte.",
TriggerDE: "Physischer Zugang zum Netzwerk, ARP-Spoofing, unverschluesselte Feldbus-Kommunikation",
HarmDE: "Falsche Sollwerte an Antriebe, manipulierte Istwerte an SPS, verdeckte Sabotage",
AffectedDE: "Bedienpersonal (bemerkt Manipulation nicht), IT-Sicherheitsverantwortliche",
ZoneDE: "PROFINET-Netzwerk, Switches, Patchpanels, Netzwerkdosen in der Produktion",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP818", NameDE: "USB-Stick mit Malware an HMI", NameEN: "USB stick with malware on HMI",
RequiredComponentTags: []string{"has_software", "user_interface"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M111", "M116"},
SuggestedEvidenceIDs: []string{"E01", "E16"},
Priority: 80,
ScenarioDE: "Kompromittierter USB-Stick wird an das HMI oder den Leitstand-PC angeschlossen und infiziert das OT-Netzwerk.",
TriggerDE: "Bediener nutzt privaten USB-Stick, Servicetechniker bringt infizierten Stick mit",
HarmDE: "Malware-Infektion des Steuerungsnetzwerks, Datenexfiltration, Produktionsstoerung",
AffectedDE: "Bedienpersonal, IT/OT-Verantwortliche",
ZoneDE: "HMI-Terminals, Leitstand-PC, alle USB-Schnittstellen in der Produktion",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP819", NameDE: "Denial-of-Service auf OPC-UA Server", NameEN: "Denial-of-service on OPC-UA server",
RequiredComponentTags: []string{"networked", "it_component"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"communication_failure"},
SuggestedMeasureIDs: []string{"M111", "M114", "M115"},
SuggestedEvidenceIDs: []string{"E01", "E16", "E17"},
Priority: 80,
ScenarioDE: "Gezielte Ueberlastung des OPC-UA Servers fuehrt zum Verlust der Prozessvisualisierung und -steuerung.",
TriggerDE: "Flut von Anfragen an den OPC-UA Endpoint, ungesicherte Discovery-Schnittstelle",
HarmDE: "Verlust der Prozessueberwachung, Bediener kann nicht eingreifen, Blindflug",
AffectedDE: "Bedienpersonal am Leitstand, SCADA-Betreiber",
ZoneDE: "OPC-UA Server, SCADA-System, Leitstand",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
ID: "HP820", NameDE: "Default-Passwort nicht geaendert", NameEN: "Default password not changed",
RequiredComponentTags: []string{"networked"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M111", "M112"},
SuggestedEvidenceIDs: []string{"E01", "E16"},
Priority: 85,
ScenarioDE: "Steuerungskomponente wird mit Werks-Standardpasswort betrieben; Angreifer erlangt mit oeffentlich bekanntem Passwort Zugriff.",
TriggerDE: "Inbetriebnahme ohne Passwortwechsel, Handbuch online verfuegbar, Shodan-Suche",
HarmDE: "Vollzugriff auf Steuerung, Manipulation von Parametern und Sicherheitsfunktionen",
AffectedDE: "Bedienpersonal, gesamte Anlage",
ZoneDE: "Login-Seite des Controllers, Web-Interface, Telnet/SSH-Zugang",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP821", NameDE: "Unverschluesselte Kommunikation SPS-HMI", NameEN: "Unencrypted communication PLC-HMI",
RequiredComponentTags: []string{"networked", "has_software"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M111", "M113"},
SuggestedEvidenceIDs: []string{"E01", "E16", "E17"},
Priority: 75,
ScenarioDE: "Kommunikation zwischen SPS und HMI erfolgt im Klartext; Angreifer kann Daten mitlesen und manipulieren.",
TriggerDE: "Legacy-Protokoll ohne Verschluesselung, fehlende TLS-Konfiguration, Modbus/TCP ohne Security",
HarmDE: "Abfangen von Prozessdaten, Einschleusung falscher Sollwerte, Industriespionage",
AffectedDE: "Bedienpersonal, Betriebsgeheimnisse",
ZoneDE: "Netzwerkstrecke SPS-HMI, Switches, Patchfelder",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP822", NameDE: "Firmware-Manipulation ueber Netzwerk", NameEN: "Firmware manipulation via network",
RequiredComponentTags: []string{"has_software", "networked"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"firmware_corruption"},
SuggestedMeasureIDs: []string{"M116", "M138", "M146"},
SuggestedEvidenceIDs: []string{"E01", "E16", "E18"},
Priority: 90,
ScenarioDE: "Angreifer laedt manipulierte Firmware ueber das Netzwerk auf Steuerungskomponente und deaktiviert Sicherheitsgrenzen.",
TriggerDE: "Fehlende Firmware-Signierung, offener Update-Port, kein Authentifizierungsmechanismus",
HarmDE: "Verdeckte Deaktivierung von Sicherheitsfunktionen, langfristige Kompromittierung",
AffectedDE: "Bedienpersonal, gesamte Anlage",
ZoneDE: "Steuerungshardware, Antriebsregler, Sicherheits-SPS, IoT-Gateways",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP823", NameDE: "Insider-Bedrohung durch verargerten Mitarbeiter", NameEN: "Insider threat by disgruntled employee",
RequiredComponentTags: []string{"has_software", "programmable"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M111", "M112", "M142"},
SuggestedEvidenceIDs: []string{"E01", "E16"},
Priority: 80,
ScenarioDE: "Mitarbeiter mit privilegiertem Zugang manipuliert absichtlich Steuerungsparameter oder Sicherheitsgrenzen.",
TriggerDE: "Kuendigung, Konflikt, fehlende Zugriffsrechte-Entzug, kein Four-Eyes-Prinzip",
HarmDE: "Gezielte Sabotage, Deaktivierung von Schutzfunktionen, Gefaehrdung von Kollegen",
AffectedDE: "Bedienpersonal, Kollegen des Insiders",
ZoneDE: "Alle Steuerungszugaenge, HMI, Engineering-Station",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP824", NameDE: "Supply-Chain-Angriff auf Steuerungskomponente", NameEN: "Supply chain attack on control component",
RequiredComponentTags: []string{"it_component", "has_software"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"unauthorized_access", "firmware_corruption"},
SuggestedMeasureIDs: []string{"M116", "M118"},
SuggestedEvidenceIDs: []string{"E01", "E18", "E19"},
Priority: 75,
ScenarioDE: "Kompromittierte Hardware oder Software wird ueber die Lieferkette in die Anlage eingebracht.",
TriggerDE: "Manipuliertes Ersatzteil, kompromittierter Open-Source-Baustein, gefaelschte Firmware vom Zulieferer",
HarmDE: "Verdeckte Hintertuer, langfristige Kompromittierung, schwer detektierbar",
AffectedDE: "Gesamte Anlage, alle Nutzer der kompromittierten Komponente",
ZoneDE: "Alle IT-Komponenten in der Anlage (SPS, IPC, Switches, Sensoren)",
DefaultSeverity: 4, DefaultExposure: 1,
},
{
ID: "HP825", NameDE: "Social Engineering verschafft Zugang zur Steuerung", NameEN: "Social engineering gains access to control system",
RequiredComponentTags: []string{"networked"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M111", "M112"},
SuggestedEvidenceIDs: []string{"E01", "E16", "E24"},
Priority: 75,
ScenarioDE: "Angreifer taeuscht Identitaet eines Servicetechnikers vor und erhaelt physischen oder logischen Zugang zur Steuerung.",
TriggerDE: "Fehlende Identitaetspruefung, Servicetechniker-Ausweis nicht verifiziert, Phishing-Anruf",
HarmDE: "Einschleusung von Malware, Manipulation der Steuerung, Datendiebstahl",
AffectedDE: "Bedienpersonal, IT-Sicherheitsverantwortliche",
ZoneDE: "Produktionshalle, Leitstand, Serverraum, VPN-Zugaenge",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP826", NameDE: "Fehlende Netzwerksegmentierung OT/IT", NameEN: "Missing network segmentation OT/IT",
RequiredComponentTags: []string{"networked", "it_component"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M111", "M113", "M140"},
SuggestedEvidenceIDs: []string{"E01", "E16", "E17"},
Priority: 85,
ScenarioDE: "OT-Netzwerk (Maschinensteuerung) und IT-Netzwerk (Buero) sind nicht getrennt; Angriff aus dem Bueonetz erreicht SPS.",
TriggerDE: "Flache Netzwerktopologie, fehlende Firewall zwischen IT und OT, gemeinsames VLAN",
HarmDE: "Laterale Bewegung von Malware in die Produktion, Ransomware erreicht SPS",
AffectedDE: "Bedienpersonal, gesamte Produktion",
ZoneDE: "Netzwerk-Uebergangspunkte IT/OT, gemeinsame Switches, SCADA-DMZ",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP827", NameDE: "Veraltete Software mit bekannten Schwachstellen", NameEN: "Outdated software with known vulnerabilities",
RequiredComponentTags: []string{"has_software"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M116", "M138"},
SuggestedEvidenceIDs: []string{"E01", "E18", "E19"},
Priority: 80,
ScenarioDE: "Steuerungssoftware oder Betriebssystem wird nicht gepatcht; bekannte CVEs sind ausnutzbar.",
TriggerDE: "Kein Patch-Management fuer OT, Hersteller liefert keine Updates, Angst vor Produktionsstoerung",
HarmDE: "Ausnutzung bekannter Schwachstellen, Uebernahme der Steuerung durch Exploit",
AffectedDE: "Bedienpersonal, IT-Sicherheitsverantwortliche, gesamte Anlage",
ZoneDE: "Alle ungepatchten Systeme (HMI-PCs, SPS-Firmware, SCADA-Server)",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP828", NameDE: "Backup-Manipulation verfaelscht Wiederherstellung", NameEN: "Backup manipulation falsifies recovery",
RequiredComponentTags: []string{"has_software", "it_component"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"firmware_corruption"},
SuggestedMeasureIDs: []string{"M116", "M142"},
SuggestedEvidenceIDs: []string{"E01", "E16"},
Priority: 70,
ScenarioDE: "Angreifer manipuliert Backup-Daten; bei Wiederherstellung wird kompromittierte Konfiguration eingespielt.",
TriggerDE: "Zugriff auf Backup-Server, fehlende Integritaetspruefung, Backup auf unsicherem Medium",
HarmDE: "Manipulierte Steuerungsparameter nach Restore, verdeckte Hintertuer in Backup",
AffectedDE: "Wartungspersonal bei Restore, anschliessend Bedienpersonal",
ZoneDE: "Backup-Server, Engineering-Station, Restore-Prozedur",
DefaultSeverity: 4, DefaultExposure: 1,
},
{
ID: "HP829", NameDE: "Ungesicherte WLAN-Verbindung zur Maschinensteuerung", NameEN: "Unsecured WiFi connection to machine control",
RequiredComponentTags: []string{"wireless", "networked"},
RequiredEnergyTags: []string{"cyber"},
GeneratedHazardCats: []string{"unauthorized_access"},
SuggestedMeasureIDs: []string{"M111", "M113", "M140"},
SuggestedEvidenceIDs: []string{"E01", "E16"},
Priority: 85,
ScenarioDE: "WLAN-Zugangspunkt zur Maschinensteuerung ist unverschluesselt oder nutzt schwache Verschluesselung (WEP/WPA).",
TriggerDE: "Standard-WLAN-Konfiguration nicht geaendert, WPA2-Passwort weitergegeben, Rogue Access Point",
HarmDE: "Uebernahme der Steuerung aus der Ferne, Man-in-the-Middle auf WLAN-Strecke",
AffectedDE: "Bedienpersonal, gesamte Anlage im WLAN-Bereich",
ZoneDE: "WLAN-Abdeckungsbereich, HMI-Tablets, IoT-Sensoren",
DefaultSeverity: 4, DefaultExposure: 2,
},
}
}
@@ -1,12 +1,9 @@
package iace
// GetFoodPkgPatterns returns hazard patterns for food processing machines
// and packaging machines (HP300-HP334).
func GetFoodPkgPatterns() []HazardPattern {
// GetFoodProcessingPatterns returns hazard patterns for food processing
// machines (HP300-HP319).
func GetFoodProcessingPatterns() []HazardPattern {
return []HazardPattern{
// ================================================================
// Food Processing Machine Patterns (HP300-HP319)
// ================================================================
{
ID: "HP300", NameDE: "Einzug in Fleischwolf", NameEN: "Draw-in at meat grinder",
RequiredComponentTags: []string{"rotating_part", "cutting_part"},
@@ -171,7 +168,7 @@ func GetFoodPkgPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 92,
ScenarioDE: "Hand des Bedieners geraet zwischen den Abfuellstempel und den Behaelter bei manuellem Nachjustieren.",
ScenarioDE: "Hand des Bedieners geraet zwischen den Abfuellstempel und den Behaelter.",
TriggerDE: "Manuelle Korrektur bei laufendem Takt, fehlende Schutzabdeckung der Stempelzone.",
HarmDE: "Quetschung der Finger oder Hand, Frakturen.",
AffectedDE: "Bedienpersonal an der Abfuellstation.",
@@ -186,7 +183,7 @@ func GetFoodPkgPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 70,
ScenarioDE: "Bediener rutscht auf nassem, fettigem oder mit Lebensmittelresten verschmutztem Boden im Produktionsbereich.",
ScenarioDE: "Bediener rutscht auf nassem, fettigem oder mit Lebensmittelresten verschmutztem Boden.",
TriggerDE: "Wasserlachen, Fettspritzer, verschuettete Lebensmittel, fehlende rutschfeste Matten.",
HarmDE: "Knochenbrueche, Prellungen, Kopfverletzungen bei Sturz auf harten Boden.",
AffectedDE: "Alle Personen im Produktionsbereich.",
@@ -201,7 +198,7 @@ func GetFoodPkgPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 96,
ScenarioDE: "Person steigt zur Inspektion oder Reinigung in einen Gaerbehaelter oder Silo und wird durch CO2 oder Sauerstoffmangel bewusstlos.",
ScenarioDE: "Person steigt in Gaerbehaelter oder Silo und wird durch CO2 oder Sauerstoffmangel bewusstlos.",
TriggerDE: "Betreten ohne Gasmessung, fehlende Belueftung, Gaerprozess produziert CO2.",
HarmDE: "Bewusstlosigkeit, Erstickungstod.",
AffectedDE: "Reinigungspersonal, Wartungspersonal.",
@@ -246,7 +243,7 @@ func GetFoodPkgPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 90,
ScenarioDE: "Heisses Fett spritzt beim Einlegen von feuchtem Gargut oder bei Ueberfuellung der Fritteuse.",
ScenarioDE: "Heisses Fett spritzt beim Einlegen von feuchtem Gargut oder Ueberfuellung der Fritteuse.",
TriggerDE: "Feuchtigkeit im Fritiergut, Ueberfuellung, defekter Temperaturbegrenzer.",
HarmDE: "Schwere Verbrennungen durch Heissoelspritzer an Haenden, Gesicht und Oberkoerper.",
AffectedDE: "Bedienpersonal, Kuechenpersonal.",
@@ -262,7 +259,7 @@ func GetFoodPkgPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E24"},
Priority: 82,
ScenarioDE: "Bediener wechselt Messer oder Klingen an Schneidemaschine ohne Schnittschutzhandschuhe.",
ScenarioDE: "Bediener wechselt Messer an Schneidemaschine ohne Schnittschutzhandschuhe.",
TriggerDE: "Abrutschen beim Loesen der Klinge, scharfe Kanten, oelige Haende.",
HarmDE: "Tiefe Schnittwunden an Fingern und Handflaeche, Sehnenverletzung.",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
@@ -310,240 +307,12 @@ func GetFoodPkgPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E20", "E24"},
Priority: 75,
ScenarioDE: "Bediener arbeitet laengere Zeit in Tiefkuehlraum (-18C bis -25C) und erleidet Unterkuehlung oder Erfrierung.",
TriggerDE: "Fehlende Kaelteschutzkleidung, Eingeschlossensein im Tiefkuehlraum, defekte Notentriegelung.",
ScenarioDE: "Bediener arbeitet laengere Zeit in Tiefkuehlraum und erleidet Unterkuehlung oder Erfrierung.",
TriggerDE: "Fehlende Kaelteschutzkleidung, Eingeschlossensein, defekte Notentriegelung.",
HarmDE: "Erfrierungen an Haenden und Fuessen, Unterkuehlung, Bewusstlosigkeit.",
AffectedDE: "Lagerpersonal, Bedienpersonal, Kommissionierer.",
ZoneDE: "Tiefkuehlraum, Vorraum, Uebergangszone.",
DefaultSeverity: 4, DefaultExposure: 3,
},
// ================================================================
// Packaging Machine Patterns (HP320-HP334)
// ================================================================
{
ID: "HP320", NameDE: "Quetschen im Siegelbereich", NameEN: "Crushing in sealing area",
RequiredComponentTags: []string{"crush_point", "high_temperature"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"mechanical_hazard", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 93,
ScenarioDE: "Bediener greift in den Siegelbereich der Verpackungsmaschine waehrend des Siegeltakts.",
TriggerDE: "Manuelle Korrektur von Folienversatz, Manipulation der Schutzabdeckung, Stoerungsbeseitigung.",
HarmDE: "Quetschverletzung und Verbrennung der Finger durch heisse Siegelbacken.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Siegelstation, Bereich zwischen Ober- und Untersiegelbacke.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP321", NameDE: "Einzug an Folienwickler", NameEN: "Draw-in at film wrapper",
RequiredComponentTags: []string{"rotating_part", "entanglement_risk"},
RequiredEnergyTags: []string{"rotational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005", "M054"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 90,
ScenarioDE: "Bediener wird mit Kleidung oder Handschuhen in die rotierenden Walzen des Folienwicklers eingezogen.",
TriggerDE: "Loser Aermel, Handschuh, Haarstraehnchen bei laufendem Wickler, fehlende Einzugssicherung.",
HarmDE: "Einzugsverletzung, Quetschung der Hand, Strangulation durch Folie.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Folieneinlauf, Wickelachse, Umlenkwalzen.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP322", NameDE: "Schneidverletzung an Trennmesser", NameEN: "Cut injury at separating blade",
RequiredComponentTags: []string{"cutting_part", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 88,
ScenarioDE: "Trennmesser der Verpackungsmaschine schneidet Folie/Karton und ist durch Oeffnung zugaenglich.",
TriggerDE: "Manuelle Entfernung von Folienresten, fehlende Abdeckung des Messerbereichs.",
HarmDE: "Schnittverletzung an Fingern und Haenden, Sehnendurchtrennung.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Messerstation, Folientrennbereich, Kartonschneider.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP323", NameDE: "Quetschen durch Palettierer", NameEN: "Crushing by palletizer",
RequiredComponentTags: []string{"moving_part", "high_force", "crush_point"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 95,
ScenarioDE: "Palettierer bewegt schwere Gebinde und kann Personen im Arbeitsraum quetschen.",
TriggerDE: "Betreten des Palettiererbereichs bei laufendem Betrieb, defekte Zugangsabsicherung.",
HarmDE: "Schwere Quetschverletzungen, Knochenbrueche, lebensbedrohliche Thoraxkompression.",
AffectedDE: "Bedienpersonal, Logistikmitarbeiter, Wartungspersonal.",
ZoneDE: "Palettierer-Arbeitsraum, Zugangsbereich, Palettenwechselzone.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP324", NameDE: "Heissluft-Verbrennung bei Schrumpffolie", NameEN: "Hot air burn at shrink film tunnel",
RequiredComponentTags: []string{"high_temperature"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 80,
ScenarioDE: "Bediener greift in den Schrumpftunnel, um verklemmte Packungen zu entfernen.",
TriggerDE: "Produktstau im Tunnel, fehlender Tunnelstopp bei Oeffnen der Wartungsklappe.",
HarmDE: "Verbrennungen an Haenden und Unterarmen durch Heissluft (180-250 Grad C).",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
ZoneDE: "Schrumpftunnel-Innenraum, Auslaufoeffnung, Wartungsklappe.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP325", NameDE: "Umreifungsband schneidet in Hand", NameEN: "Strapping band cuts into hand",
RequiredComponentTags: []string{"moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E24"},
Priority: 75,
ScenarioDE: "Bediener greift in den Bandspannbereich der Umreifungsmaschine oder Band reisst unter Spannung.",
TriggerDE: "Handeingriff bei laufendem Spannvorgang, Bandbruch unter Spannung.",
HarmDE: "Tiefe Schnittwunde durch Stahlband, Quetschung im Spannkopf.",
AffectedDE: "Bedienpersonal, Verpackungspersonal.",
ZoneDE: "Spannkopf der Umreifungsmaschine, Bandlaufbereich.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP326", NameDE: "Absturzgefahr von Palette", NameEN: "Fall hazard from pallet stack",
RequiredComponentTags: []string{"gravity_risk", "structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M051", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 78,
ScenarioDE: "Palettierte Gebinde kippen um oder Kartons fallen von der Palette auf umstehende Personen.",
TriggerDE: "Instabiles Stapelbild, fehlende Sicherungsfolie, Anfahren der Palette mit Stapler.",
HarmDE: "Prellungen, Knochenbrueche durch herabfallende Kartons, Quetschung unter Palette.",
AffectedDE: "Logistikmitarbeiter, Bedienpersonal, Staplerfahrer.",
ZoneDE: "Palettenstellplatz, Auslaufbereich der Verpackungslinie.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP327", NameDE: "Laerm durch Druckluft-Auswurf", NameEN: "Noise from compressed air ejection",
RequiredComponentTags: []string{"noise_source", "pneumatic_part"},
RequiredEnergyTags: []string{"pneumatic_pressure"},
GeneratedHazardCats: []string{"noise_vibration"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E12", "E20"},
Priority: 60,
ScenarioDE: "Druckluftduesen zum Ausblasen oder Auswerfen von Packungen erzeugen Impulsspitzen ueber 95 dB(A).",
TriggerDE: "Dauerbetrieb ohne Schallschutzhaube, defekte Schalldaempfer an Auswurfduesen.",
HarmDE: "Laermschwerhoerigkeit, Tinnitus bei dauerhafter Exposition.",
AffectedDE: "Bedienpersonal, Personen in angrenzenden Arbeitsbereichen.",
ZoneDE: "Auswurfstation, Druckluftduesen, Verpackungsstrecke.",
DefaultSeverity: 3, DefaultExposure: 5,
},
{
ID: "HP328", NameDE: "Quetschen an Kartonaufrichter", NameEN: "Crushing at carton erector",
RequiredComponentTags: []string{"crush_point", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 85,
ScenarioDE: "Bediener greift in den Faltmechanismus des Kartonaufrichters, um verklemmte Zuschnitte zu loesen.",
TriggerDE: "Kartonstau, manuelle Beseitigung bei laufendem Takt, defekte Schutzabdeckung.",
HarmDE: "Quetschung der Finger zwischen Faltklappen und Gegendruckleiste.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Faltstation, Klebstoffauftrag, Zuschnittmagazin.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP329", NameDE: "Klebstoffverbrennung bei Heissleimanlage", NameEN: "Hot melt adhesive burn",
RequiredComponentTags: []string{"high_temperature"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 78,
ScenarioDE: "Heisser Klebstoff (180-200 Grad C) spritzt beim Nachfuellen oder bei Duesen-Verstopfung.",
TriggerDE: "Nachfuellen des Klebstoffbehaelters, Reinigen verstopfter Duesen, Leitungsbruch.",
HarmDE: "Schwere Verbrennungen an Haenden und Gesicht durch Heisskleber.",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
ZoneDE: "Klebstoffschmelzer, Duesenbereich, Schlauchleitungen.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP330", NameDE: "Einzug an Etikettiermaschine", NameEN: "Draw-in at labeling machine",
RequiredComponentTags: []string{"rotating_part", "entanglement_risk"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 75,
ScenarioDE: "Bediener greift in die laufende Etikettiermaschine, um schiefe Etiketten zu korrigieren.",
TriggerDE: "Manuelle Korrektur bei laufendem Betrieb, Einzug durch Etikettenmaterial.",
HarmDE: "Einzug von Fingern in Walzenspalt, Quetschung, Hautabschuerfungen.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Etikettenausgabe, Gegendruckwalze, Abwickler.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP331", NameDE: "Ergonomische Belastung bei Handsortierung", NameEN: "Ergonomic strain during manual sorting",
RequiredComponentTags: []string{"ergonomic", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"ergonomic"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 50,
ScenarioDE: "Bediener sortiert fehlerhafte Packungen manuell von der laufenden Linie ab.",
TriggerDE: "Hohe Taktrate erfordert schnelle, repetitive Greifbewegungen ueber laengere Schicht.",
HarmDE: "Sehnenscheidenentzuendung, Schulter-Nacken-Syndrom, Rueckenschmerzen.",
AffectedDE: "Sortierpersonal, Kontrollpersonal.",
ZoneDE: "Kontrollstation, Auswurfband, Nacharbeitsplatz.",
DefaultSeverity: 2, DefaultExposure: 5,
},
{
ID: "HP332", NameDE: "Druckluft-Verletzung durch offene Leitung", NameEN: "Compressed air injury from open line",
RequiredComponentTags: []string{"pneumatic_part", "high_pressure"},
RequiredEnergyTags: []string{"pneumatic_pressure"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M051", "M131"},
SuggestedEvidenceIDs: []string{"E06", "E11"},
Priority: 80,
ScenarioDE: "Druckluftschlauch reisst ab oder wird ungesichert getrennt und peitzscht unkontrolliert umher.",
TriggerDE: "Defekte Schlauchkupplung, Schlauchalterung, Druckluft-Peitscheffekt.",
HarmDE: "Augenverletzung durch Druckluftstrahl, Embolie bei Hautkontakt unter hohem Druck.",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
ZoneDE: "Druckluftversorgung, Schlauchleitungen, Wartungsbereich.",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP333", NameDE: "Quetschen durch Deckelzufuehrung", NameEN: "Crushing by lid feeder",
RequiredComponentTags: []string{"crush_point", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 82,
ScenarioDE: "Bediener greift in den Deckelsortierer oder die Deckelzufuehrung, um verklemmte Deckel zu loesen.",
TriggerDE: "Deckelstau in der Zufuehrung, manuelle Beseitigung bei laufendem Takt.",
HarmDE: "Quetschung der Finger zwischen Deckeln und Fuehrungsschienen.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Deckelsortierer, Zufuehrungskanal, Verschliessstation.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP334", NameDE: "Verletzung durch unkontrolliert oeffnende Schutzhaube", NameEN: "Injury from uncontrolled guard opening",
RequiredComponentTags: []string{"interlocked", "gravity_risk"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M051", "M054"},
SuggestedEvidenceIDs: []string{"E08"},
Priority: 70,
ScenarioDE: "Schwere Schutzhaube faellt unkontrolliert zu oder schlaegt beim Oeffnen gegen den Bediener.",
TriggerDE: "Defekte Gasdruckfeder, fehlende Arretierung der geoeffneten Haube.",
HarmDE: "Quetschung der Haende oder Kopfverletzung durch zufallende Haube.",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
ZoneDE: "Schutzhaube, Wartungsoeffnung, Scharnierbereiche.",
DefaultSeverity: 3, DefaultExposure: 3,
},
}
}
@@ -1,12 +1,8 @@
package iace
// GetLaserMedicalPatterns returns hazard patterns for laser machines,
// medical devices (IEC 60601 context), and pressure equipment (HP335-HP374).
func GetLaserMedicalPatterns() []HazardPattern {
// GetLaserPatterns returns hazard patterns for laser machines (HP335-HP349).
func GetLaserPatterns() []HazardPattern {
return []HazardPattern{
// ================================================================
// Laser Machine Patterns (HP335-HP349)
// ================================================================
{
ID: "HP335", NameDE: "Augenverletzung durch Laserstrahlung (Klasse 3B/4)", NameEN: "Eye injury from laser radiation (Class 3B/4)",
RequiredComponentTags: []string{"radiation_risk"},
@@ -48,7 +44,7 @@ func GetLaserMedicalPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M051", "M054", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E20"},
Priority: 92,
ScenarioDE: "Laserstrahl entzuendet brennbares Material im Bearbeitungsraum (Papier, Holz, Kunststoff, Loesungsmittel).",
ScenarioDE: "Laserstrahl entzuendet brennbares Material im Bearbeitungsraum (Papier, Holz, Kunststoff).",
TriggerDE: "Ueberlauf des Strahls ueber Werkstueckkante, brennbares Reinigungsmittel im Arbeitsraum.",
HarmDE: "Brandverletzungen, Rauchgasvergiftung, Sachschaeden am Geraet.",
AffectedDE: "Bedienpersonal, alle Personen im Gebaeude.",
@@ -63,7 +59,7 @@ func GetLaserMedicalPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M001", "M005", "M054"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 95,
ScenarioDE: "Laserstrahl reflektiert an poliertem oder spiegelndem Werkstueck und trifft Personen ausserhalb der geplanten Schutzzone.",
ScenarioDE: "Laserstrahl reflektiert an poliertem Werkstueck und trifft Personen ausserhalb der Schutzzone.",
TriggerDE: "Neues Werkstueck mit unbekannter Reflexion, spiegelndes Werkzeug im Strahlengang.",
HarmDE: "Augenverletzung, Hautverbrennung durch unerwartete Reflexion.",
AffectedDE: "Personen im erweiterten Laserbereich, Besucher.",
@@ -111,7 +107,7 @@ func GetLaserMedicalPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 90,
ScenarioDE: "CNC-Achsen der Laseranlage bewegen Bearbeitungskopf oder Werkstuecktisch und quetschen Person im Arbeitsraum.",
ScenarioDE: "CNC-Achsen der Laseranlage bewegen Bearbeitungskopf oder Werkstuecktisch und quetschen Person.",
TriggerDE: "Betreten des Bearbeitungsraums bei Referenzfahrt oder Programmablauf, defekte Schutztuer.",
HarmDE: "Quetschverletzungen an Haenden oder Oberkoerper, Frakturen.",
AffectedDE: "Einrichter, Wartungspersonal.",
@@ -126,7 +122,7 @@ func GetLaserMedicalPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E24"},
Priority: 72,
ScenarioDE: "Streulicht oder Prozessleuchten am Bearbeitungspunkt blenden den Bediener und fuehren zu Fehlbedienung.",
ScenarioDE: "Streulicht oder Prozessleuchten am Bearbeitungspunkt blenden den Bediener.",
TriggerDE: "Fehlende Blendschutzfilter, Beobachtung des Bearbeitungspunkts ohne Filter.",
HarmDE: "Temporaere Blendung, Fehlbedienung, bei Langzeitexposition Netzhautschaedigung.",
AffectedDE: "Bedienpersonal, Einrichter.",
@@ -174,9 +170,9 @@ func GetLaserMedicalPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 88,
ScenarioDE: "Schutzgas (Stickstoff, Argon) verdraengt Sauerstoff in geschlossener Laserkabine oder Bearbeitungsraum.",
ScenarioDE: "Schutzgas (Stickstoff, Argon) verdraengt Sauerstoff in geschlossener Laserkabine.",
TriggerDE: "Gasleckage, Betreten der Kabine ohne Belueftung, defekter Sauerstoffsensor.",
HarmDE: "Bewusstlosigkeit, Erstickungstod bei Sauerstoffkonzentration unter 17%.",
HarmDE: "Bewusstlosigkeit, Erstickungstod bei Sauerstoffkonzentration unter 17 Prozent.",
AffectedDE: "Wartungspersonal, Bedienpersonal bei Reinigung.",
ZoneDE: "Laserkabine, Bearbeitungskammer, Gasversorgungsbereich.",
DefaultSeverity: 5, DefaultExposure: 2,
@@ -189,7 +185,7 @@ func GetLaserMedicalPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E21"},
Priority: 80,
ScenarioDE: "Verschmutzte Fokussierlinse absorbiert Laserenergie, ueberhitzt und kann bersten oder Strahl unkontrolliert ablenken.",
ScenarioDE: "Verschmutzte Fokussierlinse absorbiert Laserenergie, ueberhitzt und kann bersten.",
TriggerDE: "Versaeumte Linsenreinigung, Spritzerablagerung auf der Optik, Schutzglas fehlt.",
HarmDE: "Verbrennungen durch Glasbruch, Linsenbrand, unkontrollierter Strahlaustritt.",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
@@ -204,7 +200,7 @@ func GetLaserMedicalPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M001", "M005", "M106"},
SuggestedEvidenceIDs: []string{"E01", "E07", "E08"},
Priority: 96,
ScenarioDE: "Laserstrahl tritt durch Spalt, Riss oder defekte Tuerverriegelung aus der Schutzeinhausung aus.",
ScenarioDE: "Laserstrahl tritt durch Spalt oder defekte Tuerverriegelung aus der Schutzeinhausung aus.",
TriggerDE: "Mechanische Beschaedigung der Kabine, manipulierter Tuerschalter, fehlende Wartung.",
HarmDE: "Augenverletzung, Hautverbrennung bei umstehenden Personen.",
AffectedDE: "Alle Personen in der Umgebung der Laseranlage.",
@@ -219,7 +215,7 @@ func GetLaserMedicalPatterns() []HazardPattern {
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E12", "E20"},
Priority: 60,
ScenarioDE: "Hochgeschwindigkeits-Laserschneiden erzeugt hohe Schallpegel durch Schneidgas und Materialverdampfung.",
ScenarioDE: "Hochgeschwindigkeits-Laserschneiden erzeugt hohe Schallpegel durch Schneidgas.",
TriggerDE: "Offene oder schlecht gedaemmte Kabine, Schneiden duenner Bleche mit hoher Gasstroemung.",
HarmDE: "Laermschwerhoerigkeit, Tinnitus bei Langzeitexposition.",
AffectedDE: "Bedienpersonal, Personen in angrenzenden Bereichen.",
@@ -241,410 +237,5 @@ func GetLaserMedicalPatterns() []HazardPattern {
ZoneDE: "Laserquellen-Gehaeuse, Kondensatoren, Pumpendioden-Versorgung.",
DefaultSeverity: 4, DefaultExposure: 2,
},
// ================================================================
// Medical Device Patterns — IEC 60601 context (HP350-HP364)
// ================================================================
{
ID: "HP350", NameDE: "Elektrischer Schlag am Patienten (Ableitstrom)", NameEN: "Electric shock to patient (leakage current)",
RequiredComponentTags: []string{"electrical_part"},
RequiredEnergyTags: []string{"electrical_energy"},
GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M004"},
SuggestedEvidenceIDs: []string{"E04", "E10"},
Priority: 97,
RequiresExpertCalculation: true,
ExpertHintDE: "Ableitstrom-Messung nach IEC 60601-1 Abschnitt 8.7 erforderlich.",
ExpertHintEN: "Leakage current measurement per IEC 60601-1 clause 8.7 required.",
ScenarioDE: "Patient wird durch ueberhoeahten Ableitstrom des Medizingeraets gefaehrdet.",
TriggerDE: "Defekte Isolierung, beschaedigtes Netzkabel, fehlender Schutzleiter, Single-Fault-Condition.",
HarmDE: "Herzkammerflimmern, Verbrennungen an Elektroden-Kontaktstellen, Tod.",
AffectedDE: "Patienten (insbesondere mit Herzkatheter), Anwender.",
ZoneDE: "Patientenanschlussteile, Elektrodenkontakte, Geraeteoberflaeche.",
DefaultSeverity: 5, DefaultExposure: 4,
},
{
ID: "HP351", NameDE: "Fehlfunktion des Defibrillators", NameEN: "Defibrillator malfunction",
RequiredComponentTags: []string{"electrical_part", "has_software"},
RequiredEnergyTags: []string{"electrical_energy", "stored_energy"},
GeneratedHazardCats: []string{"electrical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M003", "M106"},
SuggestedEvidenceIDs: []string{"E01", "E07", "E10", "E14"},
Priority: 98,
RequiresExpertCalculation: true,
ExpertHintDE: "Funktionale Sicherheit nach IEC 62304 + IEC 60601-2-4 validieren.",
ExpertHintEN: "Functional safety per IEC 62304 + IEC 60601-2-4 must be validated.",
ScenarioDE: "Defibrillator gibt keinen Schock ab, gibt falschen Schock ab, oder liefert falsche Energie.",
TriggerDE: "Softwarefehler in der Rhythmusanalyse, defekter Energiespeicher, Elektrodenversagen.",
HarmDE: "Tod durch unterlassene Defibrillation, Myokardschaedigung durch falsche Energie.",
AffectedDE: "Patienten mit Herzstillstand.",
ZoneDE: "Patientenkontakt, Elektrodenpositionen.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP352", NameDE: "Ueberhitzung durch HF-Chirurgiegeraet", NameEN: "Overheating by HF surgical device",
RequiredComponentTags: []string{"electrical_part", "high_temperature"},
RequiredEnergyTags: []string{"electrical_energy", "thermal"},
GeneratedHazardCats: []string{"thermal_hazard", "electrical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M054"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E10"},
Priority: 93,
ScenarioDE: "HF-Chirurgiegeraet erzeugt unkontrolliert Waerme an unbeabsichtigter Stelle am Patienten.",
TriggerDE: "Defekte Neutralelektrode, zu kleine Kontaktflaeche, kapazitive Kopplung an Metallimplantaten.",
HarmDE: "Verbrennungen dritten Grades an Neutralelektrode, Gewebeschaedigung im OP-Feld.",
AffectedDE: "Patienten unter Operation.",
ZoneDE: "Neutralelektroden-Position, OP-Feld, Beruehrungspunkte mit Metallobjekten.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP353", NameDE: "Strahlenexposition am CT-Scanner", NameEN: "Radiation exposure at CT scanner",
RequiredComponentTags: []string{"radiation_risk"},
RequiredEnergyTags: []string{"radiation"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 90,
RequiresExpertCalculation: true,
ExpertHintDE: "Dosis-Flaechenprodukt und Effektivdosis muessen berechnet werden. StrlSchG/RoV.",
ExpertHintEN: "Dose-area product and effective dose must be calculated. Radiation protection regulations.",
ScenarioDE: "Patient oder Personal wird einer unnoetigen oder ueberhoehten Roentgendosis ausgesetzt.",
TriggerDE: "Wiederholte Scans, falsche Protokollwahl, defekte Dosisautomatik, fehlende Bleischuerze.",
HarmDE: "Strahleninduzierter Krebs bei Langzeitexposition, Hautroetung bei Hochdosis-CT.",
AffectedDE: "Patienten, radiologisches Personal.",
ZoneDE: "CT-Gantry, Untersuchungsraum, Bedienerplatz bei defektem Strahlenschutz.",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP354", NameDE: "Fehlalarm fuehrt zu falscher Behandlung", NameEN: "False alarm leads to wrong treatment",
RequiredComponentTags: []string{"sensor_part", "has_software"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"sensor_fault", "software_fault"},
SuggestedMeasureIDs: []string{"M106", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 88,
ScenarioDE: "Patientenmonitor zeigt falschen Alarm an (z.B. falsche Herzfrequenz), Arzt handelt darauf basierend.",
TriggerDE: "Defekter Sensor, Bewegungsartefakte, Softwarefehler in der Signalverarbeitung.",
HarmDE: "Falsche Medikation, unnoetiger Eingriff, verzoegerte Behandlung bei echtem Ereignis.",
AffectedDE: "Patienten, behandelndes aerztliches Personal.",
ZoneDE: "Patientenmonitor, Intensivstation, OP-Saal.",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP355", NameDE: "Infektionsgefahr durch mangelhafte Sterilisation", NameEN: "Infection risk from insufficient sterilization",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E20", "E21"},
Priority: 92,
ScenarioDE: "Medizingeraet oder Zubehoer ist nach Aufbereitung nicht steril und uebertraegt Keime auf den Patienten.",
TriggerDE: "Ungenuegender Sterilisationszyklus, konstruktive Totzonen, nicht autoklavierbares Material.",
HarmDE: "Postoperative Infektion, Sepsis, Multiorganversagen.",
AffectedDE: "Patienten, insbesondere immunsupprimierte.",
ZoneDE: "Patientenberuehrende Flaechen, Hohlraeume, Schlauchanschluesse.",
DefaultSeverity: 5, DefaultExposure: 3,
},
{
ID: "HP356", NameDE: "Mechanisches Versagen des OP-Tischs", NameEN: "Mechanical failure of operating table",
RequiredComponentTags: []string{"moving_part", "hydraulic_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M051"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E21"},
Priority: 90,
ScenarioDE: "OP-Tisch senkt sich unkontrolliert oder kippt waehrend des Eingriffs.",
TriggerDE: "Hydraulikleckage, mechanisches Versagen der Verriegelung, Ueberlast.",
HarmDE: "Sturz des Patienten vom Tisch, Verletzung durch chirurgische Instrumente bei unkontrollierter Bewegung.",
AffectedDE: "Patienten waehrend Operation, OP-Personal.",
ZoneDE: "OP-Tisch, Saeulenmechanismus, Kopf- und Beinteile.",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP357", NameDE: "EMV-Stoerung anderer Geraete", NameEN: "EMC interference with other devices",
RequiredComponentTags: []string{"electrical_part", "networked"},
RequiredEnergyTags: []string{"electromagnetic"},
GeneratedHazardCats: []string{"emc_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M004", "M106"},
SuggestedEvidenceIDs: []string{"E01", "E10"},
Priority: 85,
ScenarioDE: "Elektromagnetische Stoerstrahlung eines Medizingeraets beeinflusst andere lebenserhaltende Geraete im Raum.",
TriggerDE: "Fehlende EMV-Pruefung, defekte Schirmung, Betrieb ausserhalb spezifizierter Umgebung.",
HarmDE: "Fehlfunktion von Beatmungsgeraet, Infusionspumpe oder Patientenmonitor.",
AffectedDE: "Patienten an lebenserhaltenden Geraeten.",
ZoneDE: "Intensivstation, OP-Saal, Notaufnahme.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP358", NameDE: "Softwarefehler in Dosierungssystem", NameEN: "Software error in dosing system",
RequiredComponentTags: []string{"has_software", "programmable"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M106"},
SuggestedEvidenceIDs: []string{"E01", "E07", "E14"},
Priority: 97,
RequiresExpertCalculation: true,
ExpertHintDE: "Software-Sicherheitsklasse nach IEC 62304 bestimmen. SOUP-Analyse erforderlich.",
ExpertHintEN: "Software safety class per IEC 62304 must be determined. SOUP analysis required.",
ScenarioDE: "Infusionspumpe oder Spritzenantrieb dosiert aufgrund eines Softwarefehlers eine falsche Medikamentenmenge.",
TriggerDE: "Softwarebug in der Dosisberechnung, Rundungsfehler, unbehandelte Ausnahme.",
HarmDE: "Ueberdosierung: Vergiftung, Herzstillstand. Unterdosierung: Therapieversagen.",
AffectedDE: "Patienten, insbesondere bei hochpotenten Medikamenten.",
ZoneDE: "Infusionspumpe, Spritzenantrieb, Medikamenten-Managementsystem.",
DefaultSeverity: 5, DefaultExposure: 4,
},
{
ID: "HP359", NameDE: "Patientenfall vom Krankenbett", NameEN: "Patient fall from hospital bed",
RequiredComponentTags: []string{"gravity_risk", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M051", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 80,
ScenarioDE: "Patient stuerzt vom elektrisch verstellbaren Krankenbett durch Fehlfunktion der Seitensicherung oder unkontrollierte Bewegung.",
TriggerDE: "Defekte Seitenverriegelung, unbeabsichtigte Betaetigung der Fernbedienung, Kippsicherung versagt.",
HarmDE: "Knochenbrueche (Huefte, Schaedel), Prellungen, bei aelteren Patienten lebensbedrohlich.",
AffectedDE: "Patienten, insbesondere desorientierte oder sedierte.",
ZoneDE: "Bettseitenschutz, Kopf-/Fussteil, gesamte Liegeoberflaeche.",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP360", NameDE: "Ueberhitzung tragbarer Geraetebatterie", NameEN: "Overheating of portable device battery",
RequiredComponentTags: []string{"electrical_part"},
RequiredEnergyTags: []string{"stored_energy", "thermal"},
GeneratedHazardCats: []string{"thermal_hazard", "electrical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M054"},
SuggestedEvidenceIDs: []string{"E01", "E10"},
Priority: 85,
ScenarioDE: "Lithium-Akku eines tragbaren Medizingeraets ueberhitzt und kann thermisch durchgehen.",
TriggerDE: "Defektes Ladegeraet, beschaedigter Akku, Ueberladen, Kurzschluss.",
HarmDE: "Verbrennungen, toxische Rauchgase, Brand im Patientenumfeld.",
AffectedDE: "Patienten, Pflegepersonal.",
ZoneDE: "Geraetegehaeuse, Ladestation, Patientennaeah.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP361", NameDE: "Fehlerhafte Anzeige am Patientenmonitor", NameEN: "Erroneous display on patient monitor",
RequiredComponentTags: []string{"user_interface", "has_software"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"hmi_error", "software_fault"},
SuggestedMeasureIDs: []string{"M106", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 88,
ScenarioDE: "Patientenmonitor zeigt falsche Vitalwerte an, aerztliches Personal trifft Entscheidungen auf falscher Grundlage.",
TriggerDE: "Displayfehler, Signalverarbeitungsfehler, defekter Sensoreingang.",
HarmDE: "Verzoegerte Erkennung kritischer Zustaende, falsche Therapieentscheidung.",
AffectedDE: "Patienten, aerztliches Personal.",
ZoneDE: "Monitoranzeige, Alarmeinstellung, Sensoranbindung.",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP362", NameDE: "Bewegungseinschraenkung in MRT-Roehre", NameEN: "Movement restriction in MRI bore",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{"electromagnetic"},
GeneratedHazardCats: []string{"ergonomic", "material_environmental"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E24"},
Priority: 72,
ScenarioDE: "Patient erleidet Panikattacke in enger MRT-Roehre oder kann bei Geraeteausfall nicht schnell evakuiert werden.",
TriggerDE: "Klaustrophobie, laengere Untersuchungsdauer, Defekt der Patientenliege bei Evakuierung.",
HarmDE: "Panikbedingte Verletzungen, Aspiration bei sediertem Patient, verzoegerte Rettung.",
AffectedDE: "Patienten, insbesondere klaustrophobische oder sedierte.",
ZoneDE: "MRT-Bore, Patientenliege, Zugangsbereich.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP363", NameDE: "Ferromagnetischer Gegenstand als MRT-Projektil", NameEN: "Ferromagnetic object as MRI projectile",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{"electromagnetic"},
GeneratedHazardCats: []string{"mechanical_hazard", "material_environmental"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E24", "E25"},
Priority: 96,
ScenarioDE: "Ferromagnetischer Gegenstand wird vom MRT-Magnetfeld angezogen und zum Projektil beschleunigt.",
TriggerDE: "Nicht detektiertes ferromagnetisches Werkzeug, Rollstuhl, Sauerstoffflasche im MRT-Raum.",
HarmDE: "Schwere Quetsch- und Schlagverletzungen, Schaedelfraktur, toedliche Verletzung.",
AffectedDE: "Patienten, Personal, Besucher im MRT-Raum.",
ZoneDE: "MRT-Raum, insbesondere Eingangsbereich und Bore-Zentrum.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP364", NameDE: "Quenchgefahr bei supraleitendem MRT-Magnet", NameEN: "Quench hazard at superconducting MRI magnet",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{"electromagnetic", "stored_energy"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M051", "M054", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 90,
ScenarioDE: "Unkontrollierter Helium-Quench des supraleitenden MRT-Magneten fuellt Raum mit Gas.",
TriggerDE: "Kuehlfehler, Vibration, absichtlicher Notquench ohne Evakuierung, Versagen des Quench-Ventils.",
HarmDE: "Erstickung durch Sauerstoffverdraengung, Kaelteverbrennungen, Druckwelle im geschlossenen Raum.",
AffectedDE: "Patienten, Personal im MRT-Raum.",
ZoneDE: "MRT-Raum, Quench-Rohrleitung, angrenzende Raeume bei Ventilversagen.",
DefaultSeverity: 5, DefaultExposure: 1,
},
// ================================================================
// Pressure Equipment Patterns (HP365-HP374)
// ================================================================
{
ID: "HP365", NameDE: "Bersten eines Druckbehaelters", NameEN: "Bursting of a pressure vessel",
RequiredComponentTags: []string{"high_pressure", "structural_part"},
RequiredEnergyTags: []string{"stored_energy"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M051", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E11"},
Priority: 98,
RequiresExpertCalculation: true,
ExpertHintDE: "Berechnung nach AD 2000 oder EN 13445 erforderlich. Wiederkehrende Pruefung nach BetrSichV.",
ExpertHintEN: "Calculation per AD 2000 or EN 13445 required. Periodic inspection per pressure equipment directive.",
ScenarioDE: "Druckbehaelter versagt katastrophal und zerlegt sich in Fragmente.",
TriggerDE: "Ueberdruck, Materialermuedung, Korrosion, fehlendes oder blockiertes Sicherheitsventil.",
HarmDE: "Toedliche Verletzung durch Druckwelle und Fragmentwurf, schwere Verbrennungen.",
AffectedDE: "Alle Personen im Umkreis von 50+ Metern, je nach Behaeltergroesse.",
ZoneDE: "Behaelter, Aufstellungsraum, angrenzende Arbeitsbereiche.",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP366", NameDE: "Dampfaustritt an undichter Flanschverbindung", NameEN: "Steam leak at flanged joint",
RequiredComponentTags: []string{"high_pressure", "high_temperature"},
RequiredEnergyTags: []string{"thermal", "stored_energy"},
GeneratedHazardCats: []string{"thermal_hazard", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M054", "M131"},
SuggestedEvidenceIDs: []string{"E08", "E11"},
Priority: 90,
ScenarioDE: "Heisser Dampf tritt aus einer undichten Flanschverbindung aus und trifft Personen im Nahbereich.",
TriggerDE: "Dichtungsversagen, ungleichmaessig angezogene Schrauben, thermische Ausdehnung.",
HarmDE: "Schwere Verbruehungen, unsichtbarer Dampfstrahl bei hohem Druck besonders gefaehrlich.",
AffectedDE: "Wartungspersonal, Bedienpersonal.",
ZoneDE: "Flanschverbindungen, Ventile, Rohrleitungsfuehrung.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP367", NameDE: "Sicherheitsventil oeffnet nicht", NameEN: "Safety valve fails to open",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{"stored_energy"},
GeneratedHazardCats: []string{"safety_function_failure", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M106", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E11"},
Priority: 97,
RequiresExpertCalculation: true,
ExpertHintDE: "SIL-Nachweis fuer Druckbegrenzung erforderlich. Pruefzyklen des Sicherheitsventils festlegen.",
ExpertHintEN: "SIL verification for pressure limitation required. Inspection cycles for safety valve must be defined.",
ScenarioDE: "Sicherheitsventil ist blockiert oder defekt und oeffnet bei Ueberdruck nicht.",
TriggerDE: "Korrosion, Verschmutzung, fehlende wiederkehrende Pruefung, falsche Einstellung.",
HarmDE: "Ueberdruck bis zum Berstversagen des Behaelters, toedliche Folgen.",
AffectedDE: "Alle Personen im Gefahrenbereich des Druckbehaelters.",
ZoneDE: "Sicherheitsventil, Druckbehaelter, Ablaseleitung.",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP368", NameDE: "Druckstoss (Wasserschlag) in Rohrleitung", NameEN: "Pressure surge (water hammer) in pipeline",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{"stored_energy"},
GeneratedHazardCats: []string{"pneumatic_hydraulic", "mechanical_hazard"},
SuggestedMeasureIDs: []string{"M051", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E11"},
Priority: 88,
ScenarioDE: "Schnelles Schliessen eines Ventils erzeugt Druckstoss, der Rohrleitungen oder Armaturen zerreisst.",
TriggerDE: "Schlagartig schliessender Schieber, Kondensatschlag in Dampfleitung, Pumpenausfall.",
HarmDE: "Rohrleitungsbruch mit Mediumaustritt, Schlagverletzung durch losgerissene Teile.",
AffectedDE: "Wartungspersonal, Bedienpersonal im Rohrleitungsbereich.",
ZoneDE: "Rohrleitung, Ventile, Boegen, Waermetauscher-Anschluesse.",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP369", NameDE: "Korrosionsversagen unter Isolierung", NameEN: "Corrosion under insulation failure",
RequiredComponentTags: []string{"high_pressure", "structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"material_environmental", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E20", "E21"},
Priority: 82,
ScenarioDE: "Verdeckte Korrosion unter Waermedaemmung schwaecht Rohrleitung oder Behaelterwand bis zum Versagen.",
TriggerDE: "Eindringen von Feuchtigkeit unter die Isolierung, fehlende wiederkehrende Pruefung.",
HarmDE: "Plotzliches Versagen mit Mediumaustritt, Verbruehung oder Vergiftung.",
AffectedDE: "Wartungspersonal, Bedienpersonal.",
ZoneDE: "Isolierte Rohrleitungen, Behaeltermantel, Stutzenanschluesse.",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP370", NameDE: "Verbrennungsgefahr an heisser Dampfleitung", NameEN: "Burn hazard at hot steam pipe",
RequiredComponentTags: []string{"high_temperature", "structural_part"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 85,
ScenarioDE: "Personal beruehrt unisolierte oder beschaedigte Dampfleitung mit Oberflaeche ueber 60 Grad C.",
TriggerDE: "Fehlende oder beschaedigte Isolierung, Arbeiten in engem Leitungsschacht.",
HarmDE: "Kontaktverbrennung an Haenden und Oberkoerper.",
AffectedDE: "Wartungspersonal, Bedienpersonal.",
ZoneDE: "Dampfleitungen, Ventilkoerper, Flansche, Waermetauscher.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP371", NameDE: "Erstickungsgefahr durch Inertgas-Austritt", NameEN: "Asphyxiation from inert gas release",
RequiredComponentTags: []string{"chemical_risk", "structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 92,
ScenarioDE: "Stickstoff oder anderes Inertgas tritt aus und verdraengt Atemluft in geschlossenem Raum.",
TriggerDE: "Leckage an Flanschverbindung, Ventilversagen, absichtliche Inertisierung ohne Warnung.",
HarmDE: "Bewusstlosigkeit innerhalb von Sekunden, Erstickungstod.",
AffectedDE: "Wartungspersonal, Bedienpersonal, Besucher.",
ZoneDE: "Geschlossene Raeume, Keller, Gruben nahe Gasversorgung.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP372", NameDE: "Ueberdruckversagen Waermetauscher", NameEN: "Overpressure failure of heat exchanger",
RequiredComponentTags: []string{"high_pressure", "high_temperature"},
RequiredEnergyTags: []string{"thermal", "stored_energy"},
GeneratedHazardCats: []string{"pneumatic_hydraulic", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M051", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E11"},
Priority: 90,
RequiresExpertCalculation: true,
ExpertHintDE: "Druckstossberechnung und Rohrbruchsicherung nach EN 13445/EN 13480 erforderlich.",
ExpertHintEN: "Pressure surge calculation and pipe burst protection per EN 13445/EN 13480 required.",
ScenarioDE: "Interne Leckage im Waermetauscher fuehrt zur Druckuebertragung von der Hochdruck- auf die Niederdruckseite.",
TriggerDE: "Rohrbuendelbruch, Korrosion der Trennwaende, Thermoschock.",
HarmDE: "Bersten der Niederdruckseite, unkontrollierter Medienaustritt, Verbruehung.",
AffectedDE: "Wartungspersonal, Bedienpersonal.",
ZoneDE: "Waermetauscher, Nieder-/Hochdruckseite, Abblaseleitung.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP373", NameDE: "Druckluft-Hautinjektion", NameEN: "Compressed air skin injection",
RequiredComponentTags: []string{"pneumatic_part", "high_pressure"},
RequiredEnergyTags: []string{"pneumatic_pressure"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M054", "M131", "M141"},
SuggestedEvidenceIDs: []string{"E06", "E11"},
Priority: 85,
ScenarioDE: "Hochdruckluft wird auf die Haut gerichtet und dringt in das Gewebe ein (subkutane Gasembolie).",
TriggerDE: "Reinigung mit Druckluftpistole ohne Druckminderung, defekte Duesenabsicherung.",
HarmDE: "Subkutanes Emphysem, Gasembolie, Gewebezerstoerung.",
AffectedDE: "Bedienpersonal, Reinigungspersonal.",
ZoneDE: "Druckluftpistole, offene Leitungen, Wartungsbereich.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP374", NameDE: "Schnellschluss-Ventilversagen bei Druckentlastung", NameEN: "Fast-closing valve failure during pressure relief",
RequiredComponentTags: []string{"high_pressure", "actuator_part"},
RequiredEnergyTags: []string{"stored_energy"},
GeneratedHazardCats: []string{"safety_function_failure", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M106", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E07", "E11"},
Priority: 93,
RequiresExpertCalculation: true,
ExpertHintDE: "SIL-Bewertung der Druckentlastungskette nach IEC 61511 erforderlich.",
ExpertHintEN: "SIL assessment of pressure relief chain per IEC 61511 required.",
ScenarioDE: "Schnellschlussventil schliesst nicht oder zu langsam bei Notfall-Druckentlastung.",
TriggerDE: "Mechanische Verklemmung, Federbruch, Versagen des Stellantriebs, fehlende Pruefung.",
HarmDE: "Unkontrollierter Druckaufbau, Berstversagen nachgelagerter Bauteile.",
AffectedDE: "Bedienpersonal, alle Personen im Anlagenbereich.",
ZoneDE: "Schnellschlussventil, Stellantrieb, Abblaseleitung.",
DefaultSeverity: 5, DefaultExposure: 1,
},
}
}
@@ -0,0 +1,476 @@
package iace
// GetMaintenanceExtPatterns returns 65 maintenance/lifecycle-specific hazard patterns
// (HP700-HP729, HP900-HP934). All patterns have RequiredLifecycles set.
func GetMaintenanceExtPatterns() []HazardPattern {
return []HazardPattern{
// — Wartung allgemein (HP700-HP709) —
{ID: "HP700", NameDE: "LOTO-Fehler: Maschine nicht freigeschaltet", NameEN: "LOTO failure: not locked out",
RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08", "E20"}, Priority: 95,
ScenarioDE: "Arbeit ohne Freischaltung der Maschine", TriggerDE: "Fehlende LOTO-Prozedur",
HarmDE: "Erfassen durch anlaufende Teile, Tod", AffectedDE: "Instandhalter", ZoneDE: "Gesamte Maschine",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP701", NameDE: "Restenergie trotz Abschaltung", NameEN: "Residual energy after shutdown",
RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 90,
ScenarioDE: "Gespeicherte Energie entlaedt sich bei Wartung", TriggerDE: "Nicht abgelassener Druckspeicher",
HarmDE: "Unkontrollierte Bewegung, Quetschung", AffectedDE: "Instandhalter", ZoneDE: "Antriebe, Speicher",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP702", NameDE: "Falsches Werkzeug bei Wartung", NameEN: "Wrong tool during maintenance",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Ungeeignetes oder defektes Werkzeug", TriggerDE: "Falscher Schraubenschluessel",
HarmDE: "Abrutschen, Quetschung", AffectedDE: "Instandhalter", ZoneDE: "Wartungszugang",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP703", NameDE: "Fehlende Qualifikation des Instandhalters", NameEN: "Insufficient maintainer qualification",
RequiredComponentTags: []string{"electrical_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"electrical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Unqualifiziertes Personal an Elektrik", TriggerDE: "Keine Elektrofachkraft",
HarmDE: "Stromschlag, Fehlverdrahtung", AffectedDE: "Instandhalter", ZoneDE: "Schaltschrank",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP704", NameDE: "Herabfallen schwerer Teile bei Demontage", NameEN: "Heavy parts falling during disassembly",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75,
ScenarioDE: "Schwere Teile fallen bei Demontage herab", TriggerDE: "Fehlende Abstuetzung",
HarmDE: "Quetschung, Frakturen, Tod", AffectedDE: "Instandhalter", ZoneDE: "Wartungsbereich",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP705", NameDE: "Vergessenes Werkzeug in Maschine", NameEN: "Forgotten tool in machine",
RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Zurueckgelassenes Werkzeug wird Geschoss", TriggerDE: "Keine Werkzeugkontrolle",
HarmDE: "Herausgeschleudertes Teil, Verletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Arbeitsraum",
DefaultSeverity: 4, DefaultExposure: 2},
{ID: "HP706", NameDE: "Schnittwunden an scharfkantigen Teilen", NameEN: "Cuts on sharp-edged parts",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Scharfe Kanten und Grate verletzen", TriggerDE: "Fehlende Schutzhandschuhe",
HarmDE: "Schnittwunden, Abschuerfungen", AffectedDE: "Instandhalter", ZoneDE: "Blechverkleidungen",
DefaultSeverity: 2, DefaultExposure: 4},
{ID: "HP707", NameDE: "Verbrennung an heissen Teilen bei Wartung", NameEN: "Burn on hot parts during maintenance",
RequiredComponentTags: []string{"high_temperature"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 60,
ScenarioDE: "Maschine nicht abgekuehlt vor Wartung", TriggerDE: "Zu kurze Abkuehlzeit",
HarmDE: "Kontaktverbrennungen", AffectedDE: "Instandhalter", ZoneDE: "Heizplatten, Motorgehaeuse",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP708", NameDE: "Fehlende Wartungsfreigabe", NameEN: "Missing maintenance permit",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"safety_function_failure"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Wartung ohne formale Freigabe", TriggerDE: "Fehlender Erlaubnisschein",
HarmDE: "Unerwarteter Maschinenbetrieb", AffectedDE: "Instandhalter", ZoneDE: "Gesamte Maschine",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP709", NameDE: "Biologische Gefaehrdung bei KSS-Wartung", NameEN: "Biological hazard MWF maintenance",
RequiredComponentTags: []string{"chemical_risk"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Verkeimter Kuehlschmierstoff bei Wartung", TriggerDE: "Altes KSS, Biofilme",
HarmDE: "Hautinfektionen, Atemwegsbeschwerden", AffectedDE: "Instandhalter", ZoneDE: "KSS-System",
DefaultSeverity: 2, DefaultExposure: 3},
// — Einrichten / Umruesten (HP710-HP719) —
{ID: "HP710", NameDE: "Falsche Parameter nach Umruestung", NameEN: "Wrong parameters after changeover",
RequiredComponentTags: []string{"programmable"}, RequiredLifecycles: []string{"setup"},
GeneratedHazardCats: []string{"safety_function_failure"},
SuggestedMeasureIDs: []string{"M106", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 75,
ScenarioDE: "Falsche Maschinenparameter nach Produktwechsel", TriggerDE: "Falsche Rezeptnummer",
HarmDE: "Uebergeschwindigkeit, Werkzeugbruch", AffectedDE: "Einrichter", ZoneDE: "Bedienterminal",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP711", NameDE: "Quetschung bei Werkzeugwechsel", NameEN: "Crushing during tool change",
RequiredComponentTags: []string{"moving_part", "high_force"}, RequiredLifecycles: []string{"setup"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M054"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80,
ScenarioDE: "Schwere Werkzeuge manuell gewechselt", TriggerDE: "Kein Hebezeug, Finger eingeklemmt",
HarmDE: "Quetschung, Amputation", AffectedDE: "Einrichter", ZoneDE: "Werkzeugaufnahme",
DefaultSeverity: 4, DefaultExposure: 4},
{ID: "HP712", NameDE: "Unkontrollierte Bewegung bei Testlauf", NameEN: "Uncontrolled movement test run",
RequiredComponentTags: []string{"moving_part", "programmable"}, RequiredLifecycles: []string{"setup"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M106", "M054"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80,
ScenarioDE: "Testlauf mit Person im Gefahrenbereich", TriggerDE: "Volle Geschwindigkeit, kein Schutz",
HarmDE: "Erfassen, Quetschen", AffectedDE: "Einrichter", ZoneDE: "Arbeitsraum",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP713", NameDE: "Einrichtbetrieb ohne reduzierte Geschwindigkeit", NameEN: "Setup without reduced speed",
RequiredComponentTags: []string{"moving_part", "programmable"}, RequiredLifecycles: []string{"setup"},
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M106", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 85,
ScenarioDE: "Volle Geschwindigkeit im Einrichtmodus", TriggerDE: "Defekter Betriebsartschalter",
HarmDE: "Erfassen bei voller Geschwindigkeit", AffectedDE: "Einrichter", ZoneDE: "Werkzeugbereich",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP714", NameDE: "Werkstueck faellt bei Aufspannung", NameEN: "Workpiece falls during clamping",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"setup"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Werkstueck rutscht aus Spannvorrichtung", TriggerDE: "Ungenuegender Spanndruck",
HarmDE: "Quetschung der Fuesse", AffectedDE: "Einrichter", ZoneDE: "Spannbereich",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP715", NameDE: "Stromschlag bei Steckerwechsel", NameEN: "Shock during connector change",
RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"},
RequiredLifecycles: []string{"setup"}, GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 65,
ScenarioDE: "Steckverbinder unter Spannung gewechselt", TriggerDE: "Nicht spannungsfrei",
HarmDE: "Stromschlag, Lichtbogen", AffectedDE: "Einrichter", ZoneDE: "Sensoranschluesse",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP716", NameDE: "Hydraulikdruck bei Werkzeugspannung", NameEN: "Hydraulic pressure tool clamping",
RequiredComponentTags: []string{"hydraulic_part", "high_pressure"}, RequiredLifecycles: []string{"setup"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M131", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 70,
ScenarioDE: "Hydraulische Spannung mit hohen Kraeften", TriggerDE: "Hand im Spannbereich",
HarmDE: "Quetschung, Amputation", AffectedDE: "Einrichter", ZoneDE: "Hydr. Spannbereich",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP717", NameDE: "Materialverwechslung bei Produktwechsel", NameEN: "Material mix-up product change",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"setup"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Falsches Material nach Umruestung", TriggerDE: "Verwechslung, fehlende Kennzeichnung",
HarmDE: "Werkzeugbruch, Splitterflug", AffectedDE: "Bedienpersonal", ZoneDE: "Materialzufuhr",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP718", NameDE: "Absturz bei Einrichtung hoher Maschine", NameEN: "Fall during tall machine setup",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"setup"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Einrichtarbeiten in Hoehe ohne sicheren Zugang", TriggerDE: "Improvisierte Aufstiegshilfe",
HarmDE: "Absturz, Frakturen", AffectedDE: "Einrichter", ZoneDE: "Maschinenoberteil",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP719", NameDE: "Schutzeinrichtung nach Umruestung defekt", NameEN: "Faulty guard after changeover",
RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"setup"},
GeneratedHazardCats: []string{"safety_function_failure", "mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80,
ScenarioDE: "Schutzeinrichtung nicht korrekt justiert", TriggerDE: "Vergessene Nachjustierung",
HarmDE: "Zugang zum Gefahrenbereich", AffectedDE: "Bedienpersonal", ZoneDE: "Schutztueren, Lichtgitter",
DefaultSeverity: 5, DefaultExposure: 3},
// — Stoerungsbeseitigung (HP720-HP729) —
{ID: "HP720", NameDE: "Zeitdruck bei Stoerungsbeseitigung", NameEN: "Time pressure fault clearing",
RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80,
ScenarioDE: "Eingriff ohne Freischaltung wegen Produktionsdruck", TriggerDE: "Bandstillstand, Lieferdruck",
HarmDE: "Alle maschinentypischen Verletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
DefaultSeverity: 5, DefaultExposure: 4},
{ID: "HP721", NameDE: "Verklemmtes Material loest sich schlagartig", NameEN: "Jammed material releases suddenly",
RequiredComponentTags: []string{"moving_part", "high_force"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 85,
ScenarioDE: "Gespanntes Material loest sich ploetzlich", TriggerDE: "Vorspannung, federndes Material",
HarmDE: "Peitscheneffekt, Quetschung", AffectedDE: "Bedienpersonal", ZoneDE: "Einzugsstelle",
DefaultSeverity: 4, DefaultExposure: 4},
{ID: "HP722", NameDE: "Manipulation Schutzeinrichtung bei Stoerung", NameEN: "Guard manipulation for fault clearing",
RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M054", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E20"}, Priority: 90,
ScenarioDE: "Schutztuer offen gehalten fuer schnelleren Zugang", TriggerDE: "Magnet am Sicherheitsschalter",
HarmDE: "Zugang zu laufender Maschine", AffectedDE: "Bedienpersonal", ZoneDE: "Schutztueren",
DefaultSeverity: 5, DefaultExposure: 4},
{ID: "HP723", NameDE: "Unerwarteter Wiederanlauf bei Stoerung", NameEN: "Unexpected restart fault clearing",
RequiredComponentTags: []string{"moving_part", "programmable"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M106", "M054"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 95,
ScenarioDE: "SPS startet Maschine automatisch nach Fehler", TriggerDE: "Fehlende Wiederanlaufsperre",
HarmDE: "Erfassen durch anlaufende Teile, Tod", AffectedDE: "Alle im Gefahrenbereich", ZoneDE: "Arbeitsraum",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP724", NameDE: "Kontakt mit heissen Medien bei Stoerung", NameEN: "Hot media contact during fault",
RequiredComponentTags: []string{"high_temperature", "high_pressure"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 70,
ScenarioDE: "Heisses Medium tritt bei Reparatur aus", TriggerDE: "Nicht druckentlastete Leitung",
HarmDE: "Verbruehungen, Dampfverbrennungen", AffectedDE: "Instandhalter", ZoneDE: "Medienleitungen",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP725", NameDE: "Absturz bei Stoerungsbeseitigung in Hoehe", NameEN: "Fall during fault clearing at height",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Eilige Stoerungsbeseitigung in Hoehe ohne Sicherung", TriggerDE: "Hektik, provisorischer Zugang",
HarmDE: "Absturz, Frakturen", AffectedDE: "Bedienpersonal", ZoneDE: "Erhoehte Maschinenteile",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP726", NameDE: "Giftige Daempfe bei Stoerung", NameEN: "Toxic fumes during fault",
RequiredComponentTags: []string{"chemical_risk"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Stoerung setzt giftige Daempfe frei", TriggerDE: "Ueberhitzung, Materialaustritt",
HarmDE: "Vergiftung, Atemwegsschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Stoerungsstelle",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP727", NameDE: "Fehlende Beleuchtung bei Nacht-Stoerung", NameEN: "Insufficient light night fault",
RequiredComponentTags: []string{"programmable"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"ergonomic_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40,
ScenarioDE: "Stoerungsbeseitigung nachts bei schlechtem Licht", TriggerDE: "Fehlendes Licht",
HarmDE: "Stolpern, Fehlgriff", AffectedDE: "Nachtschichtpersonal", ZoneDE: "Maschinenumgebung",
DefaultSeverity: 2, DefaultExposure: 3},
{ID: "HP728", NameDE: "Druckluftschlag bei Ventilstoerung", NameEN: "Air blast during valve fault",
RequiredComponentTags: []string{"pneumatic_part", "high_pressure"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M131", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 65,
ScenarioDE: "Druckluft entweicht schlagartig bei Reparatur", TriggerDE: "Nicht entlueftetes System",
HarmDE: "Gehoerschaeden, Augenverletzung", AffectedDE: "Instandhalter", ZoneDE: "Pneumatikventile",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP729", NameDE: "Fehldiagnose fuehrt zu Folgestoerung", NameEN: "Misdiagnosis causes secondary fault",
RequiredComponentTags: []string{"programmable"}, RequiredLifecycles: []string{"fault_clearing"},
GeneratedHazardCats: []string{"safety_function_failure"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Falsche Fehleranalyse fuehrt zu unsachgemaesser Reparatur", TriggerDE: "Fehlendes Diagnosetool",
HarmDE: "Folgestoerung mit groesserem Schaden", AffectedDE: "Bedienpersonal", ZoneDE: "Steuerung",
DefaultSeverity: 4, DefaultExposure: 2},
// — Transport / Montage (HP900-HP907) —
{ID: "HP900", NameDE: "Kippen der Maschine beim Transport", NameEN: "Machine tipping during transport",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80,
ScenarioDE: "Maschine kippt wegen falschem Schwerpunkt", TriggerDE: "Falscher Anschlagpunkt",
HarmDE: "Quetschung unter Maschine, Tod", AffectedDE: "Transportpersonal", ZoneDE: "Transportweg",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP901", NameDE: "Herabfallen bei Kranverladung", NameEN: "Falling load crane loading",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85,
ScenarioDE: "Last loest sich aus Krananschlag", TriggerDE: "Falsches Anschlagmittel, Ueberlast",
HarmDE: "Erschlagen, Tod", AffectedDE: "Alle im Schwenkbereich", ZoneDE: "Unter der Last",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP902", NameDE: "Quetschung beim Absetzen schwerer Lasten", NameEN: "Crushing when lowering loads",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75,
ScenarioDE: "Finger/Fuesse zwischen Last und Unterlage", TriggerDE: "Zu nah an der Last",
HarmDE: "Quetschung, Amputation", AffectedDE: "Anschlaeger", ZoneDE: "Absetzbereich",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP903", NameDE: "Rueckenschaden durch manuelles Tragen", NameEN: "Back injury manual carrying",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"},
GeneratedHazardCats: []string{"ergonomic_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Maschinenteile manuell statt mit Hebehilfe getragen", TriggerDE: "Fehlende Hebemittel",
HarmDE: "Bandscheibenvorfall", AffectedDE: "Montagepersonal", ZoneDE: "Transportwege",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP904", NameDE: "Pendelnde Last am Kran", NameEN: "Swinging load on crane",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Pendelnde Kranladung trifft Personen", TriggerDE: "Zu schnelles Schwenken, Wind",
HarmDE: "Aufprall, Frakturen", AffectedDE: "Alle im Schwenkbereich", ZoneDE: "Kranbahn",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP905", NameDE: "Maschine rutscht vom Transportfahrzeug", NameEN: "Machine slides off vehicle",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75,
ScenarioDE: "Unzureichende Ladungssicherung", TriggerDE: "Fehlende Zurrgurte, Vollbremsung",
HarmDE: "Herabfallende Maschine, Sachschaden", AffectedDE: "Fahrer", ZoneDE: "Ladeflaeche",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP906", NameDE: "Kollision bei innerbetrieblichem Transport", NameEN: "Collision internal transport",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60,
ScenarioDE: "Stapler kollidiert mit Personen", TriggerDE: "Eingeschraenkte Sicht, zu schnell",
HarmDE: "Anfahrunfall, Quetschung", AffectedDE: "Fussgaenger", ZoneDE: "Transportwege",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP907", NameDE: "Verankerungsfehler bei Montage", NameEN: "Anchoring error installation",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Maschine nicht korrekt verankert", TriggerDE: "Zu schwache Duebel, falscher Untergrund",
HarmDE: "Verschiebung, Kippen", AffectedDE: "Bedienpersonal", ZoneDE: "Fundament",
DefaultSeverity: 4, DefaultExposure: 2},
// — Inbetriebnahme (HP908-HP912) —
{ID: "HP908", NameDE: "Erststart ohne komplette Schutzeinrichtungen", NameEN: "First start without guards",
RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"commissioning"},
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 90,
ScenarioDE: "Erststart vor Montage aller Schutzeinrichtungen", TriggerDE: "Termindruck, fehlende Abnahme",
HarmDE: "Offene Gefahrstellen", AffectedDE: "IBN-Personal", ZoneDE: "Gesamte Maschine",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP909", NameDE: "Kalibrierungsfehler verursacht Ueberfahrt", NameEN: "Calibration error overtravel",
RequiredComponentTags: []string{"moving_part", "programmable"}, RequiredLifecycles: []string{"commissioning"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M106", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 75,
ScenarioDE: "Falsche Achskalibrierung fuehrt zu Ueberfahrt", TriggerDE: "Vertauschte Achsen",
HarmDE: "Kollision, Maschinenbruch", AffectedDE: "IBN-Personal", ZoneDE: "Verfahrbereiche",
DefaultSeverity: 4, DefaultExposure: 2},
{ID: "HP910", NameDE: "Unerwartetes Verhalten bei Probebetrieb", NameEN: "Unexpected behaviour trial run",
RequiredComponentTags: []string{"programmable"}, RequiredLifecycles: []string{"commissioning"},
GeneratedHazardCats: []string{"safety_function_failure"},
SuggestedMeasureIDs: []string{"M106", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 70,
ScenarioDE: "Neues Programm zeigt unvorhergesehenes Verhalten", TriggerDE: "Softwarefehler",
HarmDE: "Unkontrollierte Bewegung", AffectedDE: "IBN-Personal", ZoneDE: "Arbeitsraum",
DefaultSeverity: 4, DefaultExposure: 2},
{ID: "HP911", NameDE: "Not-Halt nicht geprueft bei IBN", NameEN: "E-stop not tested commissioning",
RequiredComponentTags: []string{"electrical_part"}, RequiredLifecycles: []string{"commissioning"},
GeneratedHazardCats: []string{"safety_function_failure"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E09"}, Priority: 85,
ScenarioDE: "Not-Halt vor Erstbetrieb nicht geprueft", TriggerDE: "Uebergangene Checkliste",
HarmDE: "Kein Stopp im Notfall", AffectedDE: "Alle an Maschine", ZoneDE: "Not-Halt-Positionen",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP912", NameDE: "Medienanschluss vertauscht bei IBN", NameEN: "Media connection swapped",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"commissioning"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 60,
ScenarioDE: "Vertauschter Druckluft-/Hydraulikanschluss", TriggerDE: "Verwechslung, fehlende Kennzeichnung",
HarmDE: "Falsche Bewegungsrichtung, Berstgefahr", AffectedDE: "IBN-Personal", ZoneDE: "Anschluesse",
DefaultSeverity: 3, DefaultExposure: 2},
// — Reinigung (HP913-HP917) —
{ID: "HP913", NameDE: "Nassreinigung nahe Elektrik", NameEN: "Wet cleaning near electrics",
RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"},
RequiredLifecycles: []string{"cleaning"}, GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 75,
ScenarioDE: "Wasser gelangt in Schaltschrank", TriggerDE: "Hochdruckreiniger nahe Elektrik",
HarmDE: "Kurzschluss, Stromschlag", AffectedDE: "Reinigungspersonal", ZoneDE: "Schaltschrank",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP914", NameDE: "Giftige Reinigungsmittel-Daempfe", NameEN: "Toxic cleaner fumes",
RequiredComponentTags: []string{"chemical_risk"}, RequiredLifecycles: []string{"cleaning"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Reinigungsmittel-Daempfe in geschlossenem Raum", TriggerDE: "Fehlende Lueftung",
HarmDE: "Atemwegsveraetzung, Vergiftung", AffectedDE: "Reinigungspersonal", ZoneDE: "Maschineninneres",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP915", NameDE: "Hochdruckreiniger-Verletzung", NameEN: "High-pressure cleaner injury",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"cleaning"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60,
ScenarioDE: "Hochdruckstrahl verletzt Haut", TriggerDE: "Zu geringer Abstand",
HarmDE: "Injektionsverletzung, Infektion", AffectedDE: "Reinigungspersonal", ZoneDE: "Reinigungsbereich",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP916", NameDE: "Reinigung bei laufender Maschine", NameEN: "Cleaning during operation",
RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"cleaning"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 85,
ScenarioDE: "Reinigung ohne Abschaltung der Maschine", TriggerDE: "Zeitdruck",
HarmDE: "Einzug, Quetschung, Aufwickeln", AffectedDE: "Reinigungspersonal", ZoneDE: "Rotierende Teile",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP917", NameDE: "Nassrutschiger Boden nach Reinigung", NameEN: "Wet slippery floor after cleaning",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"cleaning"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Nasser Boden nach Maschinenreinigung", TriggerDE: "Fehlende Absperrung",
HarmDE: "Sturz, Frakturen", AffectedDE: "Alle Personen", ZoneDE: "Werkstattboden",
DefaultSeverity: 2, DefaultExposure: 4},
// — Demontage / Entsorgung (HP918-HP922) —
{ID: "HP918", NameDE: "Restmedien in demontierten Leitungen", NameEN: "Residual media dismantled piping",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"decommissioning"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Oel/Chemikalien treten aus getrennten Leitungen", TriggerDE: "Nicht entleerte Leitungen",
HarmDE: "Veraetzung, Kontamination", AffectedDE: "Abbruchpersonal", ZoneDE: "Trennstellen",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP919", NameDE: "Asbestexposition bei Altmaschine", NameEN: "Asbestos old machine demolition",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"decommissioning"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85,
RequiresExpertCalculation: true, ExpertHintDE: "Schadstoffgutachten gemaess TRGS 519 erforderlich.",
ScenarioDE: "Asbesthaltiges Material wird freigesetzt", TriggerDE: "Keine Vorab-Ermittlung",
HarmDE: "Asbestose, Lungenkrebs", AffectedDE: "Abbruchpersonal", ZoneDE: "Alte Dichtungen/Isolierungen",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP920", NameDE: "Kontaminierte Teile bei Entsorgung", NameEN: "Contaminated parts disposal",
RequiredComponentTags: []string{"chemical_risk"}, RequiredLifecycles: []string{"decommissioning"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Kontaminierte Teile unsachgemaess entsorgt", TriggerDE: "Fehlende Trennung",
HarmDE: "Umweltverschmutzung, Hautkontakt", AffectedDE: "Entsorgungspersonal", ZoneDE: "Demontagebereich",
DefaultSeverity: 2, DefaultExposure: 3},
{ID: "HP921", NameDE: "Scharfe Kanten bei Zerschneidung", NameEN: "Sharp edges cutting scrap",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"decommissioning"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Scharfe Kanten beim Zerteilen der Maschine", TriggerDE: "Trennschleifen, Brennschneiden",
HarmDE: "Schnittwunden, Splitterverletzungen", AffectedDE: "Abbruchpersonal", ZoneDE: "Schneidbereich",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP922", NameDE: "Instabilitaet bei stueckweisem Abbruch", NameEN: "Instability stepwise demolition",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"decommissioning"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Restbauwerk stuerzt unkontrolliert ein", TriggerDE: "Falsche Abbruchreihenfolge",
HarmDE: "Verschuettung, Tod", AffectedDE: "Abbruchpersonal", ZoneDE: "Restkonstruktion",
DefaultSeverity: 5, DefaultExposure: 2},
// — Inspektion / Pruefung (HP923-HP927) —
{ID: "HP923", NameDE: "Pruefung unter Last (Belastungstest)", NameEN: "Test under load",
RequiredComponentTags: []string{"structural_part", "high_force"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E20"}, Priority: 80,
ScenarioDE: "Bauteilversagen bei Maximallast", TriggerDE: "Materialermuedung, Riss",
HarmDE: "Bruchstuecke, herabfallende Last", AffectedDE: "Pruefpersonal", ZoneDE: "Pruefstand",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP924", NameDE: "Druckpruefung mit Berstgefahr", NameEN: "Pressure test burst risk",
RequiredComponentTags: []string{"high_pressure"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M131", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 85,
RequiresExpertCalculation: true, ExpertHintDE: "Pruefung nur durch ZUeS gemaess BetrSichV.",
ScenarioDE: "Behaelter versagt bei Druckpruefung", TriggerDE: "Wandstaerkenunterschreitung",
HarmDE: "Bersten, Splitterflug, Tod", AffectedDE: "Pruefpersonal", ZoneDE: "Druckbehaelter",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP925", NameDE: "Funktionstest mit offener Schutzeinrichtung", NameEN: "Function test open guard",
RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80,
ScenarioDE: "Test erfordert offene Schutzeinrichtung", TriggerDE: "Sichtpruefung noetig",
HarmDE: "Erfassen, Quetschen", AffectedDE: "Pruefpersonal", ZoneDE: "Maschinenarbeitsraum",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP926", NameDE: "Messung an spannungsfuehrender Anlage", NameEN: "Measurement on energized system",
RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"},
RequiredLifecycles: []string{"maintenance"}, GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 75,
ScenarioDE: "Messung unter Spannung bei Fehlersuche", TriggerDE: "Messgeraet rutscht ab",
HarmDE: "Stromschlag, Lichtbogen", AffectedDE: "Elektrofachkraft", ZoneDE: "Schaltschrank",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP927", NameDE: "ZfP mit Strahlenquelle", NameEN: "NDT with radiation source",
RequiredComponentTags: []string{"radiation_source"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"radiation_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80,
RequiresExpertCalculation: true, ExpertHintDE: "Strahlenschutzbeauftragter nach StrlSchV erforderlich.",
ScenarioDE: "Radiographische Pruefung mit Roentgen/Gamma", TriggerDE: "Sperrbereich nicht eingerichtet",
HarmDE: "Ionisierende Strahlung, Krebs", AffectedDE: "Pruefpersonal", ZoneDE: "Pruef-/Kontrollbereich",
DefaultSeverity: 5, DefaultExposure: 2},
// — Fremdfirmen (HP928-HP931) —
{ID: "HP928", NameDE: "Fehlende Einweisung Fremdfirma", NameEN: "Missing contractor induction",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"safety_function_failure"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Fremdfirma kennt ortsspezifische Gefahren nicht", TriggerDE: "Keine Sicherheitsunterweisung",
HarmDE: "Alle Gefaehrdungen durch Unkenntnis", AffectedDE: "Fremdfirmenpersonal", ZoneDE: "Gesamter Betrieb",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP929", NameDE: "Sprachbarriere bei Sicherheitskommunikation", NameEN: "Language barrier safety communication",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"safety_function_failure"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Sicherheitsanweisungen nicht verstanden", TriggerDE: "Nur deutschsprachige Unterweisung",
HarmDE: "Fehlverhalten durch Missverstaendnis", AffectedDE: "Fremdfirmenpersonal", ZoneDE: "Einsatzbereich",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP930", NameDE: "Parallele Arbeiten ohne Koordination", NameEN: "Parallel work no coordination",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75,
ScenarioDE: "Mehrere Teams gleichzeitig an einer Anlage", TriggerDE: "Fehlende Koordination",
HarmDE: "Unerwarteter Anlauf, Gefaehrdung", AffectedDE: "Alle Teams", ZoneDE: "Gesamte Anlage",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP931", NameDE: "Schnittstellenproblem an Gewerkeuebergaengen", NameEN: "Interface problem trade boundaries",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"safety_function_failure"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60,
ScenarioDE: "Verantwortungsluecke zwischen Gewerken", TriggerDE: "Unklare Zustaendigkeiten",
HarmDE: "Vernachlaessigte Sicherheit", AffectedDE: "Alle Gewerke", ZoneDE: "Schnittstellen",
DefaultSeverity: 3, DefaultExposure: 3},
// — Notfall (HP932-HP934) —
{ID: "HP932", NameDE: "Versperrte Fluchtwege bei Wartung", NameEN: "Blocked escape routes maintenance",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Material blockiert Flucht- und Rettungswege", TriggerDE: "Abgestelltes Material, Geruest",
HarmDE: "Verzoegerte Evakuierung", AffectedDE: "Alle im Gebaeude", ZoneDE: "Fluchtwege",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP933", NameDE: "Fehlende Erste-Hilfe am Wartungsort", NameEN: "Missing first aid maintenance site",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Kein Erste-Hilfe-Material am abgelegenen Ort", TriggerDE: "Entfernter Standort",
HarmDE: "Verzoegerte Erstversorgung", AffectedDE: "Instandhalter", ZoneDE: "Abgelegene Wartungsorte",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP934", NameDE: "Brandbekaempfung bei Wartung", NameEN: "Firefighting during maintenance",
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 65,
ScenarioDE: "Feuerloescher nicht erreichbar bei Wartung", TriggerDE: "Verstellter Loescher",
HarmDE: "Brandausbreitung, Verbrennungen", AffectedDE: "Instandhalter", ZoneDE: "Wartungsbereich",
DefaultSeverity: 4, DefaultExposure: 2},
}
}
@@ -0,0 +1,414 @@
package iace
// GetMedicalDevicePatterns returns hazard patterns for medical devices in
// the IEC 60601 context (HP350-HP364).
func GetMedicalDevicePatterns() []HazardPattern {
return []HazardPattern{
{
ID: "HP350", NameDE: "Elektrischer Schlag am Patienten (Ableitstrom)", NameEN: "Electric shock to patient (leakage current)",
RequiredComponentTags: []string{"electrical_part"},
RequiredEnergyTags: []string{"electrical_energy"},
GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M004"},
SuggestedEvidenceIDs: []string{"E04", "E10"},
Priority: 97,
RequiresExpertCalculation: true,
ExpertHintDE: "Ableitstrom-Messung nach IEC 60601-1 Abschnitt 8.7 erforderlich.",
ExpertHintEN: "Leakage current measurement per IEC 60601-1 clause 8.7 required.",
ScenarioDE: "Patient wird durch ueberhoehten Ableitstrom des Medizingeraets gefaehrdet.",
TriggerDE: "Defekte Isolierung, beschaedigtes Netzkabel, fehlender Schutzleiter, Single-Fault-Condition.",
HarmDE: "Herzkammerflimmern, Verbrennungen an Elektroden-Kontaktstellen, Tod.",
AffectedDE: "Patienten (insbesondere mit Herzkatheter), Anwender.",
ZoneDE: "Patientenanschlussteile, Elektrodenkontakte, Geraeteoberflaeche.",
DefaultSeverity: 5, DefaultExposure: 4,
},
{
ID: "HP351", NameDE: "Fehlfunktion des Defibrillators", NameEN: "Defibrillator malfunction",
RequiredComponentTags: []string{"electrical_part", "has_software"},
RequiredEnergyTags: []string{"electrical_energy", "stored_energy"},
GeneratedHazardCats: []string{"electrical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M003", "M106"},
SuggestedEvidenceIDs: []string{"E01", "E07", "E10", "E14"},
Priority: 98,
RequiresExpertCalculation: true,
ExpertHintDE: "Funktionale Sicherheit nach IEC 62304 + IEC 60601-2-4 validieren.",
ExpertHintEN: "Functional safety per IEC 62304 + IEC 60601-2-4 must be validated.",
ScenarioDE: "Defibrillator gibt keinen Schock ab, gibt falschen Schock oder liefert falsche Energie.",
TriggerDE: "Softwarefehler in Rhythmusanalyse, defekter Energiespeicher, Elektrodenversagen.",
HarmDE: "Tod durch unterlassene Defibrillation, Myokardschaedigung durch falsche Energie.",
AffectedDE: "Patienten mit Herzstillstand.",
ZoneDE: "Patientenkontakt, Elektrodenpositionen.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP352", NameDE: "Ueberhitzung durch HF-Chirurgiegeraet", NameEN: "Overheating by HF surgical device",
RequiredComponentTags: []string{"electrical_part", "high_temperature"},
RequiredEnergyTags: []string{"electrical_energy", "thermal"},
GeneratedHazardCats: []string{"thermal_hazard", "electrical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M054"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E10"},
Priority: 93,
ScenarioDE: "HF-Chirurgiegeraet erzeugt unkontrolliert Waerme an unbeabsichtigter Stelle am Patienten.",
TriggerDE: "Defekte Neutralelektrode, zu kleine Kontaktflaeche, kapazitive Kopplung an Implantaten.",
HarmDE: "Verbrennungen dritten Grades an Neutralelektrode, Gewebeschaedigung im OP-Feld.",
AffectedDE: "Patienten unter Operation.",
ZoneDE: "Neutralelektroden-Position, OP-Feld, Beruehrungspunkte mit Metallobjekten.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP353", NameDE: "Strahlenexposition am CT-Scanner", NameEN: "Radiation exposure at CT scanner",
RequiredComponentTags: []string{"radiation_risk"},
RequiredEnergyTags: []string{"radiation"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 90,
RequiresExpertCalculation: true,
ExpertHintDE: "Dosis-Flaechenprodukt und Effektivdosis muessen berechnet werden. StrlSchG/RoV.",
ExpertHintEN: "Dose-area product and effective dose must be calculated per radiation protection regulations.",
ScenarioDE: "Patient oder Personal wird einer ueberhoehten Roentgendosis ausgesetzt.",
TriggerDE: "Wiederholte Scans, falsche Protokollwahl, defekte Dosisautomatik, fehlende Bleischuerze.",
HarmDE: "Strahleninduzierter Krebs bei Langzeitexposition, Hautroetung bei Hochdosis-CT.",
AffectedDE: "Patienten, radiologisches Personal.",
ZoneDE: "CT-Gantry, Untersuchungsraum, Bedienerplatz bei defektem Strahlenschutz.",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP354", NameDE: "Fehlalarm fuehrt zu falscher Behandlung", NameEN: "False alarm leads to wrong treatment",
RequiredComponentTags: []string{"sensor_part", "has_software"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"sensor_fault", "software_fault"},
SuggestedMeasureIDs: []string{"M106", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 88,
ScenarioDE: "Patientenmonitor zeigt falschen Alarm an, Arzt handelt darauf basierend.",
TriggerDE: "Defekter Sensor, Bewegungsartefakte, Softwarefehler in der Signalverarbeitung.",
HarmDE: "Falsche Medikation, unnoetiger Eingriff, verzoegerte Behandlung bei echtem Ereignis.",
AffectedDE: "Patienten, behandelndes aerztliches Personal.",
ZoneDE: "Patientenmonitor, Intensivstation, OP-Saal.",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP355", NameDE: "Infektionsgefahr durch mangelhafte Sterilisation", NameEN: "Infection risk from insufficient sterilization",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E20", "E21"},
Priority: 92,
ScenarioDE: "Medizingeraet ist nach Aufbereitung nicht steril und uebertraegt Keime auf den Patienten.",
TriggerDE: "Ungenuegender Sterilisationszyklus, konstruktive Totzonen, nicht autoklavierbares Material.",
HarmDE: "Postoperative Infektion, Sepsis, Multiorganversagen.",
AffectedDE: "Patienten, insbesondere immunsupprimierte.",
ZoneDE: "Patientenberuehrende Flaechen, Hohlraeume, Schlauchanschluesse.",
DefaultSeverity: 5, DefaultExposure: 3,
},
{
ID: "HP356", NameDE: "Mechanisches Versagen des OP-Tischs", NameEN: "Mechanical failure of operating table",
RequiredComponentTags: []string{"moving_part", "hydraulic_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M051"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E21"},
Priority: 90,
ScenarioDE: "OP-Tisch senkt sich unkontrolliert oder kippt waehrend des Eingriffs.",
TriggerDE: "Hydraulikleckage, mechanisches Versagen der Verriegelung, Ueberlast.",
HarmDE: "Sturz des Patienten, Verletzung durch chirurgische Instrumente bei unkontrollierter Bewegung.",
AffectedDE: "Patienten waehrend Operation, OP-Personal.",
ZoneDE: "OP-Tisch, Saeulenmechanismus, Kopf- und Beinteile.",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP357", NameDE: "EMV-Stoerung anderer Geraete", NameEN: "EMC interference with other devices",
RequiredComponentTags: []string{"electrical_part", "networked"},
RequiredEnergyTags: []string{"electromagnetic"},
GeneratedHazardCats: []string{"emc_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M004", "M106"},
SuggestedEvidenceIDs: []string{"E01", "E10"},
Priority: 85,
ScenarioDE: "Elektromagnetische Stoerstrahlung beeinflusst andere lebenserhaltende Geraete im Raum.",
TriggerDE: "Fehlende EMV-Pruefung, defekte Schirmung, Betrieb ausserhalb spezifizierter Umgebung.",
HarmDE: "Fehlfunktion von Beatmungsgeraet, Infusionspumpe oder Patientenmonitor.",
AffectedDE: "Patienten an lebenserhaltenden Geraeten.",
ZoneDE: "Intensivstation, OP-Saal, Notaufnahme.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP358", NameDE: "Softwarefehler in Dosierungssystem", NameEN: "Software error in dosing system",
RequiredComponentTags: []string{"has_software", "programmable"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"software_fault", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M106"},
SuggestedEvidenceIDs: []string{"E01", "E07", "E14"},
Priority: 97,
RequiresExpertCalculation: true,
ExpertHintDE: "Software-Sicherheitsklasse nach IEC 62304 bestimmen. SOUP-Analyse erforderlich.",
ExpertHintEN: "Software safety class per IEC 62304 must be determined. SOUP analysis required.",
ScenarioDE: "Infusionspumpe dosiert aufgrund eines Softwarefehlers eine falsche Medikamentenmenge.",
TriggerDE: "Softwarebug in Dosisberechnung, Rundungsfehler, unbehandelte Ausnahme.",
HarmDE: "Ueberdosierung: Vergiftung, Herzstillstand. Unterdosierung: Therapieversagen.",
AffectedDE: "Patienten, insbesondere bei hochpotenten Medikamenten.",
ZoneDE: "Infusionspumpe, Spritzenantrieb, Medikamenten-Managementsystem.",
DefaultSeverity: 5, DefaultExposure: 4,
},
{
ID: "HP359", NameDE: "Patientenfall vom Krankenbett", NameEN: "Patient fall from hospital bed",
RequiredComponentTags: []string{"gravity_risk", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M051", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 80,
ScenarioDE: "Patient stuerzt vom elektrisch verstellbaren Krankenbett durch Fehlfunktion der Seitensicherung.",
TriggerDE: "Defekte Seitenverriegelung, unbeabsichtigte Betaetigung der Fernbedienung.",
HarmDE: "Knochenbrueche (Huefte, Schaedel), Prellungen, bei aelteren Patienten lebensbedrohlich.",
AffectedDE: "Patienten, insbesondere desorientierte oder sedierte.",
ZoneDE: "Bettseitenschutz, Kopf-/Fussteil, gesamte Liegeoberflaeche.",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP360", NameDE: "Ueberhitzung tragbarer Geraetebatterie", NameEN: "Overheating of portable device battery",
RequiredComponentTags: []string{"electrical_part"},
RequiredEnergyTags: []string{"stored_energy", "thermal"},
GeneratedHazardCats: []string{"thermal_hazard", "electrical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M054"},
SuggestedEvidenceIDs: []string{"E01", "E10"},
Priority: 85,
ScenarioDE: "Lithium-Akku eines tragbaren Medizingeraets ueberhitzt und kann thermisch durchgehen.",
TriggerDE: "Defektes Ladegeraet, beschaedigter Akku, Ueberladen, Kurzschluss.",
HarmDE: "Verbrennungen, toxische Rauchgase, Brand im Patientenumfeld.",
AffectedDE: "Patienten, Pflegepersonal.",
ZoneDE: "Geraetegehaeuse, Ladestation, Patientennaehe.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP361", NameDE: "Fehlerhafte Anzeige am Patientenmonitor", NameEN: "Erroneous display on patient monitor",
RequiredComponentTags: []string{"user_interface", "has_software"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"hmi_error", "software_fault"},
SuggestedMeasureIDs: []string{"M106", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E14"},
Priority: 88,
ScenarioDE: "Patientenmonitor zeigt falsche Vitalwerte an, Personal trifft Entscheidungen auf falscher Grundlage.",
TriggerDE: "Displayfehler, Signalverarbeitungsfehler, defekter Sensoreingang.",
HarmDE: "Verzoegerte Erkennung kritischer Zustaende, falsche Therapieentscheidung.",
AffectedDE: "Patienten, aerztliches Personal.",
ZoneDE: "Monitoranzeige, Alarmeinstellung, Sensoranbindung.",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP362", NameDE: "Bewegungseinschraenkung in MRT-Roehre", NameEN: "Movement restriction in MRI bore",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{"electromagnetic"},
GeneratedHazardCats: []string{"ergonomic", "material_environmental"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E24"},
Priority: 72,
ScenarioDE: "Patient erleidet Panikattacke in enger MRT-Roehre oder kann bei Ausfall nicht evakuiert werden.",
TriggerDE: "Klaustrophobie, laengere Untersuchungsdauer, Defekt der Patientenliege.",
HarmDE: "Panikbedingte Verletzungen, Aspiration bei sediertem Patient, verzoegerte Rettung.",
AffectedDE: "Patienten, insbesondere klaustrophobische oder sedierte.",
ZoneDE: "MRT-Bore, Patientenliege, Zugangsbereich.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP363", NameDE: "Ferromagnetischer Gegenstand als MRT-Projektil", NameEN: "Ferromagnetic object as MRI projectile",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{"electromagnetic"},
GeneratedHazardCats: []string{"mechanical_hazard", "material_environmental"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E24", "E25"},
Priority: 96,
ScenarioDE: "Ferromagnetischer Gegenstand wird vom MRT-Magnetfeld angezogen und zum Projektil beschleunigt.",
TriggerDE: "Nicht detektiertes Werkzeug, Rollstuhl oder Sauerstoffflasche im MRT-Raum.",
HarmDE: "Schwere Quetsch- und Schlagverletzungen, Schaedelfraktur, toedliche Verletzung.",
AffectedDE: "Patienten, Personal, Besucher im MRT-Raum.",
ZoneDE: "MRT-Raum, insbesondere Eingangsbereich und Bore-Zentrum.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP364", NameDE: "Quenchgefahr bei supraleitendem MRT-Magnet", NameEN: "Quench hazard at superconducting MRI magnet",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{"electromagnetic", "stored_energy"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M051", "M054", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 90,
ScenarioDE: "Unkontrollierter Helium-Quench des supraleitenden MRT-Magneten fuellt Raum mit Gas.",
TriggerDE: "Kuehlfehler, Vibration, Notquench ohne Evakuierung, Versagen des Quench-Ventils.",
HarmDE: "Erstickung durch Sauerstoffverdraengung, Kaelteverbrennungen, Druckwelle.",
AffectedDE: "Patienten, Personal im MRT-Raum.",
ZoneDE: "MRT-Raum, Quench-Rohrleitung, angrenzende Raeume bei Ventilversagen.",
DefaultSeverity: 5, DefaultExposure: 1,
},
}
}
// GetPressureEquipmentPatterns returns hazard patterns for pressure equipment
// such as pressure vessels, steam lines, and heat exchangers (HP365-HP374).
func GetPressureEquipmentPatterns() []HazardPattern {
return []HazardPattern{
{
ID: "HP365", NameDE: "Bersten eines Druckbehaelters", NameEN: "Bursting of a pressure vessel",
RequiredComponentTags: []string{"high_pressure", "structural_part"},
RequiredEnergyTags: []string{"stored_energy"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M051", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E11"},
Priority: 98,
RequiresExpertCalculation: true,
ExpertHintDE: "Berechnung nach AD 2000 oder EN 13445 erforderlich. Wiederkehrende Pruefung nach BetrSichV.",
ExpertHintEN: "Calculation per AD 2000 or EN 13445 required. Periodic inspection per pressure equipment directive.",
ScenarioDE: "Druckbehaelter versagt katastrophal und zerlegt sich in Fragmente.",
TriggerDE: "Ueberdruck, Materialermuedung, Korrosion, fehlendes oder blockiertes Sicherheitsventil.",
HarmDE: "Toedliche Verletzung durch Druckwelle und Fragmentwurf, schwere Verbrennungen.",
AffectedDE: "Alle Personen im Umkreis von 50+ Metern, je nach Behaeltergroesse.",
ZoneDE: "Behaelter, Aufstellungsraum, angrenzende Arbeitsbereiche.",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP366", NameDE: "Dampfaustritt an undichter Flanschverbindung", NameEN: "Steam leak at flanged joint",
RequiredComponentTags: []string{"high_pressure", "high_temperature"},
RequiredEnergyTags: []string{"thermal", "stored_energy"},
GeneratedHazardCats: []string{"thermal_hazard", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M054", "M131"},
SuggestedEvidenceIDs: []string{"E08", "E11"},
Priority: 90,
ScenarioDE: "Heisser Dampf tritt aus undichter Flanschverbindung aus und trifft Personen im Nahbereich.",
TriggerDE: "Dichtungsversagen, ungleichmaessig angezogene Schrauben, thermische Ausdehnung.",
HarmDE: "Schwere Verbruehungen, unsichtbarer Dampfstrahl bei hohem Druck besonders gefaehrlich.",
AffectedDE: "Wartungspersonal, Bedienpersonal.",
ZoneDE: "Flanschverbindungen, Ventile, Rohrleitungsfuehrung.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP367", NameDE: "Sicherheitsventil oeffnet nicht", NameEN: "Safety valve fails to open",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{"stored_energy"},
GeneratedHazardCats: []string{"safety_function_failure", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M106", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E11"},
Priority: 97,
RequiresExpertCalculation: true,
ExpertHintDE: "SIL-Nachweis fuer Druckbegrenzung erforderlich. Pruefzyklen des Sicherheitsventils festlegen.",
ExpertHintEN: "SIL verification for pressure limitation required. Safety valve inspection cycles must be defined.",
ScenarioDE: "Sicherheitsventil ist blockiert oder defekt und oeffnet bei Ueberdruck nicht.",
TriggerDE: "Korrosion, Verschmutzung, fehlende wiederkehrende Pruefung, falsche Einstellung.",
HarmDE: "Ueberdruck bis zum Berstversagen des Behaelters, toedliche Folgen.",
AffectedDE: "Alle Personen im Gefahrenbereich des Druckbehaelters.",
ZoneDE: "Sicherheitsventil, Druckbehaelter, Ablaseleitung.",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP368", NameDE: "Druckstoss (Wasserschlag) in Rohrleitung", NameEN: "Pressure surge (water hammer) in pipeline",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{"stored_energy"},
GeneratedHazardCats: []string{"pneumatic_hydraulic", "mechanical_hazard"},
SuggestedMeasureIDs: []string{"M051", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E11"},
Priority: 88,
ScenarioDE: "Schnelles Schliessen eines Ventils erzeugt Druckstoss, der Rohrleitungen zerreisst.",
TriggerDE: "Schlagartig schliessender Schieber, Kondensatschlag in Dampfleitung, Pumpenausfall.",
HarmDE: "Rohrleitungsbruch mit Mediumaustritt, Schlagverletzung durch losgerissene Teile.",
AffectedDE: "Wartungspersonal, Bedienpersonal im Rohrleitungsbereich.",
ZoneDE: "Rohrleitung, Ventile, Boegen, Waermetauscher-Anschluesse.",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP369", NameDE: "Korrosionsversagen unter Isolierung", NameEN: "Corrosion under insulation failure",
RequiredComponentTags: []string{"high_pressure", "structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"material_environmental", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E20", "E21"},
Priority: 82,
ScenarioDE: "Verdeckte Korrosion unter Waermedaemmung schwaecht Rohrleitung oder Behaelterwand bis zum Versagen.",
TriggerDE: "Eindringen von Feuchtigkeit unter die Isolierung, fehlende wiederkehrende Pruefung.",
HarmDE: "Plotzliches Versagen mit Mediumaustritt, Verbruehung oder Vergiftung.",
AffectedDE: "Wartungspersonal, Bedienpersonal.",
ZoneDE: "Isolierte Rohrleitungen, Behaeltermantel, Stutzenanschluesse.",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP370", NameDE: "Verbrennungsgefahr an heisser Dampfleitung", NameEN: "Burn hazard at hot steam pipe",
RequiredComponentTags: []string{"high_temperature", "structural_part"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 85,
ScenarioDE: "Personal beruehrt unisolierte oder beschaedigte Dampfleitung mit Oberflaeche ueber 60 Grad C.",
TriggerDE: "Fehlende oder beschaedigte Isolierung, Arbeiten in engem Leitungsschacht.",
HarmDE: "Kontaktverbrennung an Haenden und Oberkoerper.",
AffectedDE: "Wartungspersonal, Bedienpersonal.",
ZoneDE: "Dampfleitungen, Ventilkoerper, Flansche, Waermetauscher.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP371", NameDE: "Erstickungsgefahr durch Inertgas-Austritt", NameEN: "Asphyxiation from inert gas release",
RequiredComponentTags: []string{"chemical_risk", "structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 92,
ScenarioDE: "Stickstoff oder Inertgas tritt aus und verdraengt Atemluft in geschlossenem Raum.",
TriggerDE: "Leckage an Flanschverbindung, Ventilversagen, Inertisierung ohne Warnung.",
HarmDE: "Bewusstlosigkeit innerhalb von Sekunden, Erstickungstod.",
AffectedDE: "Wartungspersonal, Bedienpersonal, Besucher.",
ZoneDE: "Geschlossene Raeume, Keller, Gruben nahe Gasversorgung.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP372", NameDE: "Ueberdruckversagen Waermetauscher", NameEN: "Overpressure failure of heat exchanger",
RequiredComponentTags: []string{"high_pressure", "high_temperature"},
RequiredEnergyTags: []string{"thermal", "stored_energy"},
GeneratedHazardCats: []string{"pneumatic_hydraulic", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M051", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E11"},
Priority: 90,
RequiresExpertCalculation: true,
ExpertHintDE: "Druckstossberechnung und Rohrbruchsicherung nach EN 13445/EN 13480 erforderlich.",
ExpertHintEN: "Pressure surge calculation and pipe burst protection per EN 13445/EN 13480 required.",
ScenarioDE: "Interne Leckage im Waermetauscher fuehrt zur Druckuebertragung auf die Niederdruckseite.",
TriggerDE: "Rohrbuendelbruch, Korrosion der Trennwaende, Thermoschock.",
HarmDE: "Bersten der Niederdruckseite, unkontrollierter Medienaustritt, Verbruehung.",
AffectedDE: "Wartungspersonal, Bedienpersonal.",
ZoneDE: "Waermetauscher, Nieder-/Hochdruckseite, Abblaseleitung.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP373", NameDE: "Druckluft-Hautinjektion", NameEN: "Compressed air skin injection",
RequiredComponentTags: []string{"pneumatic_part", "high_pressure"},
RequiredEnergyTags: []string{"pneumatic_pressure"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M054", "M131", "M141"},
SuggestedEvidenceIDs: []string{"E06", "E11"},
Priority: 85,
ScenarioDE: "Hochdruckluft wird auf die Haut gerichtet und dringt in das Gewebe ein.",
TriggerDE: "Reinigung mit Druckluftpistole ohne Druckminderung, defekte Duesenabsicherung.",
HarmDE: "Subkutanes Emphysem, Gasembolie, Gewebezerstoerung.",
AffectedDE: "Bedienpersonal, Reinigungspersonal.",
ZoneDE: "Druckluftpistole, offene Leitungen, Wartungsbereich.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP374", NameDE: "Schnellschluss-Ventilversagen bei Druckentlastung", NameEN: "Fast-closing valve failure during pressure relief",
RequiredComponentTags: []string{"high_pressure", "actuator_part"},
RequiredEnergyTags: []string{"stored_energy"},
GeneratedHazardCats: []string{"safety_function_failure", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M106", "M131"},
SuggestedEvidenceIDs: []string{"E01", "E07", "E11"},
Priority: 93,
RequiresExpertCalculation: true,
ExpertHintDE: "SIL-Bewertung der Druckentlastungskette nach IEC 61511 erforderlich.",
ExpertHintEN: "SIL assessment of pressure relief chain per IEC 61511 required.",
ScenarioDE: "Schnellschlussventil schliesst nicht oder zu langsam bei Notfall-Druckentlastung.",
TriggerDE: "Mechanische Verklemmung, Federbruch, Versagen des Stellantriebs, fehlende Pruefung.",
HarmDE: "Unkontrollierter Druckaufbau, Berstversagen nachgelagerter Bauteile.",
AffectedDE: "Bedienpersonal, alle Personen im Anlagenbereich.",
ZoneDE: "Schnellschlussventil, Stellantrieb, Abblaseleitung.",
DefaultSeverity: 5, DefaultExposure: 1,
},
}
}
@@ -0,0 +1,232 @@
package iace
// GetPackagingPatterns returns hazard patterns for packaging machines (HP320-HP334).
func GetPackagingPatterns() []HazardPattern {
return []HazardPattern{
{
ID: "HP320", NameDE: "Quetschen im Siegelbereich", NameEN: "Crushing in sealing area",
RequiredComponentTags: []string{"crush_point", "high_temperature"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"mechanical_hazard", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 93,
ScenarioDE: "Bediener greift in den Siegelbereich der Verpackungsmaschine waehrend des Siegeltakts.",
TriggerDE: "Manuelle Korrektur von Folienversatz, Manipulation der Schutzabdeckung, Stoerungsbeseitigung.",
HarmDE: "Quetschverletzung und Verbrennung der Finger durch heisse Siegelbacken.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Siegelstation, Bereich zwischen Ober- und Untersiegelbacke.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP321", NameDE: "Einzug an Folienwickler", NameEN: "Draw-in at film wrapper",
RequiredComponentTags: []string{"rotating_part", "entanglement_risk"},
RequiredEnergyTags: []string{"rotational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005", "M054"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 90,
ScenarioDE: "Bediener wird mit Kleidung oder Handschuhen in die rotierenden Walzen des Folienwicklers eingezogen.",
TriggerDE: "Loser Aermel, Handschuh bei laufendem Wickler, fehlende Einzugssicherung.",
HarmDE: "Einzugsverletzung, Quetschung der Hand, Strangulation durch Folie.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Folieneinlauf, Wickelachse, Umlenkwalzen.",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP322", NameDE: "Schneidverletzung an Trennmesser", NameEN: "Cut injury at separating blade",
RequiredComponentTags: []string{"cutting_part", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 88,
ScenarioDE: "Trennmesser der Verpackungsmaschine schneidet Folie/Karton und ist durch Oeffnung zugaenglich.",
TriggerDE: "Manuelle Entfernung von Folienresten, fehlende Abdeckung des Messerbereichs.",
HarmDE: "Schnittverletzung an Fingern und Haenden, Sehnendurchtrennung.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Messerstation, Folientrennbereich, Kartonschneider.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP323", NameDE: "Quetschen durch Palettierer", NameEN: "Crushing by palletizer",
RequiredComponentTags: []string{"moving_part", "high_force", "crush_point"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 95,
ScenarioDE: "Palettierer bewegt schwere Gebinde und kann Personen im Arbeitsraum quetschen.",
TriggerDE: "Betreten des Palettiererbereichs bei laufendem Betrieb, defekte Zugangsabsicherung.",
HarmDE: "Schwere Quetschverletzungen, Knochenbrueche, lebensbedrohliche Thoraxkompression.",
AffectedDE: "Bedienpersonal, Logistikmitarbeiter, Wartungspersonal.",
ZoneDE: "Palettierer-Arbeitsraum, Zugangsbereich, Palettenwechselzone.",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP324", NameDE: "Heissluft-Verbrennung bei Schrumpffolie", NameEN: "Hot air burn at shrink film tunnel",
RequiredComponentTags: []string{"high_temperature"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 80,
ScenarioDE: "Bediener greift in den Schrumpftunnel, um verklemmte Packungen zu entfernen.",
TriggerDE: "Produktstau im Tunnel, fehlender Tunnelstopp bei Oeffnen der Wartungsklappe.",
HarmDE: "Verbrennungen an Haenden und Unterarmen durch Heissluft (180-250 Grad C).",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
ZoneDE: "Schrumpftunnel-Innenraum, Auslaufoeffnung, Wartungsklappe.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP325", NameDE: "Umreifungsband schneidet in Hand", NameEN: "Strapping band cuts into hand",
RequiredComponentTags: []string{"moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E24"},
Priority: 75,
ScenarioDE: "Bediener greift in Bandspannbereich der Umreifungsmaschine oder Band reisst unter Spannung.",
TriggerDE: "Handeingriff bei laufendem Spannvorgang, Bandbruch unter Spannung.",
HarmDE: "Tiefe Schnittwunde durch Stahlband, Quetschung im Spannkopf.",
AffectedDE: "Bedienpersonal, Verpackungspersonal.",
ZoneDE: "Spannkopf der Umreifungsmaschine, Bandlaufbereich.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP326", NameDE: "Absturzgefahr von Palette", NameEN: "Fall hazard from pallet stack",
RequiredComponentTags: []string{"gravity_risk", "structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M051", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 78,
ScenarioDE: "Palettierte Gebinde kippen um oder Kartons fallen von der Palette auf Personen.",
TriggerDE: "Instabiles Stapelbild, fehlende Sicherungsfolie, Anfahren der Palette mit Stapler.",
HarmDE: "Prellungen, Knochenbrueche durch herabfallende Kartons, Quetschung unter Palette.",
AffectedDE: "Logistikmitarbeiter, Bedienpersonal, Staplerfahrer.",
ZoneDE: "Palettenstellplatz, Auslaufbereich der Verpackungslinie.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP327", NameDE: "Laerm durch Druckluft-Auswurf", NameEN: "Noise from compressed air ejection",
RequiredComponentTags: []string{"noise_source", "pneumatic_part"},
RequiredEnergyTags: []string{"pneumatic_pressure"},
GeneratedHazardCats: []string{"noise_vibration"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E12", "E20"},
Priority: 60,
ScenarioDE: "Druckluftduesen zum Auswerfen von Packungen erzeugen Impulsspitzen ueber 95 dB(A).",
TriggerDE: "Dauerbetrieb ohne Schallschutzhaube, defekte Schalldaempfer an Auswurfduesen.",
HarmDE: "Laermschwerhoerigkeit, Tinnitus bei dauerhafter Exposition.",
AffectedDE: "Bedienpersonal, Personen in angrenzenden Arbeitsbereichen.",
ZoneDE: "Auswurfstation, Druckluftduesen, Verpackungsstrecke.",
DefaultSeverity: 3, DefaultExposure: 5,
},
{
ID: "HP328", NameDE: "Quetschen an Kartonaufrichter", NameEN: "Crushing at carton erector",
RequiredComponentTags: []string{"crush_point", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 85,
ScenarioDE: "Bediener greift in den Faltmechanismus des Kartonaufrichters bei Kartonstau.",
TriggerDE: "Kartonstau, manuelle Beseitigung bei laufendem Takt, defekte Schutzabdeckung.",
HarmDE: "Quetschung der Finger zwischen Faltklappen und Gegendruckleiste.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Faltstation, Klebstoffauftrag, Zuschnittmagazin.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP329", NameDE: "Klebstoffverbrennung bei Heissleimanlage", NameEN: "Hot melt adhesive burn",
RequiredComponentTags: []string{"high_temperature"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M054", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 78,
ScenarioDE: "Heisser Klebstoff (180-200 Grad C) spritzt beim Nachfuellen oder bei Duesen-Verstopfung.",
TriggerDE: "Nachfuellen des Klebstoffbehaelters, Reinigen verstopfter Duesen, Leitungsbruch.",
HarmDE: "Schwere Verbrennungen an Haenden und Gesicht durch Heisskleber.",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
ZoneDE: "Klebstoffschmelzer, Duesenbereich, Schlauchleitungen.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP330", NameDE: "Einzug an Etikettiermaschine", NameEN: "Draw-in at labeling machine",
RequiredComponentTags: []string{"rotating_part", "entanglement_risk"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 75,
ScenarioDE: "Bediener greift in laufende Etikettiermaschine, um schiefe Etiketten zu korrigieren.",
TriggerDE: "Manuelle Korrektur bei laufendem Betrieb, Einzug durch Etikettenmaterial.",
HarmDE: "Einzug von Fingern in Walzenspalt, Quetschung, Hautabschuerfungen.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Etikettenausgabe, Gegendruckwalze, Abwickler.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP331", NameDE: "Ergonomische Belastung bei Handsortierung", NameEN: "Ergonomic strain during manual sorting",
RequiredComponentTags: []string{"ergonomic", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"ergonomic"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 50,
ScenarioDE: "Bediener sortiert fehlerhafte Packungen manuell von der laufenden Linie ab.",
TriggerDE: "Hohe Taktrate erfordert schnelle, repetitive Greifbewegungen ueber laengere Schicht.",
HarmDE: "Sehnenscheidenentzuendung, Schulter-Nacken-Syndrom, Rueckenschmerzen.",
AffectedDE: "Sortierpersonal, Kontrollpersonal.",
ZoneDE: "Kontrollstation, Auswurfband, Nacharbeitsplatz.",
DefaultSeverity: 2, DefaultExposure: 5,
},
{
ID: "HP332", NameDE: "Druckluft-Verletzung durch offene Leitung", NameEN: "Compressed air injury from open line",
RequiredComponentTags: []string{"pneumatic_part", "high_pressure"},
RequiredEnergyTags: []string{"pneumatic_pressure"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M051", "M131"},
SuggestedEvidenceIDs: []string{"E06", "E11"},
Priority: 80,
ScenarioDE: "Druckluftschlauch reisst ab oder wird ungesichert getrennt und peitscht unkontrolliert.",
TriggerDE: "Defekte Schlauchkupplung, Schlauchalterung, Druckluft-Peitscheffekt.",
HarmDE: "Augenverletzung durch Druckluftstrahl, Embolie bei Hautkontakt unter hohem Druck.",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
ZoneDE: "Druckluftversorgung, Schlauchleitungen, Wartungsbereich.",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP333", NameDE: "Quetschen durch Deckelzufuehrung", NameEN: "Crushing by lid feeder",
RequiredComponentTags: []string{"crush_point", "moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M001", "M005"},
SuggestedEvidenceIDs: []string{"E01", "E08"},
Priority: 82,
ScenarioDE: "Bediener greift in den Deckelsortierer, um verklemmte Deckel zu loesen.",
TriggerDE: "Deckelstau in der Zufuehrung, manuelle Beseitigung bei laufendem Takt.",
HarmDE: "Quetschung der Finger zwischen Deckeln und Fuehrungsschienen.",
AffectedDE: "Bedienpersonal, Einrichter.",
ZoneDE: "Deckelsortierer, Zufuehrungskanal, Verschliessstation.",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP334", NameDE: "Verletzung durch unkontrolliert oeffnende Schutzhaube", NameEN: "Injury from uncontrolled guard opening",
RequiredComponentTags: []string{"interlocked", "gravity_risk"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M051", "M054"},
SuggestedEvidenceIDs: []string{"E08"},
Priority: 70,
ScenarioDE: "Schwere Schutzhaube faellt unkontrolliert zu oder schlaegt beim Oeffnen gegen Bediener.",
TriggerDE: "Defekte Gasdruckfeder, fehlende Arretierung der geoeffneten Haube.",
HarmDE: "Quetschung der Haende oder Kopfverletzung durch zufallende Haube.",
AffectedDE: "Bedienpersonal, Wartungspersonal.",
ZoneDE: "Schutzhaube, Wartungsoeffnung, Scharnierbereiche.",
DefaultSeverity: 3, DefaultExposure: 3,
},
}
}
@@ -0,0 +1,422 @@
package iace
// GetSpecificMachinePatterns returns 26 hazard patterns (HP730-HP755)
// for pressure vessels/boilers, pumps/compressors, wind energy,
// solar installations, and battery storage systems.
func GetSpecificMachinePatterns() []HazardPattern {
return []HazardPattern{
// ================================================================
// Druckgeraete / Kessel (HP730-HP739)
// ================================================================
{
ID: "HP730", NameDE: "Bersten eines Druckbehaelters", NameEN: "Pressure vessel burst",
RequiredComponentTags: []string{"high_pressure", "structural_part"},
RequiredEnergyTags: []string{"pneumatic"},
GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E11", "E20"},
Priority: 100,
ScenarioDE: "Druckbehaelter versagt durch Materialermuedung, Korrosion oder Ueberdruck und birst explosionsartig.",
TriggerDE: "Ueberschreiten des zulaessigen Betriebsdrucks, Korrosionsschaeden, fehlende wiederkehrende Pruefung",
HarmDE: "Toedliche Verletzungen durch Druckwelle und Splitter, schwere Verbrennungen durch austretende Medien",
AffectedDE: "Bedienpersonal, alle Personen im Umkreis des Behaelters",
ZoneDE: "Druckbehaelter, angrenzende Bereiche im Splitterflugradius",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP731", NameDE: "Dampfaustritt an Flanschverbindung", NameEN: "Steam leak at flange connection",
RequiredComponentTags: []string{"high_pressure", "high_temperature"},
RequiredEnergyTags: []string{"thermal", "pneumatic"},
GeneratedHazardCats: []string{"thermal_hazard", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E10", "E11", "E20"},
Priority: 85,
ScenarioDE: "Heisser Dampf tritt unkontrolliert an einer undichten Flanschverbindung aus und verbrueht Personen.",
TriggerDE: "Alterung der Flanschdichtung, ungleichmaessiges Anziehen der Schrauben, thermische Wechselbelastung",
HarmDE: "Schwere Verbruehungen, Atemwegsschaeden durch Heissdampf",
AffectedDE: "Wartungspersonal, Bedienpersonal in der Naehe der Rohrleitung",
ZoneDE: "Flanschverbindungen, Rohrboegen, Ventilstopfbuchsen",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP732", NameDE: "Sicherheitsventil klemmt unter Druck", NameEN: "Safety valve stuck under pressure",
RequiredComponentTags: []string{"high_pressure", "safety_device"},
RequiredEnergyTags: []string{"pneumatic"},
GeneratedHazardCats: []string{"safety_function_failure", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M104", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E11"},
Priority: 95,
RequiresExpertCalculation: true,
ExpertHintDE: "Sicherheitsventilberechnung nach AD 2000-Merkblatt A2 und wiederkehrende Pruefung nach BetrSichV durchfuehren.",
ScenarioDE: "Das Sicherheitsventil oeffnet bei Ueberdruck nicht und der Behaelter wird ueber den zulaessigen Druck belastet.",
TriggerDE: "Korrosion am Ventilsitz, Verklebung durch Ablagerungen, fehlende Funktionspruefung",
HarmDE: "Bersten des Druckbehaelters, toedliche Verletzungen, Anlagenzersoerung",
AffectedDE: "Bedienpersonal, Wartungspersonal, Personen in der Umgebung",
ZoneDE: "Sicherheitsventil, Druckbehaelter, Dampfkessel",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP733", NameDE: "Wasserschlag in Rohrleitung", NameEN: "Water hammer in pipeline",
RequiredComponentTags: []string{"high_pressure", "structural_part"},
RequiredEnergyTags: []string{"pneumatic"},
GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E11"},
Priority: 80,
ScenarioDE: "Plotzlicher Druckstoss (Wasserschlag) durch schnelles Schliessen eines Ventils zerstoert Rohrleitungen.",
TriggerDE: "Abruptes Ventilschliessen, Pumpenstoss, Kondensat in Dampfleitung",
HarmDE: "Rohrleitungsbruch, Austritt heisser Medien, Splitterverletzungen",
AffectedDE: "Personen entlang der Rohrleitung, Wartungspersonal",
ZoneDE: "Rohrleitungssystem, Ventilstationen, Pumpenauslass",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP734", NameDE: "Korrosion unter Isolierung (CUI)", NameEN: "Corrosion under insulation (CUI)",
RequiredComponentTags: []string{"high_pressure", "structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E20", "E21"},
Priority: 75,
ScenarioDE: "Korrosion entwickelt sich unbemerkt unter der Waermeisolierung und schwaecht die Druckbehaelterwand.",
TriggerDE: "Feuchtigkeit dringt in Isolierung ein, keine regelmaessige Inspektionsroutine, Temperaturwechsel",
HarmDE: "Ploetzliches Versagen der Behaelterwand, Medienaustritt, Druckbehaelterbersten",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Isolierte Rohrleitungen, Behaeltermantel, Waermetauscher-Gehaeuse",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP735", NameDE: "Ueberhitzung Waermetauscher", NameEN: "Heat exchanger overheating",
RequiredComponentTags: []string{"high_temperature", "structural_part"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E10", "E20"},
Priority: 75,
ScenarioDE: "Waermetauscher ueberhitzt durch fehlenden Kuehlmittelfluss und gibt uebermassige Waerme an die Umgebung ab.",
TriggerDE: "Pumpenausfall im Kuehlkreislauf, Verschmutzung der Austauschflaechen, Ventilstoeruung",
HarmDE: "Kontaktverbrennungen, Ueberhitzung nachgelagerter Prozesse, Medienaustritt",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Waermetauschergehaeuse, Zu- und Ableitungen, Kuehlkreislauf",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP736", NameDE: "Druckstoss bei schnellem Ventilschluss", NameEN: "Pressure surge from rapid valve closure",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{"pneumatic"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E11"},
Priority: 75,
ScenarioDE: "Schnelles Schliessen eines Absperrventils erzeugt einen Druckstoss, der Leitungen und Armaturen beschaedigt.",
TriggerDE: "Automatisches Schnellschluss-Ventil, Bedienfehler, Not-Abschaltung ohne Druckentlastung",
HarmDE: "Leitungsbruch, Medienaustritt, Splitterverletzungen",
AffectedDE: "Bedienpersonal entlang der Leitung",
ZoneDE: "Ventilstationen, Rohrleitungen, Armaturen",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
ID: "HP737", NameDE: "Langsame Undichtigkeit Druckbehaelter", NameEN: "Slow pressure vessel leak",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"pneumatic_hydraulic", "material_environmental"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E11", "E21"},
Priority: 65,
ScenarioDE: "Schleichende Undichtigkeit am Druckbehaelter fuehrt zu unkontrolliertem Medienaustritt ueber laengere Zeit.",
TriggerDE: "Haarriss im Material, undichter Mannlochdeckel, poroese Schweissnaht",
HarmDE: "Vergiftung durch austretendes Medium, Erstickungsgefahr, Korrosionsschaeden",
AffectedDE: "Bedienpersonal im Nahbereich",
ZoneDE: "Behaeltermantel, Schweissnaehte, Mannlochdichtungen, Stutzenbereiche",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP738", NameDE: "Bersten des Schauglases am Druckbehaelter", NameEN: "Sight glass burst on pressure vessel",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{"pneumatic"},
GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M003", "M005", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E11", "E20"},
Priority: 85,
ScenarioDE: "Schauglas am Druckbehaelter birst durch Druckueberlastung oder Temperaturschock und schleudert Splitter.",
TriggerDE: "Druckspitze, Temperaturwechsel, mechanische Beschaedigung des Glases",
HarmDE: "Glassplitterverletzungen im Gesicht, Verbruehung durch austretendes Medium",
AffectedDE: "Bedienpersonal, das den Fuellstand am Schauglas abliest",
ZoneDE: "Schauglasbereich, Frontseite des Druckbehaelters",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP739", NameDE: "Dampfkessel Trockenlauf", NameEN: "Boiler dry firing",
RequiredComponentTags: []string{"high_pressure", "high_temperature"},
RequiredEnergyTags: []string{"thermal", "pneumatic"},
GeneratedHazardCats: []string{"thermal_hazard", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M104", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E11"},
Priority: 95,
RequiresExpertCalculation: true,
ExpertHintDE: "Wasserstandssicherungen nach TRD 604 pruefen; Rueckschlagventile und Speisepumpen validieren.",
ScenarioDE: "Dampfkessel wird bei zu niedrigem Wasserstand weiterbefeuert, Kesselwand glueet und versagt.",
TriggerDE: "Ausfall der Speisewasserpumpe, defekter Wasserstandsbegrenzer, Bedienfehler",
HarmDE: "Kesselexplosion, toedliche Verbrennungen, Gebaeudeschaeden",
AffectedDE: "Kesselwaerter, Bedienpersonal, Personen im Kesselhaus",
ZoneDE: "Kesselhaus, Brennkammer, Dampfdom",
DefaultSeverity: 5, DefaultExposure: 2,
},
// ================================================================
// Pumpen / Kompressoren (HP740-HP744)
// ================================================================
{
ID: "HP740", NameDE: "Kavitationsschaden an Pumpe", NameEN: "Cavitation damage to pump",
RequiredComponentTags: []string{"rotating_part", "high_pressure"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E20", "E21"},
Priority: 65,
ScenarioDE: "Kavitation zerstoert Pumpenrad und Gehaeuse; Bruchstuecke koennen austreten.",
TriggerDE: "Zu niedriger Zulaufdruck, Drosselung der Saugseite, Lufteinbruch in Saugleitung",
HarmDE: "Pumpenversagen mit Medienaustritt, Splitterwurf bei Gehaeusebruch",
AffectedDE: "Wartungspersonal, Bedienpersonal in Pumpennaehe",
ZoneDE: "Pumpengehaeuse, Laufrad, Saugleitung",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
ID: "HP741", NameDE: "Lagerversagen am Kompressor", NameEN: "Bearing failure on compressor",
RequiredComponentTags: []string{"rotating_part"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E20", "E21"},
Priority: 70,
ScenarioDE: "Lagerversagen am Kompressor fuehrt zu Heisslaeuer, Blockierung und moeglicherweise Gehaeusedurchbruch.",
TriggerDE: "Fehlende Schmierung, Ueberbelastung, Verschleiss ueber Lebensdauer",
HarmDE: "Heisse Metallteile, Schwingungsbruch, Brand durch Heisslaeuer",
AffectedDE: "Wartungspersonal, Bedienpersonal",
ZoneDE: "Kompressorgehaeuse, Lagerstellen, Antriebswelle",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
ID: "HP742", NameDE: "Oeluebertritt in Druckluftsystem", NameEN: "Oil carry-over into compressed air system",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{"pneumatic"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 60,
ScenarioDE: "Kompressoroel gelangt in das Druckluftsystem und kontaminiert nachgelagerte Verbraucher.",
TriggerDE: "Defekter Oelabscheider, ueberfuellter Oeltank, falsches Oel",
HarmDE: "Brand/Explosion in Druckluftleitung (Oelkohleablagerung), Vergiftung bei Atemluft",
AffectedDE: "Bedienpersonal an Druckluftverbrauchern, Personen bei Atemluftsystemen",
ZoneDE: "Druckluftnetz, Verbraucher, Atemluftstationen",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
ID: "HP743", NameDE: "Druckluftschlauch reisst und peitscht", NameEN: "Compressed air hose rupture and whiplash",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{"pneumatic"},
GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M003", "M005", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E11", "E20"},
Priority: 80,
ScenarioDE: "Druckluftschlauch reisst unter Betriebsdruck und peitscht unkontrolliert umher.",
TriggerDE: "Alterung des Schlauchs, Ueberfahren mit Gabelstapler, fehlende Schlauchbruchsicherung",
HarmDE: "Peitschenschlag-Verletzungen, Augenverletzung durch Druckluftstoss, Gehoerschaden durch Knall",
AffectedDE: "Bedienpersonal, Personen im Arbeitsbereich",
ZoneDE: "Druckluftschlauch-Verlauf, Kupplungsstellen, Arbeitsplatz",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP744", NameDE: "Pulsation in Druckleitung", NameEN: "Pulsation in pressure line",
RequiredComponentTags: []string{"high_pressure", "structural_part"},
RequiredEnergyTags: []string{"pneumatic"},
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E11"},
Priority: 60,
ScenarioDE: "Druckpulsationen von Kolbenkompressoren fuehren zu Ermuedungsbruechen an Rohrleitungen und Armaturen.",
TriggerDE: "Fehlende Pulsationsdaempfer, Resonanzfrequenz der Rohrleitung angeregt",
HarmDE: "Rohrleitungsbruch, Medienaustritt unter Druck, Splitterverletzungen",
AffectedDE: "Bedienpersonal entlang der Druckleitung",
ZoneDE: "Druckleitung, T-Stuecke, Pulsationsdaempfer-Bereich",
DefaultSeverity: 3, DefaultExposure: 2,
},
// ================================================================
// Windenergie (HP745-HP749)
// ================================================================
{
ID: "HP745", NameDE: "Blattbruch an Windturbine", NameEN: "Blade failure on wind turbine",
RequiredComponentTags: []string{"rotating_part", "structural_part"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 90,
ScenarioDE: "Rotorblatt einer Windturbine bricht durch Materialermuedung oder Blitzschlag und wird Hunderte Meter weit geschleudert.",
TriggerDE: "Materialermuedung, Blitzschaden, Vereisung mit Unwucht, fehlende Inspektionen",
HarmDE: "Toedliche Verletzung durch Blattstuecke, Sachschaeden im weiten Umkreis",
AffectedDE: "Wartungspersonal, Anwohner, Passanten auf Wegen",
ZoneDE: "Rotorkreisflaeche, Absturzzone bis 1,5 x Nabenhoehe Radius",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP746", NameDE: "Absturz bei Wartung der Gondel", NameEN: "Fall during nacelle maintenance",
RequiredComponentTags: []string{"structural_part", "gravity_risk"},
RequiredEnergyTags: []string{"gravitational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E20", "E24", "E25"},
Priority: 95,
ScenarioDE: "Wartungspersonal stuerzt bei Arbeiten an der Gondel oder beim Besteigen des Turms in die Tiefe.",
TriggerDE: "Fehlende Absturzsicherung, defektes Steigschutzsystem, Windboee, Erschoepfung",
HarmDE: "Toedlicher Absturz, Knochenbrueche, schwere Mehrfachverletzungen",
AffectedDE: "Wartungstechniker, Servicepersonal",
ZoneDE: "Turminneres, Gondelplattform, Rotornabe",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP747", NameDE: "Brand in Gondel einer Windenergieanlage", NameEN: "Fire in wind turbine nacelle",
RequiredComponentTags: []string{"high_temperature", "electrical_part"},
RequiredEnergyTags: []string{"electrical", "thermal"},
GeneratedHazardCats: []string{"thermal_hazard", "electrical_hazard"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E10", "E20"},
Priority: 90,
ScenarioDE: "Brand in der Gondel durch Generatorueberhitzung, Oelleckage auf heisse Bauteile oder elektrischen Kurzschluss.",
TriggerDE: "Lagerschaden am Generator, Oelleckage, Kabelbrand, Blitzeinschlag",
HarmDE: "Totalverlust der Anlage, brennende Truemmer fallen herab, Verletzung/Tod bei Wartung",
AffectedDE: "Wartungspersonal in der Gondel, Personen am Turmfuss",
ZoneDE: "Gondel, Maschinenhaus, Turmfussbereich (Absturzzone brennender Teile)",
DefaultSeverity: 5, DefaultExposure: 1,
},
{
ID: "HP748", NameDE: "Eiswurf von Rotorblaettern", NameEN: "Ice throw from rotor blades",
RequiredComponentTags: []string{"rotating_part"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 80,
ScenarioDE: "Bei Vereisung loesen sich Eisstuecke von den Rotorblaettern und werden durch die Fliehkraft weit geschleudert.",
TriggerDE: "Vereisung im Winter, fehlende Eiserkennungssysteme, Weiterbetrieb bei Eisansatz",
HarmDE: "Verletzung durch Eisschlag, Sachschaeden an Fahrzeugen und Gebaeuden",
AffectedDE: "Passanten, Anwohner, Wartungspersonal",
ZoneDE: "Eiswurfradius (bis 1,5 x Gesamthoehe), Wege und Strassen in Anlagennaehe",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP749", NameDE: "Blitzschlag an Windturbine", NameEN: "Lightning strike on wind turbine",
RequiredComponentTags: []string{"structural_part", "electrical_part"},
RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E10", "E20"},
Priority: 75,
ScenarioDE: "Blitzeinschlag in Rotorblatt oder Turm beschaedigt Steuerung und kann Brand ausloesen.",
TriggerDE: "Blitzeinschlag bei Gewitter, fehlender oder beschaedigter Blitzschutz",
HarmDE: "Brand, Zerstoerung der Steuerung, Herabfallen brennender Teile",
AffectedDE: "Wartungspersonal bei Gewitter, Personen am Turmfuss",
ZoneDE: "Rotorblattspitze, Blitzableitersystem, Gondel",
DefaultSeverity: 4, DefaultExposure: 1,
},
// ================================================================
// Solaranlagen (HP750-HP752)
// ================================================================
{
ID: "HP750", NameDE: "Lichtbogen an DC-Steckverbindung", NameEN: "Arc fault at DC connector",
RequiredComponentTags: []string{"electrical_part"},
RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"electrical_hazard", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E10", "E20"},
Priority: 85,
ScenarioDE: "Korrodierte oder lose DC-Steckverbindung erzeugt Lichtbogen, der den Brand der PV-Anlage ausloest.",
TriggerDE: "Korrosion, lose Kontakte, ungeeignete Stecker, mechanische Belastung am Kabel",
HarmDE: "Dachbrand, Verletzung durch Stromschlag, Erstickung durch Rauch",
AffectedDE: "Gebaeudebewohner, Feuerwehr, Wartungspersonal",
ZoneDE: "DC-Steckverbinder am Modul, Stringleitungen, Wechselrichtereingaenge",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP751", NameDE: "Dachsturz bei PV-Montage", NameEN: "Roof fall during PV installation",
RequiredComponentTags: []string{"structural_part", "gravity_risk"},
RequiredEnergyTags: []string{"gravitational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E20", "E24", "E25"},
Priority: 95,
ScenarioDE: "Monteur stuerzt bei der Installation oder Wartung von PV-Modulen vom Dach.",
TriggerDE: "Fehlende Absturzsicherung, rutschige Dachflaeche, Windlast auf Modul, Durchbruch durch Dachflaeche",
HarmDE: "Toedlicher Absturz, Knochenbrueche, Wirbelsaeulenverletzung",
AffectedDE: "Montage- und Wartungspersonal",
ZoneDE: "Dachflaeche, Dachkante, Durchsturzbereiche (Lichtkuppeln)",
DefaultSeverity: 5, DefaultExposure: 3,
},
{
ID: "HP752", NameDE: "Elektrischer Schlag DC-Seite (Spannung bei Abschaltung)", NameEN: "DC shock (voltage present even when isolated)",
RequiredComponentTags: []string{"electrical_part", "stored_energy"},
RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E10", "E20"},
Priority: 90,
ScenarioDE: "PV-Module erzeugen bei Lichteinfall Spannung, auch wenn die Anlage abgeschaltet ist. DC-Spannung bis 1000 V.",
TriggerDE: "Arbeiten an DC-Leitungen bei Tageslicht, fehlende Abdeckung der Module, beschaedigte Isolation",
HarmDE: "Toedlicher Stromschlag, Verbrennungen durch Lichtbogen, Herzkammerflimmern",
AffectedDE: "Elektroinstallateure, Feuerwehr bei Loescheinsatz, Wartungspersonal",
ZoneDE: "DC-Leitungen, Modulrueckseite, Generatoranschlusskasten",
DefaultSeverity: 5, DefaultExposure: 2,
},
// ================================================================
// Batteriespeicher (HP753-HP755)
// ================================================================
{
ID: "HP753", NameDE: "Thermal Runaway bei Lithium-Batterie", NameEN: "Thermal runaway of lithium battery",
RequiredComponentTags: []string{"stored_energy", "high_temperature"},
RequiredEnergyTags: []string{"electrical", "thermal"},
GeneratedHazardCats: []string{"thermal_hazard", "electrical_hazard"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E10", "E20"},
Priority: 95,
ScenarioDE: "Exotherme Kettenreaktion in einer Lithium-Batteriezelle fuehrt zu unkontrolliertem Temperaturanstieg und Brand.",
TriggerDE: "Ueberladung, mechanische Beschaedigung, Kurzschluss, Zelldefekt, Uebertemperatur",
HarmDE: "Brand, Explosion, giftige Daempfe (HF, CO, Phosphor), schwere Verbrennungen",
AffectedDE: "Bedienpersonal, Gebaeudebewohner, Feuerwehr",
ZoneDE: "Batterieschrank, Batterieraum, angrenzende Raeume",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP754", NameDE: "Ausgasung giftiger Daempfe aus Batterie", NameEN: "Toxic gas emission from battery",
RequiredComponentTags: []string{"stored_energy", "chemical_risk"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 85,
ScenarioDE: "Bei Zelldefekt oder Thermal Runaway gasen Batteriezellen giftige Daempfe (HF, CO, Elektrolytdaempfe) aus.",
TriggerDE: "Defekte Zelle, Ueberladung, mechanische Beschaedigung, thermische Ueberlastung",
HarmDE: "Flusssaeurevergiftung (HF), CO-Vergiftung, Veraetzung der Atemwege",
AffectedDE: "Bedienpersonal, Feuerwehr, Personen in geschlossenen Raeumen",
ZoneDE: "Batterieraum, Lueftungskanaele, angrenzende Raeume",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP755", NameDE: "Elektrischer Schlag an Hochvolt-Batteriespeicher", NameEN: "Electric shock from high-voltage battery storage",
RequiredComponentTags: []string{"stored_energy", "electrical_part"},
RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E10", "E20"},
Priority: 90,
ScenarioDE: "Beruehrung spannungsfuehrender Teile eines Hochvolt-Batteriespeichers (400-800 VDC) fuehrt zu toedlichem Stromschlag.",
TriggerDE: "Oeffnen des Batterieschranks ohne Freischaltung, beschaedigte Isolation, Feuchteeintritt",
HarmDE: "Toedlicher Stromschlag, Herzkammerflimmern, schwere Verbrennungen",
AffectedDE: "Elektrofachkraefte, Wartungspersonal, Ersthelfer",
ZoneDE: "Batterieschrank, DC-Sammelschienen, Batteriemanagementsystem-Anschluesse",
DefaultSeverity: 5, DefaultExposure: 2,
},
}
}
@@ -0,0 +1,467 @@
package iace
// GetSpecificMachinePatterns2 returns 29 hazard patterns (HP756-HP784)
// for escalators, swimming pools, playgrounds, fitness equipment,
// laundry machines, and glass handling.
func GetSpecificMachinePatterns2() []HazardPattern {
return []HazardPattern{
// ================================================================
// Fahrtreppen / Escalators (HP756-HP760)
// ================================================================
{
ID: "HP756", NameDE: "Einzug in Stufenkante der Fahrtreppe", NameEN: "Draw-in at escalator step edge",
RequiredComponentTags: []string{"moving_part", "crush_point"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E09", "E20"},
Priority: 85,
ScenarioDE: "Schuh, Kleidung oder Finger werden am Uebergang zwischen Stufe und Kamm der Fahrtreppe eingezogen.",
TriggerDE: "Weiche Schuhsohle, offene Schnuersenkel, Kinderfinger am Stufenrand",
HarmDE: "Quetschung, Amputation von Zehen, Fussknochenbrueche",
AffectedDE: "Fahrtreppenbenutzer, insbesondere Kinder und aeltere Personen",
ZoneDE: "Kammplatte am Zu- und Abgang, Stufenrand",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP757", NameDE: "Einklemmen am Handlaufeinzug", NameEN: "Entrapment at handrail inlet",
RequiredComponentTags: []string{"moving_part", "pinch_point"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 80,
ScenarioDE: "Finger oder Handteile werden am Einzugspunkt des Handlaufs in die Verkleidung gezogen.",
TriggerDE: "Kinderhand am Handlauf nahe der Verkleidung, fehlende Einlaufschutzbuegel",
HarmDE: "Fingerquetschung, Hautabschuerfungen, bei Kindern Armverletzung",
AffectedDE: "Kinder, aeltere Personen, unaufmerksame Benutzer",
ZoneDE: "Handlaufeinzug oben und unten, Handlaufverkleidung",
DefaultSeverity: 3, DefaultExposure: 4,
},
{
ID: "HP758", NameDE: "Sturz bei Notbremsung der Fahrtreppe", NameEN: "Fall during emergency stop of escalator",
RequiredComponentTags: []string{"moving_part"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E09", "E20"},
Priority: 75,
ScenarioDE: "Ploetzliches Anhalten der Fahrtreppe durch Not-Halt fuehrt zum Sturz stehender Personen.",
TriggerDE: "Not-Halt-Betaetigung, Antriebsstoerung, Kettenbruch, Ueberlastschutz loest aus",
HarmDE: "Sturzverleztungen, Knochenbrueche, Platzwunden, Massenkarambolage",
AffectedDE: "Alle Personen auf der Fahrtreppe, insbesondere aeltere und gehbehinderte Personen",
ZoneDE: "Gesamte Fahrtreppenlaenge",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
ID: "HP759", NameDE: "Spalt zwischen Trittplatte und Seitenwand", NameEN: "Gap between step and skirt panel",
RequiredComponentTags: []string{"moving_part", "pinch_point"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 75,
ScenarioDE: "Schuhe oder Kleidung werden in den Spalt zwischen Trittstufe und seitlicher Verkleidung gezogen.",
TriggerDE: "Zu grosser Spalt durch Verschleiss, weiche Schuhsohlen, Kind steht seitlich",
HarmDE: "Einklemmen des Fusses, Schuhverlust, Hautabschuerfungen",
AffectedDE: "Fahrtreppenbenutzer, Kinder",
ZoneDE: "Seitenverkleidung, Spalt zwischen Stufe und Seitenwand ueber gesamte Laenge",
DefaultSeverity: 3, DefaultExposure: 4,
},
{
ID: "HP760", NameDE: "Kamm- oder Stufenbruch an Fahrtreppe", NameEN: "Comb plate or step breakage on escalator",
RequiredComponentTags: []string{"moving_part", "structural_part"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E09", "E20"},
Priority: 85,
ScenarioDE: "Bruch einer Trittstufe oder der Kammplatte fuehrt zum Einsacken oder Einzug in die Mechanik.",
TriggerDE: "Materialermuedung, Korrosion, fehlende Inspektionen, Vandalismus",
HarmDE: "Einzug in Mechanik, Beinverletzungen, Sturz in Maschinenkammer",
AffectedDE: "Fahrtreppenbenutzer, insbesondere Kinder",
ZoneDE: "Trittstufen, Kammplatte, Maschinenkammer darunter",
DefaultSeverity: 4, DefaultExposure: 2,
},
// ================================================================
// Schwimmbadtechnik (HP761-HP765)
// ================================================================
{
ID: "HP761", NameDE: "Ansaugen durch Wassereinlass (Entrapment)", NameEN: "Suction entrapment by pool drain",
RequiredComponentTags: []string{"high_pressure"},
RequiredEnergyTags: []string{"pneumatic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E08", "E20"},
Priority: 95,
ScenarioDE: "Person wird durch den Sog des Bodenablaufs festgehalten und kann sich nicht befreien (Ansaug-Entrapment).",
TriggerDE: "Fehlende oder defekte Ablaufabdeckung, zu starke Pumpe, einzelner Bodenablauf ohne Doppelanlage",
HarmDE: "Ertrinken, Organprolaps (Darm), schwere Quetschverletzungen",
AffectedDE: "Schwimmer, insbesondere Kinder",
ZoneDE: "Bodenablaeufe, Skimmer, Massageduesen-Ansaugung",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP762", NameDE: "Chlorgasvergiftung in Schwimmbadtechnik", NameEN: "Chlorine gas poisoning in pool plant room",
RequiredComponentTags: []string{"chemical_risk"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 90,
ScenarioDE: "Unkontrollierte Freisetzung von Chlorgas oder Mischung von Chlor und Saeure in der Wasseraufbereitung.",
TriggerDE: "Fehlbefuellung (Saeure in Chlorgebinde), Dosieranlage defekt, Schlauchbruch",
HarmDE: "Chlorgasvergiftung, Atemwegsveraetzung, Lungenoedem, Tod",
AffectedDE: "Schwimmmeister, Badtechnik-Personal, Badegaeste bei Gasaustritt in die Halle",
ZoneDE: "Technikraum Wasseraufbereitung, Schwimmhalle bei Lueftungsversagen",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP763", NameDE: "Elektrischer Schlag im Nassbereich", NameEN: "Electric shock in wet area",
RequiredComponentTags: []string{"electrical_part"},
RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E10", "E20"},
Priority: 90,
ScenarioDE: "Elektrischer Strom tritt im Nassbereich des Schwimmbads durch Isolationsfehler in das Wasser ueber.",
TriggerDE: "Defekte Unterwasserscheinwerfer, beschaedigte Kabel, fehlender FI-Schutzschalter",
HarmDE: "Elektrischer Schlag im Wasser, Herzkammerflimmern, Ertrinken durch Lahmung",
AffectedDE: "Schwimmer im Becken, Wartungspersonal",
ZoneDE: "Schwimmbecken, Duschbereich, Beckenumrandung",
DefaultSeverity: 5, DefaultExposure: 2,
},
{
ID: "HP764", NameDE: "Absturz von Sprungturm/Sprunganlage", NameEN: "Fall from diving tower/platform",
RequiredComponentTags: []string{"structural_part", "gravity_risk"},
RequiredEnergyTags: []string{"gravitational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 80,
ScenarioDE: "Person stuerzt seitlich vom Sprungturm oder rutscht auf nasser Plattform und faellt auf den Beckenrand.",
TriggerDE: "Nasse Oberflaeche, fehlende Gelaender, Drangeln, falscher Absprung",
HarmDE: "Kopfverletzung, Wirbelsaeulenfraktur, Aufprall auf Beckenrand",
AffectedDE: "Badegaeste, insbesondere Kinder und Jugendliche",
ZoneDE: "Sprungturmplattform, Aufstiegsleiter, Beckenrand unter dem Turm",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP765", NameDE: "Rutschen auf nassem Beckenrand", NameEN: "Slip on wet pool deck",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 65,
ScenarioDE: "Person rutscht auf nassem Beckenrand oder Fliesenbereich und stuerzt.",
TriggerDE: "Nasse Fliesenoberflaeche, fehlende Anti-Rutsch-Beschichtung, Rennen am Beckenrand",
HarmDE: "Kopfverletzung, Knochenbrueche, Platzwunden, Zahnschaeden",
AffectedDE: "Badegaeste, Personal",
ZoneDE: "Beckenumrandung, Duschen, Umkleidebereich",
DefaultSeverity: 3, DefaultExposure: 4,
},
// ================================================================
// Spielplatzgeraete (HP766-HP770)
// ================================================================
{
ID: "HP766", NameDE: "Einklemmen Kopf in Spielgeraet-Oeffnung", NameEN: "Head entrapment in playground opening",
RequiredComponentTags: []string{"structural_part", "pinch_point"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 95,
ScenarioDE: "Kind steckt Kopf durch Oeffnung im Spielgeraet und bleibt haengen (Kopf-Entrapment-Gefahr bei 89-230 mm).",
TriggerDE: "Oeffnungen im kritischen Bereich 89-230 mm, V-foermige Spalte, Gelaendersprosse mit Kopffangmass",
HarmDE: "Strangulation, Erstickung, toedliche Verletzung",
AffectedDE: "Kinder (1-12 Jahre)",
ZoneDE: "Gelaender, Sprossen, Wanddurchbrueche, Rutscheneingang",
DefaultSeverity: 5, DefaultExposure: 3,
},
{
ID: "HP767", NameDE: "Absturz von Klettergeraet", NameEN: "Fall from climbing structure",
RequiredComponentTags: []string{"structural_part", "gravity_risk"},
RequiredEnergyTags: []string{"gravitational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 85,
ScenarioDE: "Kind stuerzt von Klettergeraet auf den Boden (freie Fallhoehe ueber 1 m).",
TriggerDE: "Abgleiten an nasser Sprosse, Ueberschaetzen der eigenen Faehigkeit, ungeeigneter Fallschutz",
HarmDE: "Knochenbrueche, Kopfverletzungen, Zahnschaeden",
AffectedDE: "Kinder, insbesondere Kleinkinder",
ZoneDE: "Klettergeraet, Fallzone darunter (Fallschutzbereich)",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP768", NameDE: "Fingerfang in Kettenglieder", NameEN: "Finger entrapment in chain links",
RequiredComponentTags: []string{"moving_part", "pinch_point"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 70,
ScenarioDE: "Kinderfinger geraten in die Kettenglieder der Schaukel und werden bei Schwungbewegung eingeklemmt.",
TriggerDE: "Kette mit zu grosser Gliederweite, Finger rutscht zwischen Glieder",
HarmDE: "Fingerquetschung, Fingerkuppen-Amputation, Nagelverlust",
AffectedDE: "Kinder",
ZoneDE: "Schaukelkette, Aufhaengungspunkte, Nestschaukel-Ketten",
DefaultSeverity: 3, DefaultExposure: 4,
},
{
ID: "HP769", NameDE: "Kollision mit Karussell", NameEN: "Collision with merry-go-round",
RequiredComponentTags: []string{"rotating_part", "moving_part"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 75,
ScenarioDE: "Kind wird vom drehenden Karussell getroffen oder faellt bei zu hoher Drehgeschwindigkeit herunter.",
TriggerDE: "Kind laeuft in die Drehebene, aeltere Kinder drehen zu schnell, Abfliegen durch Fliehkraft",
HarmDE: "Kopfverletzung durch Anprall, Knochenbrueche bei Abwurf, Quetschung unter Drehplattform",
AffectedDE: "Kinder im Spielbereich",
ZoneDE: "Drehbereich des Karussells, Bereich unter der Plattform",
DefaultSeverity: 3, DefaultExposure: 4,
},
{
ID: "HP770", NameDE: "Strangulation an Seil/Netz auf Spielplatz", NameEN: "Strangulation on rope/net at playground",
RequiredComponentTags: []string{"entanglement_risk", "structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E01", "E20"},
Priority: 95,
ScenarioDE: "Kind verfaengt sich mit Kapuzenkordel, Schal oder Halskette in Seilen oder Netzen des Spielgeraets.",
TriggerDE: "Kleidung mit Kordeln am Hals, zu grosse Maschenweite, lose Seilenden",
HarmDE: "Strangulation, Erstickung, toedliche Verletzung",
AffectedDE: "Kinder mit Kordeln an Kapuze/Kleidung",
ZoneDE: "Seilnetze, Kletterseile, Netzbruecken, Seilbahnanlauf",
DefaultSeverity: 5, DefaultExposure: 2,
},
// ================================================================
// Fitnessgeraete (HP771-HP775)
// ================================================================
{
ID: "HP771", NameDE: "Gewicht faellt auf Person an Kraftstation", NameEN: "Weight drops on person at weight machine",
RequiredComponentTags: []string{"gravity_risk", "structural_part"},
RequiredEnergyTags: []string{"gravitational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 85,
ScenarioDE: "Gewichtstapel oder Langhantel faellt unkontrolliert auf den Nutzer (z. B. beim Bankdruecken ohne Sicherung).",
TriggerDE: "Seilriss, defekte Fangvorrichtung, Ueberbelastung, fehlender Spotter",
HarmDE: "Brustkorb-Quetschung, Kehlkopfverletzung, Rippenbruch, toedliche Verletzung",
AffectedDE: "Trainierende, Spotter/Trainingspartner",
ZoneDE: "Unter dem Gewichtstapel, Bankdrueck-Position, Kniebeugen-Rack",
DefaultSeverity: 5, DefaultExposure: 3,
},
{
ID: "HP772", NameDE: "Sturz vom Laufband", NameEN: "Fall from treadmill",
RequiredComponentTags: []string{"moving_part"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E08", "E20"},
Priority: 70,
ScenarioDE: "Person verliert auf dem laufenden Band das Gleichgewicht und wird nach hinten abgeworfen.",
TriggerDE: "Stolpern, zu hohe Geschwindigkeit, Ablenkung, fehlende Not-Stop-Leine",
HarmDE: "Schuertwunden, Kopfverletzung bei Aufprall, Frakturen bei Sturz auf Nachbargeraet",
AffectedDE: "Trainierende, Personen hinter dem Laufband",
ZoneDE: "Laufband-Oberflaeche, Bereich hinter dem Laufband",
DefaultSeverity: 3, DefaultExposure: 4,
},
{
ID: "HP773", NameDE: "Quetschen in Beinpresse", NameEN: "Crushing in leg press",
RequiredComponentTags: []string{"crush_point", "moving_part"},
RequiredEnergyTags: []string{"gravitational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 80,
ScenarioDE: "Gewichtsschlitten der Beinpresse faellt unkontrolliert zurueck und quetscht den Nutzer.",
TriggerDE: "Knie durchgestreckt (Hyperextension), zu hohes Gewicht, defekte Fanghaken",
HarmDE: "Beinbruch, Knieschaeden, Brustkorb-Quetschung bei 45-Grad-Presse",
AffectedDE: "Trainierende an der Beinpresse",
ZoneDE: "Schlittenbereich der Beinpresse, Fussplatte",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP774", NameDE: "Seilriss an Kabelzugmaschine", NameEN: "Cable break at cable machine",
RequiredComponentTags: []string{"moving_part", "structural_part"},
RequiredEnergyTags: []string{"gravitational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E20", "E21"},
Priority: 80,
ScenarioDE: "Zugseil der Kabelzugmaschine reisst unter Belastung; das Gewicht faellt und der Griff schlaegt zurueck.",
TriggerDE: "Verschleiss am Seil, Seil klemmt an Umlenkrolle, Ueberlastung",
HarmDE: "Griffschlag ins Gesicht, Gewichtstapel faellt, Fingerquetschung",
AffectedDE: "Trainierende, Personen im Schwungbereich des Seils",
ZoneDE: "Zugturm, Seilfuehrung, Gewichtstapelbereich",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP775", NameDE: "Ueberlastung Herz-Kreislauf am Fitnessgeraet", NameEN: "Cardiovascular overload at fitness equipment",
RequiredComponentTags: []string{"moving_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"ergonomic"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 60,
ScenarioDE: "Person ueberlastet ihr Herz-Kreislauf-System durch zu intensives Training ohne aerztliche Freigabe.",
TriggerDE: "Vorerkrankung unbekannt, fehlende Einweisung, kein Pulsmonitoring, Pressatmung bei Kraftuebung",
HarmDE: "Herzrhythmusstoerung, Herzinfarkt, Kreislaufkollaps, ploetzlicher Herztod",
AffectedDE: "Trainierende mit Vorerkrankungen, untrainierte Personen",
ZoneDE: "Cardio-Bereich, Freihantelbereich, Kraftgeraete",
DefaultSeverity: 5, DefaultExposure: 2,
},
// ================================================================
// Waescherei / Laundry (HP776-HP780)
// ================================================================
{
ID: "HP776", NameDE: "Quetschen in Mangel/Heissmangel", NameEN: "Crushing in mangle/ironer",
RequiredComponentTags: []string{"rotating_part", "crush_point", "high_temperature"},
RequiredEnergyTags: []string{"kinetic", "thermal"},
GeneratedHazardCats: []string{"mechanical_hazard", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M003", "M004", "M082"},
SuggestedEvidenceIDs: []string{"E08", "E09", "E20"},
Priority: 90,
ScenarioDE: "Finger oder Hand werden in den Walzenspalt der Heissmangel eingezogen und gleichzeitig verbrannt.",
TriggerDE: "Manuelles Zufuehren der Waesche bei laufender Walze, fehlender Knieschalter/Sicherheitsbuegel",
HarmDE: "Fingerquetschung mit gleichzeitiger Verbrennung, Armeinzug, Amputation",
AffectedDE: "Waeschereipersonal, Buegelpersonal",
ZoneDE: "Walzenspalt der Mangel, Einlaufbereich",
DefaultSeverity: 4, DefaultExposure: 4,
},
{
ID: "HP777", NameDE: "Dampfverbrennung an Buegelpresse", NameEN: "Steam burn at pressing machine",
RequiredComponentTags: []string{"high_temperature", "high_pressure"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E10", "E20"},
Priority: 75,
ScenarioDE: "Heisser Dampf tritt beim Oeffnen der Buegelpresse unkontrolliert aus und verbrueht die Haende des Bedieners.",
TriggerDE: "Zu fruehes Oeffnen, defekte Dampfzufuhr, Dampfstoss beim Pressen",
HarmDE: "Verbruehungen an Haenden und Unterarmen, Dampfverbrennungen im Gesicht",
AffectedDE: "Buegelpersonal",
ZoneDE: "Dampfaustrittsoeffnungen, Buegelflaeche, Pressenspalt",
DefaultSeverity: 3, DefaultExposure: 4,
},
{
ID: "HP778", NameDE: "Einzug in industrielle Trommelwaschmaschine", NameEN: "Draw-in by industrial drum washing machine",
RequiredComponentTags: []string{"rotating_part", "entanglement_risk"},
RequiredEnergyTags: []string{"kinetic"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M004", "M082"},
SuggestedEvidenceIDs: []string{"E08", "E09"},
Priority: 85,
ScenarioDE: "Person greift in die drehende Trommel der Industriewaschmaschine und wird eingezogen.",
TriggerDE: "Defekte Tuerverriegelung, Oeffnen waehrend Nachlauf, Bedienfehler",
HarmDE: "Schwere Quetschverletzung, Armeinzug, Strangulation durch Waeschestuecke",
AffectedDE: "Waeschereipersonal",
ZoneDE: "Trommeloeffnung, Beladeoeffnung der Waschmaschine",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
ID: "HP779", NameDE: "Chemische Exposition durch Reinigungsmittel", NameEN: "Chemical exposure from laundry chemicals",
RequiredComponentTags: []string{"chemical_risk"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 70,
ScenarioDE: "Hautkontakt oder Einatmen von Waschmitteln, Bleichmitteln oder Loesungsmitteln bei der Chemikalienhandhabung.",
TriggerDE: "Manuelles Umfuellen ohne Handschuhe, Spritzkontakt, Mischen inkompatibler Chemikalien",
HarmDE: "Hautveraetzung, Atemwegsreizung, allergische Reaktion, Augenschaeden",
AffectedDE: "Waeschereipersonal, Reinigungskraefte",
ZoneDE: "Chemikalienlager, Dosierbereich, Waschmaschinen-Zulauf",
DefaultSeverity: 3, DefaultExposure: 4,
},
{
ID: "HP780", NameDE: "Sturz auf nassem Boden in Waescherei", NameEN: "Slip on wet floor in laundry",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 55,
ScenarioDE: "Naessefilm auf dem Boden der Waescherei fuehrt zu Ausrutschen und Sturz.",
TriggerDE: "Wasser auf dem Boden, fehlende Drainage, ungeeignete Schuhe, Eile",
HarmDE: "Knochenbrueche, Kopfverletzung, Rueckenverletzung",
AffectedDE: "Waeschereipersonal",
ZoneDE: "Gesamter Waeschereibetrieb, insbesondere Wasch- und Schleuderbereich",
DefaultSeverity: 2, DefaultExposure: 5,
},
// ================================================================
// Glashandling / Glass Handling (HP781-HP784)
// ================================================================
{
ID: "HP781", NameDE: "Glasbruch trifft umstehende Person", NameEN: "Glass breakage strikes bystander",
RequiredComponentTags: []string{"structural_part"},
RequiredEnergyTags: []string{"gravitational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 80,
ScenarioDE: "Grosse Glasscheibe zerbricht beim Transport oder bei der Montage und trifft umstehende Personen.",
TriggerDE: "Thermische Spannungen, mechanische Beschaedigung, fehlerhafter Saugnapp, Windlast",
HarmDE: "Tiefe Schnittwunden, Amputationsgefahr, toedliche Verletzung bei grossen Scheiben",
AffectedDE: "Transportpersonal, Monteure, Passanten",
ZoneDE: "Transportweg, Montageort, Glaslager",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
ID: "HP782", NameDE: "Quetschen durch Kippgeraet fuer Glasscheiben", NameEN: "Crushing by glass tilting device",
RequiredComponentTags: []string{"crush_point", "moving_part"},
RequiredEnergyTags: []string{"gravitational"},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M003", "M004", "M082"},
SuggestedEvidenceIDs: []string{"E08", "E09", "E20"},
Priority: 85,
ScenarioDE: "Kippgeraet zum Aufrichten schwerer Glasscheiben quetscht Person zwischen Scheibe und Gestell.",
TriggerDE: "Person steht im Kippbereich, Hydraulik versagt, Scheibe rutscht",
HarmDE: "Schwere Quetschverletzung, toedliche Verletzung durch Gewicht der Scheibe (bis 500 kg)",
AffectedDE: "Glasverarbeiter, Kranfuehrer, Hilfskraefte",
ZoneDE: "Kippbereich, Abstellflaeche, Saugeraufnahme",
DefaultSeverity: 5, DefaultExposure: 3,
},
{
ID: "HP783", NameDE: "Schnittverletzung an scharfer Glaskante", NameEN: "Cut injury from sharp glass edge",
RequiredComponentTags: []string{"cutting_part"},
RequiredEnergyTags: []string{},
GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E20"},
Priority: 70,
ScenarioDE: "Ungefaste Glaskanten schneiden bei der Handhabung in Haende und Finger.",
TriggerDE: "Handling ohne Schnittschutzhandschuhe, unerwartetes Gleiten der Scheibe",
HarmDE: "Tiefe Schnittwunden, Sehnendurchtrennung, starke Blutung",
AffectedDE: "Glasverarbeiter, Montagepersonal",
ZoneDE: "Schnittkante, Lagerfaecher, Transportgestelle",
DefaultSeverity: 3, DefaultExposure: 4,
},
{
ID: "HP784", NameDE: "Verbrennungsgefahr an Glas-Biegeofen", NameEN: "Burn hazard at glass bending oven",
RequiredComponentTags: []string{"high_temperature"},
RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M005", "M141"},
SuggestedEvidenceIDs: []string{"E10", "E20"},
Priority: 75,
ScenarioDE: "Heisses Glas (600-700 C) im Biegeofen verursacht bei Beruehrung schwere Kontaktverbrennungen.",
TriggerDE: "Beruehrung bei Entnahme, durchgeschmolzener Handschuh, Ofentuer offen",
HarmDE: "Verbrennungen 3. Grades, Haut haftet am Glas, grossflaechige Brandwunden",
AffectedDE: "Ofenbediener, Glasbieger",
ZoneDE: "Biegeofen-Innenraum, Entnahmebereich, Kuehlstrecke",
DefaultSeverity: 4, DefaultExposure: 3,
},
}
}
@@ -0,0 +1,435 @@
package iace
// GetWorkshopPatterns returns 65 cross-machine workshop hazard patterns (HP600-HP664).
// These use broad tags so they fire for many machine types.
func GetWorkshopPatterns() []HazardPattern {
return []HazardPattern{
// — Stolpern / Ausrutschen (HP600-HP604) —
{ID: "HP600", NameDE: "Ausrutschen auf Oelverschmutzung", NameEN: "Slip on oil contamination",
RequiredComponentTags: []string{"moving_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Oel bildet rutschigen Film am Boden", TriggerDE: "Leckage, fehlende Auffangwanne",
HarmDE: "Sturz, Prellungen, Frakturen", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenumgebung",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP601", NameDE: "Stolpern ueber Kabel und Schlaeuche", NameEN: "Trip over cables and hoses",
RequiredComponentTags: []string{"electrical_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Lose Kabel auf dem Boden bilden Stolperfallen", TriggerDE: "Fehlende Kabelfuehrung",
HarmDE: "Sturz, Verstauchungen", AffectedDE: "Alle Personen", ZoneDE: "Verkehrswege",
DefaultSeverity: 2, DefaultExposure: 4},
{ID: "HP602", NameDE: "Ausrutschen auf Kuehlmittel am Boden", NameEN: "Slip on coolant on floor",
RequiredComponentTags: []string{"moving_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "KSS oder Wasser bildet glatte Flaeche", TriggerDE: "Undichte Leitungen, Spritzwasser",
HarmDE: "Sturz, Frakturen, Kopfverletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenboden",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP603", NameDE: "Stolpern ueber Metallspaene", NameEN: "Trip on metal chips",
RequiredComponentTags: []string{"cutting_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Spaene auf dem Boden bilden Rutschgefahr", TriggerDE: "Fehlende Spaeneraeumung",
HarmDE: "Sturz, Schnittwunden", AffectedDE: "Bedienpersonal", ZoneDE: "Spaeneauswurfbereich",
DefaultSeverity: 2, DefaultExposure: 4},
{ID: "HP604", NameDE: "Ausrutschen bei Nassreinigung", NameEN: "Slip during wet cleaning",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Nassreinigung hinterlaesst glatte Bodenflaeche", TriggerDE: "Fehlende Absperrung",
HarmDE: "Sturz, Prellungen, Frakturen", AffectedDE: "Alle Personen", ZoneDE: "Werkstattboden",
DefaultSeverity: 2, DefaultExposure: 3},
// — Absturz (HP605-HP609) —
{ID: "HP605", NameDE: "Absturz von Leiter", NameEN: "Fall from ladder",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Leiter fuer erhoehte Maschinenposition", TriggerDE: "Leiter rutscht, Ueberrecken",
HarmDE: "Sturz, Frakturen, Kopfverletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenoberteil",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP606", NameDE: "Absturz von Podest ohne Gelaender", NameEN: "Fall from platform without railing",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75,
ScenarioDE: "Wartungspodest ohne Absturzsicherung", TriggerDE: "Fehlendes Gelaender",
HarmDE: "Absturz, schwere Frakturen, Tod", AffectedDE: "Instandhalter", ZoneDE: "Wartungspodeste",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP607", NameDE: "Durchbruch durch defekte Bodenroste", NameEN: "Fall through defective floor grates",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Lose Bodenroste geben unter Belastung nach", TriggerDE: "Korrosion, fehlende Befestigung",
HarmDE: "Durchbruch, Beinverletzungen", AffectedDE: "Alle Personen", ZoneDE: "Laufstege, Bodenroste",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP608", NameDE: "Absturz von Maschinendach", NameEN: "Fall from machine roof",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Inspektion auf Maschinendach ohne Sicherung", TriggerDE: "Fehlende Anschlagpunkte",
HarmDE: "Absturz, schwere Verletzungen, Tod", AffectedDE: "Instandhalter", ZoneDE: "Maschinendach",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP609", NameDE: "Absturz in offene Maschinengrube", NameEN: "Fall into open machine pit",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Ungesicherte Bodenoeffnung", TriggerDE: "Abdeckung entfernt, fehlende Absperrung",
HarmDE: "Sturz in Grube, Frakturen", AffectedDE: "Alle Personen", ZoneDE: "Maschinengruben",
DefaultSeverity: 4, DefaultExposure: 3},
// — Ergonomie (HP610-HP614) —
{ID: "HP610", NameDE: "Rueckenschaden durch schweres Heben", NameEN: "Back injury from heavy lifting",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Manuelles Heben ueber 25 kg", TriggerDE: "Fehlende Hebehilfe",
HarmDE: "Bandscheibenvorfall, Rueckenschmerzen", AffectedDE: "Bedienpersonal", ZoneDE: "Werkstueckzufuhr",
DefaultSeverity: 3, DefaultExposure: 5},
{ID: "HP611", NameDE: "Zwangshaltung bei Maschinenarbeit", NameEN: "Forced posture during machine work",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Buecken, Ueberkopfarbeit, Knien", TriggerDE: "Schlechte Arbeitsplatzgestaltung",
HarmDE: "Muskel-Skelett-Erkrankungen", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenarbeitsplatz",
DefaultSeverity: 3, DefaultExposure: 5},
{ID: "HP612", NameDE: "Ermuedung durch Steharbeit", NameEN: "Fatigue from standing work",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40,
ScenarioDE: "Dauerhafte Steharbeit ohne Stuetzmoeglichkeit", TriggerDE: "Fehlende Stehhilfe",
HarmDE: "Venenprobleme, Gelenkbeschwerden", AffectedDE: "Bedienpersonal", ZoneDE: "Bedienposition",
DefaultSeverity: 2, DefaultExposure: 5},
{ID: "HP613", NameDE: "Repetitive Bewegung (RSI)", NameEN: "Repetitive motion (RSI)",
RequiredComponentTags: []string{"moving_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Gleiche Handbewegungen bei Beschickung/Entnahme", TriggerDE: "Hohe Taktfrequenz",
HarmDE: "Karpaltunnelsyndrom, Sehnenscheidenentzuendung", AffectedDE: "Bedienpersonal", ZoneDE: "Beschickungsbereich",
DefaultSeverity: 3, DefaultExposure: 5},
{ID: "HP614", NameDE: "Bildschirmarbeit mit schlechter Ergonomie", NameEN: "Screen work poor ergonomics",
RequiredComponentTags: []string{"programmable"}, GeneratedHazardCats: []string{"ergonomic_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40,
ScenarioDE: "HMI-Arbeit mit unguenstiger Blickhoehe", TriggerDE: "Falsche Bildschirmhoehe, Blendung",
HarmDE: "Augenbelastung, Nackenschmerzen", AffectedDE: "Bedienpersonal", ZoneDE: "Bedienterminal",
DefaultSeverity: 2, DefaultExposure: 5},
// — Psychische Belastung (HP615-HP617) —
{ID: "HP615", NameDE: "Belastung durch Schichtarbeit", NameEN: "Strain from shift work",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40,
ScenarioDE: "Schichtarbeit stoert Biorhythmus", TriggerDE: "Fehlende Schichtrotation",
HarmDE: "Erhoehte Unfallgefahr, Herz-Kreislauf-Risiko", AffectedDE: "Schichtpersonal", ZoneDE: "Produktionsstaette",
DefaultSeverity: 3, DefaultExposure: 5},
{ID: "HP616", NameDE: "Laermbedingte psychische Belastung", NameEN: "Noise-induced psychological stress",
RequiredComponentTags: []string{"noise_source"}, GeneratedHazardCats: []string{"ergonomic_hazard", "noise_vibration"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Dauerlerm erschwert Konzentration", TriggerDE: "Laerm >80 dB(A)",
HarmDE: "Stress, Konzentrationsstoerung", AffectedDE: "Alle im Laermbereich", ZoneDE: "Produktionshalle",
DefaultSeverity: 3, DefaultExposure: 5},
{ID: "HP617", NameDE: "Zeitdruck und Monotonie", NameEN: "Time pressure and monotony",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 42,
ScenarioDE: "Hohe Taktbindung fuehrt zu Konzentrationsverlust", TriggerDE: "Enge Taktzeiten",
HarmDE: "Fehlbedienungen, Unfallrisiko", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenarbeitsplatz",
DefaultSeverity: 3, DefaultExposure: 4},
// — Elektrische Gefaehrdungen erweitert (HP618-HP622) —
{ID: "HP618", NameDE: "Lichtbogenbildung bei Kurzschluss", NameEN: "Arc flash from short circuit",
RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"electrical_hazard", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09", "E20"}, Priority: 85,
ScenarioDE: "Kurzschluss erzeugt Lichtbogen mit Hitze und Druckwelle", TriggerDE: "Beschaedigte Isolation",
HarmDE: "Schwere Verbrennungen, Augenschaeden", AffectedDE: "Elektrofachkraefte", ZoneDE: "Schaltschrank",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP619", NameDE: "Kriechstrom durch Feuchtigkeit", NameEN: "Leakage current from humidity",
RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 60,
ScenarioDE: "Feuchtigkeit erzeugt Kriechstroeme", TriggerDE: "Kondenswasser, fehlender IP-Schutz",
HarmDE: "Stromschlag, Muskelverkrampfung", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinengehaeuse",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP620", NameDE: "Elektrostatische Entladung (ESD)", NameEN: "Electrostatic discharge",
RequiredComponentTags: []string{"electrical_part"}, GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 50,
ScenarioDE: "Elektrostatische Aufladung an Maschinenteilen", TriggerDE: "Trockene Luft, fehlende Erdung",
HarmDE: "Funkenbildung, Zuendquelle im Ex-Bereich", AffectedDE: "Bedienpersonal", ZoneDE: "Foerderbaender",
DefaultSeverity: 2, DefaultExposure: 4},
{ID: "HP621", NameDE: "Fehlender Potentialausgleich", NameEN: "Missing equipotential bonding",
RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 65,
ScenarioDE: "Unterbrochener Schutzleiter am Gehaeuse", TriggerDE: "Korrodierte Erdung, defekter Schutzleiter",
HarmDE: "Beruehrungsspannung, Stromschlag", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinengehaeuse",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP622", NameDE: "Blitzeinschlag bei Aussenaufstellung", NameEN: "Lightning strike outdoor installation",
RequiredComponentTags: []string{"electrical_part", "structural_part"}, RequiredEnergyTags: []string{"electrical"},
GeneratedHazardCats: []string{"electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 55,
ScenarioDE: "Maschine im Freien ohne Blitzschutz", TriggerDE: "Fehlender Ueberspannungsableiter",
HarmDE: "Blitzschlag, Brand, Steuerungszerstoerung", AffectedDE: "Aussenpersonal", ZoneDE: "Aussenmaschinen",
DefaultSeverity: 5, DefaultExposure: 1},
// — Thermische Gefaehrdungen erweitert (HP623-HP627) —
{ID: "HP623", NameDE: "Kaelteverletzung bei Tieftemperaturprozess", NameEN: "Cold injury cryogenic process",
RequiredComponentTags: []string{"high_temperature"}, GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 65,
ScenarioDE: "Hautkontakt mit Kryogasen (LN2, CO2)", TriggerDE: "Fehlende Schutzhandschuhe",
HarmDE: "Erfrierungen, Kaelteverbrennungen", AffectedDE: "Bedienpersonal", ZoneDE: "Kuehlanlage",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP624", NameDE: "Hitzschlag bei hoher Umgebungstemperatur", NameEN: "Heatstroke from high temperature",
RequiredComponentTags: []string{"high_temperature"}, RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Arbeit bei >35 degC ohne Kuehlung", TriggerDE: "Fehlende Lueftung, kein Trinkwasser",
HarmDE: "Hitzschlag, Kreislaufkollaps", AffectedDE: "Alle Personen", ZoneDE: "Oefen, Giesshalle",
DefaultSeverity: 4, DefaultExposure: 4},
{ID: "HP625", NameDE: "Verbruehung durch austretenden Dampf", NameEN: "Scald from escaping steam",
RequiredComponentTags: []string{"high_temperature", "high_pressure"}, RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 75,
ScenarioDE: "Heissdampf aus undichter Leitung", TriggerDE: "Defekte Dichtungen, fehlende Isolierung",
HarmDE: "Verbruehungen 2.-3. Grades", AffectedDE: "Bedienpersonal", ZoneDE: "Dampfleitungen, Ventile",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP626", NameDE: "Verbrennung an heisser Oberflaeche", NameEN: "Burn on hot surface",
RequiredComponentTags: []string{"high_temperature"}, RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 60,
ScenarioDE: "Beruehrung heisser Maschinenteile ohne Markierung", TriggerDE: "Fehlende Isolierung/Warnung",
HarmDE: "Kontaktverbrennungen", AffectedDE: "Bedienpersonal", ZoneDE: "Motorgehaeuse, Heizplatten",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP627", NameDE: "Strahlungswaerme von Oefen", NameEN: "Radiant heat from furnaces",
RequiredComponentTags: []string{"high_temperature"}, RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 55,
ScenarioDE: "IR-Strahlung von offenen Oefen belastet Personal", TriggerDE: "Fehlender Strahlungsschutz",
HarmDE: "Hautverbrennungen, Augenschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Ofenbereich",
DefaultSeverity: 3, DefaultExposure: 4},
// — Chemische Gefaehrdungen erweitert (HP628-HP635) —
{ID: "HP628", NameDE: "Einatmen von Loesemitteldaempfen", NameEN: "Inhalation of solvent vapours",
RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Loesemitteldaempfe in schlecht beluefteten Raeumen", TriggerDE: "Fehlende Absaugung",
HarmDE: "Schwindel, Bewusstlosigkeit, Organschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Reinigungsarbeitsplatz",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP629", NameDE: "Veraetzung durch Saeuren/Laugen", NameEN: "Chemical burn from acids/alkalis",
RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75,
ScenarioDE: "Hautkontakt mit Saeuren/Laugen bei Befuellung", TriggerDE: "Spritzer, gerissener Schlauch",
HarmDE: "Veraetzungen, Augenschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Chemikalienlager, Dosieranlage",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP630", NameDE: "Exposition gegenueber CMR-Stoffen", NameEN: "Exposure to CMR substances",
RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85,
RequiresExpertCalculation: true, ExpertHintDE: "Substitutionspruefung gemaess GefStoffV erforderlich.",
ScenarioDE: "Kontakt mit CMR-Stoffen", TriggerDE: "Fehlende Substitution, kein Atemschutz",
HarmDE: "Krebserkrankungen, Fruchtbarkeitsschaeden", AffectedDE: "Exponierte Personen", ZoneDE: "CMR-Arbeitsbereich",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP631", NameDE: "Staubexposition bei Bearbeitung", NameEN: "Dust exposure during machining",
RequiredComponentTags: []string{"cutting_part"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Feinstaub beim Schleifen/Fraesen/Saegen", TriggerDE: "Fehlende Absaugung, trockene Bearbeitung",
HarmDE: "Atemwegserkrankung, Silikose", AffectedDE: "Bedienpersonal", ZoneDE: "Bearbeitungsmaschine",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP632", NameDE: "Nanopartikel-Exposition", NameEN: "Nanoparticle exposure",
RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
RequiresExpertCalculation: true, ExpertHintDE: "Expositionsmessung gemaess TRGS 527 erforderlich.",
ScenarioDE: "Freisetzung von Nanopartikeln bei Beschichtung", TriggerDE: "Fehlende Einhausung",
HarmDE: "Lungengaengige Partikel, Langzeitfolgen", AffectedDE: "Bedienpersonal", ZoneDE: "Beschichtungskabine",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP633", NameDE: "Hautresorption giftiger Substanzen", NameEN: "Dermal absorption toxic substances",
RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60,
ScenarioDE: "Giftaufnahme ueber Haut (Isocyanate, Epoxide)", TriggerDE: "Fehlende Schutzhandschuhe",
HarmDE: "Sensibilisierung, Dermatitis", AffectedDE: "Bedienpersonal", ZoneDE: "Harzverarbeitung",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP634", NameDE: "CO-Vergiftung in geschlossenem Raum", NameEN: "CO poisoning in enclosed space",
RequiredComponentTags: []string{"chemical_risk"}, RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80,
ScenarioDE: "CO-Anreicherung durch Verbrennungsprozesse", TriggerDE: "Fehlende Belueftung",
HarmDE: "CO-Vergiftung, Tod", AffectedDE: "Alle Personen", ZoneDE: "Geschlossene Hallen, Gruben",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP635", NameDE: "Sensibilisierung durch Kuehlschmierstoffe", NameEN: "Sensitization from MWF",
RequiredComponentTags: []string{"chemical_risk", "cutting_part"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Langzeitkontakt mit KSS-Nebel", TriggerDE: "Hautkontakt, verkeimte KSS",
HarmDE: "Kontaktekzem, Asthma", AffectedDE: "Maschinenbediener", ZoneDE: "Bearbeitungsraum",
DefaultSeverity: 3, DefaultExposure: 5},
// — Brand / Explosion erweitert (HP636-HP640) —
{ID: "HP636", NameDE: "Staubexplosion in Absauganlage", NameEN: "Dust explosion in extraction system",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80,
RequiresExpertCalculation: true, ExpertHintDE: "Ex-Schutz-Dokument gemaess BetrSichV Anh. 3 erforderlich.",
ScenarioDE: "Brennbarer Staub bildet explosionsfaehiges Gemisch", TriggerDE: "Zuendquelle, kritische Konzentration",
HarmDE: "Explosion, Verbrennungen, Tod", AffectedDE: "Alle Personen", ZoneDE: "Absauganlage, Filter",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP637", NameDE: "Gasexplosion bei Leckage", NameEN: "Gas explosion from leak",
RequiredComponentTags: []string{"chemical_risk"}, RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"material_environmental", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85,
ScenarioDE: "Gasaustritt bildet explosionsfaehiges Gemisch", TriggerDE: "Undichte Verschraubung",
HarmDE: "Explosion, Tod", AffectedDE: "Alle im Gebaeude", ZoneDE: "Gasversorgung, Brenneranlage",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP638", NameDE: "Metallbrand bei Mg/Al-Bearbeitung", NameEN: "Metal fire during Mg/Al machining",
RequiredComponentTags: []string{"cutting_part", "high_temperature"},
GeneratedHazardCats: []string{"thermal_hazard", "material_environmental"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 80,
ScenarioDE: "Feine Mg/Al-Spaene entzuenden sich", TriggerDE: "Trockene Bearbeitung, Funken",
HarmDE: "Metallbrand, giftige Rauchgase", AffectedDE: "Bedienpersonal", ZoneDE: "Bearbeitungsmaschine",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP639", NameDE: "Fettbrand in Lebensmittelanlage", NameEN: "Fat fire in food processing",
RequiredComponentTags: []string{"high_temperature", "chemical_risk"}, RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"thermal_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 70,
ScenarioDE: "Ueberhitztes Fett entzuendet sich", TriggerDE: "Defekter Thermostat, Wasser im Fett",
HarmDE: "Fettexplosion, Verbrennungen", AffectedDE: "Bedienpersonal", ZoneDE: "Friteuse, Bratanlage",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP640", NameDE: "Selbstentzuendung oelgetraenkter Lappen", NameEN: "Spontaneous combustion oily rags",
RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"thermal_hazard", "material_environmental"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Oelgetraenkte Tuecher entzuenden sich", TriggerDE: "Zusammengeknuellte Lappen",
HarmDE: "Brand, Rauchentwicklung", AffectedDE: "Alle Personen", ZoneDE: "Werkstatt, Abfallbehaelter",
DefaultSeverity: 3, DefaultExposure: 3},
// — Biologische Gefaehrdungen (HP641-HP644) —
{ID: "HP641", NameDE: "Legionellen im Kuehlwassersystem", NameEN: "Legionella in cooling water",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60,
ScenarioDE: "Legionellen im Kuehlturm/KSS-Kreislauf", TriggerDE: "Stagnation, 25-50 degC",
HarmDE: "Legionaerskrankheit", AffectedDE: "Alle im Aerosolbereich", ZoneDE: "Kuehlturm, KSS-Anlage",
DefaultSeverity: 4, DefaultExposure: 3},
{ID: "HP642", NameDE: "Schimmel in feuchten Raeumen", NameEN: "Mould in damp rooms",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Dauerfeuchtigkeit foerdert Schimmelwachstum", TriggerDE: "Ungenuegender Luftwechsel",
HarmDE: "Atemwegsbeschwerden, Allergien", AffectedDE: "Alle im Raum", ZoneDE: "Kellerraeume, Feuchtzonen",
DefaultSeverity: 2, DefaultExposure: 5},
{ID: "HP643", NameDE: "Zeckenstich bei Aussenarbeit", NameEN: "Tick bite outdoor work",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40,
ScenarioDE: "Zecken uebertragen FSME/Borreliose", TriggerDE: "Arbeit im Gestruepp",
HarmDE: "FSME, Borreliose", AffectedDE: "Aussendienstpersonal", ZoneDE: "Aussengelaende",
DefaultSeverity: 4, DefaultExposure: 2},
{ID: "HP644", NameDE: "Hantavirus durch Nagetierkontakt", NameEN: "Hantavirus from rodent contact",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Staub mit Nagerkot in selten gereinigten Raeumen", TriggerDE: "Aufwirbeln von Staub",
HarmDE: "Hantavirus, Nierenschaeden", AffectedDE: "Lagerpersonal", ZoneDE: "Lager, Keller",
DefaultSeverity: 4, DefaultExposure: 2},
// — Strahlung erweitert (HP645-HP649) —
{ID: "HP645", NameDE: "Roentgenstrahlung bei Materialpruefung", NameEN: "X-ray during material testing",
RequiredComponentTags: []string{"radiation_source"}, GeneratedHazardCats: []string{"radiation_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80,
RequiresExpertCalculation: true, ExpertHintDE: "Genehmigung nach StrlSchG erforderlich.",
ScenarioDE: "Ionisierende Strahlung bei Materialpruefung", TriggerDE: "Fehlende Abschirmung",
HarmDE: "Strahlenschaeden, Krebsrisiko", AffectedDE: "Pruefpersonal", ZoneDE: "Pruefkabine",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP646", NameDE: "UV-Strahlung bei Haertung/Desinfektion", NameEN: "UV radiation curing/disinfection",
RequiredComponentTags: []string{"radiation_source"}, GeneratedHazardCats: []string{"radiation_hazard"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60,
ScenarioDE: "Offener UV-Strahler exponiert Personal", TriggerDE: "Defekter Schutzschirm",
HarmDE: "Hautkrebs, Augenentzuendung", AffectedDE: "Bedienpersonal", ZoneDE: "UV-Haertungsanlage",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP647", NameDE: "Infrarotstrahlung am Schmelzofen", NameEN: "IR radiation at melting furnace",
RequiredComponentTags: []string{"high_temperature", "radiation_source"}, RequiredEnergyTags: []string{"thermal"},
GeneratedHazardCats: []string{"radiation_hazard", "thermal_hazard"},
SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 60,
ScenarioDE: "IR-Strahlung von offenen Oefen", TriggerDE: "Fehlende IR-Schutzbrille",
HarmDE: "Katarakt, Hautverbrennung", AffectedDE: "Ofenpersonal", ZoneDE: "Schmelzofen",
DefaultSeverity: 3, DefaultExposure: 4},
{ID: "HP648", NameDE: "Mikrowellenstrahlung bei HF-Erwaermung", NameEN: "Microwave radiation HF heating",
RequiredComponentTags: []string{"radiation_source"}, GeneratedHazardCats: []string{"radiation_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
ScenarioDE: "Leckstrahlung aus defektem Magnetron", TriggerDE: "Beschaedigte Abschirmung",
HarmDE: "Gewebeerwaermung, Augenschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "HF-Trockner",
DefaultSeverity: 3, DefaultExposure: 3},
{ID: "HP649", NameDE: "Radonexposition in Kellerraeumen", NameEN: "Radon in underground rooms",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"radiation_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Radon in schlecht beluefteten Kellern", TriggerDE: "Risse im Fundament, keine Lueftung",
HarmDE: "Lungenkrebs bei Langzeitexposition", AffectedDE: "Kellerpersonal", ZoneDE: "Keller",
DefaultSeverity: 4, DefaultExposure: 3},
// — Laerm erweitert (HP650-HP653) —
{ID: "HP650", NameDE: "Impulslaerm (Stanzen/Pressen)", NameEN: "Impulse noise stamping/pressing",
RequiredComponentTags: []string{"noise_source", "moving_part"}, GeneratedHazardCats: []string{"noise_vibration"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Laermspitzen >137 dB(C) schaedigen sofort", TriggerDE: "Stanzhub, fehlender Gehoerschutz",
HarmDE: "Knalltrauma, Tinnitus, Hoerverlust", AffectedDE: "Bedienpersonal", ZoneDE: "Stanzmaschine",
DefaultSeverity: 4, DefaultExposure: 4},
{ID: "HP651", NameDE: "Ultraschallemission", NameEN: "Ultrasound emission",
RequiredComponentTags: []string{"noise_source"}, GeneratedHazardCats: []string{"noise_vibration"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
ScenarioDE: "Ultraschallgeraete emittieren unhorbaren Schall", TriggerDE: "Offener Betrieb ohne Kapselung",
HarmDE: "Kopfschmerzen, Uebelkeit", AffectedDE: "Bedienpersonal", ZoneDE: "US-Reinigungsbad",
DefaultSeverity: 2, DefaultExposure: 4},
{ID: "HP652", NameDE: "Infraschall durch Grossmaschinen", NameEN: "Infrasound from large machines",
RequiredComponentTags: []string{"noise_source", "structural_part"}, GeneratedHazardCats: []string{"noise_vibration"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Tieffrequenter Schall <20 Hz", TriggerDE: "Ungedaempfte Aufstellung, Resonanz",
HarmDE: "Schwindel, Konzentrationsstoerung", AffectedDE: "Alle im Gebaeude", ZoneDE: "Kompressorraum",
DefaultSeverity: 2, DefaultExposure: 4},
{ID: "HP653", NameDE: "Koerperschall ins Gebaeude", NameEN: "Structure-borne sound",
RequiredComponentTags: []string{"noise_source", "structural_part"}, GeneratedHazardCats: []string{"noise_vibration"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45,
ScenarioDE: "Vibrationen uebertragen sich ueber Fundamente", TriggerDE: "Fehlende Schwingungsisolation",
HarmDE: "Laermbelaestigung in Nachbarraeumen", AffectedDE: "Bueropersonal", ZoneDE: "Angrenzende Raeume",
DefaultSeverity: 2, DefaultExposure: 5},
// — Vibration erweitert (HP654-HP656) —
{ID: "HP654", NameDE: "Hand-Arm-Vibration durch Handmaschinen", NameEN: "Hand-arm vibration handheld tools",
RequiredComponentTags: []string{"vibration_source"}, GeneratedHazardCats: []string{"noise_vibration"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60,
RequiresExpertCalculation: true, ExpertHintDE: "A(8)-Bewertung nach LaeVibr erforderlich.",
ScenarioDE: "Vibrierende Handmaschinen (Schleifer, Bohrer)", TriggerDE: ">2h taegl. Exposition",
HarmDE: "Weissfingerkrankheit, Nervenschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Handarbeitsplatz",
DefaultSeverity: 3, DefaultExposure: 5},
{ID: "HP655", NameDE: "Ganzkoerpervibration auf Fahrersitz", NameEN: "Whole-body vibration driver seat",
RequiredComponentTags: []string{"vibration_source", "structural_part"}, GeneratedHazardCats: []string{"noise_vibration"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Vibration uebertraegt sich auf Koerper", TriggerDE: "Defekte Sitzfederung, Unebenheiten",
HarmDE: "Bandscheibenschaeden, LWS-Beschwerden", AffectedDE: "Fahrerpersonal", ZoneDE: "Fahrersitz",
DefaultSeverity: 3, DefaultExposure: 5},
{ID: "HP656", NameDE: "Resonanzverstaerkung bei Drehzahl", NameEN: "Resonance amplification at RPM",
RequiredComponentTags: []string{"rotating_part", "vibration_source"},
GeneratedHazardCats: []string{"noise_vibration", "mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Resonanzfrequenz mit starker Vibration", TriggerDE: "Kritische Drehzahl",
HarmDE: "Bauteilbruch, Ermattungsrisse", AffectedDE: "Bedienpersonal", ZoneDE: "Rotierende Baugruppen",
DefaultSeverity: 4, DefaultExposure: 2},
// — Enge Raeume (HP657-HP659) —
{ID: "HP657", NameDE: "Sauerstoffmangel in engem Raum", NameEN: "Oxygen deficiency confined space",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85,
RequiresExpertCalculation: true, ExpertHintDE: "Befahrerlaubnis gemaess DGUV Regel 113-004.",
ScenarioDE: "O2 <17% in Behaeltern/Silos/Schaechten", TriggerDE: "Inertgas-Verdraengung",
HarmDE: "Bewusstlosigkeit, Erstickung", AffectedDE: "Einsteigpersonal", ZoneDE: "Behaelter, Silos",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP658", NameDE: "Gasvergiftung in engem Raum", NameEN: "Gas poisoning confined space",
RequiredComponentTags: []string{"chemical_risk", "structural_part"}, GeneratedHazardCats: []string{"material_environmental"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85,
ScenarioDE: "H2S/CO/CH4 in geschlossenen Raeumen", TriggerDE: "Ausgasung, fehlende Gaswarnung",
HarmDE: "Vergiftung, Tod", AffectedDE: "Einsteigpersonal", ZoneDE: "Behaelter, Kanalisationen",
DefaultSeverity: 5, DefaultExposure: 2},
{ID: "HP659", NameDE: "Rettung aus engem Raum erschwert", NameEN: "Impaired rescue confined space",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
ScenarioDE: "Enge Zugaenge verhindern schnelle Rettung", TriggerDE: "Zu enge Mannloecher",
HarmDE: "Verzoegerte Rettung, Tod", AffectedDE: "Verunfallte, Retter", ZoneDE: "Behaelter",
DefaultSeverity: 5, DefaultExposure: 2},
// — Alleinarbeit (HP660-HP661) —
{ID: "HP660", NameDE: "Alleinarbeit ohne Notrufmoeglichkeit", NameEN: "Lone work no emergency call",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60,
ScenarioDE: "Alleinarbeiter kann keinen Notruf absetzen", TriggerDE: "Kein PNG-Geraet, Funkloch",
HarmDE: "Verzoegerte Rettung, Tod", AffectedDE: "Alleinarbeitende", ZoneDE: "Abgelegene Arbeitsplaetze",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP661", NameDE: "Kommunikationsausfall bei Alleinarbeit", NameEN: "Communication failure lone work",
RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"},
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55,
ScenarioDE: "Funkverbindung faellt aus, Person isoliert", TriggerDE: "Funkschatten, leerer Akku",
HarmDE: "Keine Hilfe bei Unfall", AffectedDE: "Alleinarbeitende", ZoneDE: "Abgelegene Bereiche",
DefaultSeverity: 4, DefaultExposure: 3},
// — Manipulation von Schutzeinrichtungen (HP662-HP664) —
{ID: "HP662", NameDE: "Umgehung von Schutzeinrichtungen", NameEN: "Bypassing safety devices",
RequiredComponentTags: []string{"moving_part"}, GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E20"}, Priority: 85,
ScenarioDE: "Schutzeinrichtung wegen Produktionsdruck umgangen", TriggerDE: "Magnete an Tuerschaltern",
HarmDE: "Alle maschinentypischen Verletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Gefahrenstellen",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP663", NameDE: "Ueberbrueckung von Sicherheitsschaltern", NameEN: "Bridging safety switches",
RequiredComponentTags: []string{"electrical_part", "programmable"},
GeneratedHazardCats: []string{"safety_function_failure", "electrical_hazard"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E09"}, Priority: 85,
ScenarioDE: "Sicherheitsschalter elektrisch ueberbrueckt", TriggerDE: "Kurzschlussbruecke",
HarmDE: "Unerkannter Gefahrenzustand", AffectedDE: "Bedienpersonal", ZoneDE: "Sicherheitssteuerung",
DefaultSeverity: 5, DefaultExposure: 3},
{ID: "HP664", NameDE: "Demontage von Schutzverkleidungen", NameEN: "Removal of safety guards",
RequiredComponentTags: []string{"moving_part", "structural_part"},
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80,
ScenarioDE: "Verkleidungen entfernt und nicht remontiert", TriggerDE: "Fehlende Spezialschrauben",
HarmDE: "Zugang zu laufenden Teilen, Quetschung", AffectedDE: "Bedienpersonal", ZoneDE: "Schutzverkleidungen",
DefaultSeverity: 4, DefaultExposure: 3},
}
}
@@ -75,12 +75,19 @@ func NewPatternEngine() *PatternEngine {
patterns = append(patterns, GetExtendedHazardPatterns2()...) // HP134-HP173 additional hazards
patterns = append(patterns, GetElevatorPatterns()...) // HP174-HP198 elevator/lift
patterns = append(patterns, GetAGVAgriPatterns()...) // HP199-HP228 AGV + agricultural
patterns = append(patterns, GetFoodPkgPatterns()...) // HP300-HP334 food + packaging
patterns = append(patterns, GetLaserMedicalPatterns()...) // HP335-HP374 laser + medical + pressure
patterns = append(patterns, GetFoodProcessingPatterns()...) // HP300-HP319 food processing
patterns = append(patterns, GetPackagingPatterns()...) // HP320-HP334 packaging machines
patterns = append(patterns, GetLaserPatterns()...) // HP335-HP349 laser machines
patterns = append(patterns, GetMedicalDevicePatterns()...) // HP350-HP364 medical devices (IEC 60601)
patterns = append(patterns, GetPressureEquipmentPatterns()...) // HP365-HP374 pressure equipment
patterns = append(patterns, GetConstructionPatterns()...) // HP400-HP419 construction/crane
patterns = append(patterns, GetForestryConveyorPatterns()...) // HP420-HP450 forestry/conveyor
patterns = append(patterns, GetPlasticsMetalPatterns()...) // HP500-HP529 plastics + metalworking
patterns = append(patterns, GetWeldingGlassTextilePatterns()...) // HP530-HP559 welding + glass + textile
patterns = append(patterns, GetSpecificMachinePatterns()...) // HP730-HP784 pressure/wind/solar/battery/escalator/pool/playground/fitness/laundry/glass
patterns = append(patterns, GetCyberExtendedPatterns()...) // HP800-HP864 software faults/cyber/AI-ML/network/HMI
patterns = append(patterns, GetWorkshopPatterns()...) // HP600-HP664 cross-machine workshop
patterns = append(patterns, GetMaintenanceExtPatterns()...) // HP700-HP729,HP900-HP934 maintenance lifecycle
return &PatternEngine{
resolver: NewTagResolver(),
patterns: patterns,
@@ -51,6 +51,7 @@ class CheckItem(BaseModel):
level: int = 1
parent: str | None = None
skipped: bool = False
hint: str = ""
class DocCheckResult(BaseModel):
@@ -247,6 +248,7 @@ def _run_checklist(text: str, doc_type: str, label: str, url: str, word_count: i
level=c.get("level", 1),
parent=c.get("parent"),
skipped=c.get("skipped", False),
hint=c.get("hint", ""),
))
completeness = f.get("completeness_pct", 0)
correctness = f.get("correctness_pct", 0)
@@ -16,6 +16,7 @@ AGB_CHECKLIST = [
r"diese\s+(?:agb|bedingungen)\s+gelten",
],
"severity": "HIGH",
"hint": "Ihre AGB enthalten keinen Geltungsbereich. Ergaenzen Sie einen Abschnitt, der festlegt, fuer welche Vertraege und Parteien die AGB gelten.",
},
{
"id": "incorporation_clause",
@@ -27,6 +28,7 @@ AGB_CHECKLIST = [
r"§\s*305",
],
"severity": "MEDIUM",
"hint": "Es fehlt eine Einbeziehungsklausel gemaess §305 BGB. Stellen Sie klar, dass der Kunde vor Vertragsschluss auf die AGB hingewiesen wird und ihnen zustimmt.",
},
# ── L1: Vertragsschluss ───────────────────────────────────────────
@@ -39,6 +41,7 @@ AGB_CHECKLIST = [
r"contract\s+formation", r"angebot\s+und\s+annahme",
],
"severity": "HIGH",
"hint": "Die AGB beschreiben nicht, wie ein Vertrag zustande kommt. Ergaenzen Sie eine Regelung zu Angebot und Annahme (z.B. Bestellung als Angebot, Bestaetigung als Annahme).",
},
# ── L1: Haftung ───────────────────────────────────────────────────
@@ -51,6 +54,7 @@ AGB_CHECKLIST = [
r"schadensersatz", r"haftungsbeschr(?:ae|ä)nkung",
],
"severity": "HIGH",
"hint": "Es fehlt eine Haftungsregelung. Nehmen Sie einen Abschnitt auf, der die Haftung regelt und dabei die gesetzlichen Mindestrechte (Vorsatz, grobe Fahrlaessigkeit, Personenschaeden) unberuehrt laesst.",
},
# ── L1: Gerichtsstand / Anwendbares Recht ─────────────────────────
@@ -63,6 +67,7 @@ AGB_CHECKLIST = [
r"jurisdiction", r"governing\s+law",
],
"severity": "MEDIUM",
"hint": "Die AGB enthalten keine Angabe zum anwendbaren Recht oder Gerichtsstand. Benennen Sie das geltende Recht (z.B. deutsches Recht) und ggf. den Gerichtsstand.",
},
{
"id": "dispute_odr_link",
@@ -74,6 +79,7 @@ AGB_CHECKLIST = [
r"(?:online[\-\s]?streitbeilegung|online\s+dispute\s+resolution)",
],
"severity": "MEDIUM",
"hint": "Der Link zur EU-Online-Streitbeilegungsplattform (https://ec.europa.eu/consumers/odr) fehlt. Dieser ist fuer Online-Haendler nach EU-Verordnung 524/2013 Pflicht.",
},
{
"id": "choice_of_law_specific",
@@ -86,6 +92,7 @@ AGB_CHECKLIST = [
r"un[\-\s]kaufrecht.*(?:ausgeschlossen|findet\s+keine\s+anwendung)",
],
"severity": "LOW",
"hint": "Es wird kein konkretes anwendbares Recht benannt. Geben Sie explizit an, welches Recht gilt (z.B. 'Es gilt das Recht der Bundesrepublik Deutschland') und ob das UN-Kaufrecht ausgeschlossen ist.",
},
# ── L1: Zahlungsbedingungen ───────────────────────────────────────
@@ -99,6 +106,7 @@ AGB_CHECKLIST = [
r"zahlungsweise", r"rechnungsstellung",
],
"severity": "MEDIUM",
"hint": "Die AGB enthalten keine Zahlungsbedingungen. Ergaenzen Sie Angaben zu Preisen, Zahlungsarten und Faelligkeit.",
},
{
"id": "payment_methods",
@@ -108,6 +116,7 @@ AGB_CHECKLIST = [
r"(?:vorkasse|nachnahme|lastschrift|sepa|(?:ue|ü)berweisung|kreditkarte|paypal|sofort(?:ue|ü)berweisung|klarna|rechnung|giropay|apple\s*pay|google\s*pay)",
],
"severity": "LOW",
"hint": "Es werden keine konkreten Zahlungsarten aufgefuehrt. Listen Sie die akzeptierten Zahlungsmethoden auf (z.B. Kreditkarte, PayPal, SEPA-Lastschrift, Ueberweisung).",
},
{
"id": "payment_due_date",
@@ -119,6 +128,7 @@ AGB_CHECKLIST = [
r"zahlungsfrist",
],
"severity": "LOW",
"hint": "Es fehlt eine Angabe zur Faelligkeit der Zahlung. Geben Sie an, wann die Zahlung faellig ist (z.B. 'sofort nach Rechnungsstellung' oder 'innerhalb von 14 Tagen').",
},
# ── L1: Lieferung ─────────────────────────────────────────────────
@@ -132,6 +142,7 @@ AGB_CHECKLIST = [
r"(?:zugang|zugriff).*(?:dienst|leistung)",
],
"severity": "MEDIUM",
"hint": "Die AGB regeln nicht die Lieferung oder Leistungserbringung. Ergaenzen Sie Angaben zu Liefergebiet, Versandart und Lieferfristen.",
},
{
"id": "delivery_timeframe",
@@ -143,6 +154,7 @@ AGB_CHECKLIST = [
r"(?:liefer|versand).*\d+[\-\s]+(?:\d+\s+)?(?:werk)?tage",
],
"severity": "LOW",
"hint": "Es wird keine konkrete Lieferzeit angegeben. Nennen Sie die voraussichtliche Lieferfrist (z.B. '3-5 Werktage nach Zahlungseingang').",
},
# ── L1: Gewaehrleistung ───────────────────────────────────────────
@@ -156,6 +168,7 @@ AGB_CHECKLIST = [
r"gew(?:ae|ä)hrleistungsfrist",
],
"severity": "MEDIUM",
"hint": "Die AGB enthalten keine Gewaehrleistungsregelung. Nehmen Sie einen Abschnitt zu Maengelrechten auf, der die gesetzlichen Gewaehrleistungsansprueche beschreibt.",
},
{
"id": "warranty_period",
@@ -167,6 +180,7 @@ AGB_CHECKLIST = [
r"(?:gew(?:ae|ä)hrleistung|m(?:ae|ä)ngel|verj(?:ae|ä)hrung).*(?:2|zwei)\s+jahre",
],
"severity": "LOW",
"hint": "Die Gewaehrleistungsfrist wird nicht genannt. Geben Sie die Frist an (gesetzlich: 2 Jahre bei Neuware, 1 Jahr bei Gebrauchtwaren gegenueber Verbrauchern moeglich).",
},
# ── L1: Kuendigung ────────────────────────────────────────────────
@@ -180,6 +194,7 @@ AGB_CHECKLIST = [
r"k(?:ue|ü)ndigungsfrist",
],
"severity": "MEDIUM",
"hint": "Es fehlt eine Kuendigungsregelung. Beschreiben Sie, wie und unter welchen Bedingungen der Vertrag gekuendigt werden kann.",
},
{
"id": "termination_period",
@@ -191,6 +206,7 @@ AGB_CHECKLIST = [
r"(?:k(?:ue|ü)ndig|frist).*\d+\s+(?:tage?|wochen?|monate?)",
],
"severity": "LOW",
"hint": "Es wird keine konkrete Kuendigungsfrist angegeben. Nennen Sie die Frist (z.B. '4 Wochen zum Monatsende') und den Zeitpunkt, ab dem sie gilt.",
},
{
"id": "termination_form",
@@ -201,6 +217,7 @@ AGB_CHECKLIST = [
r"(?:schriftlich|textform).*k(?:ue|ü)ndigung",
],
"severity": "LOW",
"hint": "Die Formvorschrift fuer Kuendigungen fehlt. Geben Sie an, in welcher Form eine Kuendigung erfolgen muss (z.B. Textform per E-Mail oder schriftlich per Post).",
},
# ── L1: Datenschutzhinweis in AGB ─────────────────────────────────
@@ -215,6 +232,7 @@ AGB_CHECKLIST = [
r"dsgvo.*(?:agb|vertrag)",
],
"severity": "LOW",
"hint": "Die AGB enthalten keinen Verweis auf den Datenschutz. Ergaenzen Sie einen Hinweis, dass personenbezogene Daten gemaess Ihrer Datenschutzerklaerung verarbeitet werden, und verlinken Sie diese.",
},
# ── Neue L1: Salvatorische Klausel ────────────────────────────────
@@ -229,6 +247,7 @@ AGB_CHECKLIST = [
r"(?:uebrigen|übrigen)\s+bestimmungen.*(?:unberuehrt|unberührt|wirksam|bestehen)",
],
"severity": "LOW",
"hint": "Es fehlt eine salvatorische Klausel. Ergaenzen Sie eine Regelung, dass die uebrigen Bestimmungen wirksam bleiben, falls einzelne Klauseln unwirksam sein sollten.",
},
# ── Neue L1: Aenderungsklausel ────────────────────────────────────
@@ -243,6 +262,7 @@ AGB_CHECKLIST = [
r"(?:neue\s+fassung|neufassung).*(?:agb|bedingung)",
],
"severity": "LOW",
"hint": "Die AGB enthalten keine Aenderungsklausel. Beschreiben Sie, wie und wann die AGB geaendert werden koennen und wie Kunden ueber Aenderungen informiert werden.",
},
# ── Neue L1: Verbraucherrechte §309 ───────────────────────────────
@@ -257,5 +277,6 @@ AGB_CHECKLIST = [
r"(?:verbrauch|konsument).*(?:recht|anspruch|schutz)",
],
"severity": "LOW",
"hint": "Es fehlt ein Hinweis, dass zwingende Verbraucherrechte (§309 BGB) unberuehrt bleiben. Stellen Sie klar, dass gesetzliche Verbraucherrechte durch die AGB nicht eingeschraenkt werden.",
},
]
@@ -16,6 +16,7 @@ COOKIE_CHECKLIST = [
r"cookie.*(?:art|typ|kategori)",
],
"severity": "HIGH",
"hint": "Ihre Cookie-Richtlinie muss die verschiedenen Arten von Cookies auflisten (z.B. notwendige, funktionale, Statistik-, Marketing-Cookies). Ergaenzen Sie eine Kategorisierung aller eingesetzten Cookie-Typen.",
},
{
"id": "cookie_names_listed",
@@ -27,6 +28,7 @@ COOKIE_CHECKLIST = [
r"name\s+des\s+cookie",
],
"severity": "MEDIUM",
"hint": "Neben den Kategorien sollten auch die konkreten Cookie-Namen aufgefuehrt werden (z.B. _ga, _gid, PHPSESSID). Listen Sie jeden einzelnen Cookie mit seinem technischen Namen auf.",
},
{
"id": "cookie_essential_justified",
@@ -37,6 +39,7 @@ COOKIE_CHECKLIST = [
r"(?:unbedingt|zwingend)\s+erforderlich",
],
"severity": "LOW",
"hint": "Fuer essenzielle/notwendige Cookies muss begruendet werden, warum sie technisch erforderlich sind (z.B. Warenkorb, Session, Sicherheit). Ergaenzen Sie eine kurze Begruendung je Cookie.",
},
# ── L1: Zwecke der Cookies ────────────────────────────────────────
@@ -53,6 +56,7 @@ COOKIE_CHECKLIST = [
r"cookies?\s+(?:dienen|helfen|erm(?:oe|ö)glichen)",
],
"severity": "HIGH",
"hint": "Die Cookie-Richtlinie muss erklaeren, zu welchem Zweck Cookies eingesetzt werden (z.B. Analyse, Marketing, Funktionalitaet). Beschreiben Sie den Zweck fuer jede Cookie-Kategorie.",
},
{
"id": "cookie_providers_named",
@@ -63,6 +67,7 @@ COOKIE_CHECKLIST = [
r"(?:anbieter|provider|dienst)\s*[:\|]\s*[A-Z]",
],
"severity": "MEDIUM",
"hint": "Die konkreten Anbieter und Dienste, die Cookies setzen, muessen namentlich genannt werden (z.B. Google Analytics, Meta Pixel, Hotjar). Ergaenzen Sie alle Drittanbieter-Dienste mit Namen.",
},
{
"id": "cookie_analytics_named",
@@ -72,6 +77,7 @@ COOKIE_CHECKLIST = [
r"google\s+analytics|matomo|piwik|plausible|fathom|adobe\s+analytics|microsoft\s+clarity|hotjar|etracker",
],
"severity": "LOW",
"hint": "Falls Sie Analyse-/Statistik-Tools einsetzen, muessen diese konkret benannt werden (z.B. Google Analytics, Matomo, Hotjar). Fuehren Sie jedes eingesetzte Analysetool namentlich auf.",
},
{
"id": "cookie_marketing_named",
@@ -81,6 +87,7 @@ COOKIE_CHECKLIST = [
r"(?:facebook|meta)\s+pixel|google\s+ads|linkedin\s+insight|tiktok\s+pixel|pinterest\s+tag|criteo|adroll|taboola",
],
"severity": "LOW",
"hint": "Falls Sie Marketing- oder Tracking-Tools einsetzen, muessen diese konkret benannt werden (z.B. Meta Pixel, Google Ads, LinkedIn Insight Tag). Listen Sie alle Marketing-Dienste namentlich auf.",
},
# ── L1: Speicherdauer ─────────────────────────────────────────────
@@ -93,6 +100,7 @@ COOKIE_CHECKLIST = [
r"cookie.*(?:\d+\s+(?:tag|monat|jahr)|session)",
],
"severity": "MEDIUM",
"hint": "Die Cookie-Richtlinie muss Angaben zur Speicherdauer der Cookies enthalten. Ergaenzen Sie fuer jede Cookie-Kategorie oder jeden Cookie, wie lange er gespeichert wird (z.B. Session, 30 Tage, 1 Jahr).",
},
{
"id": "cookie_duration_values",
@@ -104,6 +112,7 @@ COOKIE_CHECKLIST = [
r"(?:ablauf|expiry|laufzeit)\s*[:\|]\s*\d+",
],
"severity": "LOW",
"hint": "Neben einer allgemeinen Angabe sollten konkrete Speicherdauern pro Cookie angegeben werden (z.B. _ga: 2 Jahre, Session-Cookie: bis Browser geschlossen). Ergaenzen Sie die exakte Laufzeit fuer jeden Cookie.",
},
# ── L1: Drittanbieter ─────────────────────────────────────────────
@@ -116,6 +125,7 @@ COOKIE_CHECKLIST = [
r"(?:google|facebook|meta|microsoft).*cookie",
],
"severity": "MEDIUM",
"hint": "Falls Drittanbieter-Cookies eingesetzt werden, muss dies in der Cookie-Richtlinie erwaehnt werden. Geben Sie an, welche Drittanbieter Cookies auf Ihrer Website setzen.",
},
{
"id": "cookie_legal_basis",
@@ -128,6 +138,7 @@ COOKIE_CHECKLIST = [
r"ttdsg|tdddg|§\s*25",
],
"severity": "MEDIUM",
"hint": "Fuer nicht-essentielle Cookies muss die Rechtsgrundlage genannt werden (§25 TDDDG bzw. Art. 6 Abs. 1 lit. a DSGVO — Einwilligung). Ergaenzen Sie die Rechtsgrundlage, insbesondere den Verweis auf die Einwilligung.",
},
# ── L1: Widerspruch ───────────────────────────────────────────────
@@ -140,6 +151,7 @@ COOKIE_CHECKLIST = [
r"cookie.*(?:ablehnen|deaktivieren|l(?:oe|ö)schen)",
],
"severity": "MEDIUM",
"hint": "Die Cookie-Richtlinie muss eine Widerspruchsmoeglichkeit beschreiben — also wie Nutzer Cookies ablehnen, deaktivieren oder loeschen koennen. Ergaenzen Sie einen Abschnitt zum Opt-out.",
},
{
"id": "cookie_consent_mechanism",
@@ -151,6 +163,7 @@ COOKIE_CHECKLIST = [
r"einwilligung\s+(?:jederzeit|widerrufen|zurueckziehen|zur(?:ue|ü)ckziehen)",
],
"severity": "LOW",
"hint": "Beschreiben Sie das eingesetzte Consent-Tool oder Cookie-Banner und erklaeren Sie, wie Nutzer ihre Einwilligung jederzeit widerrufen koennen (z.B. ueber das Cookie-Banner oder eine Einstellungsseite).",
},
{
"id": "cookie_browser_settings",
@@ -162,6 +175,7 @@ COOKIE_CHECKLIST = [
r"(?:chrome|firefox|safari|edge).*(?:cookie|einstellung)",
],
"severity": "LOW",
"hint": "Weisen Sie Nutzer darauf hin, dass sie Cookies auch ueber die Browser-Einstellungen verwalten, blockieren oder loeschen koennen. Nennen Sie idealerweise die gaengigen Browser (Chrome, Firefox, Safari, Edge).",
},
# ── Neue L1: Cookie-Tabelle ───────────────────────────────────────
@@ -175,5 +189,6 @@ COOKIE_CHECKLIST = [
r"(?:first[\-\s]?party|third[\-\s]?party)\s*[\|\t]",
],
"severity": "LOW",
"hint": "Eine strukturierte Cookie-Tabelle oder -Liste mit Spalten wie Name, Anbieter, Zweck und Speicherdauer erleichtert die Uebersichtlichkeit und wird von Aufsichtsbehoerden empfohlen. Ergaenzen Sie eine tabellarische Uebersicht aller Cookies.",
},
]
@@ -19,6 +19,7 @@ ART13_CHECKLIST = [
r"responsible\s+(?:party|for)",
],
"severity": "HIGH",
"hint": "Der Name und die Kontaktdaten des Verantwortlichen muessen gemaess Art. 13(1)(a) DSGVO angegeben werden. Ergaenzen Sie: Firmenname, Rechtsform, Anschrift, E-Mail und Telefon.",
},
{
"id": "controller_address",
@@ -29,6 +30,7 @@ ART13_CHECKLIST = [
r"[a-z\u00c0-\u017e]\w+(?:str|stra(?:ss|ß)e|weg|platz|allee|gasse|ring|damm)\s*\.?\s*\d",
],
"severity": "MEDIUM",
"hint": "Die ladungsfaehige Anschrift des Verantwortlichen fehlt oder ist unvollstaendig. Erforderlich: Strasse, Hausnummer, PLZ und Ort. Ein Postfach allein genuegt nicht.",
},
{
"id": "controller_email",
@@ -38,6 +40,7 @@ ART13_CHECKLIST = [
r"[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,}",
],
"severity": "MEDIUM",
"hint": "Eine E-Mail-Adresse des Verantwortlichen muss angegeben werden, damit Betroffene ihre Rechte ausueben koennen.",
},
{
"id": "controller_phone",
@@ -48,6 +51,7 @@ ART13_CHECKLIST = [
r"\+49\s*[\d\s/\-]{8,}",
],
"severity": "MEDIUM",
"hint": "Eine Telefonnummer sollte angegeben werden, um eine niedrigschwellige Kontaktaufnahme zu ermoeglichen.",
},
# ── L1: Datenschutzbeauftragter ───────────────────────────────────
@@ -61,6 +65,7 @@ ART13_CHECKLIST = [
r"dsb", r"dpo",
],
"severity": "MEDIUM",
"hint": "Falls ein Datenschutzbeauftragter bestellt ist (Pflicht ab 20 Personen regelmaessig mit Datenverarbeitung), muessen dessen Kontaktdaten angegeben werden (Art. 13(1)(b) DSGVO).",
},
{
"id": "dpo_contact",
@@ -72,6 +77,7 @@ ART13_CHECKLIST = [
r"datenschutz@",
],
"severity": "MEDIUM",
"hint": "Fuer den DSB muss mindestens eine direkte Kontaktmoeglichkeit angegeben sein (E-Mail-Adresse oder Telefon). Empfehlung: datenschutz@ihredomain.de",
},
# ── L1: Zwecke der Verarbeitung ───────────────────────────────────
@@ -87,6 +93,7 @@ ART13_CHECKLIST = [
r"daten\s+werden\s+(?:zu|fuer|für)\s+(?:folgende|diese)",
],
"severity": "HIGH",
"hint": "Art. 13(1)(c) verlangt eine Angabe der Zwecke, fuer die personenbezogene Daten verarbeitet werden. Listen Sie alle Verarbeitungszwecke konkret auf (z.B. Vertragserfuellung, Newsletter, Webanalyse).",
},
{
"id": "purposes_specific",
@@ -97,6 +104,7 @@ ART13_CHECKLIST = [
r"(?:bereitstellung|betrieb|sicherheit|optimierung)\s+(?:der|des|unserer|unseres)",
],
"severity": "LOW",
"hint": "Allgemeine Formulierungen wie 'Wir verarbeiten Daten' genuegen nicht. Nennen Sie konkrete Zwecke: z.B. Vertragsabwicklung, Kontaktanfragen, Website-Analyse, Newsletter-Versand.",
},
# ── L1: Rechtsgrundlage ───────────────────────────────────────────
@@ -114,6 +122,7 @@ ART13_CHECKLIST = [
r"einwilligung\s+gem",
],
"severity": "HIGH",
"hint": "Fuer jeden Verarbeitungszweck muss die Rechtsgrundlage nach Art. 6(1) DSGVO genannt werden: Einwilligung (a), Vertrag (b), rechtliche Pflicht (c), lebenswichtige Interessen (d), oeffentliches Interesse (e) oder berechtigtes Interesse (f).",
},
{
"id": "legal_basis_consent_6a",
@@ -124,6 +133,7 @@ ART13_CHECKLIST = [
r"einwilligung\s+(?:gem|nach|i\.?\s*s\.?\s*d\.?)",
],
"severity": "LOW",
"hint": "Wenn Daten auf Basis einer Einwilligung verarbeitet werden (z.B. Newsletter, Cookies), sollte Art. 6(1)(a) DSGVO als Rechtsgrundlage genannt und auf das Widerrufsrecht hingewiesen werden.",
},
{
"id": "legal_basis_contract_6b",
@@ -135,6 +145,7 @@ ART13_CHECKLIST = [
r"durchf(?:ue|ü)hrung\s+(?:eines|des|vorvertragliche)",
],
"severity": "LOW",
"hint": "Daten, die zur Vertragserfuellung oder vorvertraglichen Massnahmen verarbeitet werden, sollten auf Art. 6(1)(b) DSGVO gestuetzt werden.",
},
{
"id": "legal_basis_interest_6f",
@@ -145,6 +156,7 @@ ART13_CHECKLIST = [
r"berechtigte[sn]?\s+interesse",
],
"severity": "LOW",
"hint": "Wenn Sie sich auf ein berechtigtes Interesse (Art. 6(1)(f)) stuetzen, muss dieses Interesse konkret benannt werden (z.B. Betrugspraevention, IT-Sicherheit, Direktwerbung).",
},
{
"id": "legal_basis_balancing",
@@ -156,6 +168,7 @@ ART13_CHECKLIST = [
r"abw(?:ae|ä)gung.*(?:recht|interesse|freiheit)",
],
"severity": "LOW",
"hint": "Bei Verarbeitung auf Basis von Art. 6(1)(f) muss dokumentiert werden, warum Ihr berechtigtes Interesse die Rechte der Betroffenen ueberwiegt. Ergaenzen Sie eine Interessenabwaegung oder verweisen Sie auf eine solche.",
},
# ── L1: Empfaenger ────────────────────────────────────────────────
@@ -170,6 +183,7 @@ ART13_CHECKLIST = [
r"auftragsverarbeit",
],
"severity": "MEDIUM",
"hint": "Empfaenger oder Kategorien von Empfaengern der Daten muessen benannt werden (Art. 13(1)(e) DSGVO). Beispiele: Hosting-Anbieter, Zahlungsdienstleister, Steuerberater.",
},
{
"id": "recipients_categories",
@@ -180,6 +194,7 @@ ART13_CHECKLIST = [
r"(?:dienstleister|auftragnehmer|subunternehmer).*(?:fuer|für|im bereich)",
],
"severity": "LOW",
"hint": "Listen Sie konkrete Empfaenger-Kategorien auf: z.B. IT-Dienstleister, Hosting-Anbieter, Zahlungsabwickler, Versandunternehmen, Steuerberater. 'Dritte' allein genuegt nicht.",
},
{
"id": "recipients_processor",
@@ -191,6 +206,7 @@ ART13_CHECKLIST = [
r"avv|av-vertrag|auftragsverarbeitungsvertrag",
],
"severity": "LOW",
"hint": "Falls Auftragsverarbeiter eingesetzt werden (z.B. Cloud-Hosting, E-Mail-Service), sollte dies erwaehnt und auf bestehende AVVs nach Art. 28 DSGVO hingewiesen werden.",
},
# ── L1: Drittlandtransfer ─────────────────────────────────────────
@@ -207,6 +223,7 @@ ART13_CHECKLIST = [
r"privacy\s+shield", r"data\s+privacy\s+framework",
],
"severity": "MEDIUM",
"hint": "Falls Daten ausserhalb des EWR uebermittelt werden (z.B. USA-basierte Dienste wie Google, Microsoft, AWS), muss dies angegeben werden — inkl. des Empfaengerlandes und der Schutzgarantien.",
},
{
"id": "third_country_mechanism",
@@ -219,6 +236,7 @@ ART13_CHECKLIST = [
r"art\.\s*4[5-9]",
],
"severity": "MEDIUM",
"hint": "Bei Drittlandtransfers muss der konkrete Schutzmechanismus benannt werden: Angemessenheitsbeschluss (Art. 45), Standardvertragsklauseln/SCC (Art. 46(2)(c)) oder EU-US Data Privacy Framework. Ohne Angabe ist der Transfer nicht DSGVO-konform dokumentiert.",
},
# ── L1: Speicherdauer ─────────────────────────────────────────────
@@ -237,6 +255,7 @@ ART13_CHECKLIST = [
r"gesetzliche.*aufbewahrung",
],
"severity": "HIGH",
"hint": "Die Speicherdauer oder die Kriterien zur Festlegung der Dauer muessen angegeben werden (Art. 13(2)(a) DSGVO). Nennen Sie konkrete Fristen (z.B. '10 Jahre steuerrechtliche Aufbewahrung') oder Loeschkriterien.",
},
{
"id": "retention_periods",
@@ -248,6 +267,7 @@ ART13_CHECKLIST = [
r"(?:nach|innerhalb)\s+(?:von\s+)?\d+\s+(?:tag|monat|jahr)",
],
"severity": "MEDIUM",
"hint": "Statt allgemeiner Aussagen ('so lange wie noetig') sollten konkrete Fristen stehen: z.B. 'Logfiles: 7 Tage', 'Vertragsdaten: 10 Jahre (§257 HGB)', 'Bewerbungen: 6 Monate nach Absage'.",
},
{
"id": "retention_deletion",
@@ -259,6 +279,7 @@ ART13_CHECKLIST = [
r"nach\s+(?:ablauf|wegfall).*(?:gel(?:oe|ö)scht|l(?:oe|ö)sch)",
],
"severity": "LOW",
"hint": "Beschreiben Sie, wie und wann Daten geloescht werden: z.B. 'Nach Ablauf der Aufbewahrungsfrist werden die Daten routinemaessig geloescht.' oder Verweis auf ein internes Loeschkonzept.",
},
# ── L1: Betroffenenrechte ─────────────────────────────────────────
@@ -275,6 +296,7 @@ ART13_CHECKLIST = [
r"ihnen\s+(?:stehen|steht)\s+(?:ein|folgende)\s+recht",
],
"severity": "HIGH",
"hint": "Die Betroffenenrechte (Art. 15-22 DSGVO) muessen vollstaendig aufgezaehlt werden: Auskunft, Berichtigung, Loeschung, Einschraenkung, Datenportabilitaet, Widerspruch und ggf. automatisierte Entscheidungen.",
},
{
"id": "rights_art15",
@@ -282,6 +304,7 @@ ART13_CHECKLIST = [
"level": 2, "parent": "rights",
"patterns": [r"art\.\s*15", r"recht\s+auf\s+auskunft", r"right\s+(?:of|to)\s+access"],
"severity": "LOW",
"hint": "Ergaenzen Sie den Hinweis auf das Auskunftsrecht nach Art. 15 DSGVO: Betroffene koennen eine Kopie aller ueber sie gespeicherten Daten anfordern.",
},
{
"id": "rights_art16",
@@ -289,6 +312,7 @@ ART13_CHECKLIST = [
"level": 2, "parent": "rights",
"patterns": [r"art\.\s*16", r"recht\s+auf\s+berichtigung", r"right\s+to\s+rectification"],
"severity": "LOW",
"hint": "Ergaenzen Sie das Recht auf Berichtigung nach Art. 16 DSGVO: Betroffene koennen die Korrektur unrichtiger Daten verlangen.",
},
{
"id": "rights_art17",
@@ -296,6 +320,7 @@ ART13_CHECKLIST = [
"level": 2, "parent": "rights",
"patterns": [r"art\.\s*17", r"recht\s+auf\s+l(?:oe|ö)schung", r"right\s+to\s+erasure"],
"severity": "LOW",
"hint": "Ergaenzen Sie das Recht auf Loeschung ('Recht auf Vergessenwerden') nach Art. 17 DSGVO.",
},
{
"id": "rights_art18",
@@ -303,6 +328,7 @@ ART13_CHECKLIST = [
"level": 2, "parent": "rights",
"patterns": [r"art\.\s*18", r"einschr(?:ae|ä)nkung\s+der\s+verarbeitung", r"right\s+to\s+restriction"],
"severity": "LOW",
"hint": "Ergaenzen Sie das Recht auf Einschraenkung der Verarbeitung nach Art. 18 DSGVO.",
},
{
"id": "rights_art20",
@@ -310,6 +336,7 @@ ART13_CHECKLIST = [
"level": 2, "parent": "rights",
"patterns": [r"art\.\s*20", r"daten(?:ue|ü)bertragbarkeit|datenportabilit", r"right\s+to\s+data\s+portability"],
"severity": "LOW",
"hint": "Ergaenzen Sie das Recht auf Datenuebertragbarkeit nach Art. 20 DSGVO: Betroffene koennen ihre Daten in einem maschinenlesbaren Format erhalten.",
},
{
"id": "rights_art21",
@@ -317,6 +344,7 @@ ART13_CHECKLIST = [
"level": 2, "parent": "rights",
"patterns": [r"art\.\s*21", r"widerspruchsrecht", r"right\s+to\s+object"],
"severity": "LOW",
"hint": "Ergaenzen Sie das Widerspruchsrecht nach Art. 21 DSGVO, insbesondere bei Verarbeitung auf Basis von Art. 6(1)(e) oder (f). Der Hinweis muss gesondert und in klarer Sprache erfolgen.",
},
{
"id": "rights_art22_profiling",
@@ -327,6 +355,7 @@ ART13_CHECKLIST = [
r"profiling", r"automated\s+(?:decision|individual)",
],
"severity": "LOW",
"hint": "Falls automatisierte Entscheidungen oder Profiling stattfinden, muss dies offengelegt werden (Art. 22 DSGVO). Falls nicht: Ergaenzen Sie 'Es findet keine automatisierte Entscheidungsfindung einschliesslich Profiling statt.'",
},
# ── L1: Beschwerderecht ───────────────────────────────────────────
@@ -343,6 +372,7 @@ ART13_CHECKLIST = [
r"(?:zust(?:ae|ä)ndige|competent)\s+(?:beh(?:oe|ö)rde|authority)",
],
"severity": "MEDIUM",
"hint": "Betroffene muessen auf ihr Recht hingewiesen werden, sich bei einer Aufsichtsbehoerde zu beschweren (Art. 77 DSGVO). Nennen Sie idealerweise die zustaendige Landesbehoerde.",
},
{
"id": "complaint_authority_named",
@@ -355,5 +385,6 @@ ART13_CHECKLIST = [
r"(?:bayerische|hessische|s(?:ae|ä)chsische|berliner)\s+(?:datenschutz|aufsicht)",
],
"severity": "LOW",
"hint": "Nennen Sie die zustaendige Aufsichtsbehoerde mit Name und Kontakt. Z.B.: 'Der Landesbeauftragte fuer den Datenschutz und die Informationsfreiheit Baden-Wuerttemberg' mit Adresse und Website.",
},
]
@@ -19,6 +19,7 @@ DSFA_CHECKLIST = [
r"folgen.*(?:verarbeitung|schutz).*personenbezogen",
],
"severity": "HIGH",
"hint": "Es fehlt eine Schwellwertanalyse gemaess Art. 35 Abs. 1 DSGVO. Beschreiben Sie, warum die Verarbeitung voraussichtlich ein hohes Risiko fuer die Rechte und Freiheiten natuerlicher Personen birgt und eine DSFA erforderlich ist.",
},
# ── L1: Beschreibung der Verarbeitungsvorgaenge ───────────────────
@@ -33,6 +34,7 @@ DSFA_CHECKLIST = [
r"(?:kan(?:ae|ä)le|plattform).*(?:facebook|twitter|instagram|youtube|linkedin|xing)",
],
"severity": "HIGH",
"hint": "Eine systematische Beschreibung der geplanten Verarbeitungsvorgaenge fehlt. Fuegen Sie einen Abschnitt hinzu, der Art, Umfang, Umstaende und Zweck der Verarbeitung detailliert beschreibt.",
},
{
"id": "processing_named",
@@ -43,6 +45,7 @@ DSFA_CHECKLIST = [
r"(?:verarbeitung|erhebung|speicherung)\s+(?:von|der)\s+(?:nutzerdaten|personenbezogen|besucher|mitglieder)",
],
"severity": "LOW",
"hint": "Der konkrete Verarbeitungsvorgang ist nicht namentlich benannt. Benennen Sie den spezifischen Vorgang (z.B. Betrieb einer Fanpage, Verwaltung eines Social-Media-Kanals) explizit im Dokument.",
},
# ── L1: Notwendigkeit / Verhaeltnismaessigkeit ────────────────────
@@ -58,6 +61,7 @@ DSFA_CHECKLIST = [
r"freiwillig\s+angegeben",
],
"severity": "HIGH",
"hint": "Die Bewertung der Notwendigkeit und Verhaeltnismaessigkeit der Verarbeitung fehlt. Begruenden Sie, warum die Verarbeitung erforderlich ist und in einem angemessenen Verhaeltnis zum Zweck steht.",
},
{
"id": "legal_basis_dsfa",
@@ -69,6 +73,7 @@ DSFA_CHECKLIST = [
r"(?:einwilligung|vertrag|berechtigt).*(?:rechtsgrundlage|grundlage)",
],
"severity": "LOW",
"hint": "Die Rechtsgrundlage der Verarbeitung ist nicht angegeben. Nennen Sie die einschlaegige Rechtsgrundlage nach Art. 6 Abs. 1 DSGVO (z.B. Einwilligung, berechtigtes Interesse, Vertragserfuellung).",
},
# ── L1: Risikobewertung ───────────────────────────────────────────
@@ -85,6 +90,7 @@ DSFA_CHECKLIST = [
r"systematische\s+beobachtung",
],
"severity": "HIGH",
"hint": "Eine Risikobewertung fuer die Rechte und Freiheiten der Betroffenen fehlt. Fuehren Sie eine strukturierte Risikoanalyse durch, die moegliche Schaeden und deren Auswirkungen auf die betroffenen Personen beschreibt.",
},
{
"id": "risk_probability",
@@ -96,6 +102,7 @@ DSFA_CHECKLIST = [
r"(?:gering|mittel|hoch)\w*\s+(?:wahrscheinlichkeit|eintritt)",
],
"severity": "MEDIUM",
"hint": "Die Eintrittswahrscheinlichkeit der identifizierten Risiken ist nicht bewertet. Ordnen Sie jedem Risiko eine Eintrittswahrscheinlichkeit zu (z.B. gering, mittel, hoch).",
},
{
"id": "risk_severity",
@@ -107,6 +114,7 @@ DSFA_CHECKLIST = [
r"(?:physisch|materiell|immateriell)\w*\s+(?:schaden|nachteil|beeintr(?:ae|ä)chtigung)",
],
"severity": "MEDIUM",
"hint": "Die Schwere der moeglichen Auswirkungen auf Betroffene ist nicht bewertet. Bewerten Sie fuer jedes Risiko die Schadenshoehe (z.B. gering, mittel, hoch, kritisch) und unterscheiden Sie physische, materielle und immaterielle Schaeden.",
},
# ── L1: Abhilfemassnahmen ─────────────────────────────────────────
@@ -122,6 +130,7 @@ DSFA_CHECKLIST = [
r"risiko.*(?:minim|reduz|begrenzen)",
],
"severity": "HIGH",
"hint": "Abhilfemassnahmen zur Risikominderung fehlen. Beschreiben Sie die geplanten technischen und organisatorischen Massnahmen (TOMs), mit denen die identifizierten Risiken eingedaemmt werden sollen.",
},
{
"id": "tom_encryption",
@@ -132,6 +141,7 @@ DSFA_CHECKLIST = [
r"(?:transport|ende[\-\s]zu[\-\s]ende)[\-\s]?verschl(?:ue|ü)sselung",
],
"severity": "LOW",
"hint": "Verschluesselung ist nicht als Schutzmassnahme aufgefuehrt. Ergaenzen Sie, ob und welche Verschluesselungsverfahren eingesetzt werden (z.B. TLS-Transportverschluesselung, Ende-zu-Ende-Verschluesselung).",
},
{
"id": "tom_pseudonymization",
@@ -142,6 +152,7 @@ DSFA_CHECKLIST = [
r"(?:pseudonymisiert|anonymisiert).*(?:daten|verarbeit)",
],
"severity": "LOW",
"hint": "Pseudonymisierung oder Anonymisierung ist nicht als Massnahme erwaehnt. Pruefen Sie, ob personenbezogene Daten pseudonymisiert oder anonymisiert werden koennen, und dokumentieren Sie dies.",
},
{
"id": "tom_access_control",
@@ -153,6 +164,7 @@ DSFA_CHECKLIST = [
r"(?:need[\-\s]to[\-\s]know|least\s+privilege|minimalprinzip)",
],
"severity": "LOW",
"hint": "Zugriffskontrollmassnahmen sind nicht dokumentiert. Beschreiben Sie, wie der Zugriff auf personenbezogene Daten beschraenkt wird (z.B. Berechtigungskonzept, Rollenmodell, Need-to-know-Prinzip).",
},
{
"id": "tom_logging",
@@ -163,6 +175,7 @@ DSFA_CHECKLIST = [
r"(?:zugriff|(?:ae|ä)nderung).*(?:protokoll|logging|nachvollzieh)",
],
"severity": "LOW",
"hint": "Protokollierung und Nachvollziehbarkeit sind nicht als Massnahme aufgefuehrt. Ergaenzen Sie, wie Zugriffe und Aenderungen an personenbezogenen Daten protokolliert und nachvollziehbar gemacht werden.",
},
# ── L1: Landesbehoerden ───────────────────────────────────────────
@@ -177,6 +190,7 @@ DSFA_CHECKLIST = [
r"(?:aufsichtsbeh(?:oe|ö)rde|beh(?:oe|ö)rde).*(?:richtlinie|empfehlung|vorgabe)",
],
"severity": "MEDIUM",
"hint": "Es fehlt ein Verweis auf die Richtlinien der zustaendigen Landesbehoerde (LfDI). Pruefen Sie, ob Ihre Landesdatenschutzbehoerde spezifische Vorgaben oder Empfehlungen fuer diese Verarbeitung veroeffentlicht hat, und beruecksichtigen Sie diese.",
},
# ── L1: Einbeziehung DSB ──────────────────────────────────────────
@@ -191,6 +205,7 @@ DSFA_CHECKLIST = [
r"(?:rat|empfehlung).*datenschutzbeauftragt",
],
"severity": "MEDIUM",
"hint": "Die Einbeziehung des Datenschutzbeauftragten (DSB) ist nicht dokumentiert. Gemaess Art. 35 Abs. 2 DSGVO muss der DSB bei der DSFA konsultiert werden — dokumentieren Sie dessen Beteiligung und Stellungnahme.",
},
{
"id": "dsb_opinion_documented",
@@ -202,6 +217,7 @@ DSFA_CHECKLIST = [
r"(?:empfehlung|beurteilung|einsch(?:ae|ä)tzung)\s+(?:des|der)\s+(?:dsb|datenschutzbeauftragt)",
],
"severity": "LOW",
"hint": "Die Stellungnahme des Datenschutzbeauftragten ist nicht im Dokument enthalten. Fuegen Sie die schriftliche Stellungnahme oder Empfehlung des DSB zur DSFA hinzu.",
},
# ── L1: Dokumentation ─────────────────────────────────────────────
@@ -215,6 +231,7 @@ DSFA_CHECKLIST = [
r"vorliegend.*(?:dsfa|analyse|bewertung|absch(?:ae|ä)tzung)",
],
"severity": "MEDIUM",
"hint": "Die Ergebnisse der DSFA sind nicht zusammenfassend dokumentiert. Erstellen Sie einen Ergebnisabschnitt, der die Schlussfolgerungen der Folgenabschaetzung und die Gesamtbewertung des Restrisikos festhält.",
},
{
"id": "review_cycle",
@@ -226,5 +243,6 @@ DSFA_CHECKLIST = [
r"n(?:ae|ä)chste\s+(?:ueberpr(?:ue|ü)fung|überprüfung|review)",
],
"severity": "LOW",
"hint": "Ein Ueberpruefungszyklus fuer die DSFA ist nicht festgelegt. Definieren Sie, in welchem Turnus die DSFA ueberprueft und aktualisiert wird (z.B. jaehrlich oder bei wesentlichen Aenderungen der Verarbeitung).",
},
]
@@ -16,6 +16,7 @@ IMPRESSUM_CHECKLIST = [
r"firma", r"unternehmen",
],
"severity": "HIGH",
"hint": "Der vollstaendige Name des Unternehmens oder der Person muss im Impressum stehen (z.B. 'Musterfirma GmbH'). Bei Einzelunternehmen genuegt der vollstaendige Vor- und Nachname.",
},
# ── L1: Anschrift ─────────────────────────────────────────────────
@@ -28,6 +29,7 @@ IMPRESSUM_CHECKLIST = [
r"d-\d{5}", r"\d{5}\s+\w+",
],
"severity": "HIGH",
"hint": "Eine vollstaendige ladungsfaehige Anschrift (Strasse, Hausnummer, PLZ, Ort) muss im Impressum angegeben werden. Ein Postfach genuegt nicht.",
},
{
"id": "address_zip_city",
@@ -37,6 +39,7 @@ IMPRESSUM_CHECKLIST = [
r"(?:d[\-\s]?)?\d{5}\s+[a-z\u00c0-\u017e]\w{2,}",
],
"severity": "MEDIUM",
"hint": "Die Anschrift muss eine fuenfstellige Postleitzahl und den Ortsnamen enthalten (z.B. '10115 Berlin').",
},
{
"id": "address_street_number",
@@ -47,6 +50,7 @@ IMPRESSUM_CHECKLIST = [
r"\w+\s+(?:str|stra(?:ss|ß)e|weg|platz|allee)\s*\.?\s*\d+",
],
"severity": "MEDIUM",
"hint": "Bitte den Strassennamen und die Hausnummer angeben (z.B. 'Musterstrasse 12'). Ohne Hausnummer ist die Anschrift nicht ladungsfaehig.",
},
# ── L1: Kontaktdaten ──────────────────────────────────────────────
@@ -59,6 +63,7 @@ IMPRESSUM_CHECKLIST = [
r"\+?\d[\d\s/\-]{8,}",
],
"severity": "HIGH",
"hint": "Das Impressum muss mindestens eine E-Mail-Adresse und eine Telefonnummer enthalten, damit Nutzer schnell Kontakt aufnehmen koennen.",
},
{
"id": "contact_email_format",
@@ -68,6 +73,7 @@ IMPRESSUM_CHECKLIST = [
r"[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,}",
],
"severity": "MEDIUM",
"hint": "Die E-Mail-Adresse muss in einem gueltigen Format vorliegen (z.B. 'info@beispiel.de'). Bitte pruefen Sie, ob ein '@'-Zeichen und eine Domain vorhanden sind.",
},
{
"id": "contact_phone_format",
@@ -79,6 +85,7 @@ IMPRESSUM_CHECKLIST = [
r"0\d{2,4}\s*[/\-\s]\s*\d{4,}",
],
"severity": "MEDIUM",
"hint": "Bitte eine Telefonnummer mit Vorwahl angeben (z.B. '+49 30 12345678' oder '030 / 12345678'). Ein reines Kontaktformular reicht nicht aus.",
},
# ── L1: Handelsregister ───────────────────────────────────────────
@@ -91,6 +98,7 @@ IMPRESSUM_CHECKLIST = [
r"register.*(?:nr|nummer)",
],
"severity": "MEDIUM",
"hint": "Falls das Unternehmen im Handelsregister eingetragen ist, muessen Registergericht und Registernummer angegeben werden (z.B. 'Amtsgericht Muenchen, HRB 12345').",
},
{
"id": "register_court",
@@ -101,6 +109,7 @@ IMPRESSUM_CHECKLIST = [
r"ag\s+[A-Z\u00c0-\u017e]\w+",
],
"severity": "LOW",
"hint": "Bitte das zustaendige Registergericht benennen (z.B. 'Amtsgericht Muenchen'). Die alleinige Angabe der Registernummer ohne Gericht ist unvollstaendig.",
},
{
"id": "register_number",
@@ -110,6 +119,7 @@ IMPRESSUM_CHECKLIST = [
r"(?:hrb|hra)\s*\d+",
],
"severity": "LOW",
"hint": "Die Registernummer muss mit dem Praefix HRB oder HRA und der zugehoerigen Nummer angegeben werden (z.B. 'HRB 12345').",
},
# ── L1: USt-IdNr ──────────────────────────────────────────────────
@@ -122,6 +132,7 @@ IMPRESSUM_CHECKLIST = [
r"vat.*id", r"de\s*\d{9}",
],
"severity": "MEDIUM",
"hint": "Falls eine Umsatzsteuer-Identifikationsnummer vorhanden ist, muss diese im Impressum angegeben werden. Die Steuernummer allein genuegt nicht als Ersatz.",
},
{
"id": "vat_de_format",
@@ -131,6 +142,7 @@ IMPRESSUM_CHECKLIST = [
r"de\s*\d{9}",
],
"severity": "LOW",
"hint": "Die USt-IdNr. muss im Format 'DE' gefolgt von 9 Ziffern angegeben werden (z.B. 'DE123456789'). Bitte pruefen Sie, ob die Nummer vollstaendig ist.",
},
# ── L1: Vertretungsberechtigte ────────────────────────────────────
@@ -143,6 +155,7 @@ IMPRESSUM_CHECKLIST = [
r"vorstand", r"inhaber",
],
"severity": "MEDIUM",
"hint": "Bei juristischen Personen (GmbH, AG etc.) muss die vertretungsberechtigte Person namentlich genannt werden (z.B. 'Geschaeftsfuehrer: Max Mustermann').",
},
{
"id": "representative_person",
@@ -153,6 +166,7 @@ IMPRESSUM_CHECKLIST = [
r"(?:vertreten\s+durch|repr(?:ae|ä)sentiert)\s*:?\s*[A-Z\u00c0-\u017e]",
],
"severity": "LOW",
"hint": "Bitte den vollstaendigen Vor- und Nachnamen der vertretungsberechtigten Person angeben (z.B. 'Geschaeftsfuehrer: Max Mustermann'). Eine reine Funktionsbezeichnung reicht nicht.",
},
# ── Neue L1: Redaktionell Verantwortlicher ────────────────────────
@@ -166,6 +180,7 @@ IMPRESSUM_CHECKLIST = [
r"§\s*18\s+m(?:edien)?st(?:aat)?v",
],
"severity": "LOW",
"hint": "Wenn die Website journalistisch-redaktionelle Inhalte enthaelt, muss ein inhaltlich Verantwortlicher mit Name und Anschrift benannt werden (§18 MStV, 'V.i.S.d.P.').",
},
# ── Neue L1: Streitbeilegung ──────────────────────────────────────
@@ -181,5 +196,6 @@ IMPRESSUM_CHECKLIST = [
r"alternative\s+streitbeilegung",
],
"severity": "LOW",
"hint": "Online-Haendler muessen einen Link zur EU-Streitbeilegungsplattform (https://ec.europa.eu/consumers/odr) angeben und erklaeren, ob sie zur Teilnahme an Streitbeilegungsverfahren bereit oder verpflichtet sind.",
},
]
@@ -129,6 +129,7 @@ def check_document_completeness(
"passed": passed, "severity": check.get("severity", "MEDIUM"),
"matched_text": _extract_context(text_lower, match),
"level": 1, "parent": None, "skipped": False,
"hint": check.get("hint", ""),
})
# ── Pass 2: L2 checks (only if parent L1 passed) ─────────────────
@@ -165,6 +166,7 @@ def check_document_completeness(
"passed": passed, "severity": check.get("severity", "MEDIUM"),
"matched_text": matched_text,
"level": 2, "parent": parent, "skipped": skipped,
"hint": check.get("hint", ""),
})
# ── Summary ───────────────────────────────────────────────────────
@@ -19,6 +19,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:betreiber|netzwerk).*verantwortlich",
],
"severity": "HIGH",
"hint": "Es fehlt der Hinweis auf die gemeinsame Verantwortlichkeit nach Art. 26 DSGVO. Benennen Sie ausdruecklich, dass Sie und die jeweilige Plattform gemeinsam Verantwortliche fuer die Datenverarbeitung sind.",
},
{
"id": "facebook_meta_named",
@@ -29,6 +30,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"meta\s+platforms.*(?:verantwortlich|controller|betreiber)",
],
"severity": "MEDIUM",
"hint": "Facebook/Meta ist nicht namentlich als gemeinsam Verantwortlicher aufgefuehrt. Nennen Sie die vollstaendige Firmenbezeichnung (z.B. Meta Platforms Ireland Limited) als Mitverantwortlichen.",
},
# ── L1: Vereinbarung Art. 26 ──────────────────────────────────────
@@ -43,6 +45,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"addendum|nachtrag|seiten.*insights",
],
"severity": "HIGH",
"hint": "Es fehlt ein Verweis auf die Vereinbarung nach Art. 26 DSGVO zwischen Ihnen und der Plattform. Erwaehnen Sie die bestehende Vereinbarung (z.B. Page Controller Addendum bei Facebook) und deren wesentlichen Inhalt.",
},
{
"id": "insights_referenced",
@@ -54,6 +57,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:statistik|nutzungsstatistik).*(?:facebook|meta|fanpage|seite)",
],
"severity": "MEDIUM",
"hint": "Die Verarbeitung von Seiten-Insights bzw. Page Insights wird nicht erwaehnt. Erlaeutern Sie, dass bei Nutzung Ihrer Social-Media-Seite Insights-Daten erhoben und verarbeitet werden.",
},
{
"id": "page_controller_addendum",
@@ -65,6 +69,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:addendum|nachtrag|erg(?:ae|ä)nzung).*(?:controller|verantwortlich)",
],
"severity": "LOW",
"hint": "Das Page Controller Addendum (bzw. die Seiten-Insights-Ergaenzung) wird nicht namentlich erwaehnt. Verweisen Sie konkret auf das Addendum und verlinken Sie es, damit Betroffene die Vereinbarung nachvollziehen koennen.",
},
# ── L1: Anlaufstelle ──────────────────────────────────────────────
@@ -80,6 +85,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"wenden\s+sie\s+sich",
],
"severity": "MEDIUM",
"hint": "Es fehlt eine Anlaufstelle fuer Betroffene gemaess Art. 26(1) S.3 DSGVO. Geben Sie an, an wen sich Betroffene zur Wahrnehmung ihrer Rechte wenden koennen.",
},
{
"id": "contact_both_parties",
@@ -91,6 +97,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:facebook|meta|google|plattform).*(?:als\s+auch|oder|und).*(?:uns|bei\s+uns)",
],
"severity": "LOW",
"hint": "Die Kontaktdaten beider Verantwortlicher sind nicht vollstaendig angegeben. Stellen Sie klar, dass Betroffene ihre Rechte sowohl bei Ihnen als auch bei der Plattform geltend machen koennen, und nennen Sie die jeweiligen Kontaktwege.",
},
# ── L1: Verarbeitungsaufteilung ───────────────────────────────────
@@ -105,6 +112,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:nutzungsstatistik|statistik|insight).*(?:betreiber|netzwerk)",
],
"severity": "HIGH",
"hint": "Es fehlt eine Beschreibung, welche Datenverarbeitungen Sie und welche die Plattform vornimmt. Erlaeutern Sie die Aufgabenverteilung (z.B. wer Insights-Daten erhebt und wer sie auswertet).",
},
# ── L1: Datenkategorien ───────────────────────────────────────────
@@ -119,6 +127,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:nutzername|beitr(?:ae|ä)g|profil|like|kommentar)",
],
"severity": "HIGH",
"hint": "Die Kategorien der verarbeiteten Daten sind nicht aufgefuehrt. Listen Sie auf, welche Daten verarbeitet werden (z.B. IP-Adresse, Standort, Geraetedaten, Interaktionen, demografische Daten).",
},
# ── L1: Plattformen ───────────────────────────────────────────────
@@ -132,6 +141,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"social\s*media.*(?:angebot|pr(?:ae|ä)senz|auftritte)",
],
"severity": "MEDIUM",
"hint": "Die genutzten Social-Media-Plattformen werden nicht aufgelistet. Fuehren Sie alle Plattformen namentlich auf, auf denen Sie Praesenzen betreiben (z.B. Facebook, Instagram, LinkedIn, YouTube).",
},
{
"id": "platform_dse_links",
@@ -143,6 +153,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:privacy\s+policy|datenschutzerkl(?:ae|ä)rung).*(?:finden\s+sie|abrufbar|unter)",
],
"severity": "LOW",
"hint": "Es fehlen Links zu den Datenschutzerklaerungen der einzelnen Plattformen. Verlinken Sie die jeweilige Privacy Policy (z.B. von Meta, Google, LinkedIn), damit Nutzer sich dort informieren koennen.",
},
# ── L1: Drittlandtransfer ─────────────────────────────────────────
@@ -157,6 +168,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:(?:ue|ü)bermittlung|(?:ueber|über)mittlung).*(?:usa|drittland|au(?:ss|ß)erhalb)",
],
"severity": "MEDIUM",
"hint": "Es fehlt ein Hinweis auf den Drittlandtransfer in die USA. Informieren Sie darueber, dass Daten in die USA uebermittelt werden, und nennen Sie die Rechtsgrundlage dafuer (z.B. Angemessenheitsbeschluss, Standardvertragsklauseln).",
},
{
"id": "usa_transfer_scc",
@@ -167,6 +179,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"standard\s+contractual\s+clause",
],
"severity": "MEDIUM",
"hint": "Standardvertragsklauseln (SCC) als Garantie fuer den US-Datentransfer werden nicht erwaehnt. Falls SCC als Rechtsgrundlage genutzt werden, fuehren Sie diese ausdruecklich auf.",
},
{
"id": "usa_transfer_dpf",
@@ -178,6 +191,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"adequacy\s+decision",
],
"severity": "LOW",
"hint": "Das EU-US Data Privacy Framework (DPF) wird nicht als Transfergrundlage erwaehnt. Falls sich die Plattform auf den Angemessenheitsbeschluss stuetzt, erwaehnen Sie dies und verweisen Sie auf die DPF-Zertifizierung.",
},
# ── L1: Rechtsgrundlage ───────────────────────────────────────────
@@ -191,6 +205,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"einwilligung.*art\.\s*6", r"lit\.\s*[a-f]",
],
"severity": "MEDIUM",
"hint": "Die Rechtsgrundlage fuer die Datenverarbeitung nach Art. 6 DSGVO fehlt. Nennen Sie die einschlaegige Rechtsgrundlage (z.B. berechtigtes Interesse nach Art. 6(1) lit. f oder Einwilligung nach Art. 6(1) lit. a).",
},
{
"id": "legal_basis_specific_lit",
@@ -200,6 +215,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"art\.\s*6\s*(?:abs\.\s*)?1\s*(?:s\.\s*1\s*)?(?:lit\.\s*)?[a-f]",
],
"severity": "LOW",
"hint": "Der konkrete Buchstabe in Art. 6(1) DSGVO ist nicht angegeben. Nennen Sie den spezifischen Erlaubnistatbestand (z.B. lit. a fuer Einwilligung oder lit. f fuer berechtigtes Interesse).",
},
# ── L1: Betroffenenrechte ─────────────────────────────────────────
@@ -214,6 +230,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"widerspruchsrecht",
],
"severity": "MEDIUM",
"hint": "Die Betroffenenrechte nach Art. 15-21 DSGVO sind nicht aufgefuehrt. Listen Sie die Rechte auf (Auskunft, Berichtigung, Loeschung, Einschraenkung, Datenuebertragbarkeit, Widerspruch) und erklaeren Sie, wie Betroffene diese ausueben koennen.",
},
{
"id": "opt_out_social",
@@ -225,6 +242,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:abmelden|abschalten).*(?:tracking|statistik|insight)",
],
"severity": "LOW",
"hint": "Eine konkrete Opt-Out-Moeglichkeit fuer das Social-Media-Tracking fehlt. Beschreiben Sie, wie Nutzer dem Tracking widersprechen oder es deaktivieren koennen (z.B. ueber Plattform-Einstellungen oder Cookie-Opt-Out).",
},
# ── L1: Social Bookmarks vs Plugins ───────────────────────────────
@@ -238,6 +256,7 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:link|verweis|weiterleitung).*(?:dienst|anbieter|netzwerk)",
],
"severity": "MEDIUM",
"hint": "Es fehlt ein Hinweis, ob Social-Media-Plugins oder nur einfache Links (Bookmarks) eingebunden sind. Stellen Sie klar, ob beim Seitenaufruf bereits Daten an die Plattformen uebertragen werden oder erst nach Klick.",
},
{
"id": "two_click_solution",
@@ -249,5 +268,6 @@ JOINT_CONTROLLER_CHECKLIST = [
r"(?:erst|nur)\s+(?:bei|nach|durch)\s+(?:klick|aktivierung).*(?:daten|verbindung)",
],
"severity": "LOW",
"hint": "Die verwendete technische Loesung (z.B. 2-Klick-Loesung oder Shariff) wird nicht beschrieben. Erlaeutern Sie, welche datenschutzfreundliche Technik eingesetzt wird, um den sofortigen Datentransfer an Plattformen zu verhindern.",
},
]
@@ -17,6 +17,7 @@ WIDERRUF_CHECKLIST = [
r"recht\s+(?:zum|auf)\s+widerruf",
],
"severity": "HIGH",
"hint": "Die Widerrufsbelehrung muss ausdruecklich ueber das Bestehen eines Widerrufsrechts informieren. Ergaenzen Sie einen Abschnitt, der den Verbraucher klar auf sein Widerrufsrecht hinweist.",
},
# ── L1: Widerrufsfrist ────────────────────────────────────────────
@@ -29,6 +30,7 @@ WIDERRUF_CHECKLIST = [
r"14\s+days", r"fourteen\s+days",
],
"severity": "HIGH",
"hint": "Die gesetzliche Widerrufsfrist von 14 Tagen muss explizit genannt werden. Fuegen Sie die Angabe '14 Tage' oder 'vierzehn Tage' in Ihre Widerrufsbelehrung ein.",
},
{
"id": "deadline_calendar_days",
@@ -39,6 +41,7 @@ WIDERRUF_CHECKLIST = [
r"14\s+calendar\s+days",
],
"severity": "LOW",
"hint": "Zur Klarstellung sollte 'Kalendertage' statt nur 'Tage' angegeben werden. Aendern Sie die Formulierung zu '14 Kalendertage', um Missverstaendnisse auszuschliessen.",
},
{
"id": "deadline_receipt_trigger",
@@ -50,6 +53,7 @@ WIDERRUF_CHECKLIST = [
r"beginnt\s+(?:mit|ab)\s+(?:dem\s+)?(?:zugang|erhalt)",
],
"severity": "MEDIUM",
"hint": "Der Fristbeginn muss klar definiert sein (z.B. ab Erhalt der Ware oder ab Vertragsschluss). Ergaenzen Sie eine Angabe wie 'Die Frist beginnt ab dem Tag des Erhalts der Ware'.",
},
# ── L1: Form des Widerrufs ────────────────────────────────────────
@@ -62,6 +66,7 @@ WIDERRUF_CHECKLIST = [
r"withdrawal\s+form", r"formular",
],
"severity": "MEDIUM",
"hint": "Die Widerrufsbelehrung muss ueber die Form des Widerrufs informieren und auf das Muster-Widerrufsformular hinweisen. Fuegen Sie einen entsprechenden Abschnitt mit Verweis auf das Formular hinzu.",
},
{
"id": "form_text_required",
@@ -72,6 +77,7 @@ WIDERRUF_CHECKLIST = [
r"(?:mittels|durch)\s+(?:einer?\s+)?(?:eindeutige|klare)\w*\s+erkl(?:ae|ä)rung",
],
"severity": "LOW",
"hint": "Es sollte klargestellt werden, dass der Widerruf in Textform (z.B. per Brief, E-Mail oder Fax) erfolgen kann. Nennen Sie die zulaessigen Kommunikationswege ausdruecklich.",
},
{
"id": "model_form",
@@ -83,6 +89,7 @@ WIDERRUF_CHECKLIST = [
r"widerruf.*(?:beigef(?:ue|ü)gt|anlage|anhang|formular)",
],
"severity": "LOW",
"hint": "Das gesetzliche Muster-Widerrufsformular muss beigefuegt oder verlinkt sein. Fuegen Sie das Formular als Anlage bei oder verlinken Sie es direkt in der Belehrung.",
},
# ── L1: Folgen des Widerrufs ──────────────────────────────────────
@@ -96,6 +103,7 @@ WIDERRUF_CHECKLIST = [
r"r(?:ue|ü)ckerstattung",
],
"severity": "MEDIUM",
"hint": "Die Folgen des Widerrufs (insbesondere die Rueckerstattungspflicht) muessen erlaeutert werden. Ergaenzen Sie einen Abschnitt 'Folgen des Widerrufs' mit Angaben zur Rueckabwicklung.",
},
{
"id": "refund_timeline",
@@ -107,6 +115,7 @@ WIDERRUF_CHECKLIST = [
r"(?:unverz(?:ue|ü)glich|sp(?:ae|ä)testens).*(?:r(?:ue|ü)ck|erstatt)",
],
"severity": "MEDIUM",
"hint": "Die Rueckerstattung muss innerhalb von 14 Tagen nach Eingang des Widerrufs erfolgen. Geben Sie an, dass die Rueckzahlung spaetestens 14 Tage nach Zugang des Widerrufs erfolgt.",
},
{
"id": "return_costs",
@@ -118,6 +127,7 @@ WIDERRUF_CHECKLIST = [
r"(?:tragen|uebernehmen|übernehmen)\s+(?:die\s+)?(?:kosten|r(?:ue|ü)cksende)",
],
"severity": "LOW",
"hint": "Es muss angegeben werden, wer die Kosten der Ruecksendung traegt. Stellen Sie klar, ob der Verbraucher oder der Unternehmer die Ruecksendekosten uebernimmt.",
},
# ── L1: Empfaenger des Widerrufs ──────────────────────────────────
@@ -131,6 +141,7 @@ WIDERRUF_CHECKLIST = [
r"widerruf.*(?:per|via|an)",
],
"severity": "MEDIUM",
"hint": "Name und Anschrift des Widerrufsempfaengers muessen angegeben werden. Fuegen Sie den vollstaendigen Firmennamen und die Postanschrift hinzu, an die der Widerruf zu richten ist.",
},
{
"id": "recipient_full_address",
@@ -141,6 +152,7 @@ WIDERRUF_CHECKLIST = [
r"(?:d[\-\s]?)?\d{5}\s+[a-z\u00c0-\u017e]\w+.*widerruf",
],
"severity": "LOW",
"hint": "Die vollstaendige Postanschrift mit Postleitzahl und Ort fehlt beim Widerrufsempfaenger. Ergaenzen Sie Strasse, PLZ und Ort des Unternehmens in der Widerrufsbelehrung.",
},
# ── L1: Hinweis kein Grund erforderlich ───────────────────────────
@@ -153,6 +165,7 @@ WIDERRUF_CHECKLIST = [
r"(?:kein|keine).*(?:begr(?:ue|ü)ndung|grund).*(?:erforderlich|n(?:oe|ö)tig)",
],
"severity": "LOW",
"hint": "Der Verbraucher muss darauf hingewiesen werden, dass er keinen Grund fuer den Widerruf angeben muss. Ergaenzen Sie den Satz 'Der Widerruf muss nicht begruendet werden'.",
},
# ── L1: Online-Kuendigungsbutton ──────────────────────────────────
@@ -166,6 +179,7 @@ WIDERRUF_CHECKLIST = [
r"k(?:ue|ü)ndigung.*(?:button|link|formular|online)",
],
"severity": "MEDIUM",
"hint": "Seit Juli 2022 ist ein Online-Kuendigungsbutton fuer Dauerschuldverhaeltnisse Pflicht (§312k BGB). Stellen Sie auf Ihrer Website einen gut sichtbaren Kuendigungsbutton bereit.",
},
# ── Neue L1: Ausnahme digitale Inhalte ────────────────────────────
@@ -180,5 +194,6 @@ WIDERRUF_CHECKLIST = [
r"(?:ausnahme|ausschluss).*widerruf.*digital",
],
"severity": "LOW",
"hint": "Falls Sie digitale Inhalte verkaufen, muss auf den moeglichen Verlust des Widerrufsrechts nach §356 BGB hingewiesen werden. Ergaenzen Sie eine Belehrung ueber die Ausnahme fuer digitale Inhalte.",
},
]