Over Uitwisselprofiel Ministerie van VWS Beleidsontwikkeling over Macro-Economische Vraagstukken en Arbeidsmarkt
- Publicatiedatum:
- 22-01-2026
- Inwerkingtreding:
- 01-03-2026
2.32. Wat is het kortdurend ziekteverzuimpercentage (excl. zwangerschapsverlof)?
Concepten
- Arbeidsovereenkomst
- Contractomvang
- Contractomvangwaarde
- Verzuimtijd
- Vestiging
- Vestigingsnummer
- Werkovereenkomst afspraak
- Ziekteperiode
- Zorgkantoor regio
Relaties
- deel van
- gaat over
- gedefinieerd door
- geïdentificeerd door
- heeft deel
- heeft eigenschap of kenmerk
- heeft eigenschapswaarde
- heeft lokaliseerbaar gebied
- heeft meeteenheid
- heeft opdrachtnemer
- vestiging van
Eigenschappen
Instanties
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: MEVA 2.32 2# Parameters: ?jaar 3# Ontologie: versie 3.0 of nieuwer 4 5PREFIX onz-g: <http://purl.org/ozo/onz-g#> 6PREFIX onz-org: <http://purl.org/ozo/onz-org#> 7PREFIX time: <http://www.w3.org/2006/time#> 8PREFIX onz-pers:<http://purl.org/ozo/onz-pers#> 9PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 10 11SELECT ?Periode 12 (?vestiging AS ?Indeling) 13 (?zk_regio_code AS ?Zorgkantoorregio_code) 14 (IF(SUM(?noemer_som) = 0, "Ongedefinieerd", 15 ROUND( (100.0 * SUM(?ziekte_som) / SUM(?noemer_som)) * 100 ) / 100 16 ) AS ?Procent_ziekteverzuim) 17WHERE 18{ 19 { 20 SELECT ?Periode 21 ?overeenkomst_afspraak 22 ?persoon 23 (SUM(?ziekte_verzuim) AS ?ziekte_som) 24 (SUM(?noemer_afspraak) AS ?noemer_som) 25 WHERE 26 { 27 # TELLER: selecteer het ?ziekte_verzuim van de medewerkers per persoon per werkovereenkomstafspraak 28 { 29 SELECT ?Periode 30 ?overeenkomst_afspraak 31 ?persoon 32 ?ziekte_verzuim 33 ("0.0"^^xsd:decimal AS ?noemer_afspraak) 34 WHERE { 35 36 #BIND(2024 AS ?jaar) 37 VALUES ?kw { 1 2 3 4 0 } 38 39 # Periode-bepaling 40 BIND( xsd:date(CONCAT(STR(?jaar), "-", 41 IF(?kw=1,"01-01", IF(?kw=2,"04-01", IF(?kw=3,"07-01", IF(?kw=4,"10-01","01-01")))) 42 )) AS ?start_periode ) 43 BIND( xsd:date(CONCAT(STR(?jaar), "-", 44 IF(?kw=1,"03-31", IF(?kw=2,"06-30", IF(?kw=3,"09-30","12-31"))) 45 )) AS ?eind_periode) 46 BIND( IF(?kw = 0, "Totaal jaar", CONCAT("Q", STR(?kw))) AS ?Periode ) 47 48 # Selecteer alle arbeidsovereenkomsten die geldig zijn 49 ?overeenkomst a onz-pers:ArbeidsOvereenkomst ; onz-g:hasPart ?overeenkomst_afspraak . 50 ?overeenkomst onz-pers:heeftOpdrachtnemer ?persoon . 51 ?overeenkomst_afspraak a onz-pers:WerkOvereenkomstAfspraak ; onz-g:hasPart ?omvang ; onz-g:startDatum ?start_afspraak . 52 OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak } 53 FILTER (?start_afspraak <= ?eind_periode && (?eind_afspraak >= ?start_periode || !BOUND(?eind_afspraak))) 54 55 # Bepaal per overeenkomstafspraak de ptf en zorg/niet-zorg 56 ?omvang a onz-pers:ContractOmvang ; onz-g:isAbout ?omvang_waarde . 57 ?omvang_waarde a onz-pers:ContractOmvangWaarde ; onz-g:hasDataValue ?omvang_getal ; onz-g:hasUnitOfMeasure ?omvang_eenheid . 58 ?omvang_eenheid onz-g:hasDataValue ?eenheid_factor . 59 BIND(?omvang_getal/(36/?eenheid_factor) AS ?ptf) 60 61 # Clip de afspraak op het kwartaal 62 BIND(IF(?start_afspraak < ?start_periode, ?start_periode, ?start_afspraak) AS ?start_afspraak_corr) 63 BIND(IF(?eind_afspraak > ?eind_periode || !BOUND(?eind_afspraak), ?eind_periode, ?eind_afspraak) AS ?eind_afspraak_corr) 64 65 # Check per afspraak of er ziekteverzuim is en wanneer deze start en eindigt 66 OPTIONAL { 67 VALUES ?type_verzuim { onz-pers:ZiektePeriode # onz-pers:ZwangerschapsVerlof (indien meenemen) 68 } 69 ?ziekte a ?type_verzuim ; onz-g:definedBy ?overeenkomst ; onz-g:startDatum ?start_ziekte_periode . 70 ?start_ziekte_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_ziekte_periode_reken . 71 OPTIONAL { ?ziekte onz-g:eindDatum ?eind_ziekte_periode } 72 73 OPTIONAL { 74 ?ziekte onz-g:hasQuality ?verzuim_tijd . 75 ?verzuim_tijd a onz-pers:VerzuimTijdKwaliteit ; onz-g:hasQualityValue ?verzuim_waarde . 76 ?verzuim_waarde onz-g:hasUnitOfMeasure onz-g:percent ; onz-g:startDatum ?start_verzuim_waarde_temp . 77 OPTIONAL { ?verzuim_waarde onz-g:hasDataValue ?verzuim_percentage } 78 OPTIONAL { ?verzuim_waarde onz-g:eindDatum ?eind_verzuim_waarde_temp } 79 } 80 } 81 82 # Zorg ervoor dat ziekteperiodes overlappen met de looptijd van de afspraak en het kwartaal 83 FILTER((?start_ziekte_periode <= ?eind_afspraak_corr && (?eind_ziekte_periode >= ?start_afspraak_corr || !BOUND(?eind_ziekte_periode)))) 84 FILTER ((?start_ziekte_periode <= ?eind_periode && (?eind_ziekte_periode >= ?start_periode || !BOUND(?eind_ziekte_periode)))) 85 86 # Zorg ervoor dat verzuimperiodes overlappen met de looptijd van de afspraak en het kwartaal 87 FILTER ((?start_verzuim_waarde_temp <= ?eind_periode && (?eind_verzuim_waarde_temp >= ?start_periode || !BOUND(?eind_verzuim_waarde_temp)))) 88 FILTER ((?start_verzuim_waarde_temp <= ?eind_afspraak_corr && (!BOUND(?eind_verzuim_waarde_temp) || ?eind_verzuim_waarde_temp >= ?start_afspraak_corr)) ) 89 90 # Bepaal de einddatum van de ziekteperiode (als langer doorloopt óf geen einddatum: klip op het einde van het kwartaal) 91 BIND(IF(!BOUND(?ziekte), ?unbound, IF(!BOUND(?eind_ziekte_periode) || ?eind_ziekte_periode > ?eind_periode, ?eind_periode, ?eind_ziekte_periode)) AS ?eind_ziekte_periode_clip) 92 OPTIONAL { FILTER(BOUND(?eind_ziekte_periode_clip)) ?eind_ziekte_periode_clip ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_ziekte_periode_reken } 93 94 # Filter op kortdurende ziekte (<= 28 dagen) 95 BIND(IF( !BOUND(?eind_ziekte_periode_reken) || !BOUND(?start_ziekte_periode_reken), ?unbound, ?eind_ziekte_periode_reken - ?start_ziekte_periode_reken + 1) AS ?dagen_ziekte_periode) 96 FILTER(?dagen_ziekte_periode <= 28) 97 98 # Zorg dat de start- en eind verzuimdatum binnen de meetperiode vallen 99 BIND(IF(?start_verzuim_waarde_temp < ?start_afspraak_corr, ?start_afspraak_corr, ?start_verzuim_waarde_temp) AS ?start_verzuim_waarde_final) 100 BIND(IF(!BOUND(?eind_verzuim_waarde_temp), ?eind_afspraak_corr, IF(?eind_verzuim_waarde_temp > ?eind_afspraak_corr, ?eind_afspraak_corr, ?eind_verzuim_waarde_temp)) AS 101 ?eind_verzuim_waarde_final) 102 103 # Bereken per verzuimperiode het aantal zieke dagen 104 OPTIONAL { 105 FILTER(BOUND(?start_verzuim_waarde_final) && BOUND(?eind_verzuim_waarde_final)) 106 ?start_verzuim_waarde_final ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_verzuim_waarde_final_reken . 107 ?eind_verzuim_waarde_final ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_verzuim_waarde_final_reken . 108 BIND(?eind_verzuim_waarde_final_reken - ?start_verzuim_waarde_final_reken + 1 AS ?dagen_verzuim_periode) 109 } 110 111 # Bereken het ziekteverzuim per dag (PTF * ZIEKTEPERCENTAGE * DAGEN VERZUIM PERIODE) 112 BIND(IF(BOUND(?verzuim_percentage), xsd:decimal(?verzuim_percentage), 100.0) AS ?pct) 113 BIND(IF(BOUND(?dagen_verzuim_periode), ?ptf * (?pct / 100.0) * ?dagen_verzuim_periode, ?unbound) AS ?ziekte_verzuim) 114 } 115 } 116 UNION 117 # Noemer: selecteer ptf * dagen afspraak van de medewerkers per persoon per afspraak, ongeacht verzuim 118 { 119 SELECT ?Periode 120 ?overeenkomst_afspraak 121 ?persoon 122 ("0.0"^^xsd:decimal AS ?ziekte_verzuim) 123 ?noemer_afspraak 124 WHERE 125 { 126 #BIND(2024 AS ?jaar) 127 VALUES ?kw { 1 2 3 4 0 } # kwartalen + 0 = totaal jaar 128 129 # Periode-bepaling 130 BIND( xsd:date(CONCAT(STR(?jaar), "-", 131 IF(?kw=1,"01-01", IF(?kw=2,"04-01", IF(?kw=3,"07-01", IF(?kw=4,"10-01","01-01")))) 132 )) AS ?start_periode ) 133 BIND( xsd:date(CONCAT(STR(?jaar), "-", 134 IF(?kw=1,"03-31", IF(?kw=2,"06-30", IF(?kw=3,"09-30","12-31"))) 135 )) AS ?eind_periode) 136 BIND( IF(?kw = 0, "Totaal jaar", CONCAT("Q", STR(?kw))) AS ?Periode ) 137 138 # Selecteer alle arbeidsovereenkomsten die geldig zijn 139 ?overeenkomst a onz-pers:ArbeidsOvereenkomst ; onz-g:hasPart ?overeenkomst_afspraak . 140 ?overeenkomst onz-pers:heeftOpdrachtnemer ?persoon . 141 ?overeenkomst_afspraak a onz-pers:WerkOvereenkomstAfspraak ; onz-g:hasPart ?omvang ; onz-g:startDatum ?start_afspraak . 142 OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak } 143 FILTER (?start_afspraak <= ?eind_periode && (?eind_afspraak >= ?start_periode || !BOUND(?eind_afspraak))) 144 145 # Bepaal per overeenkomstafspraak de ptf en zorg/niet-zorg 146 ?omvang a onz-pers:ContractOmvang ; onz-g:isAbout ?omvang_waarde . 147 ?omvang_waarde a onz-pers:ContractOmvangWaarde ; onz-g:hasDataValue ?omvang_getal ; onz-g:hasUnitOfMeasure ?omvang_eenheid . 148 ?omvang_eenheid onz-g:hasDataValue ?eenheid_factor . 149 BIND(?omvang_getal/(36/?eenheid_factor) AS ?ptf) 150 151 # Clip de afspraak op het kwartaal 152 BIND(IF(?start_afspraak < ?start_periode, ?start_periode, ?start_afspraak) AS ?start_afspraak_corr) 153 BIND(IF(?eind_afspraak > ?eind_periode || !BOUND(?eind_afspraak), ?eind_periode, ?eind_afspraak) AS ?eind_afspraak_corr) 154 155 # Bereken hoeveel dagen van de afspraak overlappen met de meetperiode 156 ?start_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_afspraak_reken . 157 ?eind_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_afspraak_reken . 158 BIND(?eind_afspraak_reken - ?start_afspraak_reken + 1 AS ?dagen_afspraak) 159 160 # Noemer per afspraak = PTF * kalenderdagen binnen meetperiode 161 BIND(?ptf * ?dagen_afspraak AS ?noemer_afspraak) 162 } 163 } 164 } 165 GROUP BY ?Periode ?overeenkomst_afspraak ?persoon 166 } 167 168 ?overeenkomst_afspraak onz-g:isAbout ?locatie . 169 { 170 # Tak 1: echte vestiging + afleiding zorgkantoorregio 171 ?locatie onz-g:partOf* ?vestiging_uri . 172 ?vestiging_uri a onz-org:Vestiging ; 173 onz-g:identifiedBy ?vest_nr ; 174 onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 . 175 ?vest_nr a onz-org:Vestigingsnummer ; onz-g:hasDataValue ?vestiging . 176 177 BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode) 178 ?pc_gebied onz-g:identifiedBy ?postcode ; onz-g:partOf+ ?zk_regio . 179 ?zk_regio a onz-org:ZorgkantoorRegio . 180 } 181 UNION 182 { 183 # Tak 2: totaal organisatie, laat ?zk_regio ongebonden (leeg in output) 184 ?locatie onz-g:partOf* ?vestiging_uri . 185 ?vestiging_uri onz-org:vestigingVan ?organisatie_uri . 186 BIND("Totaal organisatie" AS ?vestiging) 187 } 188 189 BIND(IF(BOUND(?zk_regio), STRAFTER(STR(?zk_regio), "/onz-org/"), ?unbound) AS ?zk_regio_code) 190 191} 192GROUP BY ?Periode ?vestiging ?zk_regio_code 193ORDER BY ?Periode ?Indeling