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