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

Uitwisselprofiel Zorginstituut Openbaarmaking kwaliteitsindicatoren verpleeghuiszorg

Versie:

Publicatiedatum:20-06-2023

Inwerkingtreding:01-07-2023




Bekijk bron...

2.1.6. Gemiddelde contractomvang

Concepten

Relaties

Eigenschappen

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#>
9
10SELECT 
11	?teller 
12	?noemer 
13	(?teller/?noemer AS ?indicator)
14WHERE
15{
16    {
17        SELECT 
18        	(SUM(?factor) AS ?noemer)
19        WHERE
20        {
21            {
22                SELECT 
23                	?persoon 
24                	?start_def 
25                	?end_def 
26                	?start_periode 
27                	?eind_periode
28                WHERE
29                {
30                    {
31                        SELECT 
32                        	?persoon 
33                        	?overeenkomst 
34                        	?start_periode 
35                        	?eind_periode
36                           	(MIN(?start_corr2) AS ?start_def) 
37                            (MAX(?end_corr2) AS ?end_def) 
38                        	(MAX(?i) AS ?ignore)
39                        WHERE
40                        { 
41                            # definieer periode waarin overeenkomst geldig moet zijn
42                            BIND("2022-01-01"^^xsd:date AS ?start_periode)
43                            BIND("2022-12-31"^^xsd:date AS ?eind_periode)
44                            
45                            ?overeenkomst 
46                                onz-pers:heeftOpdrachtnemer ?persoon ;
47                                a onz-pers:ArbeidsOvereenkomst ;
48                                onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ;
49                                onz-g:startDatum ?start .
50                            
51                            OPTIONAL {?overeenkomst onz-g:eindDatum ?end}
52                            
53                            # alleen overeenkomsten in de gevraagde periode
54                            FILTER (?start <= ?eind_periode && (!BOUND(?end) || ?end >= ?start_periode))
55                            
56                            ?other_contract 
57                                onz-pers:heeftOpdrachtnemer ?persoon ;
58                                a onz-pers:ArbeidsOvereenkomst ;
59                                onz-g:isAbout/a onz-pers:ZorgverlenerFunctie;
60                                onz-g:startDatum ?other_start .
61                            
62                            OPTIONAL {?other_contract onz-g:eindDatum ?other_end} .
63                            # alleen overeenkomsten in de gevraagde periode
64                            FILTER (?other_start <= ?eind_periode && (!BOUND(?other_end) || ?other_end >= ?start_periode))
65                            
66                            # corrigeer wanneer start of eind van de overeenkomst buiten de gevraagde periode valt
67                            BIND(IF(?start_periode > ?start, ?start_periode, ?start) AS ?start_corr)
68                            BIND(IF((?eind_periode < ?end) || !BOUND(?end), ?eind_periode, ?end) AS ?end_corr)
69                            BIND(IF(?start_periode > ?other_start, ?start_periode, ?other_start) AS ?other_start_corr)
70                            BIND(IF((?eind_periode < ?other_end) || !BOUND(?other_end), ?eind_periode, ?other_end) AS ?other_end_corr)
71
72                            BIND(IF(?other_start_corr < ?end_corr && ?other_end_corr > ?start_corr, 1, 0) AS ?o)
73                            BIND(IF(?other_start_corr < ?start_corr && ?other_end_corr > ?end_corr, 1, 0) AS ?i)
74                            BIND(IF(?o = 1,IF(?other_start_corr < ?start_corr,?other_start_corr,?start_corr),?start_corr) AS ?start_corr2)
75                            BIND(IF(?o = 1,IF(?other_end_corr > ?end_corr,?other_end_corr,?end_corr),?end_corr) AS ?end_corr2)
76                        } 
77                        GROUP BY ?persoon ?overeenkomst ?start_periode ?eind_periode
78                    }
79                    FILTER(?ignore = 0)
80                } 
81                GROUP BY ?persoon ?start_def ?end_def ?start_periode ?eind_periode
82            }
83            BIND ((360 * (YEAR(?eind_periode + "P1D"^^xsd:duration) - YEAR(?start_periode))) +
84            (30 * (MONTH(?eind_periode + "P1D"^^xsd:duration) - MONTH(?start_periode))) +
85            (DAY(?eind_periode + "P1D"^^xsd:duration) - DAY(?start_periode)) AS ?dagen_periode)
86            BIND ((360 * (YEAR(?end_def + "P1D"^^xsd:duration) - YEAR(?start_def))) +
87            (30 * (MONTH(?end_def + "P1D"^^xsd:duration) - MONTH(?start_def))) +
88            (DAY(?end_def + "P1D"^^xsd:duration) - DAY(?start_def)) AS ?dagen_overeenkomst)
89            BIND (?dagen_overeenkomst/?dagen_periode AS ?factor)
90        }
91    }
92    {
93    SELECT 
94        (SUM(?uren)/1692 AS ?teller)
95    WHERE
96    {
97        SELECT DISTINCT 
98            ?start_periode 
99            ?eind_periode 
100            ?gewerkte_periode 
101            ?uren
102        WHERE
103        { 
104            BIND ("2022-01-01"^^xsd:date AS ?start_periode)
105            BIND ("2022-12-31"^^xsd:date AS ?eind_periode) 
106                
107            # selecteer aantal gewerkte uren binnen periode die gekoppeld zijn aan werkovereenkomst 
108            ?gewerkte_periode 
109             	a onz-pers:GewerktePeriode ;
110              	onz-g:hasBeginTimeStamp ?start_gewerktDT ;
111               	onz-g:hasEndTimeStamp ?eind_gewerktDT ;
112               	onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren ;
113                onz-g:definedBy ?overeenkomst .
114            BIND(STRDT(SUBSTR(STR(?start_gewerktDT),1,10), xsd:date) AS ?start_gewerkt)
115            BIND(STRDT(SUBSTR(STR(?eind_gewerktDT),1,10), xsd:date) AS ?eind_gewerkt)
116
117            FILTER(?start_gewerkt >= ?start_periode && ?eind_gewerkt <= ?eind_periode)
118                
119             # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft
120            ?overeenkomst 
121            	a onz-pers:ArbeidsOvereenkomst ;
122                onz-g:isAbout/a onz-pers:ZorgverlenerFunctie .                      
123            }
124        }
125    }
126}```

Heb je feedback?

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