""" Wetgeving Overlay — JvG Consultancy Harde referenties per categorie voor Deep RAG context. Zorgt dat de AI altijd de juiste wetsartikelen, AI-bladen, PGS-richtlijnen en normen citeert. """ WETGEVING_OVERLAY = { "arbo": { "naam": "Arbowetgeving & Arbeidsomstandigheden", "wetten": [ { "verwijzing": "Arbowet art. 3", "tekst": "Werkgever is verplicht tot het voeren van een arbeidsomstandighedenbeleid gericht op zo goed mogelijke arbeidsomstandigheden, waaronder het verrichten van een RI&E (art. 5)." }, { "verwijzing": "Arbowet art. 5", "tekst": "De werkgever laat een risico-inventarisatie en -evaluatie (RI&E) uitvoeren en stelt deze ter inzage aan de werknemers. Bij ≥25 werknemers toetsing door een gecertificeerde arbodienst." }, { "verwijzing": "Arbowet art. 8", "tekst": "De werkgever stelt voorschriften vast ter zake van het veilig en gezond werken en zorgt dat deze voorschriften ter kennis van de werknemers worden gebracht." }, { "verwijzing": "Arbowet art. 9", "tekst": "Werkgever zorgt voor adequate opleiding en voorlichting aan werknemers over de arbeidsomstandigheden waarmee zij te maken kunnen krijgen." }, { "verwijzing": "Arbowet art. 11", "tekst": "Werknemers zijn verplicht de door de werkgever gegeven voorschriften op te volgen en medewerking te verlenen aan het arbeidsomstandighedenbeleid." }, { "verwijzing": "Arbobesluit art. 3.4-3.24", "tekst": "Specifieke voorschriften voor arbeidsplaatsen: vloeren, trappen, leuningen, brandveiligheid, ventilatie, temperatuur, verlichting, lawaai, trillingen, straling, PBM." }, { "verwijzing": "Arbobesluit art. 4.1-4.10", "tekst": "Voorschriften gevaarlijke stoffen: blootstellingslimieten, classificatie, etikettering, veiligheidsinformatiebladen (MSDS/SDS), substitutieplicht." }, { "verwijzing": "Arbobesluit art. 5.1-5.5", "tekst": "Persoonlijke beschermingsmiddelen: PBM als laatste in de risicobeperkingsstrategie, eisen aan geschiktheid, onderhoud en opleiding." }, ], "ai_bladen": [ "AI-01 Arbobeleid", "AI-02 Beeldschermwerk", "AI-03 Asbest", "AI-04 Lawaai op de arbeidsplaats", "AI-06 Kankerverwekkende, mutagene en reprotoxische stoffen (CMR)", "AI-07 Kantoren", "AI-08 Zittend en staand werken", "AI-09 Biologische agentia", "AI-12 Zwangerschap en werk", "AI-13 Balie- en kassawerkplekken", "AI-17 Hijs- en hefmiddelen", "AI-19 Industriële verfverwerking", "AI-21 Rolsteigers", "AI-22 Werken met verontreinigde grond", "AI-24 Binnenmilieu", "AI-28 Bestrijdingsmiddelen", "AI-29 Fysieke belasting", "AI-31 Gezondheidsrisico's gevaarlijke stoffen", "AI-32 Legionella risico's in industriële watersystemen", "AI-38 Arbeids- en rusttijden", "AI-39 Elektromagnetische velden", "AI-40 Arbowetgeving en handhaving", "AI-41 Ongewenst gedrag op het werk", "AI-42 Werkdruk, stress en energie", "AI-43 Ongevallenonderzoek", "AI-44 De preventiemedewerker", "AI-45 Risicobeheersing", "AI-50 Communiceren over risico's", "AI-55 Werken met allergenen", "AI-58 Machineveiligheid", "AI-59 Werken aan veiligheidscultuur", "AI-60 Kunstmatige optische straling", "AI-61 Risico-inventarisatie en -evaluatie", "AI-62 Industriële brandveiligheid", "AI-63 Nanotechnologie en nanomaterialen", "AI-75 Bedrijfscontinuïteit", "AI-76 Alcohol-, drugs- en medicijnenbeleid", "AI-77 Chroom-6", "AI-78 Omgevingswet en omgevingsveiligheidsbeleid", "AI-79 Crisisbeheersing", "AI-82 Psychosociale arbeidsbelasting", "AI-83 Op- en overslag gevaarlijke stoffen", ], "normen": ["NEN 3651", "NEN 3140", "NEN-EN-ISO 45001:2018"], }, "brzo": { "naam": "BRZO 2015 & Seveso III", "wetten": [ { "verwijzing": "BRZO 2015 art. 8", "tekst": "Meldplicht: bedrijven met ≥10 ton gevaarlijke stoffen (lijst 1, bovenste drempel) melden bij het bevoegd gezag. Aanmeldplicht ≥2 ton (onderste drempel)." }, { "verwijzing": "BRZO 2015 art. 9", "tekst": "Veiligheidsrapport: verplicht voor inrichtingen boven de bovenste drempel. Bevat identificatie van gevaren, preventie, beheersmaatregelen en noodplan." }, { "verwijzing": "BRZO 2015 art. 10", "tekst": "Beheersysteem veiligheid: bedrijven boven bovenste drempel stellen een veiligheidsbeheerssysteem in volgens art. 10 lid 2." }, { "verwijzing": "BRZO 2015 art. 11", "tekst": "Interne noodplan: bedrijven boven onderste drempel stellen een intern noodplan op, oefenen dit regelmatig en passen het aan bij wijzigingen." }, { "verwijzing": "BRZO 2015 art. 12", "tekst": "Externe noodplan: bevoegd gezag stelt extern noodplan op voor inrichtingen boven bovenste drempel. Bedrijf levert input en werkt mee." }, { "verwijzing": "BRZO 2015 art. 13", "tekst": "Veiligheidsbeleid: bedrijven stellen een veiligheidsbeleid op gericht op preventie van zware ongevallen. Doel: gevaren zoveel mogelijk beheersen." }, { "verwijzing": "BRZO 2015 art. 14-15", "tekst": "Landinrichting en openbaarmaking: overheden houden afstand tot BRZO-inrichtingen; burgers hebben recht op informatie over veiligheidsmaatregelen." }, { "verwijzing": "BRZO 2015 art. 16", "tekst": "Ongevallenmelding: directe melding bij ernstige ongevallen aan bevoegd gezag en inspectie SZW." }, { "verwijzing": "BRZO 2015 art. 17", "tekst": "Inspectie: de Inspectie Leefomgeving en Veiligheid (ILenT) toetst naleving. Bestuursdwongen handhaving bij overtreding." }, { "verwijzing": "BRZO 2015 art. 18-19", "tekst": "Strafbepalingen en overgangsbepalingen. Overtreding kan leiden tot strafrechtelijke vervolging, bestuursrechtelijke maatregelen of stillegging." }, { "verwijzing": "Seveso III richtlijn 2012/18/EU", "tekst": "EU-richtlijn voor de preventie van zware ongevallen met gevaarlijke stoffen. Implementatie in NL via BRZO 2015. Definieert drempelwaarden, veiligheidsrapporten en openbaarmaking." }, ], "pgs_richtlijnen": [ "PGS-1 Classificatie van gevaarlijke stoffen", "PGS-2 Methoden voor het bepalen van mogelijke schade", "PGS-3 Leidraad Maatschappelijke Kwetsbaarheid", "PGS-5 Methoden voor het bepalen van mogelijke schade (bijgewerkt)", "PGS-7 Publiek Informatie", "PGS-11 Methoden voor de bepaling van de mogelijke schade aan mensen en goederen", "PGS-12 Opslag van pakketten", "PGS-15 Opslag van vloeistoffen in verticale cilindrische tanks", "PGS-16 Veilige afstand en risicoberekening voor externe veiligheid", "PGS-18 Leidraad voor het opstellen van een Veiligheidsrapport", "PGS-21 Veiligheidsbeheerssysteem", "PGS-22 Risicoberekening externe veiligheid", "PGS-29 MER bij BRZO-inrichtingen", "PGS-30 Veiligheidsrapporten en andere documenten", "PGS-31 Evaluatie van aardbevingen en zware ongevallen", "PGS-34 Bedrijfsnoodzorg", ], "arie_lijst": [ "ARIE categorie A: uiterst gevaarlijke stoffen (acrylonitril, chloor, ammoniak, waterstofcyanide)", "ARIE categorie B: zeer gevaarlijke stoffen (benzeen, formaldehyde, koolstofdisulfide)", "ARIE categorie C: overige gevaarlijke stoffen", ], "normen": ["NEN 3651", "NEN 8700 (LPG)", "NEN-EN 1473 (LNG)", "API 752/753"], }, "milieu": { "naam": "Omgevingswet & Milieuregeling", "wetten": [ { "verwijzing": "Omgevingswet art. 1.2", "tekst": "De Omgevingswet bundelt wetgeving voor de fysieke leefomgeving: milieu, water, natuur, ruimtelijke ordening, bouwen en wonen." }, { "verwijzing": "Omgevingswet art. 2.1-2.6", "tekst": "Omgevingsplan: gemeenten stellen een omgevingsplan vast dat regels geeft voor het gebruik van de ruimte en de bescherming van het milieu." }, { "verwijzing": "Omgevingswet art. 5.1-5.35", "tekst": "Vergunningplicht: activiteiten die aanzienlijke nadelige gevolgen kunnen hebben voor de omgeving vergen een omgevingsvergunning (voorheen milieuvergunning)." }, { "verwijzing": "Activiteitenbesluit milieubeheer (BAL)", "tekst": "Bepaalt welke bedrijfsactiviteiten een vergunning nodig hebben en stelt algemene regels voor emissies, afval, bodembescherming en geluid." }, { "verwijzing": "Besluit externen (BEST)", "tekst": "Richt regels voor externe veiligheid bij inrichtingen die gevaarlijke stoffen produceren, verwerken of opslaan. Relateert aan BRZO." }, { "verwijzing": "Nederlandse Emissierichtlijn Lucht (NER)", "tekst": "Stelt emissiegrenswaarden vast voor stof (PM10, PM2.5), NOx, SO2, CO, VOC's, lood en andere luchtverontreinigende stoffen." }, { "verwijzing": "Waterwet art. 6.1-6.23", "tekst": "Regels voor lozingen op oppervlaktewater en grondwater. Vergunningplichtig, met emissie-eisen en monitoringverplichtingen." }, { "verwijzing": "Wet milieubeheer art. 8.1-8.40", "tekst": "Afvalstoffen: identificatie, gescheiden inzameling, bewaring, transport en verwerking van gevaarlijke afvalstoffen." }, ], "normen": ["NEN-EN-ISO 14001:2015", "NEN 7340 (bodem/groundwater)", "NEN 6600 (emissie)", "EPR-richtlijn"], }, "kam": { "naam": "KAM-managementsystemen (Kwaliteit, Arbo, Milieu)", "wetten": [ { "verwijzing": "ISO 45001:2018 cl. 4-10", "tekst": "Kader voor OH&S-managementsysteem: context van de organisatie, leiderschap, planning, steun, uitvoering, evaluatie en verbetering (PDCA-cyclus)." }, { "verwijzing": "ISO 45001:2018 cl. 5.1", "tekst": "Leiderschap en toezegging: topmanagement toont leiderschap en toezegging ten aanzien van het OH&S-managementsysteem." }, { "verwijzing": "ISO 45001:2018 cl. 6.1.2-6.1.3", "tekst": "Hazard identification en OH&S risk assessment: systematische identificatie van gevaren en beoordeling van OH&S-risico's." }, { "verwijzing": "ISO 14001:2015 cl. 4-10", "tekst": "Milieumanagementsysteem: context, leiderschap, planning (aspecten & impacten), steun, uitvoering, evaluatie, verbetering." }, { "verwijzing": "ISO 9001:2015 cl. 4-10", "tekst": "Kwaliteitsmanagementsysteem: klantgerichtheid, leiderschap, planning, ondersteuning, uitvoering, evaluatie, verbetering." }, { "verwijzing": "ISO 19011:2018", "tekst": "Richtlijnen voor auditing van managementsystemen: auditplanning, uitvoering, rapportage en opvolging." }, ], "normen": ["ISO 45001:2018", "ISO 14001:2015", "ISO 9001:2015", "ISO 19011:2018", "ISO 31000:2018"], "concepten": [ "PDCA-cyclus (Plan-Do-Check-Act)", "Risicogestuurd denken", "Documentbeheer en kennisbeheer", "Interne audit en management review", "Continu verbetering (KVP)", "Integraal KAM-beleid (IKB)", ], }, "training": { "naam": "Training & Opleiding", "wetten": [ { "verwijzing": "Arbowet art. 8", "tekst": "Werkgever stelt voorschriften vast en zorgt dat deze ter kennis van werknemers worden gebracht. Inclusief instructie- en opleidingsverplichtingen." }, { "verwijzing": "Arbowet art. 9", "tekst": "Werkgever zorgt voor adequate opleiding en voorlichting. Afgestemd op de aard van de werkzaamheden en de daaraan verbonden risico's." }, { "verwijzing": "Arbobesluit art. 3.24", "tekst": "Opleiding en voorlichting over risico's: werknemers moeten voldoende kennis hebben om de risico's te herkennen en adequate maatregelen te treffen." }, ], "vca_eisen": [ "VCA* (basis): verplicht voor medewerkers in risicovolle omgevingen. Minimum 8 uur theorie + examen.", "VCA VOL (operationeel leidinggevende): verplicht voor leidinggevenden. Minimaal 12 uur + examen.", "VCA VIL (veiligheid voor intercedenten en leidinggevenden): 8 uur + examen.", "VCA-gerechtigdheid toetsbaar via SSVV-examen (ENI/IBB/CBS).", ], "opleiding_per_functie": [ "Operator procesindustrie: VCA*, BHV, specifieke procesopleiding, veilig werken met gevaarlijke stoffen", "HSE-coördinator: VCA VOL, IVK/MVK, veiligheidskunde NEN-EN-ISO 45001", "Leidinggevende: VCA VOL, BHV, leiderschapstraining veiligheid", "Arbodeskundige: gecertificeerde opleiding (registrar, bedrijfsarts, veiligheidskundige)", "BHV'er: EHBO, brandbestrijding, ontruiming — minimaal 1 per 50 werknemers", ], "normen": ["NEN-EN-ISO 45001 cl. 7.2 (Competentie)", "NEN 3140 (bedrijfsvoering elektrotechnische installaties)"], }, } def get_overlay(category, topic=None): """Retourneer de wetgeving overlay tekst voor een categorie, optie gericht op een topic.""" overlay = WETGEVING_OVERLAY.get(category) if not overlay: return "" parts = [f"## Wettelijk Kader — {overlay['naam']}\n"] # Wetten parts.append("### Wet- en regelgeving") for w in overlay["wetten"]: parts.append(f"- **{w['verwijzing']}**: {w['tekst']}") parts.append("") # AI-bladen (indien aanwezig) if "ai_bladen" in overlay: parts.append("### Relevante AI-bladen (Arbeidsinspectie)") for ai in overlay["ai_bladen"]: parts.append(f"- {ai}") parts.append("") # PGS-richtlijnen (indien aanwezig) if "pgs_richtlijnen" in overlay: parts.append("### PGS-richtlijnen (Publicatiereeks Gevaarlijke Stoffen)") for pgs in overlay["pgs_richtlijnen"]: parts.append(f"- {pgs}") parts.append("") # ARIE-lijst (indien aanwezig) if "arie_lijst" in overlay: parts.append("### ARIE-categorisering") for arie in overlay["arie_lijst"]: parts.append(f"- {arie}") parts.append("") # Normen if "normen" in overlay: parts.append("### Normen en standaarden") for n in overlay["normen"]: parts.append(f"- {n}") parts.append("") # Concepten (KAM) if "concepten" in overlay: parts.append("### Kernconcepten") for c in overlay["concepten"]: parts.append(f"- {c}") parts.append("") # VCA eisen (training) if "vca_eisen" in overlay: parts.append("### VCA-eisen") for v in overlay["vca_eisen"]: parts.append(f"- {v}") parts.append("") # Opleiding per functie (training) if "opleiding_per_functie" in overlay: parts.append("### Opleidingseisen per functie") for o in overlay["opleiding_per_functie"]: parts.append(f"- {o}") parts.append("") return "\n".join(parts) def filter_overlay_by_topic(category, topic): """Filter de overlay op relevantie voor een specifiek topic. Retourneer de volledige overlay als topic niet filterbaar is.""" if not topic: return get_overlay(category) overlay = WETGEVING_OVERLAY.get(category) if not overlay: return "" topic_lower = topic.lower() parts = [f"## Wettelijk Kader — {overlay['naam']}\n"] # Always show all wetten — they're the legal foundation parts.append("### Wet- en regelgeving") for w in overlay["wetten"]: parts.append(f"- **{w['verwijzing']}**: {w['tekst']}") parts.append("") # AI-bladen: show all (they are reference list, not overwhelming) if "ai_bladen" in overlay: parts.append("### Relevante AI-bladen (Arbeidsinspectie)") for ai in overlay["ai_bladen"]: parts.append(f"- {ai}") parts.append("") # PGS: show all if "pgs_richtlijnen" in overlay: parts.append("### PGS-richtlijnen (Publicatiereeks Gevaarlijke Stoffen)") for pgs in overlay["pgs_richtlijnen"]: parts.append(f"- {pgs}") parts.append("") # Normen altijd tonen if "normen" in overlay: parts.append("### Normen") for n in overlay["normen"]: parts.append(f"- {n}") return "\n".join(parts)