#!/usr/bin/env python3
"""Genereer doc04_partB.docx — Procedure Opslagveiligheid H6-H12 + Bijlagen"""
from docx import Document
from docx.shared import Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn

doc = Document()

style = doc.styles['Normal']
style.font.name = 'Calibri'
style.font.size = Pt(11)
style.font.color.rgb = RGBColor(0x1F, 0x29, 0x37)
style.paragraph_format.space_after = Pt(6)
style.paragraph_format.line_spacing = 1.15

for lvl in range(1, 4):
    hs = doc.styles[f'Heading {lvl}']
    hs.font.name = 'Calibri'
    hs.font.color.rgb = RGBColor(0x00, 0x33, 0x66)
    hs.font.size = Pt([0, 18, 14, 12][lvl])

def hdr_cell(cell, text):
    cell.text = ''
    p = cell.paragraphs[0]
    r = p.add_run(text)
    r.bold = True; r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF)
    r.font.name = 'Calibri'; r.font.size = Pt(10)
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    tc = cell._element.get_or_add_tcPr()
    bg = tc.makeelement(qn('w:shd'), {qn('w:fill'):'003366', qn('w:val'):'clear'})
    tc.append(bg)

def data_cell(cell, text, alt=False):
    cell.text = ''
    p = cell.paragraphs[0]
    r = p.add_run(str(text))
    r.font.name = 'Calibri'; r.font.size = Pt(10)
    r.font.color.rgb = RGBColor(0x1F,0x29,0x37)
    if alt:
        tc = cell._element.get_or_add_tcPr()
        bg = tc.makeelement(qn('w:shd'), {qn('w:fill'):'F8F9FA', qn('w:val'):'clear'})
        tc.append(bg)

def add_table(headers, rows):
    t = doc.add_table(rows=1+len(rows), cols=len(headers))
    t.style = 'Table Grid'
    for i,h in enumerate(headers):
        hdr_cell(t.rows[0].cells[i], h)
    for ri,row in enumerate(rows):
        for ci,val in enumerate(row):
            data_cell(t.rows[ri+1].cells[ci], val, alt=(ri%2==1))
    doc.add_paragraph('')

def p(text):
    doc.add_paragraph(text)

def h1(text):
    doc.add_heading(text, level=1)

def h2(text):
    doc.add_heading(text, level=2)

def bullet(text):
    doc.add_paragraph(text, style='List Bullet')

def num(text):
    doc.add_paragraph(text, style='List Number')

# ===== H6 =====
h1('6. Acceptatie en Plaatsing')

h2('6.1 Levering Acceptatie')
p('Bij elke levering van gevaarlijke stoffen op de Phoenix Metals faciliteit te IJmuiden doorloopt de ontvangend medewerker een gestructureerd acceptatieprotocol. Dit protocol waarborgt dat uitsluitend juiste, onbeschadigde en correct gelabelde stoffen de opslaglocatie bereiken. De levering acceptatie omvat de volgende controlepunten:')
bullet('SDS-controle: Controleer of de Safety Data Sheet (VIB/MSDS) van de geleverde stof beschikbaar is in het SDS-register. Indien ontbreekt, levering weigeren en leverancier contacteren.')
bullet('Etiketcontrole: Verifieer of het etiket op de verpakking overeenkomt met de bestelling en voldoet aan CLP-Verordening (EG 1272/2008): stofnaam, CAS-nummer, gevarenklassen, H- en P-zinnen.')
bullet('Verpakkingsinspectie: Inspecteer op zichtbare beschadigingen, lekkage, deukvorming of corrosie. UN-goedgekeurde verpakking is vereist voor ADR-geklasseerde stoffen.')
bullet('Hoeveelheidsverificatie: Vergelijk geleverde hoeveelheid met inkooporder en chemisch register. Registreer afwijkingen direct.')
p('Wanneer één of meer controlepunten niet voldoen, wordt de levering geweigerd en vastgelegd in het afwijzingenlogboek. De Lab Manager wordt onmiddellijk geïnformeerd bij elke weigering.')

h2('6.2 Plaatsingsprocedure')
p('Na succesvolle acceptatie volgt de plaatsingsprocedure in vijf opeenvolgende stappen, ingericht voor de Phoenix Metals opslagconfiguratie (ADR-klasse 8 + niet-ADR) en conform PGS 15:2025 Bijlage E scheidingseisen.')
num('Controle: Verifieer de stofidentiteit (naam, CAS, concentratie) tegen het chemisch register.')
num('Zone selectie: Bepaal de juiste opslagzone op basis van de compatibiliteitsmatrix (Tabel 9, Bijlage E). NaOH 50% wordt gescheiden van H₂SO₄-producten; calciumoxide wordt gescheiden van alle zuren.')
num('Lekbakplaatsing: Plaats de verpakking in een lekbak die voldoet aan de 110%-regel. Voor Phoenix Metals: minimaal 27,5 l lekbakcapaciteit per 25 l jerrycan.')
num('Etikettering: Voorzie de lekbak/locatie van een duidelijk etiket met stofnaam, gevarensymbolen en ADR-klasse.')
num('Registratie: Update het chemisch register met plaatsingsdatum, hoeveelheid en exacte locatie (vak-/lekbaknummer).')

h2('6.3 Registratie')
p('Na plaatsing wordt het chemisch register (Phoenix Metals Chemical Register v2.1.0) geüpdatet met: stofnaam, CAS-nummer, ontvangstdatum, geplaatste hoeveelheid, verpakkingsvorm, locatieaanduiding (vak- en lekbaknummer) en naam van de uitvoerend medewerker. Het register is de basis voor inventarisatie, inspectie en audittrajecten. Wijzigingen worden binnen 24 uur verwerkt. Het register wordt minimaal maandelijks gecontroleerd op actualiteit.')

# ===== H7 =====
h1('7. Inventarisatie en Monitoring')

h2('7.1 Inventarisatiefrequentie')
p('De inventarisatie van alle opgeslagen gevaarlijke stoffen vindt maandelijks plaats, gepland op de eerste werkdag van elke maand. Deze frequentie is conform PGS 15:2025 M85-voorschriften en afgestemd op het beperkte volume van Phoenix Metals (~315 kg/l verdeeld over 6 stoffen). Bij aanlevering van nieuwe stoffen of significante hoeveelheidswijzigingen wordt een tussentijdse inventarisatie uitgevoerd.')

h2('7.2 Inventarisatieprotocol')
p('Het inventarisatieprotocol omvat de volgende stappen:')
num('Tel per stof het aantal verpakkingen en noteer het aanwezige volume.')
num('Vergelijk de getelde hoeveelheid met het chemisch register.')
num('Rapporteer afwijkingen (>5% verschil) direct aan de Lab Manager.')
num('Controleer visueel de staat van verpakkingen en lekbakken.')
num('Documenteer de resultaten in het inventarisatieformulier (Bijlage B).')
p('Afwijkingen worden als non-conformiteit geregistreerd en binnen 5 werkdagen opgelost. Structurele afwijkingen leiden tot herziening van het registratieprotocol.')

h2('7.3 Monitoring Temperatuur en Ventilatie')
p('Voor het huidige basisveiligheidsniveau (~300 l ADR 8, onbrandbare bijtende stoffen) zijn temperatuur- en ventilatiemonitoringssystemen niet expliciet vereist. De opgeslagen stoffen zijn stabiel bij omgevingstemperatuur. Indien Phoenix Metals opschaalt naar >10.000 kg (Veiligheidsniveau B of A), wordt continue monitoring verplicht per PGS 15 M30. De huidige natuurlijke ventilatie is voldoende om gasophoping te voorkomen.')

# ===== H8 =====
h1('8. Inspectie en Onderhoud')

h2('8.1 Dagelijkse Visuele Controle')
p('De dagelijkse visuele controle wordt uitgevoerd door de eerst-aanwezige medewerker bij de opslaglocatie. Deze controle omvat: lekbakken (zichtbare vloeistof of residu), etiketten (leesbaarheid en aanwezigheid), verpakkingsintegriteit (geen zwelling, deuk, corrosie of lekkage) en algemene huisvesting (vloer schoon, geen obstakels). Bevindingen worden mondeling doorgegeven aan de Lab Manager. Bij lekkage of schade wordt direct het noodprotocol geactiveerd (zie H10).')

h2('8.2 Wekelijkse Inspectie')
p('De wekelijkse inspectie wordt uitgevoerd door de Lab Manager of een aangewezen HSEQ-medewerker en is gedocumenteerd. De inspectie omvat: lekbakintegriteit (geen scheuren, vervorming of corrosie), afstanden tussen incompatibele stoffen (minimaal 2 m tussen NaOH-vak en H₂SO₄-vak conform Phoenix Metals scheidingseis), huisvesting (verlichting functioneel, toegangspaden vrij, bodem intact) en de aanwezigheid van veiligheidsinformatie (SDS-map, instructiekaart bij rack). Resultaten worden vastgelegd in het wekelijks inspectierapport.')

h2('8.3 Maandelijkse Controle')
p('De maandelijkse controle valt samen met de inventarisatiecyclus en omvat aanvullend: actualiteit van het chemisch register (overeenstemming met fysieke voorraad), beschikbaarheid en actualiteit van alle SDS-documenten (maximaal 2 jaar oud of recente leveranciersversie), trainingstatus van alle medewerkers met toegang tot de opslag (zie H11), en de status van openstaande actiepunten uit eerdere inspecties. De controle wordt gedocumenteerd en ondertekend door de Lab Manager.')

h2('8.4 Jaarlijkse Audit')
p('De jaarlijkse audit is een volledige PGS 15:2025 compliance check, uitgevoerd door de HSEQ Specialist of een externe auditor. De audit omvat: volledige naleving van alle maatregelen uit PGS 15:2025 die van toepassing zijn op het basisveiligheidsniveau, evaluatie van de stoffenscheiding conform Tabel 9 en Bijlage E, controle van vloeistofopvangcapaciteit, beoordeling van het noodplan en de effectiviteit van training, en een review van alle geregistreerde incidenten en non-conformiteiten van het afgelopen jaar. Het auditrapport wordt gepresenteerd aan de Directie en vormt de basis voor het verbeterplan.')

h2('8.5 Onderhoud Lekbakken')
p('Lekbakken worden na elk gebruik gereinigd met een geschikt reinigingsmiddel. Bij zichtbare beschadiging (scheuren, vervorming, corrosie) wordt de lekbak direct vervangen. De vervangingsfrequentie is minimaal eens per 3 jaar, tenzij eerdere vervanging noodzakelijk is. Alle lekbakken zijn gemaakt van chemisch bestendig materiaal (HDPE of vergelijkbaar) geschikt voor ADR-klasse 8 stoffen.')

h2('8.6 Inspectionschema')
add_table(
    ['Frequentie', 'Inspectie-item', 'Verantwoordelijke'],
    [
        ['Dagelijks', 'Visuele controle: lekbakken, etiketten, verpakking, lekkage', 'Eerst-aanwezige medewerker'],
        ['Wekelijks', 'Lekbak integriteit, afstanden scheiding, huisvesting, SDS', 'Lab Manager / HSEQ'],
        ['Maandelijks', 'Register actualiteit, SDS geldigheid, training status', 'Lab Manager'],
        ['Jaarlijks', 'Volledige PGS 15:2025 compliance audit', 'HSEQ Specialist / Externe auditor'],
        ['Incidenteel', 'Lekbak reiniging/vervanging na lekkage of beschadiging', 'Lab Manager'],
    ]
)

# ===== H9 =====
h1('9. Hantering en Transport')

h2('9.1 Hanteringsregels')
p('De volgende hanteringsregels zijn van toepassing op alle medewerkers die gevaarlijke stoffen hanteren binnen de Phoenix Metals faciliteit:')
bullet('Tilhoogte: Verpakkingen worden niet boven borsthoogte getild. Maximum tilhoogte in het rack is 1,50 m ter voorkoming van valschade en rugbelasting.')
bullet('PBM: Bij hantering van ADR-klasse 8 stoffen zijn verplicht: veiligheidsbril, zuurbestendige handschoenen (nitrile, min. 0,5 mm), labjas en gesloten veiligheidsschoenen.')
bullet('Geen mengen: Mengen van stoffen buiten het proces om is strikt verboden. Gebruik per stof aparte overschenk- en doseermiddelen.')
bullet('Eén verpakking tegelijk: Transporteer niet meer dan één jerrycan (25 l) of canister tegelijk per medewerker.')

h2('9.2 Transport binnen Faciliteit')
p('Intern transport vindt plaats via een goedgekeurde handkar of transportwagen. Verpakkingen worden tijdens transport in een secundair containment (lekbak op kar) geplaatst. Transportroutes zijn vastgelegd en vermijden kruising met personeelslooproutes. Het transport van NaOH 50% en H₂SO₄-producten vindt nooit gelijktijdig plaats op dezelfde kar.')

h2('9.3 Laden en Lossen')
p('Bij laden en lossen geldt een vaste volgorde: eerst niet-ADR goederen (aluminiumsulfaat, calciumoxide), daarna ADR-klasse 8 stoffen, waarbij zuren en basen strikt gescheiden worden geladen. PBM-vereisten zijn identiek aan de hanteringsregels (zie 9.1). De laad-/loslocatie is gescheiden van de opslaglocatie en voorzien van een lekbak en nooddouche.')

h2('9.4 Spillprocedure')
p('Bij een lekkage of spill wordt de volgende procedure gevolgd:')
num('Isoleer: Markeer de zone, verwijder onbeschermde personen (minimaal 3 m afstand).')
num('PBM: Don onmiddellijk de verplichte PBM (veiligheidsbril, zuurbestendige handschoenen, labjas, veiligheidsschoenen).')
num('Absorbeer: Bij kleine spill (<1 l): gebruik chemisch bestendig absorbentiemateriaal (vermiculiet of universele absorptiekorrels). Opvegen en afvoeren als gevaarlijk afval.')
num('Rapporteer: Meld aan Lab Manager. Documenteer in incidentenlogboek: stof, hoeveelheid, oorzaak, genomen maatregelen.')
p('Bij grote spill (>1 l of meerdere verpakkingen): activeer het noodprotocol (zie H10), evacueer de ruimte en schakel hulpdiensten in (112).')

# ===== H10 =====
h1('10. Noodprocedures')

h2('10.1 Lekkagescenario\'s')
p('Phoenix Metals onderscheidt twee lekkagescenario\'s op basis van omvang en risiconiveau:')
p('Kleine lekkage (<1 l): Isoleer de zone, don PBM, absorbeer met chemisch bestendig absorbentiemateriaal, reinig de lekbak, controleer aangrenzende verpakkingen op contaminatie, rapporteer aan Lab Manager. Geabsorbeerd materiaal wordt afgevoerd als gevaarlijk afval.')
p('Grote lekkage (>1 l of meerdere verpakkingen): Activeer onmiddellijk evacuatie van de opslagruimte en aangrenzende ruimtes. Bel 112 en verstrek informatie over de betrokken stoffen (NaOH 50%, H₂SO₄). Sluit de deur en voorkom toegang voor onbevoegd personeel. Wacht op hulpdiensten en verstrek SDS-documenten bij aankomst.')

h2('10.2 Brand in Opslag')
p('Bij brand in of nabij de opslaglocatie geldt: Onmiddellijk evacueren via nooduitgangen, bijeenkomen op verzamelpunt. Bel 112 en geef door: locatie (Phoenix Metals, IJmuiden), betrokken stoffen (ADR-klasse 8, bijtend), geschatte hoeveelheid. Blus alleen met geschikt blusmiddel (CO₂ of poeder) en uitsluitend indien veilig en zonder risico. Prioriteit: evacuatie en alarmering boven blussen. Na brand wordt de locatie pas betreden na vrijgave door de brandweer.')

h2('10.3 Meng-incident NaOH + H₂SO₄')
p('Een meng-incident van NaOH 50% en H₂SO₄ is het meest kritieke scenario voor Phoenix Metals. De exotherme neutralisatiereactie kan leiden tot: hitte-ontwikkeling, spatten van bijtende vloeistof, en vrijkomen van waterdamp en giftige dampen bij hoge temperaturen.')
p('Procedure bij (vermoedelijk) meng-incident:')
num('Onmiddellijk evacueren — minimaal 10 m afstand.')
num('Bel 112 en geef door: "Meng-incident NaOH en H₂SO₄, exotherme reactie, spaatgevaar."')
num('Niet proberen op te ruimen of te neutraliseren — voorbehouden aan hulpdiensten.')
num('Verstrek SDS van beide stoffen aan hulpdiensten bij aankomst.')
p('Dit scenario is de primaire reden voor de strikte scheidingseis (A-niveau) tussen NaOH en H₂SO₄ conform PGS 15 Tabel 9.')

h2('10.4 Noodcontacten')
add_table(
    ['Functie', 'Naam/Instantie', 'Telefoonnummer', 'Beschikbaarheid'],
    [
        ['Lab Manager', '[Invullen]', '[Intern]', 'Kantooruren'],
        ['HSEQ Specialist', '[Invullen]', '[Intern]', 'Kantooruren'],
        ['Bedrijfsarts', '[Invullen]', '[Telefoon]', 'Kantooruren'],
        ['Brandweer (algemeen)', 'Regionale brandweer', '112', '24/7'],
        ['Gifwaakhulp NVIC', 'UMC Utrecht', '030-274 8888', '24/7'],
        ['Milieudienst (lekkage)', 'Rijkswaterstaat', '0800-244 6644', '24/7'],
        ['Vergunninghouder', '[Invullen]', '[Telefoon]', 'Op afroep'],
    ]
)

h2('10.5 Eerste Hulp')
p('Bij blootstelling aan zuren of basen (NaOH 50%, H₂SO₄) gelden de volgende eerste-hulpmaatregelen:')
bullet('Huidcontact: Onmiddellijk spoelen met overvloedig water gedurende minimaal 15 minuten. Verontreinigde kleding uittrekken (voorzichtig, geen verder contact). Na spoelen direct arts raadplegen.')
bullet('Oogcontact: Onmiddellijk spoelen met water gedurende minimaal 15 minuten (nooddouche of oogspoelfles). Altijd arts raadplegen, ook bij geringe blootstelling.')
bullet('Inademing: Slachtoffer naar frisse lucht brengen. Bij aanhoudende klachten arts raadplegen. Bij bewusteloosheid: stabiele zijligging, 112 bellen.')
bullet('Inslikken: Mond spoelen met water. Niet laten braken. Direct arts raadplegen. SDS van betrokken stof meenemen naar arts.')
p('De nooddouche en oogspoelfles zijn geplaatst bij de ingang van de opslagruimte en maandelijkse gecontroleerd op functionaliteit.')

# ===== H11 =====
h1('11. Training')

h2('11.1 Initiële Training')
p('Alle nieuwe medewerkers die toegang krijgen tot de opslaglocatie ontvangen een initiële training voordat zij zelfstandig gaan werken. De training omvat: overzicht van opgeslagen stoffen en hun gevaren (ADR-klasse 8, bijtende eigenschappen), uitleg van het PGS 15:2025 compliance kader, hanteringsregels en PBM-voorschriften, plaatsings- en registratieprocedure, inspectie- en onderhoudsprocedures, noodprocedures inclusief praktijkoefening lekkage, en eerste-hulpmaatregelen bij blootstelling. De initiële training duurt minimaal 4 uur, inclusief een praktisch deel (oefening lekbakplaatsing en spillresponse). Na afronding tekent de medewerker een aanwezigheidsverklaring.')

h2('11.2 Herhalingstraining')
p('Herhalingstraining vindt plaats: jaarlijks voor alle medewerkers met toegang tot de opslag, na elk incident (lekkage, spill, bijna-ongeluk), bij wijziging van het stoffenpakket of opslagconfiguratie, en bij wijziging van relevante wetgeving (PGS 15, Arbowet). De herhalingstraining duurt minimaal 2 uur en focust op actualiteiten, incidentenanalyse en verfrissing van noodprocedures.')

h2('11.3 Trainingmatrix')
add_table(
    ['Onderwerp', 'Nieuwe medewerker', 'Lab medewerker', 'Lab Manager', 'HSEQ'],
    [
        ['Stofkennis & gevaren', '✅ Initieel', '✅ Jaarlijks', '✅ Jaarlijks', '✅ Jaarlijks'],
        ['PGS 15 compliance kader', '✅ Initieel', '✅ Jaarlijks', '✅ Jaarlijks', '✅ Jaarlijks'],
        ['Hantering & PBM', '✅ Initieel + praktijk', '✅ Jaarlijks', '✅ Jaarlijks', '✅ Jaarlijks'],
        ['Plaatsing & registratie', '✅ Initieel', '✅ Jaarlijks', '✅ Jaarlijks', '—'],
        ['Inspectie & onderhoud', '—', '✅ Jaarlijks', '✅ Jaarlijks', '✅ Jaarlijks'],
        ['Noodprocedures', '✅ Initieel + praktijk', '✅ Jaarlijks', '✅ Jaarlijks', '✅ Jaarlijks'],
        ['Eerste hulp (zuur/base)', '✅ Initieel', '✅ Jaarlijks', '✅ Jaarlijks', '✅ Jaarlijks'],
        ['Jaarlijkse audit begeleiding', '—', '—', '✅ Jaarlijks', '✅ Jaarlijks'],
    ]
)

# ===== H12 =====
h1('12. Documentatie')

h2('12.1 Verplichte Documenten')
add_table(
    ['Document', 'Verantwoordelijke', 'Locatie', 'Update frequentie'],
    [
        ['Safety Data Sheets (SDS/VIB)', 'Lab Manager', 'SDS-map bij opslag + digitaal', 'Bij nieuwe versie leverancier'],
        ['Chemisch Register', 'Lab Manager', 'Digitaal + print bij opslag', 'Bij elke mutatie'],
        ['Inspectierapporten (week/maand)', 'Lab Manager', 'Digitaal archief', 'Wekelijks/maandelijks'],
        ['Auditrapport (jaarlijks)', 'HSEQ Specialist', 'Digitaal archief + Directie', 'Jaarlijks'],
        ['Training records', 'Lab Manager', 'Digitaal personeelsdossier', 'Per trainingssessie'],
        ['Incidentenlogboek', 'Lab Manager', 'Digitaal + fysiek bij opslag', 'Per incident'],
        ['Noodplan', 'HSEQ Specialist', 'Bij opslag ingang + digitaal', 'Jaarlijks of na wijziging'],
    ]
)

h2('12.2 Bewaartermijnen')
p('Alle documenten met betrekking tot opslagveiligheid worden minimaal 5 jaar bewaard conform de Arbowet (Arbobesluit art. 4.1c) en de omgevingswetgeving. Dit omvat: inspectierapporten, auditrapporten, training records, incidentenrapporten en veiligheidsinformatie. Documenten worden digitaal gearchiveerd met een duidelijke indeling per kalenderjaar. Papierdocumenten (bijv. ingevulde inspectieformulieren) worden digitaal gescand en daarna vernietigd.')

h2('12.3 Toegankelijkheid')
p('Alle relevante veiligheidsinformatie is direct toegankelijk bij de ingang van de opslaglocatie: de SDS-map bevat documenten voor alle opgeslagen stoffen, het nooddplan hangt bij de nooduitgang, en een informatietegel geeft de belangrijkste contactpersonen en alarmnummers. Digital zijn alle documenten beschikbaar via het intranet, georganiseerd per onderwerp: SDS-documenten, training records, inspectierapporten en incidentenlogboeken. Toegang tot digitale documenten is gereguleerd via gebruikersrechten, waarbij alleen geautoriseerde medewerkers toegang hebben tot gevoelige informatie zoals incidentenrapporten.')

# ===== BIJLAGEN =====
h1('Bijlagen')

h2('Bijlage A: Stroomschema Acceptatie')
p('Het acceptatieproces van gevaarlijke stoffen bij Phoenix Metals volgt een strikt gestructureerd stroomschema:')
p('1. Binnenkomst levering → Controle transportdocumenten (AWB, gevaarlijke stoffen informatie)')
p('2. Controle SDS beschikbaarheid → Indien ontbrekend: weiger levering')
p('3. Etiketverificatie (naam, CAS, concentratie, gevarensymbolen) → Indien niet correct: weiger levering')
p('4. Visuele inspectie verpakking → Indien beschadigd: weiger levering')
p('5. Hoeveelheidsverificatie → Documenteer afwijkingen >5%')
p('6. Stofidentificatie controregister → Confirmeer stofbestaan')
p('7. Zonekeuze op basis Tabel 9 → Scheiding NaOH/H₂SO₄')
p('8. Plaatsing in lekbak (110%-regel) → Minimaliseren risico')
p('9. Etikettering locatie → Kenbaar maken opslagpositie')
p('10. Registerupdate → Documenteer met datum/locatie')

h2('Bijlage B: Inspectieformulier Template')
add_table(
    ['Item', 'Controlepunt', 'Voldoet', 'Opmerking', 'Datum', 'Controleur'],
    [
        ['SDS', 'Beschikbaar en aktueel', '☐', '', '', ''],
        ['Etiket', 'Volledig en leesbaar', '☐', '', '', ''],
        ['Lekbak', 'Integriteit en capaciteit', '☐', '', '', ''],
        ['Afstanden', 'Scheiding NaOH/H₂SO₄ ≥ 2m', '☐', '', '', ''],
        ['Opslag', 'Type afgesloten opslag', '☐', '', '', ''],
        ['Toegang', 'Vrij van obstakels', '☐', '', '', ''],
        ['Vloer', 'Reinig en vrij van vloeistof', '☐', '', '', ''],
        ['Drempel', 'Functioneel en schoon', '☐', '', '', ''],
    ]
)

h2('Bijlage C: Noodcontacten Kaart')
p('De noodcontactenkaart bevat essentieel contactinformatie bij calamiteiten:')
p('Interne contacten:')
p('- Lab Manager: [Naam] - Intern [Nummer] - Kantooruren')
p('- HSEQ Specialist: [Naam] - Intern [Nummer] - Kantooruren')
p('- Bedrijfsarts: [Naam] - [Telefoon] - Bereikbaar 24/7 voor medische noodgevallen')
p('Externe contacten:')
p('- Brandweer: 112 - Meld altijd exacte locatie en betrokken stoffen')
p('- Gifcentrum NVIC: 030-274 8888 - Beschikbaar 24/7 voor technische advies')
p('- Milieuhulp: 0800-244 6644 - Voor omgevingsincidenten met chemische stoffen')
p('- Vergunningshouder: [Naam] - [Telefoon] - Voor specifieke vergunningsvraagstukken')

h2('Bijlage D: Referenties')
p('Referenties gebruikt bij de opstelling van deze procedure:')
p('[1] PGS 15:2025 Veiligheidsleef milieu (Vlarem) - Veilige opslag van verpakte gevaarlijke stoffen')
p('[2] Bijlage E van PGS 15 - Compatibiliteitsmatrix voor stoffenopslag (Tabel 9)')
p('[3] ADR 2025 - Europese overeenkomst betreffende het internationale vervoer van gevaarlijke goederen')
p('[4] Arbowet (Arbobesluit Art. 4.1c) - Verplichtingen terzake veiligheid en gezondheid')
p('[5] CLP Verordening (EG) 1272/2008 - Classificatie, etikettering en verpakking van stoffen')
p('[6] Phoenix Metals Chemical Register v2.1.0 - Huidige stoffeninventaris')
p('[7] REACH Verordening (EG) 1907/2006 - Registratie, evaluatie, toelating en beperking van chemische stoffen')
p('[8] Brl/NTA 8620 - Veiligheidsbeheerssysteem voor bedrijven met grootschalige risico\'s')

# Sla het document op
output_path = '/root/projects/jg/2026-pgs15-phoenix-metals/working/map/doc04_partB.docx'
doc.save(output_path)

# Controleer of het bestand is gemaakt
import os
file_size = os.path.getsize(output_path)

print(f"Document succesvol gegenereerd:")
print(f"Pad: {output_path}")
print(f"Grootte: {file_size} bytes ({file_size/1024:.1f} KB)")

# Tel het aantal woorden (benadering)
doc_text = str(doc._element.xpath('//w:t/text()'))
word_count = len(doc_text.split())
print(f"Geschat woordenaantal: {word_count}")
print(f"Status: Volledige procedure H6-H12 + bijlagen gegenereerd volgens Golden Standard")