Let op: dit is een oudere versie van deze publicatie. Ga naar de laatste versie

Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

6.1.1 Percentage ingezette uren personeel per kwalificatieniveau Q1 2023

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 6.1
2# Parameters: $(start_periode), $(eind_periode)
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#>
10
11SELECT 
12    ?vestiging
13    ?kwalificatie_niveau
14    (?kwalificatie_uren AS ?ingezette_uren)
15    ((?kwalificatie_uren/?totaal_uren)*100 AS ?percentage)
16WHERE 
17{   
18    # subquery: bereken het aantal ingezette uren per kwalificatieniveau en vestiging
19    {
20        SELECT 
21            ?vestiging
22            ?kwalificatie_niveau
23            (SUM(?uren) AS ?kwalificatie_uren)
24        WHERE
25        {
26            # selecteer alle geregistreerde uren van de werknemers per 
27            SELECT DISTINCT
28                ?gewerkte_periode
29                ?start_werk
30                ?eind_werk
31                ?uren
32                ?kwalificatie_niveau
33                ?vestiging
34            WHERE 
35            {
36                BIND ('2023-01-01'^^xsd:date AS ?start_periode)
37                BIND ('2023-03-31'^^xsd:date AS ?eind_periode)
38                
39                # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft
40                ?functie 
41                    a onz-pers:ZorgverlenerFunctie ;  
42                    a/ onz-g:hasQuality /onz-g:hasQualityValue ?functie_niveau ;
43                    onz-g:startDatum ?start_functie .
44                OPTIONAL { ?functie onz-g:eindDatum ?eind_functie . }
45                
46                FILTER(?start_functie <= ?eind_periode && ((?eind_functie >= ?start_periode) || (!BOUND(?eind_functie))))
47                BIND(IF(!BOUND(?eind_functie), ?eind_periode, 
48                    IF(?eind_functie < ?eind_periode, ?eind_functie, ?eind_periode)
49                ) AS ?eind_functie_reken)
50                BIND(IF(?start_functie < ?start_periode, ?start_periode, ?start_functie) AS ?start_functie_reken)
51                
52                ?overeenkomst 
53                    a onz-pers:ArbeidsOvereenkomst ;
54                    onz-pers:heeftOpdrachtnemer ?medewerker ;
55                    onz-g:isAbout ?functie .
56
57                ?functie_niveau
58                    a onz-pers:ODBKwalificatieWaarde ;
59                    rdfs:label ?kwalificatie_niveau .
60
61                # selecteer uren van gewerkte periode binnen periode
62                ?gewerkte_periode 
63                    a onz-pers:GewerktePeriode ;
64                    onz-g:definedBy ?overeenkomst ;
65                    onz-g:hasBeginTimeStamp ?start_werk_datetime ;
66                    onz-g:hasEndTimeStamp ?eind_werk_datetime ;
67                    onz-g:hasPerdurantLocation ?location ;      
68                    onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren .
69                # Als begin- en endTimeStamp van type dateTime zijn dan omzetten zodat vergeleken kan worden met start en eind period
70                BIND(STRDT(SUBSTR(STR(?start_werk_datetime), 1, 10), xsd:date) AS ?start_werk)
71                BIND(STRDT(SUBSTR(STR(?eind_werk_datetime), 1, 10), xsd:date) AS ?eind_werk)
72                FILTER(?start_werk >= ?start_functie_reken && ?eind_werk <= ?eind_functie_reken)
73                
74                # selecteer locatie met bijbehorende vestiging
75                ?location
76                    onz-g:partOf* ?vestiging_uri .
77                ?vestiging_uri 
78                    a onz-org:Vestiging ;
79                    onz-g:identifiedBy ?vest_nr.
80                ?vest_nr a onz-org:Vestigingsnummer ;
81                    onz-g:hasDataValue ?vestiging .
82            }
83        }
84        GROUP BY ?vestiging ?kwalificatie_niveau
85    }
86    # subquery: bereken het aantal ingezette uren per vestiging
87    {
88        SELECT 
89            ?vestiging
90            (SUM(?uren) AS ?totaal_uren)
91        # selecteer alle geregistreerde uren van de werknemers per vestiging
92        WHERE
93        {
94            SELECT DISTINCT
95                ?gewerkte_periode
96                ?start_werk
97                ?eind_werk
98                ?uren
99                ?vestiging
100            WHERE 
101            { 
102                BIND ('2023-01-01'^^xsd:date AS ?start_periode)
103                BIND ('2023-03-31'^^xsd:date AS ?eind_periode)
104                
105                # selecteer uren van gewerkte periode binnen periode
106                ?gewerkte_periode 
107                    a onz-pers:GewerktePeriode ;
108                    onz-g:hasBeginTimeStamp ?start_werk_datetime ;
109                    onz-g:hasEndTimeStamp ?eind_werk_datetime ;
110                    onz-g:hasPerdurantLocation ?location ; 
111                    onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren .
112                # Als begin- en endTimeStamp van type dateTime zijn dan omzetten zodat vergeleken kan worden met start en eind period
113                BIND(STRDT(SUBSTR(STR(?start_werk_datetime), 1, 10), xsd:date) AS ?start_werk)
114                BIND(STRDT(SUBSTR(STR(?eind_werk_datetime), 1, 10), xsd:date) AS ?eind_werk)
115                FILTER(?start_werk >= ?start_periode && ?eind_werk <= ?eind_periode)
116
117                ?location
118                    onz-g:partOf* ?vestiging_uri .
119                ?vestiging_uri 
120                    a onz-org:Vestiging ;
121                    onz-g:identifiedBy ?vest_nr.
122                ?vest_nr a onz-org:Vestigingsnummer ;
123                    onz-g:hasDataValue ?vestiging .
124            }
125        }
126        GROUP BY ?vestiging
127    }
128}
129ORDER BY ?vestiging ?kwalificatie_niveau

Heb je feedback?

Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!