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

Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

7.1.3 Aantal ingezette uren personeel per cliënt Q3 2023

Concepten

Relaties

Eigenschappen

Instanties

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 7.1
2# Parameters: $(kwartaal)
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#>
10PREFIX onz-zorg: <http://purl.org/ozo/onz-zorg#>
11
12SELECT 
13    ?vestiging
14    ?ingezette_uren
15    ?aantal_clienten
16    ((?ingezette_uren/?aantal_clienten) AS ?ingezetten_uren_per_client)
17WHERE 
18{
19    {
20        SELECT 
21            ?vestiging
22            (SUM(?uren) AS ?ingezette_uren)
23        WHERE
24        {
25            # definieer kwartaal waarin overeenkomst geldig moet zijn
26            BIND(('Q3') AS ?kwartaal)
27            BIND(
28                IF(?kwartaal = 'Q1', '2023-01-01'^^xsd:date, 
29                IF(?kwartaal = 'Q2', '2023-04-01'^^xsd:date,
30                IF(?kwartaal = 'Q3', '2023-07-01'^^xsd:date,
31                IF(?kwartaal = 'Q4', '2023-10-01'^^xsd:date, 
32                '')))) AS ?start_periode)
33            BIND((?start_periode + "P3M"^^xsd:duration - "P1D"^^xsd:duration) AS ?eind_periode)
34
35            # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft
36            ?functie
37                a onz-pers:ZorgverlenerFunctie ;
38                onz-g:startDatum ?start_functie .
39            OPTIONAL { ?functie onz-g:eindDatum ?eind_functie .}
40            
41            FILTER(?start_functie <= ?eind_periode && ((?eind_functie >= ?start_periode) || (!BOUND(?eind_functie))))
42            BIND(IF(!BOUND(?eind_functie), ?eind_periode, 
43                IF(?eind_functie < ?eind_periode, ?eind_functie, ?eind_periode)
44            ) AS ?eind_functie_reken)
45            BIND(IF(?start_functie < ?start_periode, ?start_periode, ?start_functie) AS ?start_functie_reken)
46            
47            ?overeenkomst 
48                a onz-pers:ArbeidsOvereenkomst ;
49                onz-g:isAbout ?functie .
50
51            # selecteer uren van gewerkte periode binnen rekenperiode
52            ?gewerkteperiode 
53                a onz-pers:GewerktePeriode ;
54                onz-g:hasBeginTimeStamp ?start_werk_datetime ;
55                onz-g:hasEndTimeStamp ?eind_werk_datetime ;
56                onz-g:hasPerdurantLocation ?locatie ; 
57                onz-g:definedBy ?overeenkomst ;
58                onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren .
59            # Als begin- en endTimeStamp van type dateTime zijn dan omzetten zodat vergeleken kan worden met start en eind period
60            BIND(STRDT(SUBSTR(STR(?start_werk_datetime), 1, 10), xsd:date) AS ?start_werk)
61            BIND(STRDT(SUBSTR(STR(?eind_werk_datetime), 1, 10), xsd:date) AS ?eind_werk)
62            FILTER((?start_werk >= ?start_functie_reken) && (?eind_werk <= ?eind_functie_reken))
63            
64            # selecteer vestiging van gewerkte periode
65            {
66                ?locatie onz-g:partOf* ?vestiging_uri .
67                ?vestiging_uri 
68                    a onz-org:Vestiging ;
69                    onz-g:identifiedBy ?vest_nr.
70                ?vest_nr a onz-org:Vestigingsnummer ;
71                    onz-g:hasDataValue ?vestiging .
72            } UNION {
73            # includeer ook de organisatie als geheel en label deze als vestiging
74                ?locatie onz-g:partOf*/onz-org:vestigingVan ?organisatie_uri .
75                ?organisatie_uri 
76                    a onz-g:Business ;
77                    rdfs:label ?organisatie .
78                BIND(CONCAT('Totaal ',?organisatie) AS ?vestiging)
79            }
80            
81        }
82        GROUP BY ?vestiging
83    }
84    {
85        SELECT 
86            ?vestiging
87            (COUNT(DISTINCT(?client)) AS ?aantal_clienten)
88        WHERE
89        {
90            # definieer kwartaal waarin overeenkomst geldig moet zijn
91            BIND(('Q3') AS ?kwartaal)
92            BIND(
93                IF(?kwartaal = 'Q1', '2023-01-01'^^xsd:date, 
94                IF(?kwartaal = 'Q2', '2023-04-01'^^xsd:date,
95                IF(?kwartaal = 'Q3', '2023-07-01'^^xsd:date,
96                IF(?kwartaal = 'Q4', '2023-10-01'^^xsd:date, 
97                '')))) AS ?start_periode)
98            BIND((?start_periode + "P3M"^^xsd:duration - "P1D"^^xsd:duration) AS ?eind_periode)
99            
100            VALUES ?zorgprofiel { onz-zorg:4VV onz-zorg:5VV onz-zorg:6VV onz-zorg:7VV onz-zorg:8VV onz-zorg:9BVV onz-zorg:10VV }
101            
102            # selecteer zorgproces binnen periode
103            ?zorgproces
104                a onz-zorg:NursingProcess ;
105                onz-g:definedBy ?indicatie ;
106                onz-g:hasPerdurantLocation ?locatie ;
107                onz-g:startDatum ?start_proces .
108            OPTIONAL {?zorgproces onz-g:eindDatum ?eind_proces}
109            FILTER (?start_proces <= ?eind_periode && (!BOUND(?eind_proces) || ?eind_proces >= ?start_periode))
110
111            # selecteer vestiging van gewerkte periode
112            {
113                ?locatie onz-g:partOf* ?vestiging_uri .
114                ?vestiging_uri 
115                    a onz-org:Vestiging ;
116                    onz-g:identifiedBy ?vest_nr.
117                ?vest_nr a onz-org:Vestigingsnummer ;
118                    onz-g:hasDataValue ?vestiging .
119            } UNION {
120                # includeer ook de organisatie als geheel en label deze als vestiging
121                ?locatie onz-g:partOf*/onz-org:vestigingVan ?organisatie_uri .
122                ?organisatie_uri 
123                    a onz-g:Business ;
124                    rdfs:label ?organisatie .
125                BIND(CONCAT('Totaal ',?organisatie) AS ?vestiging)
126            }
127
128            # selecteer de bijbehordene indicatie, om unieke clienten te kunnen bepalen
129            ?indicatie 
130                onz-g:hasPart ?zorgprofiel ;
131                onz-g:isAbout ?client .
132            ?client a onz-g:Human .
133        }
134    GROUP BY ?vestiging
135    }
136}
137

Heb je feedback?

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