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

Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Versie:

Publicatiedatum:29-02-2024

Inwerkingtreding:29-02-2024




Bekijk bron...

6.1.0 Percentage ingezette uren personeel per kwalificatieniveau

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 ($(start_periode) AS ?start_periode)
37                BIND ($(eind_periode) 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 ($(start_periode) AS ?start_periode)
103                BIND ($(eind_periode) 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
130

Heb je feedback?

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