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.3.2. Verzuimfrequentie

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: ODB Personele samenstelling 2.3.2
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
10# Verzuimfrequentie. Let op: datums periode op twee plekken aanpassen!
11
12SELECT 
13	(COUNT(?verzuim) AS ?teller) 
14	(SUM(coalesce(?factor, 0)) AS ?noemer)
15    (COUNT(?verzuim)/(SUM(coalesce(?factor, 0))) AS ?verzuimfrequentie)
16WHERE 
17{
18    { 
19        # selecteer personen met verzuimperiode
20        ?persoon onz-g:isParticipantIn ?verzuim .
21   		?verzuim 
22            a onz-pers:VerzuimPeriode ;
23            onz-g:startDatum ?start_verzuim .     
24        
25        FILTER (?start_verzuim >= ?start_periode && ?start_verzuim <= ?eind_periode)    
26        {
27        	SELECT DISTINCT 
28            	?persoon 
29            	?start_periode 
30            	?eind_periode 
31            WHERE 
32            {
33                # definieer periode waarin overeenkomst geldig moet zijn
34                BIND("2022-01-01"^^xsd:date AS ?start_periode)
35                BIND("2022-12-31"^^xsd:date AS ?eind_periode)
36        
37        		# selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft
38                ?overeenkomst 
39                  onz-pers:heeftOpdrachtnemer ?persoon ;
40                  a onz-pers:ArbeidsOvereenkomst ;
41                  onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ;
42                  onz-g:startDatum ?start_overeenkomst .
43                OPTIONAL {?overeenkomst onz-g:eindDatum ?eind_overeenkomst}
44
45                # alleen overeenkomsten in gevraagde periode
46                FILTER (?start_overeenkomst <= ?eind_periode && (!BOUND(?eind_overeenkomst) || ?eind_overeenkomst >= ?start_periode))
47
48                # koppel persoon, zodat unieke instanties geteld kunnen worden
49                ?overeenkomst onz-pers:heeftOpdrachtnemer ?persoon .
50            }
51        }
52        
53    } 
54    UNION 
55    {
56    	SELECT 
57            ?persoon 
58            ?start_def 
59            ?end_def 
60            ?start_periode 
61            ?eind_periode
62        WHERE
63        {
64            {
65                SELECT 
66                    ?persoon 
67                    ?overeenkomst 
68                    ?start_periode ?eind_periode
69                    (MIN(?start_corr2) AS ?start_def) 
70                    (MAX(?end_corr2) AS ?end_def) 
71                    (MAX(?i) AS ?ignore)
72                WHERE
73                { 
74                    # definieer periode waarin overeenkomst geldig moet zijn
75                    BIND("2022-01-01"^^xsd:date AS ?start_periode)
76                    BIND("2022-12-31"^^xsd:date AS ?eind_periode)
77                
78                    # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft
79                    ?overeenkomst 
80                        onz-pers:heeftOpdrachtnemer ?persoon ;
81                        a onz-pers:ArbeidsOvereenkomst ;
82                        onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ;
83                        onz-g:startDatum ?start .
84                    OPTIONAL {?overeenkomst onz-g:eindDatum ?end}
85
86                    # alleen overeenkomsten in de gevraagde periode
87                    FILTER (?start <= ?eind_periode && (!BOUND(?end) || ?end >= ?start_periode))
88                    
89                    ?other_contract 
90                        onz-pers:heeftOpdrachtnemer ?persoon ;
91                        a onz-pers:ArbeidsOvereenkomst ;
92                        onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ;
93                        onz-g:startDatum ?other_start .
94                    OPTIONAL {?other_contract onz-g:eindDatum ?other_end} .
95
96                    # alleen overeenkomsten in de gevraagde periode
97                    FILTER (?other_start <= ?eind_periode && (!BOUND(?other_end) || ?other_end >= ?start_periode))
98
99                    # corrigeer wanneer start of eind van de overeenkomst buiten de gevraagde periode valt
100                    BIND(IF(?start_periode > ?start, ?start_periode, ?start) AS ?start_corr)
101                    BIND(IF((?eind_periode < ?end) || !BOUND(?end), ?eind_periode, ?end) AS ?end_corr)
102                    BIND(IF(?start_periode > ?other_start, ?start_periode, ?other_start) AS ?other_start_corr)
103                    BIND(IF((?eind_periode < ?other_end) || !BOUND(?other_end), ?eind_periode, ?other_end) AS ?other_end_corr)
104
105                    BIND(IF(?other_start_corr < ?end_corr && ?other_end_corr > ?start_corr, 1, 0) AS ?o)
106                    BIND(IF(?other_start_corr < ?start_corr && ?other_end_corr > ?end_corr, 1, 0) AS ?i)
107                    BIND(IF(?o = 1,IF(?other_start_corr < ?start_corr,?other_start_corr,?start_corr),?start_corr) AS ?start_corr2)
108                    BIND(IF(?o = 1,IF(?other_end_corr > ?end_corr,?other_end_corr,?end_corr),?end_corr) AS ?end_corr2)
109                } 
110                GROUP BY ?persoon ?overeenkomst ?start_periode ?eind_periode
111            }
112            FILTER(?ignore = 0)
113        } GROUP BY ?persoon ?start_def ?end_def ?start_periode ?eind_periode
114     }
115    BIND ((360 * (YEAR(?eind_periode + "P1D"^^xsd:duration) - YEAR(?start_periode))) +
116    (30 * (MONTH(?eind_periode + "P1D"^^xsd:duration) - MONTH(?start_periode))) +
117    (DAY(?eind_periode + "P1D"^^xsd:duration) - DAY(?start_periode)) AS ?dagen_periode)
118    BIND ((360 * (YEAR(?end_def + "P1D"^^xsd:duration) - YEAR(?start_def))) +
119    (30 * (MONTH(?end_def + "P1D"^^xsd:duration) - MONTH(?start_def))) +
120    (DAY(?end_def + "P1D"^^xsd:duration) - DAY(?start_def)) AS ?dagen_overeenkomst)
121    BIND (?dagen_overeenkomst/?dagen_periode AS ?factor)
122}

Heb je feedback?

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