diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended.go b/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended.go index 2cfd5e0..c75d02b 100644 --- a/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended.go +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended.go @@ -1,8 +1,8 @@ package iace -// GetCyberExtendedPatterns returns 65 hazard patterns (HP800-HP864) -// for cyber/software/AI/automation safety covering: detailed software faults, -// cyber-security, AI/ML specifics, network/communication, and HMI hazards. +// GetCyberExtendedPatterns returns 30 hazard patterns (HP800-HP829) +// for detailed software faults and cyber-security threats in industrial +// control systems. func GetCyberExtendedPatterns() []HazardPattern { return []HazardPattern{ // ================================================================ @@ -464,546 +464,5 @@ func GetCyberExtendedPatterns() []HazardPattern { ZoneDE: "WLAN-Abdeckungsbereich, HMI-Tablets, IoT-Sensoren", DefaultSeverity: 4, DefaultExposure: 2, }, - - // ================================================================ - // KI/ML spezifisch (HP830-HP844) - // ================================================================ - { - ID: "HP830", NameDE: "KI-Modell erkennt Werkstueck nicht — Kollision", NameEN: "AI model fails to detect workpiece — collision", - RequiredComponentTags: []string{"has_ai", "sensor_part", "moving_part"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"false_classification", "mechanical_hazard"}, - SuggestedMeasureIDs: []string{"M101", "M102", "M003"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 90, - ScenarioDE: "KI-basierte Objekterkennung erkennt Werkstueck oder Hindernis nicht; Roboter oder Maschine kollidiert.", - TriggerDE: "Unbekanntes Objekt, ungelernte Beleuchtung, Sensorverschmutzung, Gegenstand ausserhalb Trainingsdaten", - HarmDE: "Kollision mit Werkstueck oder Person, mechanische Beschaedigung, Verletzung", - AffectedDE: "Bedienpersonal im Arbeitsraum des KI-Systems", - ZoneDE: "Arbeitsraum des Roboters, Kamerasichtfeld, Greiferbereich", - DefaultSeverity: 4, DefaultExposure: 3, - }, - { - ID: "HP831", NameDE: "Trainingsdaten-Bias fuehrt zu falscher Klassifikation", NameEN: "Training data bias leads to wrong classification", - RequiredComponentTags: []string{"has_ai"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"unintended_bias", "false_classification"}, - SuggestedMeasureIDs: []string{"M101"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 80, - ScenarioDE: "Einseitige Trainingsdaten fuehren dazu, dass das KI-Modell bestimmte Varianten systematisch falsch klassifiziert.", - TriggerDE: "Underrepresentation bestimmter Werkstuecktypen, Chargen oder Umgebungsbedingungen im Trainingsdatensatz", - HarmDE: "Fehlerhafte Qualitaetsentscheidung, fehlerhafte Teile gelangen in Umlauf", - AffectedDE: "Endkunden (fehlerhafte Produkte), Qualitaetsverantwortliche", - ZoneDE: "Alle KI-Entscheidungspunkte in der Qualitaetskontrolle", - DefaultSeverity: 3, DefaultExposure: 4, - }, - { - ID: "HP832", NameDE: "Adversarial Input taeuscht Bilderkennungssystem", NameEN: "Adversarial input deceives image recognition", - RequiredComponentTags: []string{"has_ai", "sensor_part"}, - RequiredEnergyTags: []string{"ai_model", "cyber"}, - GeneratedHazardCats: []string{"data_poisoning", "sensor_spoofing"}, - SuggestedMeasureIDs: []string{"M101", "M116"}, - SuggestedEvidenceIDs: []string{"E01", "E15", "E16"}, - Priority: 85, - ScenarioDE: "Gezielt veraenderte Eingabedaten (Adversarial Patches) taeuschen das Bilderkennungssystem und erzwingen Fehlklassifikation.", - TriggerDE: "Aufkleben eines Adversarial Patches auf Werkstueck, Manipulation der Kamera-Eingangssignale", - HarmDE: "Falsche Klassifikation, defektes Teil als gut erkannt, Sicherheitspruefung umgangen", - AffectedDE: "Endnutzer der Produkte, Bedienpersonal", - ZoneDE: "Kamerasichtfeld, Bildverarbeitungssystem, Qualitaetskontrollstation", - DefaultSeverity: 4, DefaultExposure: 1, - }, - { - ID: "HP833", NameDE: "Model Drift verschlechtert Qualitaet schleichend", NameEN: "Model drift gradually degrades quality", - RequiredComponentTags: []string{"has_ai"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"model_drift"}, - SuggestedMeasureIDs: []string{"M103"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 75, - ScenarioDE: "KI-Modell verliert durch veraenderte Prozessbedingungen ueber Wochen schleichend an Genauigkeit.", - TriggerDE: "Materialwechsel, Werkzeugverschleiss, saisonale Schwankungen, kein Monitoring der Modellleistung", - HarmDE: "Zunehmende Fehlentscheidungen, nicht erkannte Defekte, verzoegerte Erkennung", - AffectedDE: "Qualitaetsverantwortliche, Endkunden", - ZoneDE: "Alle Entscheidungspunkte des driftenden KI-Modells", - DefaultSeverity: 3, DefaultExposure: 4, - }, - { - ID: "HP834", NameDE: "KI ueberschreibt Sicherheitsparameter", NameEN: "AI overwrites safety parameters", - RequiredComponentTags: []string{"has_ai", "programmable"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"software_fault", "safety_function_failure"}, - SuggestedMeasureIDs: []string{"M101", "M104"}, - SuggestedEvidenceIDs: []string{"E01", "E07", "E15"}, - Priority: 95, - RequiresExpertCalculation: true, - ExpertHintDE: "KI-System darf keine schreibenden Zugriffe auf Sicherheitsparameter haben; Validierung nach EN ISO 13849 und IEC 61508.", - ScenarioDE: "KI-Optimierungsalgorithmus aendert Sicherheitsgrenzen (Geschwindigkeit, Kraft, Druck) ohne menschliche Freigabe.", - TriggerDE: "Keine Write-Protection fuer Sicherheitsparameter, fehlende Parameterverriegelung, RL-Agent optimiert Durchsatz", - HarmDE: "Ueberschreiten der Sicherheitsgrenzen, gefaehrliche Geschwindigkeit/Kraft, Verletzung oder Tod", - AffectedDE: "Bedienpersonal, alle Personen im Maschinenbereich", - ZoneDE: "Alle sicherheitsrelevanten Achsen und Funktionen", - DefaultSeverity: 5, DefaultExposure: 1, - }, - { - ID: "HP835", NameDE: "Fehlende Erklaerbarkeit — Bediener vertraut falsch", NameEN: "Lack of explainability — operator misplaces trust", - RequiredComponentTags: []string{"has_ai", "user_interface"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"false_classification"}, - SuggestedMeasureIDs: []string{"M101"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 70, - ScenarioDE: "KI-System gibt Empfehlung ohne Begruendung; Bediener folgt blindlings einer fehlerhaften Empfehlung.", - TriggerDE: "Fehlende Explainability, keine Konfidenzanzeige, Automation Bias des Bedieners", - HarmDE: "Fehlentscheidung auf Basis falscher KI-Empfehlung, Qualitaetsmangel, Sicherheitsrisiko", - AffectedDE: "Bedienpersonal, Qualitaetsverantwortliche", - ZoneDE: "HMI des KI-Systems, Entscheidungs-Dashboard", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP836", NameDE: "KI-Entscheidung im Grenzbereich (Edge Case)", NameEN: "AI decision in edge case", - RequiredComponentTags: []string{"has_ai"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"false_classification"}, - SuggestedMeasureIDs: []string{"M101", "M102"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 80, - ScenarioDE: "KI trifft bei Eingabedaten nahe der Entscheidungsgrenze unzuverlaessige Entscheidungen mit schwankender Konfidenz.", - TriggerDE: "Werkstueck exakt an der Gut/Schlecht-Grenze, unbekannte Kombination von Merkmalen", - HarmDE: "Instabile Entscheidungen, abwechselnd gut/schlecht bei identischem Teil, falsche Sortierung", - AffectedDE: "Qualitaetsverantwortliche, Endkunden", - ZoneDE: "Entscheidungspunkte des KI-Klassifikators", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP837", NameDE: "Reinforcement Learning fuehrt zu unerwartetem Verhalten", NameEN: "Reinforcement learning causes unexpected behavior", - RequiredComponentTags: []string{"has_ai", "programmable"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"software_fault"}, - SuggestedMeasureIDs: []string{"M101", "M102", "M103"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 85, - ScenarioDE: "RL-Agent entdeckt unbeabsichtigte Strategie zur Reward-Maximierung, die gefaehrliches Verhalten einschliesst.", - TriggerDE: "Unvollstaendige Reward-Funktion, fehlende Safety Constraints, Agent findet Exploit in Simulation", - HarmDE: "Unerwartete Maschinenbewegung, Reward Hacking fuehrt zu gefaehrlicher Aktion", - AffectedDE: "Bedienpersonal, Personen im Wirkbereich des RL-gesteuerten Systems", - ZoneDE: "Gesamter Aktionsraum des RL-Agenten", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP838", NameDE: "KI verarbeitet personenbezogene Daten (DSGVO-Verstoss)", NameEN: "AI processes personal data (GDPR violation)", - RequiredComponentTags: []string{"has_ai"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"unintended_bias"}, - SuggestedMeasureIDs: []string{"M101"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 70, - ScenarioDE: "KI-System verarbeitet Kamerabilder mit erkennbaren Personen ohne Einwilligung oder Rechtsgrundlage.", - TriggerDE: "Kamera erfasst Gesichter, Kennzeichen oder biometrische Daten; fehlende Anonymisierung", - HarmDE: "DSGVO-Bussgeld, Persoenlichkeitsrechtsverletzung, Vertrauensverlust", - AffectedDE: "Betroffene Personen (Mitarbeiter, Besucher), Datenschutzbeauftragter", - ZoneDE: "Kameraerfassungsbereich, Datenverarbeitungssystem", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP839", NameDE: "KI-System nicht validiert fuer Sicherheitsfunktion", NameEN: "AI system not validated for safety function", - RequiredComponentTags: []string{"has_ai", "safety_device"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"safety_function_failure"}, - SuggestedMeasureIDs: []string{"M101", "M104"}, - SuggestedEvidenceIDs: []string{"E01", "E07", "E15"}, - Priority: 95, - RequiresExpertCalculation: true, - ExpertHintDE: "KI in Sicherheitsfunktionen erfordert Validierung nach IEC 61508 SIL-Anforderungen und EN ISO 13849 PL-Nachweis.", - ScenarioDE: "KI-basierte Sicherheitsfunktion (z. B. Personenerkennung fuer Stopp) wurde nicht nach Sicherheitsnorm validiert.", - TriggerDE: "KI als Sicherheitskomponente ohne SIL/PL-Berechnung eingesetzt, fehlende Verifikation", - HarmDE: "Sicherheitsfunktion versagt im Anforderungsfall, Person wird nicht erkannt, kein Stopp", - AffectedDE: "Bedienpersonal, alle Personen im Schutzbereich", - ZoneDE: "Ueberwachungsbereich der KI-Sicherheitsfunktion", - DefaultSeverity: 5, DefaultExposure: 2, - }, - { - ID: "HP840", NameDE: "Concept Drift bei veraendertem Prozess", NameEN: "Concept drift from changed process", - RequiredComponentTags: []string{"has_ai"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"model_drift"}, - SuggestedMeasureIDs: []string{"M103"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 75, - ScenarioDE: "Grundlegende Aenderung des Produktionsprozesses macht das KI-Modell ungueltig, da es auf alten Zusammenhaengen basiert.", - TriggerDE: "Neues Material, neue Maschine, geaenderter Prozessablauf ohne Re-Training des Modells", - HarmDE: "Systematische Fehlentscheidungen, alle Teile falsch bewertet, Qualitaetseinbruch", - AffectedDE: "Qualitaetsverantwortliche, Endkunden", - ZoneDE: "Alle vom KI-Modell ueberwachten Prozessschritte", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP841", NameDE: "KI-Halluzination meldet falschen Zustand", NameEN: "AI hallucination reports false state", - RequiredComponentTags: []string{"has_ai", "user_interface"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"false_classification"}, - SuggestedMeasureIDs: []string{"M101", "M102"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 80, - ScenarioDE: "KI-System meldet einen Zustand mit hoher Konfidenz, der in Wirklichkeit nicht vorliegt (Halluzination).", - TriggerDE: "Eingangsdaten ausserhalb des Trainingsbereichs, Ueberanpassung (Overfitting), Sensorrauschen", - HarmDE: "Fehlalarm fuehrt zu unnoetigem Stopp oder — schlimmer — falsche Entwarnung bei realem Problem", - AffectedDE: "Bedienpersonal, das auf Basis der KI-Meldung handelt", - ZoneDE: "HMI-Anzeige, Alarm-Management-System", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP842", NameDE: "Abhaengigkeit von Cloud-Service fuer Sicherheitsfunktion", NameEN: "Dependency on cloud service for safety function", - RequiredComponentTags: []string{"has_ai", "networked"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"communication_failure", "safety_function_failure"}, - SuggestedMeasureIDs: []string{"M101", "M104", "M115"}, - SuggestedEvidenceIDs: []string{"E01", "E15", "E17"}, - Priority: 90, - ScenarioDE: "Sicherheitsrelevante KI-Funktion benoetigt Cloud-Verbindung; bei Netzwerkausfall ist die Sicherheit nicht gewaehrleistet.", - TriggerDE: "Internet-Ausfall, Cloud-Provider-Stoerung, DNS-Fehler, Latenz ueberschreitet Zeitlimit", - HarmDE: "Sicherheitsfunktion faellt aus, kein Fallback, Maschine laeuft ohne KI-Ueberwachung weiter", - AffectedDE: "Bedienpersonal, Personen im Ueberwachungsbereich", - ZoneDE: "Gesamter Schutzbereich der KI-Sicherheitsfunktion, Netzwerkverbindung", - DefaultSeverity: 5, DefaultExposure: 2, - }, - { - ID: "HP843", NameDE: "Fehlende Redundanz bei KI-basierter Qualitaetskontrolle", NameEN: "Missing redundancy in AI-based quality control", - RequiredComponentTags: []string{"has_ai"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"false_classification"}, - SuggestedMeasureIDs: []string{"M101", "M102"}, - SuggestedEvidenceIDs: []string{"E01", "E15"}, - Priority: 75, - ScenarioDE: "KI-System ist alleiniger Qualitaetsgate ohne Backup-Pruefung; bei KI-Ausfall passieren alle Teile unkontrolliert.", - TriggerDE: "KI-System faellt aus, kein manueller Rueckfallprozess definiert, Bypass im Stoerfall", - HarmDE: "Fehlerhafte Produkte gelangen zum Kunden, Rueckrufaktion, Sicherheitsrisiko bei Sicherheitsteilen", - AffectedDE: "Endkunden, Qualitaetsverantwortliche", - ZoneDE: "Qualitaetskontrollstation, Auslaufbereich der Produktion", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP844", NameDE: "Bias in Predictive Maintenance — Wartung zu spaet", NameEN: "Bias in predictive maintenance — maintenance too late", - RequiredComponentTags: []string{"has_ai"}, - RequiredEnergyTags: []string{"ai_model"}, - GeneratedHazardCats: []string{"model_drift"}, - SuggestedMeasureIDs: []string{"M103"}, - SuggestedEvidenceIDs: []string{"E01", "E15", "E21"}, - Priority: 80, - ScenarioDE: "KI-basierte Wartungsvorhersage unterschaetzt Verschleiss und empfiehlt Wartung zu spaet.", - TriggerDE: "Einseitige Trainingsdaten (nur Neuzustand), kein Monitoring der Vorhersagequalitaet, Betriebsbedingungen geaendert", - HarmDE: "Unerwarteter Maschinenausfall, Bauteilversagen waehrend Betrieb, Folgeschaeden", - AffectedDE: "Bedienpersonal bei ploetzlichem Ausfall, Wartungspersonal", - ZoneDE: "Alle ueberwachten Verschleissteile und Lager", - DefaultSeverity: 4, DefaultExposure: 2, - }, - - // ================================================================ - // Netzwerk / Kommunikation (HP845-HP854) - // ================================================================ - { - ID: "HP845", NameDE: "Feldbusausfall (PROFINET/EtherCAT/Modbus)", NameEN: "Fieldbus failure (PROFINET/EtherCAT/Modbus)", - RequiredComponentTags: []string{"networked", "it_component"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M114", "M115"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 85, - ScenarioDE: "Kompletter Feldbusausfall trennt SPS von allen Antrieben und Sensoren; Maschine verliert Kontrolle.", - TriggerDE: "Kabelbruch, Switch-Ausfall, EMV-Stoerung, Stecker oxidiert, Master-Ausfall", - HarmDE: "Unkontrollierter Maschinenstillstand, Antriebe im letzten Zustand, Last faellt herab", - AffectedDE: "Bedienpersonal, Personen im Maschinenbereich", - ZoneDE: "Gesamte Maschine (alle Feldbus-Teilnehmer betroffen)", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP846", NameDE: "Telegrammverlust in Echtzeit-Kommunikation", NameEN: "Telegram loss in real-time communication", - RequiredComponentTags: []string{"networked"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M114", "M115"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 80, - ScenarioDE: "Einzelne Telegramme im Echtzeit-Bussystem gehen verloren; Antrieb erhaelt keinen neuen Sollwert und behlt den alten.", - TriggerDE: "EMV-Stoerung, Kabelknicke, Switch-Ueberlast, defekter Busteilnehmer stoert Zyklus", - HarmDE: "Antrieb faehrt mit veraltetem Sollwert weiter, Position stimmt nicht mehr, Kollision", - AffectedDE: "Bedienpersonal bei Mehrachssystemen", - ZoneDE: "Bewegungsbereich der betroffenen Achse, Synchron-Verfahrbereiche", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP847", NameDE: "Jitter in Synchronisation von Achssystem", NameEN: "Jitter in multi-axis synchronization", - RequiredComponentTags: []string{"networked", "moving_part"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure", "mechanical_hazard"}, - SuggestedMeasureIDs: []string{"M114"}, - SuggestedEvidenceIDs: []string{"E01", "E14", "E17"}, - Priority: 75, - ScenarioDE: "Zeitschwankungen (Jitter) in der Echtzeit-Kommunikation fuehren zu Synchronisationsverlust in Mehrachssystemen.", - TriggerDE: "Ungeeigneter Switch (nicht echtzeitfaehig), Cross-Traffic, falsches VLAN-Setup", - HarmDE: "Achsen laufen auseinander, mechanische Verspannung, Kollision zwischen Achsen", - AffectedDE: "Bedienpersonal an synchronisierten Mehrachssystemen", - ZoneDE: "Gesamter Verfahrbereich der synchronisierten Achsen", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP848", NameDE: "Gateway-Ausfall zwischen Feld- und Leitebene", NameEN: "Gateway failure between field and control level", - RequiredComponentTags: []string{"networked", "it_component"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M115"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 70, - ScenarioDE: "Gateway zwischen Feldbus und Leitebene faellt aus; SCADA verliert Sicht auf Prozess, Alarme kommen nicht durch.", - TriggerDE: "Hardware-Defekt, Software-Absturz, Speicherueberlauf im Gateway, Firmware-Fehler", - HarmDE: "Verlust der Prozessueberwachung, Alarme werden nicht weitergeleitet, Blindflug am Leitstand", - AffectedDE: "Leitstand-Personal, SCADA-Betreiber", - ZoneDE: "Gateway, Uebergabepunkt Feldbus/Ethernet, SCADA-Server", - DefaultSeverity: 3, DefaultExposure: 2, - }, - { - ID: "HP849", NameDE: "Firmware-Inkompatibilitaet nach Update", NameEN: "Firmware incompatibility after update", - RequiredComponentTags: []string{"has_software", "networked"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"update_failure", "communication_failure"}, - SuggestedMeasureIDs: []string{"M138", "M146"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 75, - ScenarioDE: "Firmware-Update eines Busteilnehmers ist inkompatibel mit der SPS-Version; Kommunikation bricht zusammen.", - TriggerDE: "Teilnehmer einzeln aktualisiert ohne Kompatibilitaetspruefung, Breaking Change in neuer Version", - HarmDE: "Busausfall, Antrieb nicht erreichbar, unkontrollierter Zustand", - AffectedDE: "Wartungspersonal (Update-Vorgang), anschliessend Bedienpersonal", - ZoneDE: "Aktualisierter Busteilnehmer, gesamter Busstrang bei Master-Update", - DefaultSeverity: 3, DefaultExposure: 1, - }, - { - ID: "HP850", NameDE: "IP-Konflikt im Maschinennetzwerk", NameEN: "IP conflict in machine network", - RequiredComponentTags: []string{"networked"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M114"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 65, - ScenarioDE: "Zwei Geraete im Maschinennetzwerk haben dieselbe IP-Adresse; Kommunikation ist unzuverlaessig.", - TriggerDE: "Manuelles IP-Management ohne Dokumentation, Ersatzgeraet mit werksseitiger IP, DHCP-Fehler", - HarmDE: "Sporadische Kommunikationsausfaelle, Steuerungsbefehle an falsches Geraet, undeterministisches Verhalten", - AffectedDE: "Bedienpersonal (schwer erkennbare Stoerung)", - ZoneDE: "Maschinennetzwerk, betroffene IP-Teilnehmer", - DefaultSeverity: 3, DefaultExposure: 2, - }, - { - ID: "HP851", NameDE: "Zeitsynchronisation verloren — Sequenzfehler", NameEN: "Time synchronization lost — sequence error", - RequiredComponentTags: []string{"networked", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure", "software_fault"}, - SuggestedMeasureIDs: []string{"M114"}, - SuggestedEvidenceIDs: []string{"E01", "E14", "E17"}, - Priority: 75, - ScenarioDE: "PTP/NTP-Synchronisation im Netzwerk geht verloren; zeitgesteuerte Aktionen werden asynchron ausgefuehrt.", - TriggerDE: "Grand-Master-Clock faellt aus, Kabelbruch zum Zeitserver, Switch ohne PTP-Support", - HarmDE: "Achsen bewegen sich nicht mehr synchron, Sequenzen in falscher Reihenfolge", - AffectedDE: "Bedienpersonal bei synchronisierten Anlagen", - ZoneDE: "Alle zeitgesteuerten Stationen und Achsen", - DefaultSeverity: 4, DefaultExposure: 1, - }, - { - ID: "HP852", NameDE: "Bandbreite-Ueberlastung verzoegert Sicherheitsfunktion", NameEN: "Bandwidth overload delays safety function", - RequiredComponentTags: []string{"networked", "safety_device"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure", "safety_function_failure"}, - SuggestedMeasureIDs: []string{"M114", "M115"}, - SuggestedEvidenceIDs: []string{"E01", "E07", "E17"}, - Priority: 85, - ScenarioDE: "Netzwerk-Ueberlastung verzoegert sicherheitsrelevante Telegramme ueber die maximale Reaktionszeit hinaus.", - TriggerDE: "Datenintensiver Prozess (Vision-System) auf gleichem Netzwerk, Broadcast-Storm, fehlende QoS-Konfiguration", - HarmDE: "Sicherheitsfunktion reagiert zu spaet, Nachlaufweg vergroessert sich, Schutzfunktion unwirksam", - AffectedDE: "Bedienpersonal im Schutzbereich der verzoegerten Sicherheitsfunktion", - ZoneDE: "Netzwerkstrecke zum Safety-Controller, gesamter Schutzbereich", - DefaultSeverity: 5, DefaultExposure: 1, - }, - { - ID: "HP853", NameDE: "Fehlerhafte Routing-Konfiguration", NameEN: "Faulty routing configuration", - RequiredComponentTags: []string{"networked", "it_component"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M114"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 60, - ScenarioDE: "Falsche Routing-Konfiguration leitet Steuerbefehle an falsches Teilnetz oder laesst sie ins Leere laufen.", - TriggerDE: "Fehlkonfiguration nach Netzwerkaenderung, falsches Default-Gateway, Route Loop", - HarmDE: "Steuerbefehle kommen nicht an, Antriebe reagieren nicht, Fehlzuordnung von Befehlen", - AffectedDE: "Bedienpersonal, Netzwerkadministrator", - ZoneDE: "Router, Layer-3-Switches, Netzwerksegmentierung", - DefaultSeverity: 3, DefaultExposure: 1, - }, - { - ID: "HP854", NameDE: "Switch-Ausfall in Ring-Topologie", NameEN: "Switch failure in ring topology", - RequiredComponentTags: []string{"networked", "it_component"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M115"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 75, - ScenarioDE: "Managed Switch in Ring-Topologie faellt aus; Ring-Redundanz uebernimmt, aber Umschaltzeit stoert Echtzeit-Kommunikation.", - TriggerDE: "Switch-Hardware-Defekt, Spannungsausfall am Switch, Ring-Rekonfiguration dauert zu lange (>Zykluszeit)", - HarmDE: "Kurzzeitiger Kommunikationsausfall, Antriebe verlieren Sollwerte, Synchronisationsverlust", - AffectedDE: "Bedienpersonal bei zeitkritischen Prozessen", - ZoneDE: "Ring-Netzwerk, alle Teilnehmer hinter dem ausgefallenen Switch", - DefaultSeverity: 3, DefaultExposure: 2, - }, - - // ================================================================ - // Mensch-Maschine-Interaktion / HMI (HP855-HP864) - // ================================================================ - { - ID: "HP855", NameDE: "HMI friert ein — Bediener handelt blind", NameEN: "HMI freezes — operator acts blind", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"software_fault"}, - SuggestedMeasureIDs: []string{"M103", "M141"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 80, - ScenarioDE: "HMI-Bildschirm friert ein und zeigt veraltete Prozesswerte; Bediener trifft Entscheidungen auf Basis falscher Anzeige.", - TriggerDE: "Software-Absturz der HMI-Anwendung, Speicherueberlauf, Grafiktreiber-Fehler", - HarmDE: "Fehlbedienung aufgrund veralteter Anzeige, Eingriff in falschen Prozess, verpasster Alarm", - AffectedDE: "Bedienpersonal am eingefrorenen HMI", - ZoneDE: "Leitstand, HMI-Terminal, alle ueberwachten Prozessbereiche", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP856", NameDE: "Alarmueberschwemmung (Alarm Flooding)", NameEN: "Alarm flooding", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141", "M149"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 80, - ScenarioDE: "Hunderte Alarme erscheinen gleichzeitig; Bediener kann kritischen Alarm nicht identifizieren.", - TriggerDE: "Kaskadenartige Stoerung, schlechtes Alarm-Design, keine Alarm-Priorisierung, zu niedrige Schwellwerte", - HarmDE: "Kritischer Alarm wird uebersehen, verzoegerte Reaktion, falsche Priorisierung", - AffectedDE: "Bedienpersonal am Leitstand", - ZoneDE: "Leitstand, Alarm-Management-System", - DefaultSeverity: 4, DefaultExposure: 3, - }, - { - ID: "HP857", NameDE: "Falscher Betriebsartenwahlschalter", NameEN: "Wrong operating mode selector", - RequiredComponentTags: []string{"user_interface", "programmable"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"configuration_error"}, - SuggestedMeasureIDs: []string{"M145", "M121"}, - SuggestedEvidenceIDs: []string{"E01", "E08"}, - Priority: 85, - ScenarioDE: "Bediener waehlt falsche Betriebsart (z. B. Automatik statt Einrichten); Maschine startet mit voller Geschwindigkeit.", - TriggerDE: "Verwechslung der Betriebsart, Schluesselschalter nicht verriegelt, fehlende Anzeige der aktiven Betriebsart", - HarmDE: "Unerwartete Maschinenbewegung bei voller Geschwindigkeit, Quetschung, Kollision", - AffectedDE: "Einrichter, Bedienpersonal im Maschinenbereich", - ZoneDE: "Gesamte Maschine, insbesondere Bereiche die bei Einrichten zugaenglich sind", - DefaultSeverity: 5, DefaultExposure: 2, - }, - { - ID: "HP858", NameDE: "Display zeigt falschen Prozesswert", NameEN: "Display shows wrong process value", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"software_fault"}, - SuggestedMeasureIDs: []string{"M101", "M103"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 75, - ScenarioDE: "HMI zeigt falschen Messwert (z. B. falsche Zuordnung von Sensor zu Anzeige) und Bediener reagiert falsch.", - TriggerDE: "Programmierfehler in der Visualisierung, falscher Tag zugeordnet, Skalierungsfehler", - HarmDE: "Fehlbedienung auf Basis falscher Information, Prozess laeuft aus dem Toleranzbereich", - AffectedDE: "Bedienpersonal, das sich auf die Anzeige verlaesst", - ZoneDE: "HMI-Display, Prozessabbild auf dem Leitstand", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP859", NameDE: "Bediener umgeht Safety-Login am HMI", NameEN: "Operator bypasses safety login on HMI", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{"cyber"}, - GeneratedHazardCats: []string{"unauthorized_access", "safety_function_failure"}, - SuggestedMeasureIDs: []string{"M111", "M112"}, - SuggestedEvidenceIDs: []string{"E01", "E16"}, - Priority: 80, - ScenarioDE: "Bediener umgeht Login-Bildschirm am HMI und erlangt Zugang zu sicherheitsrelevanten Parametern.", - TriggerDE: "Gemeinsames Passwort, Post-It mit Passwort am Monitor, Auto-Login konfiguriert", - HarmDE: "Unberechtigte Aenderung von Sicherheitsparametern, Deaktivierung von Schutzfunktionen", - AffectedDE: "Bedienpersonal, alle Personen im Maschinenbereich", - ZoneDE: "HMI-Terminal, Parameterseiten der Steuerung", - DefaultSeverity: 4, DefaultExposure: 3, - }, - { - ID: "HP860", NameDE: "Touch-Fehlbedienung (nasse Finger/Handschuhe)", NameEN: "Touch misoperation (wet fingers/gloves)", - RequiredComponentTags: []string{"user_interface"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E01", "E20"}, - Priority: 65, - ScenarioDE: "Touchscreen reagiert auf nasse Finger, Handschuhe oder Wassertropfen und loest unbeabsichtigte Funktion aus.", - TriggerDE: "Regen, Schwitzhaende, Oelfilm auf Handschuh, Wasserspritzer auf Display", - HarmDE: "Unbeabsichtigtes Starten einer Funktion, Parameterwechsel, Betriebsart-Umschaltung", - AffectedDE: "Bedienpersonal mit Handschuhen oder in nassem Umfeld", - ZoneDE: "Touch-HMI, Panel-PC, mobile Bediengeraete", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP861", NameDE: "Sprachbarriere bei mehrsprachiger Belegschaft", NameEN: "Language barrier in multilingual workforce", - RequiredComponentTags: []string{"user_interface"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E24", "E25"}, - Priority: 60, - ScenarioDE: "Alarmmeldungen und Sicherheitshinweise am HMI sind nur in einer Sprache; Bediener versteht Warnung nicht.", - TriggerDE: "Einsprachiges HMI, fremdsprachige Zeitarbeitskraefte, fehlende Piktogramme", - HarmDE: "Warnung nicht verstanden, falsche Reaktion auf Alarm, Sicherheitsunterweisung nicht begriffen", - AffectedDE: "Nicht-muttersprachliche Bediener, Zeitarbeitskraefte, Leiharbeiter", - ZoneDE: "HMI-Terminal, Sicherheitsbeschilderung, Alarmanzeigen", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP862", NameDE: "Nachtschicht-Muedigkeit fuehrt zu Fehlreaktion", NameEN: "Night shift fatigue leads to wrong reaction", - RequiredComponentTags: []string{"user_interface"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E25"}, - Priority: 60, - ScenarioDE: "Muedigkeit in der Nachtschicht verzoegert Reaktionszeit und erhoeht Wahrscheinlichkeit fuer Fehlbedienung.", - TriggerDE: "Lange Schichtdauer, monotone Ueberwachungsaufgabe, fehlende Pausenregelung", - HarmDE: "Verzoegerte Reaktion auf Alarm, Einschlafen am Leitstand, Fehlbedienung", - AffectedDE: "Nachtschicht-Personal, alle von der Ueberwachung abhaengigen Personen", - ZoneDE: "Leitstand, Ueberwachungsstationen", - DefaultSeverity: 3, DefaultExposure: 4, - }, - { - ID: "HP863", NameDE: "Informationsueberlastung am Bedienterminal", NameEN: "Information overload at operator terminal", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 55, - ScenarioDE: "Zu viele Informationen, Trends und Werte auf einem Bildschirm ueberfordern den Bediener kognitiv.", - TriggerDE: "Schlechtes UI-Design, zu viele gleichzeitig angezeigte Werte, fehlende Informationshierarchie", - HarmDE: "Kritische Information wird uebersehen, verzoegerte Erkennung von Anomalien", - AffectedDE: "Bedienpersonal, Leitstand-Operatoren", - ZoneDE: "HMI-Bildschirme, SCADA-Oberflaeche, Leitstand", - DefaultSeverity: 2, DefaultExposure: 4, - }, - { - ID: "HP864", NameDE: "Fehlende Rueckmeldung — Bediener drueckt erneut", NameEN: "Missing feedback — operator presses again", - RequiredComponentTags: []string{"user_interface"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 65, - ScenarioDE: "HMI gibt keine Rueckmeldung auf Tastendruck; Bediener drueckt erneut und loest unbeabsichtigte Doppelaktion aus.", - TriggerDE: "Fehlende akustische/visuelle Quittierung, langsame HMI-Reaktion, Netzwerk-Latenz", - HarmDE: "Doppelter Befehl (z. B. doppelter Zyklus-Start), Maschine startet erneut waehrend Entnahme", - AffectedDE: "Bedienpersonal", - ZoneDE: "HMI-Taster/Touchscreen, Gesamte Maschine bei Doppelausloesung", - DefaultSeverity: 3, DefaultExposure: 3, - }, } } diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_food_pkg.go b/ai-compliance-sdk/internal/iace/hazard_patterns_food_pkg.go index 334ae9f..c1810c3 100644 --- a/ai-compliance-sdk/internal/iace/hazard_patterns_food_pkg.go +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_food_pkg.go @@ -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, - }, } } diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_laser_medical.go b/ai-compliance-sdk/internal/iace/hazard_patterns_laser_medical.go index d69e51a..201b3a3 100644 --- a/ai-compliance-sdk/internal/iace/hazard_patterns_laser_medical.go +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_laser_medical.go @@ -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, - }, } } diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_maintenance_ext.go b/ai-compliance-sdk/internal/iace/hazard_patterns_maintenance_ext.go index 1d868a5..c7c9480 100644 --- a/ai-compliance-sdk/internal/iace/hazard_patterns_maintenance_ext.go +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_maintenance_ext.go @@ -1,7 +1,7 @@ package iace // GetMaintenanceExtPatterns returns 65 maintenance/lifecycle-specific hazard patterns -// (HP700-HP764). All patterns have RequiredLifecycles set. +// (HP700-HP729, HP900-HP934). All patterns have RequiredLifecycles set. func GetMaintenanceExtPatterns() []HazardPattern { return []HazardPattern{ // — Wartung allgemein (HP700-HP709) — @@ -217,144 +217,144 @@ func GetMaintenanceExtPatterns() []HazardPattern { 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 (HP730-HP737) — - {ID: "HP730", NameDE: "Kippen der Maschine beim Transport", NameEN: "Machine tipping during transport", + // — 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: "HP731", NameDE: "Herabfallen bei Kranverladung", NameEN: "Falling load crane loading", + {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: "HP732", NameDE: "Quetschung beim Absetzen schwerer Lasten", NameEN: "Crushing when lowering loads", + {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: "HP733", NameDE: "Rueckenschaden durch manuelles Tragen", NameEN: "Back injury manual carrying", + {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: "HP734", NameDE: "Pendelnde Last am Kran", NameEN: "Swinging load on crane", + {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: "HP735", NameDE: "Maschine rutscht vom Transportfahrzeug", NameEN: "Machine slides off vehicle", + {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: "HP736", NameDE: "Kollision bei innerbetrieblichem Transport", NameEN: "Collision internal transport", + {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: "HP737", NameDE: "Verankerungsfehler bei Montage", NameEN: "Anchoring error installation", + {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 (HP738-HP742) — - {ID: "HP738", NameDE: "Erststart ohne komplette Schutzeinrichtungen", NameEN: "First start without guards", + // — 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: "HP739", NameDE: "Kalibrierungsfehler verursacht Ueberfahrt", NameEN: "Calibration error overtravel", + {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: "HP740", NameDE: "Unerwartetes Verhalten bei Probebetrieb", NameEN: "Unexpected behaviour trial run", + {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: "HP741", NameDE: "Not-Halt nicht geprueft bei IBN", NameEN: "E-stop not tested commissioning", + {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: "HP742", NameDE: "Medienanschluss vertauscht bei IBN", NameEN: "Media connection swapped", + {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 (HP743-HP747) — - {ID: "HP743", NameDE: "Nassreinigung nahe Elektrik", NameEN: "Wet cleaning near electrics", + // — 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: "HP744", NameDE: "Giftige Reinigungsmittel-Daempfe", NameEN: "Toxic cleaner fumes", + {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: "HP745", NameDE: "Hochdruckreiniger-Verletzung", NameEN: "High-pressure cleaner injury", + {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: "HP746", NameDE: "Reinigung bei laufender Maschine", NameEN: "Cleaning during operation", + {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: "HP747", NameDE: "Nassrutschiger Boden nach Reinigung", NameEN: "Wet slippery floor after cleaning", + {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 (HP748-HP752) — - {ID: "HP748", NameDE: "Restmedien in demontierten Leitungen", NameEN: "Residual media dismantled piping", + // — 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: "HP749", NameDE: "Asbestexposition bei Altmaschine", NameEN: "Asbestos old machine demolition", + {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, @@ -362,36 +362,36 @@ func GetMaintenanceExtPatterns() []HazardPattern { ScenarioDE: "Asbesthaltiges Material wird freigesetzt", TriggerDE: "Keine Vorab-Ermittlung", HarmDE: "Asbestose, Lungenkrebs", AffectedDE: "Abbruchpersonal", ZoneDE: "Alte Dichtungen/Isolierungen", DefaultSeverity: 5, DefaultExposure: 2}, - {ID: "HP750", NameDE: "Kontaminierte Teile bei Entsorgung", NameEN: "Contaminated parts disposal", + {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: "HP751", NameDE: "Scharfe Kanten bei Zerschneidung", NameEN: "Sharp edges cutting scrap", + {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: "HP752", NameDE: "Instabilitaet bei stueckweisem Abbruch", NameEN: "Instability stepwise demolition", + {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 (HP753-HP757) — - {ID: "HP753", NameDE: "Pruefung unter Last (Belastungstest)", NameEN: "Test under load", + // — 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: "HP754", NameDE: "Druckpruefung mit Berstgefahr", NameEN: "Pressure test burst risk", + {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, @@ -399,21 +399,21 @@ func GetMaintenanceExtPatterns() []HazardPattern { ScenarioDE: "Behaelter versagt bei Druckpruefung", TriggerDE: "Wandstaerkenunterschreitung", HarmDE: "Bersten, Splitterflug, Tod", AffectedDE: "Pruefpersonal", ZoneDE: "Druckbehaelter", DefaultSeverity: 5, DefaultExposure: 2}, - {ID: "HP755", NameDE: "Funktionstest mit offener Schutzeinrichtung", NameEN: "Function test open guard", + {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: "HP756", NameDE: "Messung an spannungsfuehrender Anlage", NameEN: "Measurement on energized system", + {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: "HP757", NameDE: "ZfP mit Strahlenquelle", NameEN: "NDT with radiation source", + {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, @@ -421,51 +421,51 @@ func GetMaintenanceExtPatterns() []HazardPattern { ScenarioDE: "Radiographische Pruefung mit Roentgen/Gamma", TriggerDE: "Sperrbereich nicht eingerichtet", HarmDE: "Ionisierende Strahlung, Krebs", AffectedDE: "Pruefpersonal", ZoneDE: "Pruef-/Kontrollbereich", DefaultSeverity: 5, DefaultExposure: 2}, - // — Fremdfirmen (HP758-HP761) — - {ID: "HP758", NameDE: "Fehlende Einweisung Fremdfirma", NameEN: "Missing contractor induction", + // — 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: "HP759", NameDE: "Sprachbarriere bei Sicherheitskommunikation", NameEN: "Language barrier safety communication", + {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: "HP760", NameDE: "Parallele Arbeiten ohne Koordination", NameEN: "Parallel work no coordination", + {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: "HP761", NameDE: "Schnittstellenproblem an Gewerkeuebergaengen", NameEN: "Interface problem trade boundaries", + {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 (HP762-HP764) — - {ID: "HP762", NameDE: "Versperrte Fluchtwege bei Wartung", NameEN: "Blocked escape routes maintenance", + // — 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: "HP763", NameDE: "Fehlende Erste-Hilfe am Wartungsort", NameEN: "Missing first aid maintenance site", + {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: "HP764", NameDE: "Brandbekaempfung bei Wartung", NameEN: "Firefighting during maintenance", + {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, diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_medical_pressure.go b/ai-compliance-sdk/internal/iace/hazard_patterns_medical_pressure.go new file mode 100644 index 0000000..07913e0 --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_medical_pressure.go @@ -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, + }, + } +} diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_packaging.go b/ai-compliance-sdk/internal/iace/hazard_patterns_packaging.go new file mode 100644 index 0000000..074d345 --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_packaging.go @@ -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, + }, + } +} diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_specific_machines2.go b/ai-compliance-sdk/internal/iace/hazard_patterns_specific_machines2.go new file mode 100644 index 0000000..197f8e0 --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_specific_machines2.go @@ -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, + }, + } +} diff --git a/ai-compliance-sdk/internal/iace/pattern_engine.go b/ai-compliance-sdk/internal/iace/pattern_engine.go index 300b43c..ffb7fb9 100644 --- a/ai-compliance-sdk/internal/iace/pattern_engine.go +++ b/ai-compliance-sdk/internal/iace/pattern_engine.go @@ -87,7 +87,7 @@ func NewPatternEngine() *PatternEngine { 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-HP764 maintenance lifecycle + patterns = append(patterns, GetMaintenanceExtPatterns()...) // HP700-HP729,HP900-HP934 maintenance lifecycle return &PatternEngine{ resolver: NewTagResolver(), patterns: patterns,