{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"Absence Rate Report — Taux d'absentéisme (BE)","description":"Belgian absence rate report per Statbel methodology and Loi 4.8.1996 (well-being at work). Formula: absence_rate = (days_absent / theoretical_days) * 100.","type":"object","additionalProperties":false,"required":["letter","entity","period","overall"],"properties":{"letter":{"type":"object","additionalProperties":false,"required":["place","date","language"],"properties":{"place":{"type":"string"},"date":{"type":"string","format":"date"},"language":{"type":"string","enum":["fr","nl","de","en"]},"reference":{"type":"string"}}},"entity":{"type":"object","additionalProperties":false,"required":["name","bce_number"],"properties":{"name":{"type":"string"},"bce_number":{"type":"string","pattern":"^[0-9]{4}\\.[0-9]{3}\\.[0-9]{3}$"},"vat_number":{"type":"string","pattern":"^BE0[0-9]{9}$"},"legal_form":{"type":"string"},"address":{"type":"string"},"joint_committee":{"type":"string","description":"Commission paritaire / Paritair comité code, e.g. CP 200."},"hr_contact":{"type":"string"}}},"period":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"},"label":{"type":"string","description":"Human-readable period label, e.g. 'Q1 2026' or 'January 2026'."}}},"overall":{"type":"object","additionalProperties":false,"required":["theoretical_days","absent_days","rate_pct"],"description":"Aggregate absence statistics for the reporting period.","properties":{"headcount":{"type":"integer","minimum":0,"description":"Average headcount (ETP) during the period."},"theoretical_days":{"type":"number","minimum":0,"description":"Total theoretical working days (jours théoriques)."},"absent_days":{"type":"number","minimum":0,"description":"Total days of absence (tous motifs)."},"rate_pct":{"type":"number","minimum":0,"maximum":100,"description":"Overall absence rate in %."},"benchmark_pct":{"type":"number","minimum":0,"maximum":100,"description":"Sectoral benchmark absence rate in %."},"benchmark_source":{"type":"string","description":"Source of benchmark (e.g. 'Securex 2025, CP 200')."}}},"by_type":{"type":"array","description":"Breakdown by absence type / code DIMONA.","items":{"type":"object","additionalProperties":false,"required":["type_code","label","days","rate_pct"],"properties":{"type_code":{"type":"string","description":"DIMONA code: IT, AT, MP, MA, PA, PL, IJ, AUT."},"label":{"type":"string"},"days":{"type":"number","minimum":0},"rate_pct":{"type":"number","minimum":0,"maximum":100},"legal_basis":{"type":"string","description":"Legal basis, e.g. 'Loi 10.4.1971 (AT)'"}}}},"by_department":{"type":"array","description":"Breakdown by department (minimum 5 workers per cell per GDPR k-anonymity).","items":{"type":"object","additionalProperties":false,"required":["department","headcount","theoretical_days","absent_days","rate_pct"],"properties":{"department":{"type":"string"},"headcount":{"type":"integer","minimum":5,"description":"Minimum 5 for GDPR k-anonymity."},"theoretical_days":{"type":"number","minimum":0},"absent_days":{"type":"number","minimum":0},"rate_pct":{"type":"number","minimum":0,"maximum":100}}}},"prevention_notes":{"type":"string","description":"Observations for the prevention counsellor (Loi 4.8.1996 Art. 9 + AR 27.3.1998). Max 2000 chars.","maxLength":2000}}}