Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
- Publicatiedatum:
- 03-10-2025
- Inwerkingtreding:
- 03-10-2025
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
- vestiging van
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 # ------------------------------- 19 # MIDDENLAAG: per persoon × vestiging 20 # ------------------------------- 21 SELECT 22 ?vestiging 23 ?zorgkantoor_vestiging 24 ?persoon 25 ?dagen_periode 26 # MERGE/UNION: aantal unieke dagen met dekking per categorie 27 (SUM(?zorg_dagen_uni) AS ?zorg_aandeel) 28 (SUM(?niet_zorg_dagen_uni) AS ?niet_zorg_aandeel) 29 WHERE { 30 # ------------------------------- 31 # BINNENLAAG: knip afspraken, tel unieke dagen per categorie 32 # ------------------------------- 33 { 34 SELECT 35 ?vestiging 36 ?zorgkantoor_vestiging 37 ?persoon 38 ?dagen_periode 39 (COUNT(DISTINCT ?dag_num_zorg) AS ?zorg_dagen_uni) 40 (COUNT(DISTINCT ?dag_num_nietzorg) AS ?niet_zorg_dagen_uni) 41 WHERE { 42 # ---- Parameters & periode ---- 43 #BIND(2024 AS ?jaar) 44 #BIND("Q1" AS ?kwartaal) 45 46 BIND( 47 IF(?kwartaal = 'Q1', xsd:date(CONCAT(STR(?jaar), '-01-01')), 48 IF(?kwartaal = 'Q2', xsd:date(CONCAT(STR(?jaar), '-04-01')), 49 IF(?kwartaal = 'Q3', xsd:date(CONCAT(STR(?jaar), '-07-01')), 50 IF(?kwartaal = 'Q4', xsd:date(CONCAT(STR(?jaar), '-10-01')), 51 '')))) AS ?start_periode 52 ) 53 BIND(?start_periode + "P3M"^^xsd:duration + "-P1D"^^xsd:duration AS ?eind_periode) 54 55 ?start_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_periode_numeriek . 56 ?eind_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode_numeriek . 57 BIND(?eind_periode_numeriek - ?start_periode_numeriek + 1 AS ?dagen_periode) 58 59 # ---- Geldige werkovereenkomsten ---- 60 VALUES ?personeels_overeenkomst { 61 onz-pers:ArbeidsOvereenkomst 62 onz-pers:UitzendOvereenkomst 63 onz-pers:InhuurOvereenkomst 64 } 65 66 # ---- Afspraken + knippen ---- 67 ?overeenkomst a ?personeels_overeenkomst ; 68 onz-pers:heeftOpdrachtnemer ?persoon ; 69 onz-g:startDatum ?overeenkomst_start ; 70 onz-g:hasPart ?overeenkomst_afspraak . 71 OPTIONAL { ?overeenkomst onz-g:eindDatum ?overeenkomst_eind } 72 73 ?overeenkomst_afspraak a onz-pers:WerkOvereenkomstAfspraak ; 74 onz-g:startDatum ?start_afspraak . 75 OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak } 76 77 FILTER( ?overeenkomst_start <= ?eind_periode && 78 ( ?overeenkomst_eind >= ?start_periode || !BOUND(?overeenkomst_eind) ) ) 79 80 BIND( IF(?overeenkomst_start < ?start_periode, ?start_periode, ?overeenkomst_start) AS ?start_corr ) 81 BIND( IF(!BOUND(?overeenkomst_eind) || ?overeenkomst_eind > ?eind_periode, ?eind_periode, ?overeenkomst_eind) AS ?eind_corr ) 82 83 BIND( IF(?start_afspraak > ?start_corr, ?start_afspraak, ?start_corr) AS ?start_afspraak_corr ) 84 BIND( IF(BOUND(?eind_afspraak) && ?eind_afspraak < ?eind_corr, ?eind_afspraak, ?eind_corr) AS ?eind_afspraak_corr ) 85 FILTER(?start_afspraak_corr <= ?eind_afspraak_corr) 86 87 # ---- Categorie & vestiging ---- 88 ?overeenkomst_afspraak onz-g:isAbout ?functie . 89 ?functie a onz-g:OccupationalPositionRole . 90 BIND( IF(EXISTS { ?functie a onz-pers:ZorgverlenerFunctie }, 1, 0) AS ?zorg_boolean ) 91 92 ?overeenkomst_afspraak onz-g:isAbout ?locatie . 93 ?locatie a onz-g:StationaryArtifact ; 94 onz-g:partOf* ?vestiging_uri . 95 ?vestiging_uri a onz-org:Vestiging ; 96 onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 . 97 98 BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode) 99 ?pc_gebied onz-g:identifiedBy ?postcode ; onz-g:partOf+ ?zk_regio . 100 ?zk_regio a onz-org:ZorgkantoorRegio . 101 ?zorgkantoor onz-g:hasOperatingRange ?zk_regio . 102 103 { 104 ?vestiging_uri onz-g:identifiedBy ?vest_nr . 105 ?vest_nr a onz-org:Vestigingsnummer ; onz-g:hasDataValue ?vestiging . 106 } UNION { 107 ?vestiging_uri onz-org:vestigingVan ?organisatie_uri . 108 BIND("Totaal organisatie" AS ?vestiging) 109 BIND("n.v.t." AS ?zk_vestiging) 110 } 111 BIND( IF(!BOUND(?zk_vestiging), ?zorgkantoor, ?zk_vestiging) AS ?zorgkantoor_vestiging ) 112 113 # ---- Kalender: alle dagen in dit kwartaal (offset 0..99, gefilterd tot eind) ---- 114 VALUES ?tiendetal {0 1 2 3 4 5 6 7 8 9} 115 VALUES ?eental {0 1 2 3 4 5 6 7 8 9} 116 BIND((?tiendetal*10 + ?eental) AS ?offset) 117 BIND(?start_periode_numeriek + ?offset AS ?dag_num) 118 FILTER(?dag_num <= ?eind_periode_numeriek) 119 120 # ---- Dag binnen deze afspraak? Zo ja, tel voor de juiste categorie ---- 121 ?start_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_num . 122 ?eind_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?end_num . 123 FILTER(?start_num <= ?dag_num && ?dag_num <= ?end_num) 124 125 # DISTINCT in de COUNT voorkomt dubbeltelling bij overlap op dezelfde dag 126 BIND(IF(?zorg_boolean = 1, ?dag_num, ?unbound) AS ?dag_num_zorg) 127 BIND(IF(?zorg_boolean = 0, ?dag_num, ?unbound) AS ?dag_num_nietzorg) 128 } 129 GROUP BY ?vestiging ?zorgkantoor_vestiging ?persoon ?dagen_periode 130 } 131 } 132 GROUP BY ?vestiging ?zorgkantoor_vestiging ?persoon ?dagen_periode 133} 134GROUP BY ?vestiging ?zorgkantoor_vestiging 135ORDER BY ?vestiging 136