Uitwisselprofiel Zorginstituut Openbaarmaking kwaliteitsindicatoren verpleeghuiszorg

Versie:

Publicatiedatum:21-12-2023

Inwerkingtreding:21-12-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#>
9PREFIX time: <http://www.w3.org/2006/time#>
10
11# Verzuimfrequentie. Let op: datums periode op twee plekken aanpassen!
12
13SELECT 
14	?teller 
15	?noemer 
16	(?teller/?noemer AS ?verzuimfrequentie)
17{
18	{ 
19		SELECT (COUNT(?ziekte) as ?teller)
20		{
21			SELECT DISTINCT ?ziekte
22			WHERE
23			{ 
24			  		# definieer periode waarin overeenkomst geldig moet zijn
25			  		BIND("2023-01-01"^^xsd:date AS ?start_periode)
26			        BIND("2023-12-31"^^xsd:date AS ?eind_periode)
27
28                    # selecteer alle functies die onz-pers:ZorgverlenerFunctie zijn
29                    ?functie 
30                        a onz-pers:ZorgverlenerFunctie ;
31                        onz-g:startDatum ?start_functie .
32                    OPTIONAL {?functie a onz-pers:ZorgverlenerFunctie ;
33                                    onz-g:eindDatum ?eind_functie}
34                    FILTER(?start_functie <= ?eind_periode && ((?eind_functie >= ?start_periode) || (!BOUND(?eind_functie))))
35
36                    BIND(IF(?start_functie < ?start_periode, ?start_periode, ?start_functie) AS ?start_functie_reken)
37                    BIND(IF(!BOUND(?eind_functie), ?eind_periode, ?eind_functie) AS ?eind_functie_reken)
38
39                    # selecteer alle bijbehorende arbeidsovereenkomsten 
40                    ?overeenkomst 
41                        onz-g:isAbout ?functie ;
42                        a onz-pers:ArbeidsOvereenkomst ;
43                        onz-pers:heeftOpdrachtnemer ?persoon .
44			  
45			        # selecteer personen met ziekteperiode 
46			        ?persoon onz-g:isParticipantIn ?ziekte .
47			   		?ziekte 
48			            a onz-pers:ZiektePeriode ;
49			            onz-g:startDatum ?start_ziekte .     
50			        FILTER (?start_ziekte >= ?start_functie_reken && ?start_ziekte <= ?eind_functie_reken)
51			}
52		}
53	} 
54	 
55	{
56	    SELECT
57            (SUM(?factor_totaal) AS ?noemer)
58        {
59            SELECT #alle factoren bij elkaar optellen, max per persoon beperken tot 1
60                ?persoon
61                (IF(SUM(?dagen_indicator/?dagen_periode) > 1, 1,SUM(?dagen_indicator/?dagen_periode))AS ?factor_totaal)
62            {
63                SELECT DISTINCT #functies die op dezelfde dag starten, samenvoegen op de functie met de meeste dagen
64                    ?persoon
65                    ?dagen_periode
66                    ?start_functie_corr
67                    (MAX(?dagen_functie) AS ?dagen_indicator)
68                { 
69                    # definieer periode waarin overeenkomst geldig moet zijn
70                    BIND("2023-01-01"^^xsd:date AS ?start_periode_datum)
71                    BIND("2023-12-31"^^xsd:date AS ?eind_periode_datum)
72                    ?start_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_periode .
73                    ?eind_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode .
74                    BIND(?eind_periode - ?start_periode + 1 AS ?dagen_periode)
75
76                    # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft
77                    ?functie 
78                        a onz-pers:ZorgverlenerFunctie ;
79                        onz-g:startDatum ?start_functie_datum .
80                    OPTIONAL {
81                        ?functie onz-g:eindDatum ?eind_functie_datum .
82                    }
83                    FILTER(?start_functie_datum <= ?eind_periode_datum && (?eind_functie_datum >= ?start_periode_datum || !BOUND(?eind_functie_datum)))
84                    BIND(IF(?start_functie_datum < ?start_periode_datum, ?start_periode_datum, ?start_functie_datum) AS ?start_functie_datum_corr)
85                    BIND(IF(!BOUND(?eind_functie_datum) || ?eind_functie_datum > ?eind_periode_datum, ?eind_periode_datum, ?eind_functie_datum) AS ?eind_functie_datum_corr)
86                    ?start_functie_datum_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_functie_corr .
87                    ?eind_functie_datum_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_functie_corr .
88                    BIND(?eind_functie_corr - ?start_functie_corr + 1 AS ?dagen_functie)
89
90                    ?overeenkomst
91                        a onz-pers:ArbeidsOvereenkomst ;
92                        onz-g:isAbout ?functie ;
93                        onz-pers:heeftOpdrachtnemer ?persoon .
94                }	
95                GROUP BY ?persoon ?dagen_periode ?start_functie_corr
96                ORDER BY ?persoon
97            }
98            GROUP BY ?persoon
99        }
100    }
101}

Heb je feedback?

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