Code gekopieerd
...Kopieer naar klembord
1# Indicator: Zorgkantoren 7.1 2# Parameters: $(kwartaal) 3# Ontologie: versie 2.0.0 of nieuwer 4 5PREFIX onz-g: <http://purl.org/ozo/onz-g#> 6PREFIX onz-org: <http://purl.org/ozo/onz-org#> 7PREFIX onz-pers: <http://purl.org/ozo/onz-pers#> 8PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 9PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 10PREFIX onz-zorg: <http://purl.org/ozo/onz-zorg#> 11 12SELECT 13 ?vestiging 14 ?ingezette_uren 15 ?aantal_clienten 16 ((?ingezette_uren/?aantal_clienten) AS ?ingezetten_uren_per_client) 17WHERE 18{ 19 { 20 SELECT 21 ?vestiging 22 (SUM(?uren) AS ?ingezette_uren) 23 WHERE 24 { 25 # definieer kwartaal waarin overeenkomst geldig moet zijn 26 BIND('Q3' AS ?kwartaal) 27 BIND( 28 IF(?kwartaal = 'Q1', '2023-01-01'^^xsd:date, 29 IF(?kwartaal = 'Q2', '2023-04-01'^^xsd:date, 30 IF(?kwartaal = 'Q3', '2023-07-01'^^xsd:date, 31 IF(?kwartaal = 'Q4', '2023-10-01'^^xsd:date, 32 '')))) AS ?start_periode) 33 BIND((?start_periode + "P3M"^^xsd:duration - "P1D"^^xsd:duration) AS ?eind_periode) 34 35 # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft 36 ?functie 37 a onz-pers:ZorgverlenerFunctie ; 38 onz-g:startDatum ?start_functie . 39 OPTIONAL { ?functie onz-g:eindDatum ?eind_functie .} 40 41 FILTER(?start_functie <= ?eind_periode && ((?eind_functie >= ?start_periode) || (!BOUND(?eind_functie)))) 42 BIND(IF(!BOUND(?eind_functie), ?eind_periode, 43 IF(?eind_functie < ?eind_periode, ?eind_functie, ?eind_periode) 44 ) AS ?eind_functie_reken) 45 BIND(IF(?start_functie < ?start_periode, ?start_periode, ?start_functie) AS ?start_functie_reken) 46 47 ?overeenkomst 48 a onz-pers:ArbeidsOvereenkomst ; 49 onz-g:isAbout ?locatie_contract ; 50 onz-g:isAbout ?functie . 51 52 # selecteer uren van gewerkte periode binnen rekenperiode 53 ?gewerkteperiode 54 a onz-pers:GewerktePeriode ; 55 onz-g:hasBeginTimeStamp ?start_werk_datetime ; 56 onz-g:hasEndTimeStamp ?eind_werk_datetime ; 57 onz-g:definedBy ?overeenkomst ; 58 onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren_voor_correctie . 59 OPTIONAL{?gewerkteperiode onz-g:hasPerdurantLocation ?locatie_werk .} 60 # Als begin- en endTimeStamp van type dateTime zijn dan omzetten zodat vergeleken kan worden met start en eind period 61 BIND(STRDT(SUBSTR(STR(?start_werk_datetime), 1, 10), xsd:date) AS ?start_werk) 62 BIND(STRDT(SUBSTR(STR(?eind_werk_datetime), 1, 10), xsd:date) AS ?eind_werk) 63 FILTER((?start_werk >= ?start_functie_reken) && (?eind_werk <= ?eind_functie_reken)) 64 65 ?locatie_contract a onz-g:StationaryArtifact 66 BIND(IF(!BOUND(?locatie_werk), ?locatie_contract, ?locatie_werk) AS ?locatie) 67 68 # selecteer vestiging van gewerkte periode 69 { 70 ?locatie onz-g:partOf* ?vestiging_uri . 71 ?vestiging_uri 72 a onz-org:Vestiging ; 73 onz-g:identifiedBy ?vest_nr. 74 ?vest_nr a onz-org:Vestigingsnummer ; 75 onz-g:hasDataValue ?vestiging . 76 } UNION { 77 # includeer ook de organisatie als geheel en label deze als vestiging 78 ?locatie onz-g:partOf*/onz-org:vestigingVan ?organisatie_uri . 79 ?organisatie_uri 80 a onz-g:Business ; 81 rdfs:label ?organisatie . 82 BIND(CONCAT('Totaal ',?organisatie) AS ?vestiging) 83 } 84 85 BIND(IF(!BOUND(?locatie_werk) && BOUND(?vestiging_uri), 0, 1) AS ?correctie) 86 BIND(?uren_voor_correctie * ?correctie AS ?uren) 87 } 88 GROUP BY ?vestiging 89 } 90 { 91 SELECT 92 ?vestiging 93 (COUNT(DISTINCT(?client)) AS ?aantal_clienten) 94 WHERE 95 { 96 # definieer kwartaal waarin overeenkomst geldig moet zijn 97 BIND('Q3' AS ?kwartaal) 98 BIND( 99 IF(?kwartaal = 'Q1', '2023-01-01'^^xsd:date, 100 IF(?kwartaal = 'Q2', '2023-04-01'^^xsd:date, 101 IF(?kwartaal = 'Q3', '2023-07-01'^^xsd:date, 102 IF(?kwartaal = 'Q4', '2023-10-01'^^xsd:date, 103 '')))) AS ?start_periode) 104 BIND((?start_periode + "P3M"^^xsd:duration - "P1D"^^xsd:duration) AS ?eind_periode) 105 106 VALUES ?zorgprofiel { onz-zorg:4VV onz-zorg:5VV onz-zorg:6VV onz-zorg:7VV onz-zorg:8VV onz-zorg:9BVV onz-zorg:10VV } 107 108 # selecteer zorgproces binnen periode 109 ?zorgproces 110 a onz-zorg:NursingProcess ; 111 onz-g:definedBy ?indicatie ; 112 onz-g:hasPerdurantLocation ?locatie ; 113 onz-g:startDatum ?start_proces . 114 OPTIONAL {?zorgproces onz-g:eindDatum ?eind_proces} 115 FILTER (?start_proces <= ?eind_periode && (!BOUND(?eind_proces) || ?eind_proces >= ?start_periode)) 116 117 # selecteer vestiging van gewerkte periode 118 { 119 ?locatie onz-g:partOf* ?vestiging_uri . 120 ?vestiging_uri 121 a onz-org:Vestiging ; 122 onz-g:identifiedBy ?vest_nr. 123 ?vest_nr a onz-org:Vestigingsnummer ; 124 onz-g:hasDataValue ?vestiging . 125 } UNION { 126 # includeer ook de organisatie als geheel en label deze als vestiging 127 ?locatie onz-g:partOf*/onz-org:vestigingVan ?organisatie_uri . 128 ?organisatie_uri 129 a onz-g:Business ; 130 rdfs:label ?organisatie . 131 BIND(CONCAT('Totaal ',?organisatie) AS ?vestiging) 132 } 133 134 # selecteer de bijbehordene indicatie, om unieke clienten te kunnen bepalen 135 ?indicatie 136 onz-g:hasPart ?zorgprofiel ; 137 onz-g:isAbout ?client . 138 ?client a onz-g:Human . 139 } 140 GROUP BY ?vestiging 141 } 142} 143
Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!