Uitwisselprofiel ActiZ Belangenbehartiging
Over Uitwisselprofiel ActiZ Belangenbehartiging
- Publicatiedatum:
- 07-07-2026
- Inwerkingtreding:
- 16-07-2026
2.10 Wat is het aantal gemiddelde gewerkte periodes van personeelsleden in loondienst met een zorgverleners functie per kwalificatieniveau per Dag-, Avond- en Nacht-dienst (DAN-dienst)?
Concepten
- Arbeidsovereenkomst
- Gewerkte periode
- ODB Kwalificatiewaarde
- Onverplaatsbaar artefact
- Vestiging
- Vestigingsnummer
- Werkovereenkomst afspraak
- Zorgkantoor regio
- Zorgverlener (functie)
Relaties
- gaat over
- gedefinieerd door
- geïdentificeerd door
- heeft deel
- heeft eigenschap of kenmerk
- heeft eigenschapswaarde
- heeft lokaliseerbaar gebied
- heeft perdurantlocatie
- vestiging van
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1PREFIX ofn: <http://www.ontotext.com/sparql/functions/> 2# Indicator: ActiZ 2.10 3# Parameters: ?jaar, ?kwartaal 4# Ontologie: versie 3.0 of nieuwer 5 6PREFIX onz-g: <http://purl.org/ozo/onz-g#> 7PREFIX onz-pers: <http://purl.org/ozo/onz-pers#> 8PREFIX onz-org: <http://purl.org/ozo/onz-org#> 9PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 10PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 11PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 12 13SELECT 14 (?vestiging AS ?Indeling) 15 (?zk_regio_code AS ?Zorgkantoorregio_code) 16(?kwalificatieniveau AS ?Kwalificatieniveau) 17 (ROUND((SUM(?isDag) / xsd:decimal(?kalenderdagen)) * 100) / 100 AS ?Aantal_gemiddelde_gewerkte_perioden_dagdienst) 18 (ROUND((SUM(?isAvond) / xsd:decimal(?kalenderdagen)) * 100) / 100 AS ?Aantal_gemiddelde_gewerkte_perioden_avonddienst) 19 (ROUND((SUM(?isNacht) / xsd:decimal(?kalenderdagen)) * 100) / 100 AS ?Aantal_gemiddelde_gewerkte_perioden_nachtdienst) 20WHERE { 21 # BIND(2024 AS ?jaar) 22 # BIND("Q1" AS ?kwartaal) 23 24 BIND(?jaar AS ?j) 25 26 # Schrikkeljaar: standaard SPARQL (geen ofn:floorMod) 27 BIND(xsd:integer(?j) AS ?ji) 28 BIND(((?ji - (xsd:integer(?ji / 400) * 400) = 0) || ((?ji - (xsd:integer(?ji / 4) * 4) = 0) && (?ji - (xsd:integer(?ji / 100) * 100) != 0))) AS ?isSchrikkel) 29 30 BIND( 31 STRDT( 32 CONCAT( 33 STR(?j), "-", 34 IF(?kwartaal = "Q1", "01-01", 35 IF(?kwartaal = "Q2", "04-01", 36 IF(?kwartaal = "Q3", "07-01", "10-01"))) 37 ), 38 xsd:date 39 ) AS ?p_start 40 ) 41 42 BIND( 43 STRDT( 44 CONCAT( 45 STR(?j), "-", 46 IF(?kwartaal = "Q1", "03-31", 47 IF(?kwartaal = "Q2", "06-30", 48 IF(?kwartaal = "Q3", "09-30", "12-31"))) 49 ), 50 xsd:date 51 ) AS ?p_eind 52 ) 53 54 BIND( 55 IF(?kwartaal = "Q1", IF(?isSchrikkel, 91, 90), 56 IF(?kwartaal = "Q2", 91, 57 IF(?kwartaal = "Q3", 92, 92))) 58 AS ?kalenderdagen 59 ) 60 61 BIND(IF(?vestiging = "Totaal organisatie", 0, 1) AS ?IndelingSort) 62 63 # DAN-venster 64 BIND(xsd:dateTime(CONCAT(STR(?p_start), "T07:00:00")) AS ?dan_start) 65 BIND(?p_eind + "P1D"^^xsd:duration AS ?eind_periode_plus) 66 BIND(xsd:dateTime(CONCAT(STR(?eind_periode_plus), "T06:59:00")) AS ?dan_end) 67 68 # Alle kwalificatieniveaus altijd tonen 69 { 70 SELECT DISTINCT ?kwalificatieniveau { 71 ?functie a onz-pers:ZorgverlenerFunctie ; 72 onz-g:hasQuality/onz-g:hasQualityValue ?functie_niveau . 73 ?functie_niveau a onz-pers:ODBKwalificatieWaarde ; 74 rdfs:label ?kwalificatieniveau . 75 } 76 } 77 78 # Alle indelingen (vestigingen + totaal) — 1x resolutie via subquery 79 { 80 SELECT DISTINCT ?vestiging ?zk_regio_code { 81 { 82 ?vestiging_uri a onz-org:Vestiging ; 83 onz-g:identifiedBy ?vest_nr ; 84 onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 . 85 ?vest_nr a onz-org:Vestigingsnummer ; 86 onz-g:hasDataValue ?vestiging . 87 BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode) 88 ?pc_gebied onz-g:identifiedBy ?postcode ; 89 onz-g:partOf+ ?zk_regio . 90 ?zk_regio a onz-org:ZorgkantoorRegio . 91 BIND(STRAFTER(STR(?zk_regio), "/onz-org/") AS ?zk_regio_code) 92 } 93 UNION 94 { 95 ?locatie_init onz-g:partOf? ?vestiging_uri . 96 ?vestiging_uri onz-org:vestigingVan ?organisatie_uri . 97 BIND("Totaal organisatie" AS ?vestiging) 98 BIND("n.v.t." AS ?zk_regio_code) 99 } 100 } 101 } 102 103 OPTIONAL { 104 # Subquery: pre-resolve GewerktePeriode → vestiging (1x, niet per cross-join rij) 105 { 106 SELECT ?vestiging ?zk_regio_code ?kwalificatieniveau ?start_uur 107 WHERE { 108 # BIND(2024 AS ?jaar) 109 # BIND("Q1" AS ?kwartaal) 110 111 BIND(?jaar AS ?j2) 112 BIND( 113 STRDT(CONCAT(STR(?j2), "-", 114 IF(?kwartaal = "Q1", "01-01", IF(?kwartaal = "Q2", "04-01", 115 IF(?kwartaal = "Q3", "07-01", "10-01")))), xsd:date) AS ?p_start2) 116 BIND( 117 STRDT(CONCAT(STR(?j2), "-", 118 IF(?kwartaal = "Q1", "03-31", IF(?kwartaal = "Q2", "06-30", 119 IF(?kwartaal = "Q3", "09-30", "12-31")))), xsd:date) AS ?p_eind2) 120 BIND(xsd:dateTime(CONCAT(STR(?p_start2), "T07:00:00")) AS ?dan_start2) 121 BIND(?p_eind2 + "P1D"^^xsd:duration AS ?eind_periode_plus2) 122 BIND(xsd:dateTime(CONCAT(STR(?eind_periode_plus2), "T06:59:00")) AS ?dan_end2) 123 124 ?gewerkte_periode a onz-pers:GewerktePeriode ; 125 onz-g:hasBeginTimeStamp ?start_werk ; 126 onz-g:hasEndTimeStamp ?eind_werk ; 127 onz-g:definedBy ?overeenkomst . 128 FILTER(?start_werk >= ?dan_start2 && ?start_werk <= ?dan_end2) 129 130 BIND(HOURS(?start_werk) AS ?start_uur) 131 132 ?overeenkomst a onz-pers:ArbeidsOvereenkomst ; 133 onz-g:hasPart ?overeenkomst_afspraak . 134 135 ?overeenkomst_afspraak a onz-pers:WerkOvereenkomstAfspraak ; 136 onz-g:startDatum ?start_afspraak ; 137 onz-g:isAbout ?functie ; 138 onz-g:isAbout ?locatie_afspraak . 139 OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak } 140 FILTER(?start_afspraak <= ?eind_periode_plus2 && 141 (!BOUND(?eind_afspraak) || ?eind_afspraak >= ?p_start2)) 142 143 ?functie a onz-pers:ZorgverlenerFunctie ; 144 onz-g:hasQuality/onz-g:hasQualityValue ?functie_niveau . 145 ?functie_niveau a onz-pers:ODBKwalificatieWaarde ; 146 rdfs:label ?kwalificatieniveau . 147 148 ?locatie_afspraak a onz-g:StationaryArtifact . 149 OPTIONAL { ?gewerkte_periode onz-g:hasPerdurantLocation ?locatie_werk . } 150 BIND(COALESCE(?locatie_werk, ?locatie_afspraak) AS ?locatie) 151 152 { 153 # Vestiging + regio — partOf beperkt tot 2 niveaus 154 ?locatie (onz-g:partOf)? ?vestiging_uri . 155 ?vestiging_uri a onz-org:Vestiging ; 156 onz-g:identifiedBy ?vest_nr ; 157 onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 . 158 ?vest_nr a onz-org:Vestigingsnummer ; 159 onz-g:hasDataValue ?vestiging . 160 BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode) 161 ?pc_gebied onz-g:identifiedBy ?postcode ; 162 onz-g:partOf+ ?zk_regio . 163 ?zk_regio a onz-org:ZorgkantoorRegio . 164 BIND(STRAFTER(STR(?zk_regio), "/onz-org/") AS ?zk_regio_code) 165 } 166 UNION 167 { 168 # Totaal organisatie — partOf beperkt tot 2 niveaus 169 ?locatie (onz-g:partOf)? ?vestiging_uri . 170 ?vestiging_uri onz-org:vestigingVan ?organisatie_uri . 171 BIND("Totaal organisatie" AS ?vestiging) 172 BIND("n.v.t." AS ?zk_regio_code) 173 } 174 } 175 } 176 } 177 178 # Indicatorvariabelen 179 BIND(IF(BOUND(?start_uur) && (?start_uur >= 7 && ?start_uur < 15), 1, 0) AS ?isDag) 180 BIND(IF(BOUND(?start_uur) && (?start_uur >= 15 && ?start_uur < 23), 1, 0) AS ?isAvond) 181 BIND(IF(BOUND(?start_uur) && (?start_uur >= 23 || ?start_uur < 7), 1, 0) AS ?isNacht) 182} 183GROUP BY 184 ?vestiging 185 ?IndelingSort 186 ?zk_regio_code 187 ?kwalificatieniveau 188 ?kalenderdagen 189ORDER BY ?IndelingSort ?vestiging ?kwalificatieniveau 190