Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
- Publicatiedatum:
- 01-05-2026
- Inwerkingtreding:
- 01-05-2026
1.1 Wat is het gemiddeld aantal personeelsleden?
Concepten
- Arbeidsovereenkomst
- Functie in organisatie-rol
- Inhuurovereenkomst
- Onverplaatsbaar artefact
- Uitzendovereenkomst
- Vestiging
- Vestigingsnummer
- Werkovereenkomst afspraak
- Zorgkantoor regio
- Zorgverlener (functie)
Relaties
- deel van
- gaat over
- geïdentificeerd door
- heeft deel
- heeft lokaliseerbaar gebied
- heeft opdrachtnemer
- opereert in regio
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: Zorgkantoren 1.1 2# Parameters: ?jaar, ?kwartaal, ?zorgkantoor 3# Ontologie: versie 3.0.0 of nieuwer 4 5PREFIX onz-g: <http://purl.org/ozo/onz-g#> 6PREFIX onz-pers:<http://purl.org/ozo/onz-pers#> 7PREFIX onz-org: <http://purl.org/ozo/onz-org#> 8PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 9PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 10PREFIX time: <http://www.w3.org/2006/time#> 11 12SELECT 13 (?vestiging AS ?Indeling) 14 (SUM(IF(?dagen_periode <= 0, 0, IF(?zorg_aandeel / ?dagen_periode > 1, 1, ?zorg_aandeel / ?dagen_periode))) AS ?Zorg) 15 (SUM(IF(?dagen_periode <= 0, 0, IF(?niet_zorg_aandeel / ?dagen_periode > 1, 1, ?niet_zorg_aandeel / ?dagen_periode))) AS ?Niet_zorg) 16 (SUM(IF(?dagen_periode <= 0, 0, IF((?zorg_aandeel + ?niet_zorg_aandeel) / ?dagen_periode > 1, 1, (?zorg_aandeel + ?niet_zorg_aandeel) / ?dagen_periode))) AS ?Totaal) 17WHERE { 18 SELECT 19 ?vestiging 20 ?zorgkantoor_vestiging 21 ?persoon 22 ?dagen_periode 23 (SUM(?zorg_dagen_uniek) AS ?zorg_aandeel) 24 (SUM(?niet_zorg_dagen_uniek) AS ?niet_zorg_aandeel) 25 WHERE { 26 { 27 SELECT 28 ?vestiging 29 ?zorgkantoor_vestiging 30 ?persoon 31 ?dagen_periode 32 (COUNT(DISTINCT ?dag_num_zorg) AS ?zorg_dagen_uniek) 33 (COUNT(DISTINCT ?dag_num_nietzorg) AS ?niet_zorg_dagen_uniek) 34 WHERE { 35 #BIND(2024 AS ?jaar) 36 #BIND("Q1" AS ?kwartaal) 37 38 # Gedeeld patroon : Overeenkomsten die (deels) binnen deze periode vallen en berekening aantal dagen binnen deze periode 39 BIND( 40 IF(?kwartaal = 'Q1', xsd:date(CONCAT(STR(?jaar), '-01-01')), 41 IF(?kwartaal = 'Q2', xsd:date(CONCAT(STR(?jaar), '-04-01')), 42 IF(?kwartaal = 'Q3', xsd:date(CONCAT(STR(?jaar), '-07-01')), 43 IF(?kwartaal = 'Q4', xsd:date(CONCAT(STR(?jaar), '-10-01')), 44 '')))) AS ?start_periode 45 ) 46 BIND(?start_periode + "P3M"^^xsd:duration + "-P1D"^^xsd:duration AS ?eind_periode) 47 48 # Maak van de datums een numerieke waarden zodat we later met unieke dagnummers kunnen rekenen 49 ?start_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_periode_numeriek . 50 ?eind_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode_numeriek . 51 BIND(?eind_periode_numeriek - ?start_periode_numeriek + 1 AS ?dagen_periode) 52 53 VALUES ?personeels_overeenkomst { 54 onz-pers:ArbeidsOvereenkomst 55 onz-pers:UitzendOvereenkomst 56 onz-pers:InhuurOvereenkomst 57 } 58 59 ?overeenkomst a ?personeels_overeenkomst ; 60 onz-pers:heeftOpdrachtnemer ?persoon ; 61 onz-g:startDatum ?overeenkomst_start ; 62 onz-g:hasPart ?overeenkomst_afspraak . 63 OPTIONAL { ?overeenkomst onz-g:eindDatum ?overeenkomst_eind } 64 65 ?overeenkomst_afspraak a onz-pers:WerkOvereenkomstAfspraak ; 66 onz-g:startDatum ?start_afspraak ; 67 onz-g:isAbout ?functie. 68 OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak } 69 FILTER( ?overeenkomst_start <= ?eind_periode && 70 ( ?overeenkomst_eind >= ?start_periode || !BOUND(?overeenkomst_eind) ) ) 71 72 ?functie a onz-g:OccupationalPositionRole . 73 BIND( IF(EXISTS { ?functie a onz-pers:ZorgverlenerFunctie }, 1, 0) AS ?zorg_boolean ) 74 75 # De correcte start en einddatum van de overeenkomst. Indien buiten periode dan start en eind periode 76 BIND( IF(?overeenkomst_start < ?start_periode, ?start_periode, ?overeenkomst_start) AS ?start_ovk_corr ) 77 BIND( IF(!BOUND(?overeenkomst_eind) || ?overeenkomst_eind > ?eind_periode, ?eind_periode, ?overeenkomst_eind) AS ?eind_ovk_corr ) 78 79 # De correcte start en einddatum van de afspraak. Fallback zijn de waarden van de overeenkomst zoals hierboven berekend. Dit is de waarde waarmee wordt gerekend. 80 BIND( IF(?start_afspraak > ?start_ovk_corr, ?start_afspraak, ?start_ovk_corr) AS ?start_afspraak_corr ) 81 BIND( IF(BOUND(?eind_afspraak) && ?eind_afspraak < ?eind_ovk_corr, ?eind_afspraak, ?eind_ovk_corr) AS ?eind_afspraak_corr ) 82 FILTER(?start_afspraak_corr <= ?eind_afspraak_corr) 83 84 { 85 # Per vestiging: deze tak koppelt de medewerkers aan een vestiging via de locatie van de werkovereenkomst afspraak 86 ?overeenkomst_afspraak onz-g:isAbout ?locatie. 87 ?locatie a onz-g:StationaryArtifact ; 88 onz-g:partOf* ?vestiging_uri . 89 ?vestiging_uri a onz-org:Vestiging ; 90 onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 ; 91 onz-g:identifiedBy ?vest_nr . 92 ?vest_nr a onz-org:Vestigingsnummer 93 ; onz-g:hasDataValue ?vestiging . 94 95 BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode) 96 ?pc_gebied onz-g:identifiedBy ?postcode ; onz-g:partOf+ ?zk_regio . 97 ?zk_regio a onz-org:ZorgkantoorRegio . 98 ?zorgkantoor onz-g:hasOperatingRange ?zk_regio . 99 } 100 UNION 101 { 102 # Totaal organisatie: deze tak maakt voor alle medewerkers uit gedeelde patroon (incl medewerkers die geen locatie op de werkovereenkomstafspraak hebben) een totaal organisatie regel aan 103 BIND("Organisatie (gecontracteerd + algemeen)" AS ?vestiging) 104 } 105 106 107 # Kalender: alle dagen in dit kwartaal numeriek maken (offset 0..99, gefilterd tot eind) 108 VALUES ?tiendetal {0 1 2 3 4 5 6 7 8 9} 109 VALUES ?eental {0 1 2 3 4 5 6 7 8 9} 110 BIND((?tiendetal*10 + ?eental) AS ?offset) 111 BIND(?start_periode_numeriek + ?offset AS ?dag_num) 112 FILTER(?dag_num <= ?eind_periode_numeriek) 113 114 # Hier worden de gecorrigeerde start en einddatum ook numeriek gemaakt 115 ?start_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_num . 116 ?eind_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?end_num . 117 FILTER(?start_num <= ?dag_num && ?dag_num <= ?end_num) 118 119 # DISTINCT in de COUNT voorkomt dubbeltelling bij overlap op dezelfde dag 120 BIND(IF(?zorg_boolean = 1, ?dag_num, ?unbound) AS ?dag_num_zorg) 121 BIND(IF(?zorg_boolean = 0, ?dag_num, ?unbound) AS ?dag_num_nietzorg) 122 } 123 GROUP BY ?vestiging ?zorgkantoor_vestiging ?persoon ?dagen_periode 124 } 125 } 126 GROUP BY ?vestiging ?zorgkantoor_vestiging ?persoon ?dagen_periode 127} 128GROUP BY ?vestiging ?zorgkantoor_vestiging 129ORDER BY ?vestiging