Uitwisselprofiel Zorginstituut Openbaarmaking kwaliteitsindicatoren verpleeghuiszorg

Versie:

Publicatiedatum:21-12-2023

Inwerkingtreding:21-12-2023




Bekijk bron...

2.1.6. Gemiddelde contractomvang

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: ODB Personele samenstelling 2.1.6
2# Parameters: -
3# Ontologie: versie 2.0.0 of nieuwer
4
5PREFIX onz-g: <http://purl.org/ozo/onz-g#>
6PREFIX onz-pers: <http://purl.org/ozo/onz-pers#>
7PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
8PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
9PREFIX time: <http://www.w3.org/2006/time#>
10
11SELECT 
12	?teller 
13	?noemer 
14	(?teller/?noemer AS ?indicator)
15WHERE
16{
17    {
18        SELECT
19	        (SUM(?factor_totaal) AS ?noemer)
20        {
21            SELECT #alle factoren bij elkaar optellen, max per persoon beperken tot 1
22                ?persoon
23                (IF(SUM(?dagen_indicator/?dagen_periode) > 1, 1,SUM(?dagen_indicator/?dagen_periode))AS ?factor_totaal)
24            {
25                SELECT DISTINCT #functies die op dezelfde dag starten, samenvoegen op de functie met de meeste dagen
26                    ?persoon
27                    ?dagen_periode
28                    ?start_functie_corr
29                    (MAX(?dagen_functie) AS ?dagen_indicator)
30                { 
31                    # definieer periode waarin overeenkomst geldig moet zijn
32                    BIND("2023-01-01"^^xsd:date AS ?start_periode_datum)
33                    BIND("2023-12-31"^^xsd:date AS ?eind_periode_datum)
34                    ?start_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_periode .
35                    ?eind_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode .
36                    BIND(?eind_periode - ?start_periode + 1 AS ?dagen_periode)
37
38                    # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft
39                    ?functie 
40                        a onz-pers:ZorgverlenerFunctie ;
41                        onz-g:startDatum ?start_functie_datum .
42                    OPTIONAL {
43                        ?functie onz-g:eindDatum ?eind_functie_datum .
44                    }
45                    FILTER(?start_functie_datum <= ?eind_periode_datum && (?eind_functie_datum >= ?start_periode_datum || !BOUND(?eind_functie_datum)))
46                    BIND(IF(?start_functie_datum < ?start_periode_datum, ?start_periode_datum, ?start_functie_datum) AS ?start_functie_datum_corr)
47                    BIND(IF(!BOUND(?eind_functie_datum) || ?eind_functie_datum > ?eind_periode_datum, ?eind_periode_datum, ?eind_functie_datum) AS ?eind_functie_datum_corr)
48                    ?start_functie_datum_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_functie_corr .
49                    ?eind_functie_datum_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_functie_corr .
50                    BIND(?eind_functie_corr - ?start_functie_corr + 1 AS ?dagen_functie)
51
52                    ?overeenkomst
53                        a onz-pers:ArbeidsOvereenkomst ;
54                        onz-g:isAbout ?functie ;
55                        onz-pers:heeftOpdrachtnemer ?persoon .
56                }	
57                GROUP BY ?persoon ?dagen_periode ?start_functie_corr
58                ORDER BY ?persoon
59            }
60            GROUP BY ?persoon
61        }
62    }
63    {
64        SELECT
65            (SUM(?aantal) AS ?teller) 
66        WHERE 
67        {
68            {
69                SELECT DISTINCT
70                    ?start_periode_datum 
71                    ?eind_periode_datum 
72                    ?gewerkte_periode 
73                    ?uren
74                WHERE 
75                { 
76                    BIND ("2023-01-01"^^xsd:date AS ?start_periode_datum)
77                    BIND ("2023-12-31"^^xsd:date AS ?eind_periode_datum)  
78                    
79                    # selecteer zorgverlenerfuncties die geldig zijn binnen de periode
80                    ?functie a onz-pers:ZorgverlenerFunctie ;
81                        onz-g:startDatum ?start_functie .
82                    OPTIONAL {
83                        ?functie onz-g:eindDatum ?eind_functie
84                    }
85                    FILTER (?start_functie <= ?eind_periode_datum && (?eind_functie >= ?eind_periode_datum || !BOUND(?eind_functie)))
86
87                    # selecteer de arbeidsovereenkomst die hoort bij de functie
88                    ?overeenkomst
89                        onz-g:isAbout ?functie ;
90                        a onz-pers:ArbeidsOvereenkomst ;
91                        onz-g:isAbout ?gewerkte_periode .
92
93                    # selecteer aantal gewerkte uren binnen periode die gekoppeld zijn aan werkovereenkomst 
94                    ?gewerkte_periode 
95                        a onz-pers:GewerktePeriode ;
96                        onz-g:hasBeginTimeStamp ?start_gewerktDT ;
97                        onz-g:hasEndTimeStamp ?eind_gewerktDT ;
98                        onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren .
99                    BIND(STRDT(SUBSTR(STR(?start_gewerktDT),1,10), xsd:date) AS ?start_gewerkt)
100                    BIND(STRDT(SUBSTR(STR(?eind_gewerktDT),1,10), xsd:date) AS ?eind_gewerkt)
101                    # selecteer gewerkte tijd in de gevraagde periode
102                    FILTER(?start_gewerkt >= ?start_periode_datum && ?eind_gewerkt <= ?eind_periode_datum)     
103                }
104            }
105            
106            # rapporteer in de eenheid fte_36 (1 fte = 36 uur/week)
107            onz-pers:fte_36 
108                onz-g:hasDataValue ?corr_factor .
109            
110            # bereken aantal dagen in de periode
111            ?start_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_periode .
112            ?eind_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode .
113            BIND(?eind_periode - ?start_periode + 1 AS ?dagen_periode)
114            
115            # bereken fte (1 fte is volledig als 47 weken per jaar is gewerkt)
116            BIND (?uren/(?dagen_periode/365*47)/?corr_factor AS ?aantal)
117        } 
118
119    }
120}```

Heb je feedback?

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