Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Versie:

Publicatiedatum:30-04-2024

Inwerkingtreding:18-04-2024




Bekijk bron...

7.1.5 Aantal ingezette uren personeel per cliënt Q1 2024

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('Q1' AS ?kwartaal)
27            BIND(
28                IF(?kwartaal = 'Q1', '2024-01-01'^^xsd:date, 
29                IF(?kwartaal = 'Q2', '2024-04-01'^^xsd:date,
30                IF(?kwartaal = 'Q3', '2024-07-01'^^xsd:date,
31                IF(?kwartaal = 'Q4', '2024-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 ?locatie_contract ;
50                onz-g:isAbout ?functie .
51
52            # selecteer uren van gewerkte periode binnen rekenperiode
53            ?gewerkteperiode 
54                a onz-pers:GewerktePeriode ;
55                onz-g:hasBeginTimeStamp ?start_werk_datetime ;
56                onz-g:hasEndTimeStamp ?eind_werk_datetime ;
57                onz-g:definedBy ?overeenkomst ;
58                onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren_voor_correctie .
59            OPTIONAL{?gewerkteperiode onz-g:hasPerdurantLocation ?locatie_werk .}
60            # Als begin- en endTimeStamp van type dateTime zijn dan omzetten zodat vergeleken kan worden met start en eind period
61            BIND(STRDT(SUBSTR(STR(?start_werk_datetime), 1, 10), xsd:date) AS ?start_werk)
62            BIND(STRDT(SUBSTR(STR(?eind_werk_datetime), 1, 10), xsd:date) AS ?eind_werk)
63            FILTER((?start_werk >= ?start_functie_reken) && (?eind_werk <= ?eind_functie_reken))
64            
65            ?locatie_contract a onz-g:StationaryArtifact
66            BIND(IF(!BOUND(?locatie_werk), ?locatie_contract, ?locatie_werk) AS ?locatie)
67
68            # selecteer vestiging van gewerkte periode
69            {
70                ?locatie onz-g:partOf* ?vestiging_uri .
71                ?vestiging_uri 
72                    a onz-org:Vestiging ;
73                    onz-g:identifiedBy ?vest_nr.
74                ?vest_nr a onz-org:Vestigingsnummer ;
75                    onz-g:hasDataValue ?vestiging .
76            } UNION {
77            # includeer ook de organisatie als geheel en label deze als vestiging
78                ?locatie onz-g:partOf*/onz-org:vestigingVan ?organisatie_uri .
79                ?organisatie_uri 
80                    a onz-g:Business ;
81                    rdfs:label ?organisatie .
82                BIND(CONCAT('Totaal ',?organisatie) AS ?vestiging)
83            }
84
85            BIND(IF(!BOUND(?locatie_werk) && BOUND(?vestiging_uri), 0, 1) AS ?correctie)
86            BIND(?uren_voor_correctie * ?correctie AS ?uren)
87        }
88        GROUP BY ?vestiging
89    }
90    {
91        SELECT 
92            ?vestiging
93            (COUNT(DISTINCT(?client)) AS ?aantal_clienten)
94        WHERE
95        {
96            # definieer kwartaal waarin overeenkomst geldig moet zijn
97            BIND('Q1' AS ?kwartaal)
98            BIND(
99                IF(?kwartaal = 'Q1', '2024-01-01'^^xsd:date, 
100                IF(?kwartaal = 'Q2', '2024-04-01'^^xsd:date,
101                IF(?kwartaal = 'Q3', '2024-07-01'^^xsd:date,
102                IF(?kwartaal = 'Q4', '2024-10-01'^^xsd:date, 
103                '')))) AS ?start_periode)
104            BIND((?start_periode + "P3M"^^xsd:duration - "P1D"^^xsd:duration) AS ?eind_periode)
105            
106            VALUES ?zorgprofiel { onz-zorg:4VV onz-zorg:5VV onz-zorg:6VV onz-zorg:7VV onz-zorg:8VV onz-zorg:9BVV onz-zorg:10VV }
107            
108            # selecteer zorgproces binnen periode
109            ?zorgproces
110                a onz-zorg:NursingProcess ;
111                onz-g:definedBy ?indicatie ;
112                onz-g:hasPerdurantLocation ?locatie ;
113                onz-g:startDatum ?start_proces .
114            OPTIONAL {?zorgproces onz-g:eindDatum ?eind_proces}
115            FILTER (?start_proces <= ?eind_periode && (!BOUND(?eind_proces) || ?eind_proces >= ?start_periode))
116
117            # selecteer vestiging van gewerkte periode
118            {
119                ?locatie onz-g:partOf* ?vestiging_uri .
120                ?vestiging_uri 
121                    a onz-org:Vestiging ;
122                    onz-g:identifiedBy ?vest_nr.
123                ?vest_nr a onz-org:Vestigingsnummer ;
124                    onz-g:hasDataValue ?vestiging .
125            } UNION {
126                # includeer ook de organisatie als geheel en label deze als vestiging
127                ?locatie onz-g:partOf*/onz-org:vestigingVan ?organisatie_uri .
128                ?organisatie_uri 
129                    a onz-g:Business ;
130                    rdfs:label ?organisatie .
131                BIND(CONCAT('Totaal ',?organisatie) AS ?vestiging)
132            }
133
134            # selecteer de bijbehordene indicatie, om unieke clienten te kunnen bepalen
135            ?indicatie 
136                onz-g:hasPart ?zorgprofiel ;
137                onz-g:isAbout ?client .
138            ?client a onz-g:Human .
139        }
140    GROUP BY ?vestiging
141    }
142}
143

Heb je feedback?

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